金融计算与建模:最优投资组合选择
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用整数规划产生投资组合
例11.1 用PROC LP求解整数规划。 /* 创建价格数据集price */ data price; merge resdat.qttndist stk8(in=samp); by stkcd; if samp and date='30dec2005'd; keep stkcd clpr; run; data weight4; input _id_ : $10. r000002 r000007 r000011 r000016 r600601 r600604 r600651 r600653 _type_ $ _rhs_ ; cards; exp_return 0.0247 0.0127 0.0124 0.008 0.0216 0.0068 0.0263 0.0144 max . beta 1.1185001891 1.3470123011 1.3185749233 1.0260654129 1.3509499965 0.9038958443 1.2559109335 1.2961143173 le 200 lots 431 322 522 352 320 349 596 148 le 100000 upper 50 50 50 50 50 50 50 50 upperbd . lower 5 5 5 5 5 5 5 5 lowerbd . integer 1 2 3 4 5 6 7 8 integer . ; /* 求解整数规划 */ proc lp data=weight4 imaxit=200 primalout=lp_out4 dualout=d_out; run;
下面的例中用PROC LP来最大化以下目标函数以求解投资组合权重:
x1 0.02Leabharlann Baidu7 x2 0.0127 x8 0.0144
该目标函数有以下约束条件:
投资组合风险是1.2,即选择投资组合权重时要使权重与各股票 的乘积之和是1.2。
x1 1.185 x2 1.347 x8 1.296 1.2
p i 1 X ii , p i 1 X i i ,
N N
总风险定义为收益的标准差,根据CAPM,资产i收益的方差为:
i 2 i 2 M 2 2
i
对于投资组合p,收益方差为: p 2 p 2 M 2 i 1 X i 2 2
最大化:c'x 条件:Ax b 其中:li xi ui
其中: A是一个 m n 的系数阵(rhs)。 b是一个 m 1 常数向量。 c是一个 n 1 的价格系数向量. x是一个 n 1 的结构变量向量. li 是 xi 的一个下界。PROC LP中缺省下界是0。 u i 是 xi 的一个上界。
风险度量
常用风险度量的指标有两种: 股票收益标准差; 资本资产定价模型(CAPM)的 。
股票收益标准差
标准差是统计学对波动性的度量,而股票收益的波动性正是持有 股票的风险所在。 计算所选8只股票的标准差,保存在数据集m_out1b中。 data m_out1b; set m_out; where _stat_='std'; keep stkcd monret; rename monret=std; label monret='月收益率标准差'; run;
CAPM的
第二种风险度量指标是CAPM的 ,它代表系统风险。
根据CAPM模型,资产i的期望收益和市场期望收益之间有如下关系:
E( Ri ) i i E( RM )
投资组合p的CAPM:
E(Rp ) p p E(RM )
.
投资组合权重为 X i 时(i=1,2,…,N),参数 p 和 p 可以表示成单个 股票的线性组合:
权重和为l:x1 x2 x8 1 投资组合权重的上界是1。
.
.
下面的DATA步创建一个名为WEIGHT1的数据集,按PROC LP的格 式说明线性规划问题。 data weight1; input _id_ : $10. r000002 r000007 r000011 r000016 r600601 r600604 r600651 r600653 _type_ $ _rhs_ ; cards; exp_return 0.0247 0.0127 0.0124 0.008 0.0216 0.0068 0.0263 0.0144 max beta 1.1185001891 1.3470123011 1.3185749233 1.0260654129 1.3509499965 0.9038958443 1.2559109335 1.2961143173 eq 1.2 sum_wts 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 eq 1.0 available 1 1 1 1 1 1 1 1 upperbd . available 0 0 0 0 0 0 0 0 lowerbd . ; run;
N
i
当投资组合分散时,第二项会减小,分散好的投资组合,该项接 近0,其收益的方差近似为:
p 2 p 2 M 2
因此,对于分散好的投资组合,就是要最小化 p
计算最优投资组合权重
计算出股票期望收益和风险水平后,就可以用PROC LP来找出在 最大可接受风险的前提下收益最大的投资组合权。该线性规划问题为以下 形式:
创建数据集
创建收益数据集return。数据集Return包括1995年 ~2005年A股市场月持有期收益,及其它8只股票月持 有期收益数据。 return变量解释: Stkcd为股票代码; Date为日期; Mretmc为A股市场的月持有期收益; Monret为个股的月持有期收益。
计算期望收益
在使用PROC LP解决线性规划问题之前,要先估计期望收益.这 里用过去的平均收益来估计期望收益。 用PROC MEANS语句计算股票收益。 proc means data=return noprint; by stkcd; var monret; output out=m_out; data m_out1a; set m_out; where _stat_='mean'; keep stkcd monret; run;
最优投资组合选择
用线性规划选择投资组合
用线性规划求解最优投资组合步骤: 用means过程计算股票收益; 用data步生成proc Lp的输人数据集; 用proc Lp求解最优投资组合权; 用proc Lp进行灵敏度分析; 用data步,根据最优权及投资组合的大小计算投资于 每只股票的金额。
灵敏度分析
可以通过灵敏度分析来考察投资组合权重(线性规划问题的主要解) 的稳定性质。 proc lp data=weight2 primalin=lp_out2 rangeprice rangerhs; title2 '灵敏度分析'; run; quit;
限定组合最高风险水平
风险约束也可以是不等式,即当投资组合的小于或等于一个最大 可接受值时计算出的最优投资组合权。 下面考察允许投资组合 小于等于1.2时上面问题主要解的变化情 况。 data weight3; set weight2; if _id_='beta' then _type_='le'; run; proc lp data=weight3 primalout=lp_out3; run; quit;