楼主: eliswan12
2897 0

[问答] 用MATLAB做亚式期权的二叉树定价,程序好像先输入死循环求大神指点…… [推广有奖]

  • 0关注
  • 0粉丝

学前班

90%

还不是VIP/贵宾

-

威望
0
论坛币
496 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
143 点
帖子
2
精华
0
在线时间
4 小时
注册时间
2014-5-6
最后登录
2016-6-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. %二叉树+亚式期权
  2. % tree
  3. %avgVinEachPath -各个节点各个路径均值
  4. %亚式期权
  5. function [btree,asianoption]=asoption(S0,K,delta,sigma,n)
  6. S0=100;%初始价格
  7. K=105;%行权价
  8. delta=0.1;%
  9. sigma=0.5;%波动率
  10. r=0.1;%无风险利率
  11. n=1000;%步长
  12. %
  13. u=exp(r*delta+sigma*sqrt(delta));
  14. d=1/u;
  15. p=(1+r-d)/(u-d);
  16. q=1-p;
  17. %1
  18. %q=0.5
  19. %a=exp(r*delta);
  20. %d=a-a*sqrt(exp(sigma^2*delta)-1);
  21. %u=a+a*sqrt(exp(sigma^2*delta)-1)
  22. %2
  23. %q=0.5;
  24. %a=exp(r*delta);
  25. %d=a-sigma*sqrt(delta);
  26. %u=a+sigma*sqrt(delta);
  27. %3
  28. %q=0.5
  29. %d=exp((r-sigma^2/2)*delta-sigma*sqrt(delta));
  30. %u=exp((r-sigma^2/2)*delta+sigma*sqrt(delta));
  31. %求各个节点的值
  32. btree=zeros(n+1);
  33. btree(1,1)=S0;
  34. for i=1:n
  35.     for j=0:i
  36.         btree(i+1,j+1)=S0^u^j*d^(i-j);
  37.     end;
  38. end;
  39. %计算各个节点各个路径的均值
  40. avgVinEachPath(1,1)=S0;
  41. for i=2:n+1;
  42.     path=i*(i-1)/2;
  43.     %每行的第一个节点和最后一个节点
  44.     avgVinEachPath(path+1,1)=(avgVinEachPath(i-1,1)*(i-1)+btree(i,1))/i;
  45.     avgVinEachPath(path+i,1)=(avgVinEachPath(i-1,1)*(i-1)+btree(i,i))/i;
  46.     %每行中的其他点
  47.     for j=2:i-1
  48.         nplc=(i-1)*(i-2)/2+j-1;
  49.         nprc=nplc+1;
  50.         l1=length(find(avgVinEachPath(nplc,:)>0));
  51.         r1=length(find(avgVinEachPath(nprc,:)>0));
  52.         count=1;
  53.         for lk=1:l1
  54.             avgVinEachPath(path+j,count)=(avgVinEachPath(nplc,lk)*(i-1)+btree(i,j))/i;
  55.             count=count+1;
  56.         end;
  57.         for rk=1:r1
  58.             avgVinEachPath(path+j,count)=(avgVinEachPath(nprc,rk)*(i-1)+btree(i,j))/i;
  59.             count=count+1;
  60.         end
  61.     end
  62. end
  63. %计算payoff
  64. i=n+1;
  65. j=n+1;
  66. path=i*(i-1)/2;
  67. %取出默末期节点的路径均值
  68. temp=avgVinEachPath(path+1:path+j,:);
  69. %求max(avg-E,0)
  70. temp=temp-K;
  71. temp(temp<0)=0;
  72. %乘上节点相应的涨跌概率
  73. for i=1:n+1
  74.     temp(i,:)=temp(i,:)*q^(n+1-i)*p^(i-1);
  75. end
  76. %求和并乘上exp(-风险率*期数)
  77. asianoption=sum(sum(temp))*exp(-r*n);


  78.    
复制代码
程序不知道哪里出了问题,在死循环中无法运行成功…求大神指点…感觉是计算各个节点各个路径的均值那里错了……


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB atlab matla 亚式期权 二叉树 二叉树 程序 亚式期权

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 03:55