第章资产组合计算文档格式.docx
《第章资产组合计算文档格式.docx》由会员分享,可在线阅读,更多相关《第章资产组合计算文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
RetIntervals=[182,91,92]'
StartPrice=10;
StartTime=datenum('
18-Dec-2000'
);
[TickSeries,TickTime]=ret2tick(RetSeries,StartPrice,RetIntervals,StartTime)
datestr(TickTimes)
ans=
18-Dec-2000
18-Jun-2001
17-Sep-2001
18-Dec-2001
这样就把收益率时间序列转换为价格时间序列,结果如表所示。
表资产各时间的价格
时间
价格
-
时间间隔
2.将价格序列转换为收益率序列
MATLAB中将价格序列转换为收益率序列的函数是tick2ret。
[RetSeries,RetIntervals]=tick2ret(TickSeries,TickTimes,Method)
TimeTimes%价格序列对应的时间
Method%(Optionl)计算收益率的,Method='
表示算术收益率;
表示连续法,即为对数计算法。
RetSeries%收益率序列
RetIntervals%收益率时间间隔
例5-2已知股票的价格时间序列如表所示。
表股票各时间对应的价格
6
9
12
100
110
115
求出该股票的收益率时日序列。
在MATLAB中执行以下命令:
TickSeries=[100;
110;
115;
110];
TickTimes=[0;
6;
9;
12];
[RetSeries,RetIntervals]=tick2ret(TickSeries,TickTime)
协方差矩阵与相关系数矩阵间的转换
MATLAB中的corr2cov函数可以把相关系数矩阵转换为协方差矩阵
Covariances=corr2cov(STDs,Correlations)
STDs%标准差矩阵
Correlations%相关系数矩阵
Covariance%协方差矩阵
例5-3已知资产组合中有3个品种,每个品种的资产收益率、标准差和相关系数如表所示。
表的相关数据
Returns=[,,];
STDs=[1,,];
Correlations=[1,,;
1,;
,1];
资产组合收益率与方差
MATLAB中计算资产组合回报与方差的函数是portstats。
[PortRisk,PortReturn]=portstats(ExpReturn,ExpCovariance,PortWts)
ExpReturn%期望收益率向量
ExpCovariance%资产的协方差矩阵
PortWts%资产权重向量
PortRisk%总资产的标准差
PortReturn%%总资产的收益
例5-4某资产组合中有3种资产A、B、C.组合中各资产的预期收益率分别为,,,权重分别为0.4,0.2,0.4,具体数据见程序
ExpReturn=[,,];
ExpCovariance=[,,;
,;
,]
PortWts=[,,;
,];
PortRisk=
PortReturn=
从上述结果可以看到,这两个资产组合的标准差分别为、,资产回报分别,
例5-5假设资产组合中有5种资产,收益分别为,,,,,方差分别为,,,,,资产收益率各不相关,各资产权重分别为,,,,,计算该组合的收益率与方差。
returns=[0,1,,,,];
variances=[,,,,];
ws=[,,,,];
mean=sum(returns.*ws)
variance=sum(variance.*ws.^2)
资产组合VaR(ValueAtRisk)
一般被称为“风险价值”或“在险价值”,指在一定的置信水平下,某一金融资产(或证券组合)在未来特定的一段时间内的最大可能损失。
假定JP摩根公司在2004年置信水平为95%的日VaR值为960万美元,具含义指该公司可以以以95%的把握保证,2004年某一特定时点上的金融资产在未来24小时内,由于市场价格变动带来的损失不会越过960万美元,或者说,只有5%的可能损失超过960万美元。
与传统风险度量手段不同,VaR完全是基于统计分析基础上的的风险度量技术,它的产生足JP摩根公司用来计算市场风险的产物。
例5-6假设投资者拥有两种资产,资产总价他为10000000元,资产权重分别为1/4与3/4,这两种资产日波动率的均值分别为,,标准差分别为,,这两种资产之间的相关系数为,时间为10天,给定置信度为99%,求该资产VaR。
首先求总资产方差,公式如下
其中,
分别为资产组合权重,
为单个资产标准差,
为为这两种资产之间的相关系数。
一般地,可将式用向量与矩阵形式表示,记
,表示各资产的权重,
表示各种资产的标准差,资产协方差矩阵记入cov,则式可以改写为如下形式:
()
记号
表示向量转置。
如果记
,则有
有了资产组合方差,就可以计算出Var数值。
从正态分布表中可以查到对应于置信度99%(
)的
,在各种资产都是服从正态分布的假设下,资产Var值为
具体来讲,计算Var的步骤如下。
第1步:
输入资产权重向量w、各资产的标准差sigma、资产之间的相关系数cov,注意协方差矩阵一定是对称矩阵,需要计算时间长度
第2步:
权重向量点乘标准差向量。
第3步:
计算资产总的标准差
第4步:
对于给定置信度
,查正态分布表找到
第5步:
计算Varmit算Vat,
在Command窗口中执行如下命令:
w=[1/4,3/4];
ret=[,];
sigma=[,];
corrcoef=[1,;
1];
delta=10;
pret=delta*dot(w,ret)
sig=w.*sigma;
tsig=sig*cov*sig'
*delta;
var=10^7**sqrt(tsig))
10天VaR值为649300元。
实际上MATLAB中有专门计算Var值的函数,MATLAB巾的portrisk函数可以计算资产组合Var值,注意输入总资产期望收益与标准差,而不是组合中各种种资产的预期收益率与标准差。
调用方式
ValueAtRisk=portrrisk(PortReturn,PortRisk,RiskThreshold,PortValue)
PortReturn%总资产的回报
RiskThreshold%概率阈值,默认值为
PortValue%资产总的价值
ValueAtRisk%概率阈值下的单资产var值
例5-7已知资产年回报率为,标准差为,资产现在价值为1亿,求1%水平下资产在险价值。
PortReturn=;
PortRisk=;
RiskThreshold=;
PortValue=1;
ValueAtRisk=portvrisk(PortReturn,PortRisk,RiskThreshold,PortValue)
该资产var等于,即该资产损失亿的可能性为1%。
需注意的是金融资产一般并不是正态,而是呈现出肥尾特征,其Var较正态分布大。
资产组合有效前沿
由于证券市场投资存在巨大风险,一般不主张把投资集中在一种产品上。
如果一个投资者投资于深证东泰股份(000506),2001年8月10日收盘价为14.10元,到了2006年2月21日收盘价为元,跌幅高达%,如果再要回到原来价位需要上涨倍,这样的机会是几乎不可能的,如果投资名踩中这样的陷阱恐怕很难再有翻身的机会。
运用组合理论可以有效地降低投资风险,其核心思想是在目标收益率给定的情况下,要求资产组合风险最小。
资产组合理论是由马克维茨(H.Markowitz)1952年提出均值方差理论模型
是协方差矩阵
,
表示第
种资产的收益率,
种资产在总资产中所占的份额。
两种风险资产组台收益期望与方差
假设有两种资产A、B,其收益率分别用
表示,协方差分别为
,记资产组合组合为
,资产组合收益率、方差分别为
分别表示投资的权重,则有
该资产组合期望收益率与方差为
这样资产组合收益率均值与方差如图所示。
图51资产组合收益率均值与方差
MATLAB工具箱中包含了资产均值方差有效前沿函数,这些都是基于MATLAB中的最优化理论工具箱。
马克维茨资产组合理论就是寻找一个有效组合。
所谓有效组合是指在同样风险水平下具有最高收益,这样不同收益及与最小风险构成有效前沿。
在不允许卖空情况下,求解有效组合目标函数为
这是一个约束条件为线性且含有不等式的二次规划方程,给定一个组合收益率就有个最小方差,组合收益与最小方差构成有效前沿关系,有效前沿如图所示。
522均值方差有效前沿
MATLAB中计算均值方差有效前沿的函数为frontcon。
[PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,
NumPorts,PortReturn,AssetBounds,Groups,GroupBounds)
ExpReturn%资产组合中每项资产预期回报,为一行向量
ExpCovariance%各种资产之间的协方差矩阵,为对称矩阵
NumPorts%(Optional)在资产组合有效前沿上的点的个数,默认值是10个点。
PortReturn%(Optional)有效前沿上每个点的回报
AssetBounds%(Optional)每种资产权重的上限、下限区间
Groups%(Optional)如果G(i,j)=1表示第i个资产属于第j个群,G(i,j)=0表示第i个资产不属于第j个群
GroupBounds%(Optional)每种种群权重约束区间,默认值规定下限为0,上限为l
PortRisk%组合的标准差
PortReturn%组合的回报
PortWts%组合中每个资产的权重
例5-8考虑一个三资产组合,分别为资产1、资产2与资产3,其预期收益率分别为、、,资产协方差矩阵如表所示,求该资产组合有效前沿。
在MATLAB中执行如下命令
NumPorts=4;
带约束条件资产组合有效前沿
投资组合中的问题很少有简单的约束,大多数情况下是多种约束,例如监管当局为了控制风险,对资产组中每种资产的比例加以种种限制,这时就需要考虑多种约束条件下的最优组合问题。
MATLAB利用均值-方差理论求解资产组合问题,首先是将约束条件写成矩阵形式,例如
或者
形式。
下面用一个例了说明。
例5-9某资产组合中有5种资产构成,第i种资产的预期回报率为
为第
种资产在总资产中的权重,考虑
具有如下形式:
上述约束条件写成矩阵形式如下
A=[1,0,0,0,0,;
0,1,0,0,0,;
0,0,1,0,0,;
0,0,0,0,1,
-1,0,0,0,0,0;
0,-1,0,0,0,0;
0,0,-1,0,0,0;
0,0,0,-1,0,0;
0,0,0,0,-1,0;
-1,-1,0,0,0,;
-1,-1,-1,0,0,;
1,1,0,0,0,;
1,1,1,0,0,]
注意约束条件
可以分解成两个约束条件:
和
,分别对应于矩阵的第l行和第6行。
下面我们计算约束条件下资产
组合有效前沿。
[PortRisk,PortReturn,PortWts]=portopt(ExpReturn,ExpCovariance,NumPorts,PortReturn,ConSet)
ExpReturn%资产的期望回报率
ExpCovariance%资产的协方差
NumPorts%(Optional)资产组合中投资品种的个数
PortReturn%Optional)要求组合的回报率
ConSet%(Optional)约束条件
PortRisk%资产组合的风险
PortReturn%资产组合的回报
PortWts%组合中各种资产的权重
例5-10设有两种资产,其回报率分别为,,协方差矩阵为
约束条件为
,求该资产组合有效前沿。
在MATLAB中执行如下命令:
cov=[,0;
0,];
constr=[1,1,1;
1,0,;
-1,0,0;
0,-1,];
portopt(ret,cov,[],[],constr)
图含约束条件均值方差有效前沿示意图
例5-11各资产的相关系数矩阵、预期回报率和标准差如表所示
试给出有效前沿。
在MATLAB中执行如下命令
STDs=[,,];
portopt(Returns,Covariances,20)%绘出组合的有效前沿
%然后选择权重
rand('
state'
0);
Weights=rand(1000,3);
Total=sum(Weights,2);
Weights(:
1)=Weights(:
1)./Total;
2)=Weights(:
2)./Total;
3)=Weights(:
3)./Total;
输入资产组合有效前沿,以及相关资产组合,绘出各个资产组合风险与收益,代码如下:
[PortRisk,PortReturn]=portstats(Returns,Covariances,,Weights);
holdon
plot(PortRisk,PortReturn,'
.r'
)
title('
均值-方差有效前沿以及各个资产组合风险与收益'
xlabel('
风险(标准差)'
ylabel('
期望收益率'
holdoff
这样资产组合有效前沿和各种资产组合风险与收益点如图所示。
均值-方差有效前沿以及各种资产组合风险与收益
考虑无风险资产及借贷情况下的资产配置
资产组合有效前沿上的点很多,如何选择一个有效点呢?
投资者需要根据目标函数权衡风险与回报。
MATLAB中投资者目标函数如下:
表示未来回报,
表示投资者风险厌恶系数,一般在2-4之间,
是资产标准差。
投资者决策就是使目标函数最大化,然后对资产进行配置。
MATLAB中考虑无风险资产时的资产配置函数是portalloc,其功能是根据风险-收益最优原则配置每项资产,其中包括无风险资产。
[RiskyRisk,RiskyReturn,RiskyFraction,OverallRisk,OverallReturn]
=portalloc(PortRisk,PortReturn,PortWts,RisklessRate,BorrowRate,RiskAversion)
PortRisk%有效前沿上每项资产的方差
PortReturn%有效前沿上每项资产的回报
PortWts%有效前沿上每项资产的权重
RisklessRate%无风险利率
BorrowRate%(Optional)借款利率,默认为没有借贷
RiskAversion%(Optional)投资者的风险厌恶系数,大多数投资者的风险厌恶系数在2~4之间,通常选择3
RiskyRisk%风险资产部分的标准差
RiskyReturn%风险资产部分的回报
RiskyWts%风险资产的权重
RiskyFraction%总资产中风险资产的分数
OverallRisk%总资产的标准差
Overa11Return%总资产的回报
例已知一个组合中含有3种资产,每种资产的预期回报与协方差矩阵如表所示。
表各种资产的预期回报、协方差
资产A
资产B
资产C
预期回报
协
方
差
无风险利率为,借贷利率为,投资者的风险厌恶系数为3,要求考虑无风险资产和借贷情况下的最优资产配置。
[PortRisk,PortReturn,PortWts]=portopt(ExpReturn,ExpCovariance);
%由于没有输入位于有效前沿上的点的数目,MATLAB默认有效前沿上选取10个点,每个点代表一种组台,每个组合的标准差保存在PortRisk中,收益率保存在PortReturn中,组合中各资产的权重保存在PortWts中。
下面调用portalloc函数求出考虑无风险资产,以及允许借货时的资产配置,代码如下:
RisklessRate=;
BorrowRate=;
[RiskyRisk,RiskyReturn,RiskyFraction,OverallRisk,OverallReturn]=portalloc(PortRisk,PortReturn,PortWts,RisklessRate,BorrowRate,RiskAversion)
从结果表明,最优组合的标准差为,收益率为,每项资产的权重分别为、、。
总资产中风险资产配置的权重为,总资产的回报率为,总资产的标难差为。
如果选取有效前沿上的20个点,得到结果如下:
[PortRisk,PortReturn,PortWts]=portopt(ExpReturn,ExpCovariance,20);
[RiskyRisk,RiskyReturn,RiskyFraction,OverallRisk,OverallReturn]=portalloc(PortRisk,PortReturn,PortWts,RisklessRate,BorrowRate,3)
从结果中我们可以知道,最优组合的标准差为,组合的收益率为,每项资产的权重分别为、、,总资产中风险资产配置的权重为1.1869,总资产的回报为0.1902,总资的产标准差为0.15297,除了资产配置差别比较大,第一项资产配置进一步减小,其他差别并不大。
线性规划求解资产组台问题
线性规划是研究目标函数和约束条件均为线性的最优化问题,线性规划的标准形式如下
是目标函数矩阵,
是约束条件矩阵,
是向量。
标准形式线性问题简称LP(LinearProgramming)问题,MATLAB中用lp函数求解线性规划问题。
MATLAB中的线性规划形式如下
是向量,
是不等式约束和等式约束的矩阵
x=limprog(f,A,b)
x=linprog(f,A,b,Aeq,beq,lb,ub)
分别为标准线性规划模型中的参数;
参数
分别为变量x的上界和下界。
例5-13某资产组合中有3种资产,各资产的收益率分别为、,、。
要求资产l与资产3的权重小于资产2的权重,且没有卖空。
求解使得上述收益率最大的投资组合
首先确定目标函数为:
资产约束条件可写为
f=[,,]'
A=[1,-1,1];
b=0,Aeq=[1,1,1];
beq=1;
lb=[0,0,]'
ub=[1,1,1]'
x=linprog(f,A,b,Aeq,beq,lb,ub)
最后得出资产1、资产2、资产3的权重分别为、、。
下面我们考虑二次规划求解资产组合,二次规划问题(QuadraticProgramming)的标准形式如下
为权重向量,
为对称矩阵。
约束条什分成两个部分,前一部分约束条件是不等式,后一部分约束条件是等式。
在资产组台问题中,
多为协方差矩阵;
在MATLAB中求解此类问题的函数是quadprog。
x=quadproq(H,q,A,h)
x=quadprog(H,r,q,A,