第11章最优投资组合选择清华大学经管学院朱世武Zhushw@sem.tsinghua.edu.cnResdat样本数据:论坛:用线性规划选择投资组合用线性规划求解最优投资组合步骤:用means过程计算股票收益;用data步生成procLp的输人数据集;用procLp求解最优投资组合权;用procLp进行灵敏度分析;用data步,根据最优权及投资组合的大小计算投资于每只股票的金额。创建数据集创建收益数据集return。数据集Return包括1995年~2005年A股市场月持有期收益,及其它8只股票月持有期收益数据。return变量解释:Stkcd为股票代码;Date为日期;Mretmc为A股市场的月持有期收益;Monret为个股的月持有期收益。计算期望收益在使用PROCLP解决线性规划问题之前,要先估计期望收益.这里用过去的平均收益来估计期望收益。用PROCMEANS语句计算股票收益。procmeansdata=returnnoprint;bystkcd;varmonret;outputout=m_out;datam_out1a;setm_out;where_stat_='mean';keepstkcdmonret;run;风险度量常用风险度量的指标有两种:股票收益标准差;资本资产定价模型(CAPM)的。股票收益标准差标准差是统计学对波动性的度量,而股票收益的波动性正是持有股票的风险所在。计算所选8只股票的标准差,保存在数据集m_out1b中。datam_out1b;setm_out;where_stat_='std';keepstkcdmonret;renamemonret=std;labelmonret='月收益率标准差';run;CAPM的第二种风险度量指标是CAPM的,它代表系统风险。根据CAPM模型,资产i的期望收益和市场期望收益之间有如下关系:()()iiiMERER投资组合p的CAPM:()()pppMERER.投资组合权重为时(i=1,2,…,N),参数和可以表示成单个股票的线性组合:iXpp11,,NNpiipiiiiXX总风险定义为收益的标准差,根据CAPM,资产i收益的方差为:2222iiiM对于投资组合p,收益方差为:222221iNppMiiX当投资组合分散时,第二项会减小,分散好的投资组合,该项接近0,其收益的方差近似为:222ppM因此,对于分散好的投资组合,就是要最小化p计算最优投资组合权重计算出股票期望收益和风险水平后,就可以用PROCLP来找出在最大可接受风险的前提下收益最大的投资组合权。该线性规划问题为以下形式::c'x:Axbiixui最大化条件其中:l其中:A是一个的系数阵(rhs)。b是一个常数向量。c是一个的价格系数向量.x是一个的结构变量向量.是的一个下界。PROCLP中缺省下界是0。是的一个上界。mn1m1n1nilixiuix下面的例中用PROCLP来最大化以下目标函数以求解投资组合权重:1280.02470.01270.0144xxx.该目标函数有以下约束条件:投资组合风险是1.2,即选择投资组合权重时要使权重与各股票的乘积之和是1.2。1281.1851.3471.2961.2xxx权重和为l:1281xxx.投资组合权重的上界是1。下面的DATA步创建一个名为WEIGHT1的数据集,按PROCLP的格式说明线性规划问题。dataweight1;input_id_:$10.r000002r000007r000011r000016r600601r600604r600651r600653_type_$_rhs_;cards;exp_return0.02470.01270.01240.0080.02160.00680.02630.0144maxbeta1.11850018911.34701230111.31857492331.02606541291.35094999650.90389584431.25591093351.2961143173eq1.2sum_wts1.01.01.01.01.01.01.01.0eq1.0available11111111upperbd.available00000000lowerbd.;run;灵敏度分析可以通过灵敏度分析来考察投资组合权重(线性规划问题的主要解)的稳定性质。proclpdata=weight2primalin=lp_out2rangepricerangerhs;title2'灵敏度分析';run;quit;限定组合最高风险水平风险约束也可以是不等式,即当投资组合的小于或等于一个最大可接受值时计算出的最优投资组合权。下面考察允许投资组合小于等于1.2时上面问题主要解的变化情况。dataweight3;setweight2;if_id_='beta'then_type_='le';run;proclpdata=weight3primalout=lp_out3;run;quit;用整数规划产生投资组合例11.1用PROCLP求解整数规划。/*创建价格数据集price*/dataprice;mergeresdat.qttndiststk8(in=samp);bystkcd;ifsampanddate='30dec2005'd;keepstkcdclpr;run;dataweight4;input_id_:$10.r000002r000007r000011r000016r600601r600604r600651r600653_type_$_rhs_;cards;exp_return0.02470.01270.01240.0080.02160.00680.02630.0144max.beta1.11850018911.34701230111.31857492331.02606541291.35094999650.90389584431.25591093351.2961143173le200lots431322522352320349596148le100000upper5050505050505050upperbd.lower55555555lowerbd.integer12345678integer.;/*求解整数规划*/proclpdata=weight4imaxit=200primalout=lp_out4dualout=d_out;run;/*整理求解输出数据集*/datalp_out4a(keep=_var__value_rename=_var_=name);setlp_out4;if_n_8thendelete;run;/*打印主要解,列出每只股票应购买的手数*/procprintdata=lp_out4a;title'整数规划';title2'购买手数';run;注意,在PROCLP输出中,LOTS约束条件(限制投资金额)是一个最大值为$100000的不等式约束。在这$100000中,只有71975用于创建投资组合。/*打印对偶解数据集*/procprintdata=d_out;title'整数规划';title2'收益、风险和投资金额';run;对偶解数据集包含以下信息:投资组合收益;最佳投资金额;最佳投资组合风险水平。注意,这里投资组合收益和风险度量与前面线性规划问题中的度量不一样,前面的投资组合收益和风险是每只股票收益和风险按最优投资组合权重的线性组合,因此不能直接比较。用非线性规划产生投资组合在Markowitz模型中,股票收益指的是平均收益(也叫算术平均收益)。股票风险是股票收益的标准差。证券投资组合收益是每只股票的加权收益。在不允许卖空,即组合权重在0和1之间,且和为1的条件下,证券投资组合的收益为:1122331NpNNiiiRxRxRxRxRxR两只股票组合的风险定义为:1/22222112212121212122pxxxx用DATA步和PROCCORR产生投资组合考虑从以下三只股票中选择两只构造投资组合,万科A(000002),深达声(000007),S深物业A(000011)。试图找出在既定风险水平下收益最大的投资组合。计算股票收益的均值和方差/*从RETURN数据集中抽出3只股票*/datareturn1;setreturn;wherestkcdin('000002''000007''000011');/*对数据集进行处理,将3只股票的数据合为一个数据集中的三个变量,以便用PROCCORR求3只股票月收益的协方差*/proctransposedata=return1out=return1(drop=_name__label_);bystkcd;varmonret;proctransposedata=return1out=return1(drop=_name_);proccorrdata=return1covoutp=cov_out1nosimple;varcol1col2col3;title'Markowitz模型';quit;计算股票投资组合的平均收益一般说来,两种股票投资组合的收益用以下方法计算:12(1)pRxRxR/*数据集COV_OUTl1中,增加变量X,表示权重。例中,X从0到l,步长为0.05。*/datacov_out2(drop=_name_);setcov_out1;if_type_ne'MEAN'thendelete;dox=0to1by.05;output;end;renamecol1=r000002col2=r000007col3=r000011;labelx='投资组合的权重';run;/*计算投资组合的收益*/datamean1;setcov_out2;pfol_m1=x*r000002+(1-x)*r000007;pfol_m2=x*r000002+(1-x)*r000011;pfol_m3=x*r000007+(1-x)*r000011;run;procprintdata=mean1;title'Markowitz模型';title2'两种股票投资组合的收益';run;投资组合收益对投资组合权的散点图pfol_m10.0120.0130.0140.0150.0160.0170.0180.0190.0200.0210.0220.0230.0240.025投资组合的权数0.00.10.20.30.40.50.60.70.80.91.0图中,组合1用符号’*’,组合2用符号’’,组合3用’+’。由图可以看出,投资组合1在所有组合权重水平中都有最高收益。计算投资组合的风险投资组合的风险可通过下式计算:1/22222112212122pxxxx程序参考教材含有两只股票投资组合的风险水平Obsxpfol_r1pfol_r2pfol_r310.000.157650.157610.1576120.050.153890.154570.1550630.100.150350.151710.1527540.150.147040.149030.1506850.200.143990.146550.1488660.250.141210.144270.1473170.300.138710.142210.1460280.350.136520.140360.1450190.400.134640.138760.14429…………从列表可以看出风险水平随投资组合权重变化。例中,投资组合1在观测14处风险最小(0.13042),即65%的万科A(000002)和35%的深达声(000007)。此外,对于每种权重,投资组合1都有最低风险。结合上面分析,组合1是最佳选择。投资组合风险与权数散点图pfol_r10.1300.13