MATLAB程序设计策略模拟-组合保险策略分析_第1页
MATLAB程序设计策略模拟-组合保险策略分析_第2页
MATLAB程序设计策略模拟-组合保险策略分析_第3页
MATLAB程序设计策略模拟-组合保险策略分析_第4页
MATLAB程序设计策略模拟-组合保险策略分析_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

策略模拟—组合保险策略分析人性的贪婪与恐惧在资本市场中可以得到充分的体现,组合保险策略产品是在下限风险确定的前提下,以获取潜在收益为目标的产品,本质为“恐惧基础上的贪婪”。组合保险策略按构成主要分为基于期权的投资组合保险(Option-BasedPortfolioInsurance,OBPI)策略和恒定比例投资组合保险(ConstantProportionPortfolioInsurance,CPPI)策略是两种广泛应用的投资组合保险策略。基于期权的投资组合保险产品使用债券与期权组合构建产品,这样构建方法与股票挂钩产品中的保本票据的构建方法一致。在利息较低或者期权价格较高的情况下,基于期权的投资组合保险策略较难实现。目前,国内市场金融工具有限,期权市场还尚未全面发展,保本产品基本都是使用固定比例投资组合保险进行构建。本章以组合保险策略作为示例进行策略的模拟。策略模拟的一般步骤为:1.模拟数据生成(历史数据或随机数据);2.策略模型根据模型原理对数据进行计算并生成结果;3.对结果数据进行分析评价模型有效性。1固定比例组合保险策略投资组合保险理论(PortfolioInsurance)始于上世纪70年代末80年代初。最初是由Leland和Rubinstein(1976)提出。保本策略的本质是以确定的风险去追求潜在收益。目前,国际上流行的保本策略有很多种,其中固定比例投资组合保险(CPPI:ConstantProportionPortfolioInsurance)策略是最通用的保本策略之一。CPPI是目前保本理财产品市场上非常流行的做法,它通过动态调整投资组合中无风险品种与高收益品种的投资比例,从而达到既规避高收益投资品种价格下跌风险的同时,又享受到其价格上涨的收益。1.1策略模型固定比例投资组合保险(CPPI:ConstantProportionPortfolioInsurance)策略是组合保险策略通用方法之一。CPPI策略的主要架构为:将资产分为无风险资产和风险资产两部分。初始时,风险资产投资比例较低,产品投资运作一段时间后根据资产的收益情况对无风险资产和风险资产两部分的投资比例进行调整,如果出现盈利,则可进一步扩大风险投资比例;如果出现亏损,则立即减少风险资产投资比例。CPPI策略的基本公式如下:其中,表示t时刻投资组合的资产净值;表示t时刻可投资于风险资产的上限;表示t时刻可投资于无风险资产的下限;表示t时刻表示风险乘数;表示t时刻组合的安全底线;而表示t时刻可承受风险的安全垫;为初始风险控制水平(保本线);(T-t)为产品剩余期限;r为无风险资产年化收益率。例:某产品风险乘数为2,保本率为100%,债券利率为5%,保本期限一年,则初始时刻资产配置计算为:产品初始净值为100元,安全底线为100/(1+5%)=95.2,则风险资产最大配置为2×(100-95.2)=9.6,无风险资产的最低配置为100-9.6=90.4,如果半年后,由于风险资产收益较高,产品净值为120元,安全底线为100/(1+0.5*5%)=97.6,则风险资产最大配置为2×(120-97.6)=44.8,无风险资产的最低配置为120-44.8=75.2。同样若,风险资产亏损,则相应的减少风险资产配比,由于本产品风险乘数为2,若风险资产亏损50%,则根据模型公式计算,风险资产投资上限将为0,即风险资产将被平仓。1.2模型参数固定比例投资组合保险策模型涉及风险控制水平、风险乘数、资产配置调整周期等多个关键参数:1.风险控制水平(保本线):风险控制水平(或者保本线),就是产品到期时的最低净值。如果面值为100元的产品,到期要求最低为100元,即保本率为100%,则为保本产品;若到期最低为102元,即保本率为102%,则为保收益产品;若到期最低为90元,即保本率为90%。组合保险策略产品是在下限风险确定的前提下,以获取潜在收益为目标的产品。但是风险控制水平的高低决定了产品配置风险资产的高低。配置风险资产的比重越大,暴露风险头寸就多大,获取潜在收益的能力越强。风险控制水平或者保本线应该根据投资人的风险厌恶水平确定。2.风险乘数:当保本比率一定,风险乘数越大,则风险资产投资比例越大。如果市场行情越好,风险资产表现越好,则组合保险策略收益率也越大。反之,产品净值损失越大。在某种程度上来说,风险乘数的大小对整个产品的业绩起着至关重要的作用。因此,风险乘数的设定水平反应了产品投资人的风险承受能力,同时也反映了产品管理人的投资能力。风险乘数调整策略主要分两种:恒定比例模式:该方法采用消极管理方式,产品的风险乘数无论市场行情怎样,都保守一个固定的值不变。这样可以避免因主观判断误差而造成的额外损失,但同时也会错过获得额外收益的机会。变动比例模式:产品的风险乘数根据市场行情而变化。如果市场行情好,将系数变大将获得超额收益,反之市场行情差,将系数变小将有效减少股票市场系统风险给产品带来的损失,如果险乘数根据市场行情调整,由于市场行情好坏的判断是由主观因素来判断,存在因主观误差造成产品净值损失的可能。3.资产配置调整周期:当风险资产处于上升阶段时,及时进行资产配置调整从而提高风险资产比例,则会带来较好的正收益;反之,风险资产面临下跌阶段,及时进行资产配置调整,降低风险资产比例则可以避免损失。但是,如市场处于盘整行情时,频繁调整资产比例会导致较大的交易费用。国外通常有3种调整方法:定期调整法则(以固定交易日作为间隔进行定期调整)、滤波调整法则(基金组合上涨或下跌一定比率时进行调整)、仓位调整法则(计算得到的股票仓位比例与实际仓位比例相差一定比率时便进行调整)。2时间不变性组合保险策略TIPP策略主要架构为:时间不变性组合保险(time-invariantportfolioprotection,TIPP)策略。该策略由Estep&Kritzman(1988)提出,并指出当投资组合的价值上涨时,产品的最低保险金额是一个动态调整的值。TIPP和CPPI的调整公式非常类似,TIPP增加了保本比例调整策略,即每当产品收益每达到一定的比率,则动态保本比例相应的提高一定比例。例如,产品收益达到5%时,相应的保险比率提高3%。2.1策略模型TIPP策略的基本公式如下:其中,表示t时刻投资组合的资产净值;表示t时刻可投资于风险资产的上限;表示t时刻可投资于无风险资产的下限;M表示风险乘数;表示t时刻组合的安全底线;而表示t时刻可承受风险的安全垫;表示t时刻组合风险控制水平(保本线);(T-t)为产品剩余期限;r为无风险资产年化收益率。2.2模型参数固定比例投资组合保险策略(TIPP)与时间不变性组合保险策略(CPPI)基本一致,唯一的不同便是动态保本比率。动态保本比率的确定依赖于无风险资产收益率与保本期限长短经过测试而确定的,当产品盈利的时候可以采用TIPP策略调整动态保本比率。可以适时采用TIPP策略在一定时期后调整动态保本比率。该策略只当产品盈利时使用,例如在一段时期内产品盈利5%,则可将动态保本比率相对应的调整3%,这样可使产品在一定时期后有一定收益,同时可投资于风险的资产会相应减少,即获得潜在收益的能力相比于CPPI策略可能会降低。3策略数值模拟3.1模拟情景假设某金融产品采用组合保险策略进行资产投资,产品期限为1年,无风险资产为债券,其年化收益率为5%,风险资产为沪深300指数组合,产品保本率为100%,若预期未来1年沪深300指数的期望收益为20%,年化标准差为30%,风险资产的交易费用为0.5%,选取不同的组合保险策略,产品参数(包括风险乘数、资产配置调整周期,动态保本比率调整策略)产品收益如何?点睛:组合保险策略TIPP与CPPI是在发达资本市场成熟的策略,一般的操作方式是买入与产品期限相符的零息债券,债券到期使得产品达到产品说要求的保本率,使用剩余的资金进行风险资产的杠杆交易(杠杆率为风险乘数),交易可以通过融资融券或者保证金交易的方法进行。但是国内目前缺少零息债券,融资融券业务尚未开展,证券交易为全额交收。组合保险策略TIPP与CPPI执行方式一般为风险资产投资部门借入无风险资产进行杠杆投资,由于无风险资产投资减少对产品的实际保本率会造成一定的影响,尤其是在市场急速下跌,风险资产投资止损平仓时,对产品的实际保本率将造成较大影响。3.2固定比例组合保险策略模拟Matlab编程实现固定比例组合保险策略(CPPI),函数名称CPPIStr,M文件为CPPIStr.m[F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)输入参数:PortValue:产品组合初始价值Riskmulti:CPPI策略的风险乘数GuarantRatio:产品的保本率TradeDayTimeLong:产品期限,以交易日计数TradeDayOfYear:产品模拟,每年交易日,例如,每年交易日为250天adjustCycle:产品根据模型进行调整周期,例如每10个交易日调整一次RisklessReturn:无风险资产年化收益率TradeFee:风险资产的交易费用SData:模拟风险资产收益序列,布朗运动输出参数:F:数组,第t个数据表示t时刻安全底线E:数组,第t个数据表示t时刻可投资于风险资产的上限A:数组,第t个数据表示t时刻产品净值G:数组,第t个数据表示t时刻可投资于无风险资产的下限SumTradeFee:总交易费用portFreez:组合风险资产是否出现平仓,0为未出现风险资产平仓,1:出现风险资产平仓CPPIStr函数程序源码:Function[F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)%codebyariszheng@%2009-6-30%intput:%PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,%SDataissimulationindexdata%output%F,E,A,G,SumTradeFee%SumTradeFee%portFreezdefaultis0,ifportFreez=1,portfoliofreeztherewould%havenorisk--investment%%%初始交易费用(交易佣金)为0;SumTradeFee=0;%F,E,A,G的初始化,长度为N+1F=zeros(1,TradeDayTimeLong+1);E=zeros(1,TradeDayTimeLong+1);A=zeros(1,TradeDayTimeLong+1);G=zeros(1,TradeDayTimeLong+1);%给定F,E,A,G的初始值%初始组合资产A(1)=PortValue;%初始安全底线F(1)=GuarantRatio*PortValue*exp(-RisklessReturn*TradeDayTimeLong/TradeDayOfYear);%初始风险资产E(1)=max(0,Riskmulti*(A(1)-F(1)));%无风险资产G(1)=A(1)-E(1);%%%是否进行风险资产平仓%portFreez=0正常,portFreez=1;平仓portFreez=0;%ifportFreez=1,portfoliofreeztherewouldhavenorisk--investment%%%开始逐日模拟,循环计算%根据T-1日情况与T日市场行情,计算T日产品净值fori=2:TradeDayTimeLong+1E(i)=E(i-1)*(1+(SData(i)-SData(i-1))/(1+SData(i-1)));G(i)=G(i-1)*(1+RisklessReturn/TradeDayOfYear);A(i)=E(i)+G(i);F(i)=GuarantRatio*PortValue*exp(-RisklessReturn*(TradeDayTimeLong-i+1)/TradeDayOfYear);%判断是否进行调仓,调仓周期为adjustCycle%mod函数求余数的意思,若adjustCycle=20,i为20的整数倍时%mod(i,adjustCycle)=0ifmod(i,adjustCycle)==0temp=E(i);E(i)=max(0,Riskmulti*(A(i)-F(i)));SumTradeFee=SumTradeFee+TradeFee*abs(E(i)-temp);G(i)=A(i)-E(i)-TradeFee*abs(E(i)-temp);end%判断是否平仓,若风险资产为0,组合平仓冻结ifE(i)==0A(i)=G(i);portFreez=1;endend函数测试,M程序为testCPPIStr.m1.初始参数设置%setvaluePortValue=100;%产品组合初始价值Riskmulti=2;%产品风险乘数为2GuarantRatio=1.00;%产品保本率为100%TradeDayTimeLong=250;%产品期限为250个交易日TradeDayOfYear=250;%模拟假设一年交易为250个adjustCycle=10;%调整周期为每10个交易日调整一次RisklessReturn=0.05;%无风险产品收益率为5%TradeFee=0.005;%风险资产的交易费用为0.5%2.根据参数生成符合布朗运动的收益率序列%togenerateBrownrandomnumber%预期收益率年化专日化Mean=1.2^(1/TradeDayOfYear)-1;%预期波动率年化专日化Std=0.3/sqrt(TradeDayOfYear);%初始价格Price0=100;SData=RandnPrice(Price0,Mean,Std,TradeDayOfYear)%将初始价格并入随机价格序列SData=[Price0;SData]%[X0,X1,~,Xn]注释:RandnPrice函数:生成收益率服从正态分布的价格序列函数RandnPrice.MPrice=RandnPrice(Price0,mu,sigma,N).输入:Price0:初始价格Mu:正态分布均值Sigma:正态分布方差N:随机数个数输出:Price:收益率服从正态分布的价格序列具体参看‘随机模拟’相关章节。3.调用CPPIStr函数%调用CPPIStr函数[F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData);4.结果以及画图显示%toplotfigure;%子图1,模拟的风险资产的价格序列subplot(2,1,1)plot(SData)legend('Hs300-Simulation')xlabel('t');ylabel('price')%CPPI策略的运行情况subplot(2,1,2)plot(A,'-.')holdonplot(E,'-o')plot(F,'-k')plot(G,'-x')%标记线形legend('PortValue','RiskAssect','GuarantLine','RisklessAssect')xlabel('t');ylabel('price')%总的交易费用SumTradeFee图1CPPI策略模拟图计算结果:如图1所示,收益序列为随机生成,由于每次计算生成的随机序列不同,则每次计算的结果不同,该次计算产品收益率为10%,总交易费用为1.04%.(占初始总资产的比例)。3.3时间不变性组合保险策略模拟Matlab编程实现时间不变性组合保险策略模拟(TIPP),函数名称TIPPStr,M文件为TIPPStr.m[F,E,A,G,GuarantRatio,SumTradeFee,portFreez]=TIPPStr(PortValue,Riskmulti,GuarantRatio,GuarantRatioMark,GuarantRatioAdjust,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)输入参数:PortValue:产品组合初始价值Riskmulti:CPPI策略的风险乘数GuarantRatio:产品的保本率GuarantRatioMark:产品的保本率调整标准GuarantRatioAdjust:产品的保本率调整大小TradeDayTimeLong:产品期限,以交易日计数TradeDayOfYear:产品模拟,每年交易日adjustCycle:产品根据模型进行调整周期,例如每10个交易日调整一次RisklessReturn:无风险资产年化收益率TradeFee:风险资产的交易费用SData:模拟风险资产收益序列,布朗运动注释:例如,GuarantRatioMark=5%,GuarantRatioAdjust=3%,即产品收益每增加5%,则产品的保本率上调3%,GuarantRatio只能进行向上调整。输出参数:F:数组,第t个数据表示t时刻安全底线E:数组,第t个数据表示t时刻可投资于风险资产的上限A:数组,第t个数据表示t时刻产品净值G:数组,第t个数据表示t时刻可投资于无风险资产的下限GuarantRatio:产品的保本率SumTradeFee:总交易费用portFreez:组合风险资产是否出现平仓,0为未出现风险资产平仓,1:出现风险资产平仓函数TIPPStr源代码:function[F,E,A,G,GuarantRatio,SumTradeFee,portFreez]=TIPPStr(PortValue,Riskmulti,GuarantRatio,GuarantRatioMark,GuarantRatioAdjust,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)%codebyariszheng@%2009-6-30%intput:%PortValue,Riskmulti,GuarantRatio,GuarantRatioMark,GuarantRatioAdjust%Trade,DayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee%e.gGuarantRatio=100%,GuarantRatioMark=5%,GuarantRatioAdjust=3%%ifreturnmorethanGuarantRatioMark%GuarantRatio=GuarantRatio+GuarantRatioAdjust%SDataissimulationindexdata%output%F,E,A,G,SumTradeFee%SumTradeFee%portFreezdefaultis0,ifportFreez=1,portfoliofreez%therewouldhavenorisk--investment%%%初始的交易总费用为0SumTradeFee=0;%模拟状态变量F,E,A,G的空间初始化(分配内存)%为不影响计算一般初始值为0;F=zeros(1,TradeDayTimeLong+1);E=zeros(1,TradeDayTimeLong+1);A=zeros(1,TradeDayTimeLong+1);G=zeros(1,TradeDayTimeLong+1);%模拟状态变量F,E,A,G的初始化A(1)=PortValue;F(1)=GuarantRatio*PortValue*exp(-RisklessReturn*TradeDayTimeLong/TradeDayOfYear);E(1)=max(0,Riskmulti*(A(1)-F(1)));G(1)=A(1)-E(1);%%%ifportFreez=1,portfoliofreeztherewouldhavenorisk--investment%风险资产平仓状态标识;portFreez=0;%保本率为100%GuarantRatioMarklevel=1;%%fori=2:TradeDayTimeLong+1E(i)=E(i-1)*(1+(SData(i)-SData(i-1))/(1+SData(i-1)));G(i)=G(i-1)*(1+RisklessReturn/TradeDayOfYear);A(i)=E(i)+G(i);F(i)=GuarantRatio*PortValue*exp(-RisklessReturn*(TradeDayTimeLong-i+1)/TradeDayOfYear);%判断是否进行调仓,调仓周期为adjustCycle%mod函数求余数的意思,若adjustCycle=20,i为20的整数倍时%mod(i,adjustCycle)=0ifmod(i,adjustCycle)==0if(A(i)/A(1))>(1+GuarantRatioMarklevel*GuarantRatioMark)GuarantRatio=GuarantRatio+GuarantRatioAdjust;GuarantRatioMarklevel=GuarantRatioMarklevel+1;endF(i)=GuarantRatio*PortValue*exp(-RisklessReturn*(TradeDayTimeLong-i+1)/TradeDayOfYear);temp=E(i);E(i)=max(0,Riskmulti*(A(i)-F(i)));SumTradeFee=SumTradeFee+TradeFee*abs(E(i)-temp);G(i)=A(i)-E(i)-TradeFee*abs(E(i)-temp);end%是否发生风险资产的平仓;ifE(i)==0A(i)=G(i);portFreez=1;endend函数测试,M程序为testTIPPStr.m1.初始参数设置%setvaluePortValue=100;%产品组合初始价值Riskmulti=2;%产品风险乘数为2GuarantRatio=1.00;%产品保本率为100%GuarantRatioMark=0.05;%产品的保本率调整标准为5%,GuarantRatioAdjust=0.03;%产品的保本率调整大小为3%,TradeDayTimeLong=250;%产品期限为250个交易日TradeDayOfYear=250;%模拟假设一年交易为250个adjustCycle=10;%调整周期为每10个交易日调整一次RisklessReturn=0.05;%无风险产品收益率为5%TradeFee=0.005;%风险资产的交易费用为0.5%2.根据参数生成符合布朗运动的收益率序列%togenerateBrownrandomnumber%预期收益率年化专日化Mean=1.2^(1/TradeDayOfYear)-1;%预期波动率年化专日化Std=0.3/sqrt(TradeDayOfYear);%初始价格Price0=100;SData=RandnPrice(Price0,Mean,Std,TradeDayOfYear)%将初始价格并入随机价格序列SData=[Price0;SData]%[X0,X1,~,Xn]注视RandnPrice函数语法参看‘随机模拟’相关章节。3.调用TIPPStr函数%tocomputer[F,E,A,G,GuarantRatio,SumTradeFee,portFreez]=TIPPStr(PortValue,Riskmulti,GuarantRatio,GuarantRatioMark,GuarantRatioAdjust,TradeDayTimeLong,TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData);4.计算结果及画图展示图2TIPP策略模拟图计算结果:如图2所示,收益序列为随机生成,由于每次计算生成的随机序列不同,则每次计算的结果不同,该次计算产品收益率为6.69%,总交易费用为0.782%(占初始总资产的比例),保本率调整为103%。注视:两次模拟的结果基于不同的随机价格序列(同样的方法,两次生成的数值不同),在收益率与交易费用上不具可比性。4策略选择与参数优化4.1模拟情景假设某金融产品采用组合保险策略进行资产投资,产品期限为1年,无风险资产为债券,其年化收益率为5%,风险资产为沪深300指数组合,产品保本率为100%,若预期未来1年沪深300指数的期望收益为20%,年化标准差为30%,风险资产的交易费用为0.5%,选择CPPI策略还是TIPP策略,参数如何设置使得产品期望收益最大4.2模拟方案与模拟参数模拟思路与步骤如下:1.模拟数据生成:根据案例说明“若预期未来1年沪深300指数的期望收益为20%,年化标准差为30%”生成1000组不同的布朗运动的随机序列。2.模拟参数设置:CPPI策略模拟参数设置PortValue:产品组合初始价值为100Riskmulti:CPPI策略的风险乘数,分别选取2,2.5,3.0,3.5,4.0五种情况GuarantRatio:产品的保本率分为95%,100%两种情况TradeDayTimeLong:产品期限,以交易日计数,为250TradeDayOfYear:产品模拟,每年交易日为250adjustCycle:产品根据模型进行调整周期,采用1,5,10,20四种情况RisklessReturn:无风险资产年化收益率5%TIPP策略模拟参数设置GuarantRatioMark:产品的保本率调整标准GuarantRatioAdjust:产品的保本率调整大小分别采取一下两组GuarantRatioMark=5%,GuarantRatioAdjust=3%GuarantRatioMark=3%,GuarantRatioAdjust=2%3.模拟计算:使用CPPI与TIPP分布使用不同的参数设置,进行1000次模拟计算,使用1000次的均值作为在给定条件下的期望收益率。4.3模拟程序与结果CPPI策略模拟程序,M文件CPPIOpt.m参数说明:GuarantRatio:产品保本率,分别为95%,100%两种情况Riskmulti:产品风险乘数,分别为2,2.5,3,3.5,4五种情况adjustCycle:策略调整周期,分别为1,5,10,20即每天调整,每周调整等,四种情况Return:在参数一定条件下的产品收益率(年化)Volatility:在参数一定条件下的产品波动率(年化)SumTradeFee:在参数一定条件下的产品交易费用portFreez:在参数一定条件下的产品风险资产平仓的概率根据不同参数的组合共将计算出40种不同参数情况下CPPI策略结果模拟程序源码:%%%CPPIsimulation%相关参数设%初始组合价值PortValue=100;%PortfoiloValue%交易日个数TradeDayTimeLong=250;TradeDayOfYear=250;%无风险收益率RisklessReturn=0.05;%交易费用(%)TradeFee=0.005;%情景设定风险乘数Riskmulti=[2,2.5,3,3.5,4];%情景设定保本率GuarantRatio=[0.95,1.00];%情景设定调整周期adjustCycle=[1,5,10,20];%结果矩阵的初始化%length(GuarantRatio)=2%length(Riskmulti)=4%length(adjustCycle)=2%共总16种组合,每种组合有7个参数%length(GuarantRatio)*length(Riskmulti)*length(adjustCycle)=16CPPITestMatrix=zeros(length(GuarantRatio)*length(Riskmulti)*length(adjustCycle),7);%CPPIResult=[GuarantRatio,Riskmulti,adjustCycle,Return,Volatility,SumTradeFee,portFreez]%%%根据每种情景假设进行模拟num=0;fori=1:length(GuarantRatio)forj=1:length(Riskmulti);fork=1:length(adjustCycle)num=num+1;CPPITestMatrix(num,1:3)=[GuarantRatio(i),Riskmulti(j),adjustCycle(k)];endendend%%%每种情况,模拟1000次,生成1000次随机序列testNum=1000;%随机序列的参数%将预期收益率20%进行日化1.2^(1/250)-1;%将预期波动率30%进行日化,30%/sqrt(250);sqrr表示开方Mean=1.2^(1/TradeDayTimeLong)-1;Std=0.3/sqrt(TradeDayTimeLong);%初始价格为100Price0=100;%过程矩阵(testNum,TradeDayTimeLong+1),1000次测试,每次测试251个数据SDataMatrix=zeros(testNum,TradeDayTimeLong+1);fori=1:testNumSData=RandnPrice(Price0,Mean,Std,TradeDayTimeLong)SDataMatrix(i,:)=[Price0;SData];end%%%CPPIcompute%根据随机序列开始计算模拟SumTradeFee=zeros(testNum,1);portFreez=zeros(testNum,1);testReturn=zeros(testNum,1);testVolatility=zeros(testNum,1);%分别待入不同的参数进行CPPI模拟fortestNo=1:length(CPPITestMatrix)fori=1:testNum%CPPIResult=[GuarantRatio,Riskmulti,adjustCycle,Return,%Volatility,SumTradeFee]TRiskmulti=CPPITestMatrix(testNo,2);TGuarantRatio=CPPITestMatrix(testNo,1);TadjustCycle=CPPITestMatrix(testNo,3);[F,E,A,G,SumTradeFee(i),portFreez(i)]=CPPIStr(PortValue,TRiskmulti,TGuarantRatio,TradeDayTimeLong,...TradeDayOfYear,TadjustCycle,RisklessReturn,TradeFee,SDataMatrix(i,:));testReturn(i)=(A(TradeDayTimeLong+1)-A(1))/A(1);testVolatility(i)=std(price2ret(A))*sqrt(TradeDayOfYear);endCPPITestMatrix(testNo,4)=sum(testReturn)/testNum;CPPITestMatrix(testNo,5)=sum(testVolatility)/testNum;CPPITestMatrix(testNo,6)=sum(SumTradeFee)/testNum;CPPITestMatrix(testNo,7)=sum(portFreez)/testNum;endCPPITestMatrix计算结果:GuarantRatio保本率Riskmulti风险乘数adjustCycle调整周日Return收益率Volatility波动率SumTradeFee交易费用portFreez平仓概率95%210.07500.05580.3658095%250.07730.05630.1648095%2100.07790.05640.11690.00195%2200.07810.05640.0806095%2.510.07840.06950.6841095%2.550.08280.07050.3105095%2.5100.08390.07080.22070.00195%2.5200.08430.07080.15200.00295%310.08070.08271.0874095%350.08790.08480.49860.00195%3100.08970.08530.35500.00295%3200.09040.08550.24450.00395%3.510.08190.09551.56950.00195%3.550.09240.09890.72850.00195%3.5100.09510.09980.52000.00295%3.5200.09620.10020.35800.0195%410.08210.10772.12250.00195%450.09650.11280.99950.00195%4100.10030.11420.71560.00495%4200.10190.11500.49280.025100%210.06330.02850.18520100%250.06450.02880.08340100%2100.06470.02880.05920.001100%2200.06480.02880.04080100%2.510.06500.03560.34630100%2.550.06720.03620.15720100%2.5100.06780.03630.11170.001100%2.5200.06800.03640.07700.002100%310.06620.04270.55050100%350.06980.04380.25240.001100%3100.07070.04400.17970.002100%3200.07110.04410.12380.003100%3.510.06680.04950.79460.001100%3.550.07210.05140.36880.001100%3.5100.07350.05180.26330.002100%3.5200.07400.05200.18130.01100%410.06690.05611.07460.001100%450.07420.05900.50600.002100%4100.07610.05980.36230.004100%4200.07690.06020.24950.025表1CPPI策略模拟结果结果说明:CPPI策略在预期市场上涨概念较大的情况下,CPPI策略低保本率与高风险乘数获得收益最高,为10.19%,波动性也最大11.5%,发生风险资产平仓的概率同样最大,策略的调整间隔越短,交易费用越高。TIPP策略模拟程序,M文件TIPPOpt.m参数说明:GuarantRatio:产品保本率,分别为95%,100%两种情况Riskmulti:产品风险乘数,分别为2,2.5,3,3.5,4五种情况adjustCycle:策略调整周期,分别为1,5,10,20即每天调整,每周调整等四种情况Return:在参数一定条件下的产品收益率(年化)Volatility:在参数一定条件下的产品波动率(年化)SumTradeFee:在参数一定条件下的产品交易费用portFreez:在参数一定条件下的产品风险资产平仓的概率GuarantRatioMark:产品的保本率调整标准GuarantRatioAdjust:产品的保本率调整大小分别采取一下两组,两种情况GuarantRatioMark=5%,GuarantRatioAdjust=3%GuarantRatioMark=3%,GuarantRatioAdjust=2%根据不同参数的组合共将计算出80种不同参数情况下TIPP策略结果程序源码:%%%TIPPsimulationPortValue=100;%PortfoiloValueTradeDayTimeLong=250;TradeDayOfYear=250;RisklessReturn=0.05;TradeFee=0.005;Riskmulti=[2,2.5,3,3.5,4];GuarantRatio=[0.95,1.00];adjustCycle=[1,5,10,20];GuarantRatioMark=[0.03,0.05];GuarantRatioAdjust=[0.02,0.03];TIPPTestMatrix=zeros(length(GuarantRatioMark)*length(GuarantRatio)*length(Riskmulti)...*length(adjustCycle),9);%CPPIResult=[GuarantRatio,GuarantRatioMark,GuarantRatioAdjust,Riskmulti,adjustCycle,Return,%Volatility,SumTradeFee,portFreez]%%num=0;fori=1:length(GuarantRatio)forj=1:length(Riskmulti);fork=1:length(adjustCycle)forl=1:length(GuarantRatioMark)num=num+1;TIPPTestMatrix(num,[1,4,5])=[GuarantRatio(i),Riskmulti(j),adjustCycle(k)];TIPPTestMatrix(num,[2,3])=[GuarantRatioMark(l),GuarantRatioAdjust(l)];endendendend%%%每种情况,模拟1000次,生成1000次随机序列testNum=1000;%随机序列的参数Mean=1.2^(1/TradeDayTimeLong)-1;Std=0.3/sqrt(TradeDayTimeLong);Price0=100;SDataMatrix=zeros(testNum,TradeDayTimeLong+1);fori=1:testNumSData=RandnPrice(Price0,Mean,Std,TradeDayTimeLong)SDataMatrix(i,:)=[Price0;SData];end%%%TIPPcomputeSumTradeFee=zeros(testNum,1);portFreez=zeros(testNum,1);testReturn=zeros(testNum,1);testVolatility=zeros(testNum,1);fortestNo=1:length(TIPPTestMatrix)fori=1:testNum%TIPPResult=[GuarantRatio,GuarantRatioMark,GuarantRatioAdjust,Riskmulti,adjustCycle,Return,%Volatility,SumTradeFee,portFreez]TRiskmulti=TIPPTestMatrix(testNo,4);TGuarantRatio=TIPPTestMatrix(testNo,1);TadjustCycle=TIPPTestMatrix(testNo,5);TGuarantRatioMark=TIPPTestMatrix(testNo,2);TGuarantRatioAdjust=TIPPTestMatrix(testNo,3);[F,E,A,G,GuarantRatio,SumTradeFee(i),portFreez(i)]=TIPPStr(PortValue,TRiskmulti,TGuarantRatio,TGuarantRatioMark,..TGuarantRatioAdjust,TradeDayTimeLong,TradeDayOfYear,TadjustCycle,RisklessReturn,TradeFee,SDataMatrix(i,:));testReturn(i)=(A(TradeDayTimeLong+1)-A(1))/A(1);testVolatility(i)=std(price2ret(A))*sqrt(TradeDayOfYear);endTIPPTestMatrix(testNo,6)=sum(testReturn)/testNum;TIPPTestMatrix(testNo,7)=sum(testVolatility)/testNum;TIPPTestMatrix(testNo,8)=sum(SumTradeFee)/testNum;TIPPTestMatrix(testNo,9)=sum(portFreez)/testNum;endTIPPTestMatrix计算结果:GuarantRatioGuarantRatioMarkGuarantRatioAdjustRiskmultiadjustCycleReturnVolatilitySumTradeFeeportFreez0.950.030.02210.06980.04630.330900.950.050.03210.07110.04920.347400.950.030.02250.07200.04720.157600.950.050.03250.07330.05000.167200.950.030.022100.07270.04780.111000.950.050.032100.07410.05040.120600.950.030.022200.07360.04860.072300.950.050.032200.07490.05100.081200.950.030.022.510.07160.05550.571400.950.050.032.510.07300.05930.609200.950.030.022.550.07550.05680.258700.950.050.032.550.07700.06050.284500.950.030.022.5100.07680.05790.174700.950.050.032.5100.07830.06130.199000.950.030.022.5200.07820.05920.109100.950.050.032.5200.07990.06230.128400.950.030.02310.07250.06390.852600.950.050.03310.07380.06830.916900.950.030.02350.07850.06600.374700.950.050.03350.07980.07030.419500.950.030.023100.08040.06740.249000.950.050.033100.08210.0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论