资产组合计算.docx

上传人:b****8 文档编号:11345297 上传时间:2023-02-28 格式:DOCX 页数:19 大小:63.11KB
下载 相关 举报
资产组合计算.docx_第1页
第1页 / 共19页
资产组合计算.docx_第2页
第2页 / 共19页
资产组合计算.docx_第3页
第3页 / 共19页
资产组合计算.docx_第4页
第4页 / 共19页
资产组合计算.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

资产组合计算.docx

《资产组合计算.docx》由会员分享,可在线阅读,更多相关《资产组合计算.docx(19页珍藏版)》请在冰豆网上搜索。

资产组合计算.docx

资产组合计算

第5章资产组合计算

资产组合是实务性比较强的内容,通过本章的学习,要求读者掌握协方差与相关系数之间的相互推导,熟悉资产组合基本理论,学会用MATLAB计算投资组合基本参数,如均值与方差、资产组合VaR,重点掌握资产组合有效前沿的计算,能够处理无风险利率以及借贷关系情况下的最优投资组合,会用MATLAB规划工具箱求解投资组合最优化问题。

资产组合基本原理

证券投资组合理论(PortfolioTheory)主要研究如何配置各种不同的金融资产,实现资产组合的最佳投资配置。

1952年美国学者马克维茨创立了资产组合理论,该理论在实践中得到广泛运用。

收益率序列与价格序列间的转换

1.将收益率序列转换为价格序列

在处理金融时间序列时,有时需要把收益率序列转换为价格序列。

在MATLAB中将收益率序列转换为价格序列的函数是ret2tick。

调用方式

[TickSeries,TickTimes]=ret2tick(RetSeries,StartPrice,RetIntervals,StartTime,Method)

输入参数

RetSeries%收益率序列

StartPrice%(0ptional)起始价格,默认值是1

RetIntervals%(0ptional)收益率序列的时间间隔,默认值是l

StartTime%(optional)价格开始计算的时间,默认值是0

Method%(Optionl)转换方法。

Method='Simple'表示简单,

;Method='Continous'表示连续法,

输出参数

TickSeries%价格序列

TickTimes%与价格对应的时间序列

例5-1己知资产收益率以及时间间隔如表所示

表资产收益率及时间

收益率

时间间隔(天)

182

91

92

起始价格为10元,起始时间为2000年12月18日,试求该资产价格时间序列,收益率采用离散方法。

在MATLAB中执行以下命令:

RetSeries=[,,]';

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

这样就把收益率时间序列转换为价格时间序列,结果如表所示。

表资产各时间的价格

时间

18-Dec-2000

18-Jun-2001

17-Sep-2001

18-Dec-2001

价格

收益率

-

时间间隔

-

182

91

92

2.将价格序列转换为收益率序列

MATLAB中将价格序列转换为收益率序列的函数是tick2ret。

调用方式

[RetSeries,RetIntervals]=tick2ret(TickSeries,TickTimes,Method)

输入参数

TickSeries%价格序列

TimeTimes%价格序列对应的时间

Method%(Optionl)计算收益率的,Method='Simple'表示算术收益率;Method='Continous'表示连续法,即为对数计算法。

输出参数

RetSeries%收益率序列

RetIntervals%收益率时间间隔

例5-2已知股票的价格时间序列如表所示。

表股票各时间对应的价格

时间

0

6

9

12

价格

100

110

115

110

求出该股票的收益率时日序列。

在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];

Covariances=corr2cov(STDs,Correlations)

资产组合收益率与方差

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]=portstats(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%总资产的回报

PortRisk%总资产的标准差

RiskThreshold%概率阈值,默认值为

PortValue%资产总的价值

输出参数

ValueAtRisk%概率阈值下的单资产var值

例5-7已知资产年回报率为,标准差为,资产现在价值为1亿,求1%水平下资产在险价值。

在MATLAB中执行以下命令:

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中执行如下命令

ExpReturn=[,,];

ExpCovariance=[,,;,,;,,];

NumPorts=4;

[PortRisk,PortReturn,PortWts]=frontcon(ExpReturn,ExpCovariance,

NumPorts,PortReturn,AssetBounds,Groups,GroupBounds)

带约束条件资产组合有效前沿

投资组合中的问题很少有简单的约束,大多数情况下是多种约束,例如监管当局为了控制风险,对资产组中每种资产的比例加以种种限制,这时就需要考虑多种约束条件下的最优组合问题。

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中执行如下命令:

ret=[,];cov=[,0;0,];

constr=[1,1,1;1,0,;-1,0,0;0,-1,];

portopt(ret,cov,[],[],constr)

图含约束条件均值方差有效前沿示意图

例5-11各资产的相关系数矩阵、预期回报率和标准差如表所示

试给出有效前沿。

在MATLAB中执行如下命令

Returns=[,,];STDs=[,,];Correlations=[1,,;,1,;,,1];

Covariances=corr2cov(STDs,Correlations)

portopt(Returns,Covariances,20)%绘出组合的有效前沿

%然后选择权重

rand('state',0);

Weights=rand(1000,3);

Total=sum(Weights,2);

Weights(:

1)=Weights(:

1)./Total;

Weights(:

2)=Weights(:

2)./Total;

Weights(:

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

预期回报

资产A

资产B

资产C

无风险利率为,借贷利率为,投资者的风险厌恶系数为3,要求考虑无风险资产和借贷情况下的最优资产配置。

在MATLAB中执行如下命令:

ExpReturn=[,,];

ExpCovariance=[,,;,,;,,];

[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的权重,且没有卖空。

求解使得上述收益率最大的投资组合

首先确定目标函数为:

资产约束条件可写为

在MATLAB中执行如下命令:

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,b,A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1