博客原址:http://blog.sina.com.cn/s/blog_6afc560001017xuy.html
Portfolio在金融投资理论中占有非常重要的地位,Markowitz根据每一种证券的预期收益率、方差和所有证券间的协方差矩阵,得到证券组合的有效边界,再根据投资者的效用无差异曲线,确定一组Portfolio。
Markowitz均值方差模型为:
min sigma^2=X'MX
max E(r)=X'R
s.t. x1+x2+...+xn=1
其中,R=(R1,R2,...,Rn)';Ri=E(ri)是第i种资产的预期收益率;X=(x1,x2,...,xn)'是投资组合的权重向量;M是n种资产间的协方差矩阵;E(r)和sigma^2分别是投资组合的期望回报率和方差。
一、收益与风险计算函数portstats
[PortRisk,PortReturn]=portstats(ExpReturn,ExpCovariance,PortWts)
选取 浦发银行600000sh
假设资产权重为PortWts=[0.25 0.25 0.25 0.25]
>>[PortRisk,PortReturn]=portstats(ExpReturn,ExpCovariance,PortWts)
PortRisk =
0.0830
0.0159
二、有效前沿计算函数frontcon
Markowitz均值方差模型是经典的带约束的二次优化问题,给定期望收益时,方差最小解唯一,frontcon使用matlab优化工具箱的fmincon函数进行求解。(也可以参见 )
[PortRisk, PortReturn, PortWts] = frontcon(ExpReturn, ExpCovariance, NumPorts, PortReturn, AssetBounds, Groups, GroupBounds, varargin)
输入参数:ExpReturn资产的预期收益率;ExpCovariance资产的协方差矩阵; NumPorts(可选)有效前沿上输出点的个数,默认为10;PortReturn(可选)给定有效前沿上输出点回报;AssetBounds(可选)每种资产权重的上下限;Groups(可选)资产分组;GroupBounds(可选)每个资产群的约束;
输出参数:PortRisk资产组合风险(标准差), PortReturn资产组合预期收益(期望), PortWts(权重)
对于
ExpReturn=[ 0.0082 0.0072 0.0426 0.0056]
NumPorts=10
>>[PortRisk, PortReturn, PortWts] = frontcon(ExpReturn, ExpCovariance, NumPorts)
PortRisk =
0.0702
0.0068
0.3404
>> frontcon(ExpReturn,ExpCovariance, NumPorts)
三、约束条件下的有效前沿计算函数portopt
在实际构建投资组合时要考虑到法律法规、风险管理等条件的限制,这样的portfolio就是有约束条件,例如基金的“双百分之十规则”:基金投资于某一证券的市值不能超过基金资产的百分之十,投资于某一上市公司的股票不能超过该公司市值的百分之十。
[PortRisk, PortReturn, PortWts] = portopt(ExpReturn, ExpCovariance,
输入参数中的PortReturn为可选项,指给定有效前沿上输出点回报。ConSet组合约束一般通过portcons函数进行设置。
现在配置浦发银行、皖通高速、老白干酒、国药股份四只股票,假设浦发银行最大配置50%,皖通高速最大配置60%,老白干酒最大配置40&,国药股份最大配置70%,浦发银行/皖通高速为资产集合A,老白干酒和国药股份为资产集合B,集合A的配置不能超过B的1.5倍,如何配置?
>>NumAssets = 4;
>>ConSet = portcons('PortValue', PVal, NumAssets,'AssetLims',...
>>Numports=10
>>[PortRisk,PortReturn,PortWts]=portopt(ExpReturn,ExpCovariance,Numports,[],ConSet)
PortRisk =
0.0702
0.0068
0.3404
>> portopt(ExpReturn,ExpCovariance,Numports,[],ConSet)