马柯维茨均值方差模型.docx
《马柯维茨均值方差模型.docx》由会员分享,可在线阅读,更多相关《马柯维茨均值方差模型.docx(14页珍藏版)》请在冰豆网上搜索。
马柯维茨均值方差模型
马柯维茨均值-方差模型
在丰富金融投资理论中,组合投资理论占有非常重要地位,金融产品本质上各种金融工具组合。
现代投资组合理论试图解释获得最大投资收益及避免过分风险之间基本权衡关系,也就是说投资者将不同投资品种按一定比例组合在一起作为投资对象,以达到在保证预定收益率前提下把风险降到最小或者在一定风险前提下使收益率最大。
从历史发展看,投资者很早就认识到了分散地将资金进行投资可以降低投资风险,扩大投资收益。
但是第一个对此问题做出实质性分析是美国经济学家马柯维茨(Markowitz)以及他所创立马柯维茨资产组合理论。
1952年马柯维茨发表了《证券组合选择》,标志着证券组合理论正式诞生。
马柯维茨根据每一种证券预期收益率、方差和所有证券间协方差矩阵,得到证券组合有效边界,再根据投资者效用无差异曲线,确定最佳投资组合。
马柯维茨证券组合理论在计算投资组合收益和方差时十分精确,但是在处理含有较多证券组合时,计算量很大。
马柯维茨后继者致力于简化投资组合模型。
在一系列假设条件下,威廉·夏普(WilliamF.Sharp)等学者推导出了资本资产定价模型,并以此简化了马柯维茨资产组合模型。
由于夏普简化模型计算量相对于马柯维茨资产组合模型大大减少,并且有效程度并没有降低,所以得到了广泛应用。
1模型理论
经典马柯维茨均值-方差模型为:
其中,
;
是第i种资产预期收益率;
是投资组合权重向量;
是n种资产间协方差矩阵;
和
分别是投资组合期望回报率和回报率方差。
点睛:
马柯维茨模型以预期收益率期望度量收益;以收益率方差度量风险。
在教课书中通常以资产历史收益率均值作为未来期望收益率,可能会造成“追涨效果”,在实际中这些收益率可能是由研究员给出;在计算组合风险值时协方差对结果影响较大,在教课书中通常以资产历史收益率协方差度量资产风险及相关性,这种计算方法存在预期误差,即未来实际协方差矩阵及历史协方差矩阵间存在偏差。
例1.以华北制药、中国石化、上海机场三只股票,如何构使用马柯维茨模型构建投资组合模型?
资产数据如下表:
表2.1三只股票日回报率、风险数据及协方差矩阵
收益率均值(%)
收益率标准差(%)
协方差矩阵(×0.0001)
华北制药
0.0540
2.30
5.272.801.74
中国石化
0.0275
2.06
2.804.261.67
上海机场
0.0236
1.70
1.741.672.90
2收益及风险计算函数
portstats函数计算公式:
其中,
;
是第i种资产预期回报率;
是投资组合权重向量;
是n种资产间协方差矩阵;
和
分别是投资组合期望回报率和回报率方差。
函数语法:
[PortRisk,PortReturn]=portstats(ExpReturn,ExpCovariance,PortWts)
输入参数:
ExpReturn:
资产预期收益率
ExpCovariance:
资产协方差矩阵
PortWts:
资产权重
输出参数:
PortRisk:
资产组合风险(标准差)
PortReturn:
资产组合预期收益(期望)
例:
在例1中,假设等权重配置华北制药、中国石化、上海机场,则资产组合风险及收益为多少?
M文件:
Portstatstest.m
ExpReturn=[0.0005400.0002750.000236];
ExpCovariance=0.0001*
[5.272.801.74;
2.804.261.67;
1.741.672.90];
PortWts=1/3*ones(1,3);
[PortRisk,PortReturn]=portstats(ExpReturn,ExpCovariance,PortWts)
>>PortRisk=0.016617
PortReturn=3.5033e-004
注释:
ones(n,m)为生产元素都为1n×m矩阵,ones(1,3)=[1,1,1].
PortWts=1/3*[1,1,1]=[1/3,1/3,1/3]
3有效前沿计算函数
马柯维茨均值-方差模型为经典带约束二次优化问题,在给定期望收益时,方差最小解唯一(可行解域为凸),frontcon使用,matlab优化工具箱fmincon函数进行求解,fmincon函数说明请参看附录。
frontcon函数算法:
给定
计算相应风险最小组合,即得到有效前沿上一点(有效组合),给定一系列
可以有效描绘出有效前沿。
组合收益介于单个资产最大收益及最小收益之间,例如示例中最大收益为0.0540%、最小收益为0.0236%,
为根据NumPorts在最大收益及最小收益间进行等分即可。
函数语法:
[PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,NumPorts,PortReturn,AssetBounds,Groups,GroupBounds,varargin)
输入参数:
ExpReturn:
资产预期收益率;
ExpCovariance:
资产协方差矩阵;
NumPorts:
(可选)有效前沿上输出点个数,默认为10;
PortReturn:
(可选)给定有效前沿上输出回报点个数;
AssetBounds:
(可选)每种资产权重上下限,例如,上海机场最大持仓比例为10%;
Groups:
(可选)资产分组,Groups(i,j)=1表示第j个资产属于第i个群(例如,行业);
GroupBounds:
每个资产群约束(例如,某个行业配置能超过20%)
输出函数:
PortRisk:
资产组合风险(标准差)
PortReturn:
资产组合预期收益(期望)
PortWts:
资产组合中各资产权重
例:
在例1中,如何配置华北制药、中国石化、上海机场,则资产组合为有效组合?
M文件:
frontcontest.m
程序源码:
ExpReturn=[0.0005400.0002750.000236];
ExpCovariance=0.0001*[5.272.801.74;
2.804.261.67;
1.741.672.90];
NumPorts=10;
[PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,NumPorts)
>>PortRisk=
1.0e-002*
1.5653
1.5759
1.6074
1.6586
1.7277
1.8128
1.9129
2.0284
2.1567
2.2956
PortReturn=
1.0e-003*
0.2843
0.3127
0.3411
0.3695
0.3980
0.4264
0.4548
0.4832
0.5116
0.5400
PortWts=
0.12740.24560.6270
0.22700.19790.5751
0.32650.15030.5232
0.42610.10260.4713
0.52570.05490.4194
0.62530.00720.3675
0.719600.2804
0.813100.1869
0.906500.0935
1.0000-0.00000.0000
图1投资组合有效前沿图
直接运行frontcon(ExpReturn,ExpCovariance,NumPorts)则可画出图1;
如果各个资产投资上限为50%,求解有效前沿?
程序源码:
ExpReturn=[0.0005400.0002750.000236];
ExpCovariance=0.0001*
[5.272.801.74;
2.804.261.67;
1.741.672.90];
NumPorts=10;
AssetBounds=[0,0,0;0.5,0.5,0.5]%设置资产上限
[PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,NumPorts,[],AssetBounds)
计算结果:
1.0e-002*
PortRisk=
1.5818
1.5842
1.5914
1.6034
1.6200
1.6408
1.6649
1.6920
1.7412
1.9449
PortReturn=
1.0e-003*
0.3024
0.3140
0.3257
0.3374
0.3491
0.3608
0.3725
0.3841
0.3958
0.4075
PortWts=
0.17680.32320.5000
0.22090.27910.5000
0.26500.23500.5000
0.30910.19090.5000
0.35320.14680.5000
0.39540.11730.4873
0.43630.09770.4660
0.47730.07810.4446
0.50000.20050.2995
0.50000.50000.0000
4约束条件下有效前沿
在实际构建投资组合时候要考虑到合法合规或者风险管理等限制条件,这样会给组合构建带来约束,例如基金“双百分只十规则”:
基金投资于一证券市值不能超过基金资产10%,基金投资于一上市公司股票不能超过该公司市值10%;Matlab求解约束条件下有效前沿为portopt函数;
函数语法:
[PortRisk,PortReturn,PortWts]=portopt(ExpReturn,ExpCovariance,NumPorts,PortReturn,ConSet,varargin)
输入参数:
ExpReturn:
资产预期收益率
ExpCovariance:
资产协方差矩阵
NumPorts:
(可选)有效前沿上输出点个数,默认为10
PortReturn:
(可选)给定有效前沿上输出点回报
ConSet:
组合约束,一般通过portcons进行设置
Varargin:
主要为优化算法中一些参数
输出函数:
PortRisk:
资产组合风险(标准差)
PortReturn:
资产组合预期收益(期望)
PortWts:
资产组合中各资产权重
注释:
portcons函数
ConSet=portcons(varargin)
portcons该函数比较复杂,本书使用举例方式进行说明。
例如:
例配置华北制药、中国石化、上海机场三个资产,华北制药最大配置50%,中国石化最大配置90%,上海机场最大配置80%,华北制药为资产集合A,中国石化、上海机场组成资产计划B,集合A最大配置为50%,集合B最大配置为80%,集合A配置不能超过集合B1.5倍,则如何配置。
M文件为portopttest.M
约束条件设置如下:
AssetNum=3;资产数量三个
PVal=1;配置比例,100%表示满仓配置,若80%,则设PVal=0.8;
AssetMin=0;各资产最低配置
AssetMax=[0.50.90.8];各资产最高配置
GroupA=[100];资产集合A(例如,行业)
GroupB=[011];资产集合B(例如,行业)
GroupMax=[0.50,0.80];资产集合A最大配置50%,B最大80%
AtoBmax=1.5;集合A配置不能超过集合B1.5倍
ConSet=portcons('PortValue',PVal,NumAssets,'AssetLims',...
AssetMin,AssetMax,NumAssets,'GroupComparison',GroupA,NaN,...
AtoBmax,GroupB,GroupMax);
M编程求解:
NumAssets=3;
ExpReturn=[0.0005400.0002750.000236];
ExpCovariance=[5.272.801.74;
2.804.261.67;
1.741.672.90];
NumPorts=5;
PVal=1;
AssetMin=0;
AssetMax=[0.50.90.8];
GroupA=[100];
GroupB=[011];
GroupMax=[0.50,0.8];
AtoBmax=1.5;
ConSet=portcons('PortValue',PVal,NumAssets,'AssetLims',...
AssetMin,AssetMax,NumAssets,'GroupComparison',GroupA,NaN,...
AtoBmax,GroupB,GroupMax);
[PortRisk,PortReturn,PortWts]=portopt(ExpReturn,ExpCovariance,...
NumPorts,[],ConSet)
>>PortRisk=
1.0e-002*
1.5653
1.5778
1.6147
1.6744
1.9449
PortReturn=
1.0e-003*
0.2843
0.3151
0.3459
0.3767
0.4075
PortWts=
0.12740.24560.6270
0.23530.19390.5707
0.34330.14230.5145
0.45120.09060.4582
0.50000.50000
图2.2约束条件下投资组合有效前沿
运行portopt(ExpReturn,ExpCovariance,NumPorts,[],ConSet)得到图2.2。
点睛:
同一组资产进行配置,无约束有效前沿为图2.1,带约束有效前沿为图2.2,约束使得有效前沿不再平滑。
5模型年化参数计算
本章节案例使用以日数据为例进行计算,在实际中进行资产配置周期常常为年,如何将日数据转换为年数据存在许多细节上问题。
例2假设2005年到2011年上证综合指数、上证50指数、沪深300指数及深证100指数主要指标。
指数名称
年化收益率
年化波动率
日均收益率
日波动率
上证综合指数
8.50%
29.45%
0.03%
1.86%
上证50指数
10.06%
31.17%
0.04%
1.97%
沪深300指数
13.23%
31.38%
0.05%
1.98%
深证100指数
18.37%
32.62%
0.07%
2.06%
其中,年化收益来使用是2005-2011累积收益率(1/7)次方得到,年化波动率为日波动率乘以
得到。
由于市场变幻莫测,如果选取时间长度不同,可能得到波动率大小不同。
问题是我们还会发现通过累积收益例计算年化收益率及日均收益率乘以每年交易日数得到年化收益率并不相等。
从某种角度证明了市场收益率分布并不是严格服从正态分布。
马柯维茨模型预期收益率及协方差矩阵计算方法根据读者自己对市场理解进行选择。
这里必须说明是,不同选择做出有效前沿差距或许比较大。