楼主: aloneparis
2606 0

[问答] 求解CPPIStr函数代码(固定比例组合保险策略模拟) [推广有奖]

  • 2关注
  • 0粉丝

高中生

92%

还不是VIP/贵宾

-

威望
0
论坛币
1329 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
442 点
帖子
11
精华
0
在线时间
53 小时
注册时间
2012-4-16
最后登录
2019-8-19

楼主
aloneparis 发表于 2017-3-22 00:41:01 |AI写论文
5论坛币
问题:固定比例组合保险策略模拟(问题在代码括号内)
CPPIStr函数源代码:
  1. function [F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,...
  2.     TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData)
  3. %input
  4. %PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,TradeDayOfYear,adjustCycle,Risklessreturn,TradeFee...
  5. %SData is simulation index data
  6. %output
  7. %F,E,A,G,SumTradeFee
  8. %portFreez default is 0, if portFreez=1,portfolio freez there would
  9. %have no risk--investment
  10. %%
  11. %初始交易费用(交易佣金)为0;
  12. SumTradeFee=0;
  13. %F,E,A,G的初始化,长度为N+1            ??( 长度为什么要N+1)??
  14. F=zeros(1,TradeDayTimeLong+1);
  15. E=zeros(1,TradeDayTimeLong+1);
  16. A=zeros(1,TradeDayTimeLong+1);
  17. G=zeros(1,TradeDayTimeLong+1);
  18. %给定F,E,A,G的初始值
  19. %初始组合资产
  20. A(1)=PortValue;
  21. %初始安全底线
  22. F(1)=GuarantRatio*PortValue*exp(-RisklessReturn*TradeDayTimeLong/TradeDayOfYear);
  23. %初始风险资产
  24. E(1)=max(0,Riskmulti*(A(1)-F(1)));
  25. %无风险资产
  26. G(1)=A(1)-E(1);
  27. %%
  28. %是否进行风险资产平仓
  29. %portFreez=0 正常,portFreez=1;平仓
  30. portFreez=0;
  31. %if portFreez=1,portfolio freez there would have no risk--investment
  32. %%
  33. %开始逐日模拟,循环计算
  34. %根据T-1日情况与T日市场行情,计算T日产品净值
  35. for i=2:TradeDayTimeLong+1
  36.     E(i)=E(i-1)*(1+(SData(i)-SData(i-1))/(1+SData(i-1)));             ? ?为什么这么算??
  37.     G(i)=G(i-1)*(1+RisklessReturn/TradeDayOfYear);
  38.     A(i)=E(i)+G(i);
  39.     F(i)=GuarantRatio*PortValue*exp(-RisklessReturn*(TradeDayTimeLong-i+1)/TradeDayOfYear);     
  40.     %判断是否进行调仓,调仓周期为adjustCycle
  41.     %mod函数求余数的意思,若adjustCycle=20, i为20的整数倍时
  42.     %mod(i,adjustCycle)=0
  43.     if mod(i,adjustCycle)==0
  44.         temp=E(i);                  ?这个temp放这里干嘛用?                        E(i)=max(0,Riskmulti*(A(i)-F(i)));
  45.         SumTradeFee=SumTradeFee+TradeFee*abs(E(i)-temp);               ?  ?abs里不是为0了吗??
  46.        G(i)=A(i)-E(i)-TradeFee*abs(E(i)-temp);
  47.     end
  48.     %判断是否平仓,若风险资产为0,组合平仓冻结
  49.     if E(i)==0
  50.         A(i)=G(i);
  51.         portFreez=1;
  52.     end
  53. end
复制代码
函数测试代码:(??最后产品的收益率在哪里看到的??)
  1. %set value
  2. PortValue=100;%产品组合初始价值
  3. Riskmulti=2;%产品风险乘数为2
  4. GuarantRatio=1;%产品保本率为100%
  5. TradeDayTimeLong=250;%产品期限为250个交易日
  6. TradeDayOfYear=250;%模拟假设一年交易日为250个
  7. adjustCycle=10;%调整周期为每10个交易日调整一次
  8. RisklessReturn=0.05;%无风险产品收益率为5%
  9. TradeFee=0.005;%风险资产的交易费用为0.5%

  10. %to generate Brow random number
  11. %预期收益率年化转日化
  12. Mean=1.2^(1/TradeDayOfYear)-1;
  13. %预期波动率年化转日化
  14. Std=0.3/sqrt(TradeDayOfYear);
  15. %初始价格
  16. Price0=100;
  17. SData=RandnPrice(Price0,Mean,Std,TradeDayOfYear);
  18. %将初始价格并入随机价格序列
  19. SData=[Price0;SData];
  20. %[X0,X1,~,Xn]

  21. %调用CPPIStr函数
  22. [F,E,A,G,SumTradeFee,portFreez]=CPPIStr(PortValue,Riskmulti,GuarantRatio,TradeDayTimeLong,...
  23.     TradeDayOfYear,adjustCycle,RisklessReturn,TradeFee,SData);
  24. %to plot
  25. figure;
  26. %子图1,模拟的风险资产的价格序列
  27. subplot(2,1,1)
  28. plot(SData)
  29. legend('Hs300-Simulation')
  30. xlabel('t');
  31. ylabel('price');
  32. %set(gca,'XTick',10:10:100) 设定刻度
  33. %set(gca,'YTick',10:10:100)
  34. %CPPI策略的运行情况
  35. subplot(2,1,2)
  36. plot(A,'-.')
  37. hold on
  38. plot(E,'-o')
  39. plot(F,'-k')
  40. plot(G,'-x')
  41. %标记线型
  42. legend('PortValue','RiskAssect','GuarantLine','RisklessAssect')
  43. xlabel('t');
  44. ylabel('price')
  45. axis([0 300 0 150])
  46. %总的交易费用
  47. SumTradeFee
复制代码



关键词:CPPI 函数代码 Istr R函数 IST function default 源代码 保险

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 17:04