搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  codev3.zip
资料下载链接地址: https://bbs.pinggu.org/a-3633137.html
本附件包括:
  • code.m
  • KimCallQuad.m
  • Kimpsi.m
附件大小:
各位老师们,为什么我这个代码算出来的结果和中途积分的结果都是NaN,可以正常运行函数代码复现的是这篇文章的Asian option定价公式(定理4.1)
  • Kim, B. & Wee, I. 2014, "Pricing of geometric Asian options under Heston's stochastic volatility model", Quantitative finance, vol. 14, no. 10, pp. 1795-1809.
函数代码如下
  1. function call=KimCallQuad(nu,theta,s0,r,T,t,sigma,rho,kappa,w,n,K)
  2. call=exp(-r*(T-t))*KimB(nu,theta,s0,r,T,t,sigma,rho,kappa,w,n,K);

  3. function ret=KimB(nu,theta,s0,r,T,t,sigma,rho,kappa,w,n,K)
  4. global psi10
  5. ret=((psi10-K)/2)+(1/pi)*quadl(@KimIntegral,0,10^5,[],[],...
  6. nu,theta,s0,r,T,t,sigma,rho,kappa,w,n,K);

  7. function ret=KimIntegral(nu,theta,s0,r,T,t,sigma,rho,kappa,xi,w,n,K)
  8. ret=real((Kimpsi(nu,theta,s0,r,T,t,sigma,rho,kappa,xi,w,n,3)-...
  9. Kimpsi(nu,theta,s0,r,T,t,sigma,rho,kappa,xi,w,n,2)*K)*...
  10. (exp(-i*xi*log(K)))/(i*xi));
复制代码
  1. function psi=Kimpsi(nu,theta,s0,r,T,t,sigma,rho,kappa,xi,w,n,type)
  2. if type == 1
  3. xi=1;
  4. else
  5. if type == 2
  6. xi=1i*xi;
  7. else
  8. type == 3
  9. xi=1+1i*xi;
  10. end
  11. end
  12. a1=2*nu/(sigma^2);
  13. a2=2*kappa*theta/(sigma^2);
  14. a3=((T-t)/T)*log(s0)+((r*sigma-kappa*theta*rho)*(T-t)^2)/(2*sigma*T)-(rho*(T-t)/(sigma*T))*nu;
  15. a4=log(s0)-(rho/sigma)*nu+(r-(rho*kappa*theta/sigma))*(T-t);
  16. a5=(kappa*nu+(kappa^2)*theta*(T-t))/(sigma^2);
  17. psi=exp(-a1*(KimHtilde(T,t,sigma,rho,kappa,xi,w,n,type)/KimH(T,t,sigma,rho,kappa,xi,w,n,type))-...
  18. a2*log(KimH(T,t,sigma,rho,kappa,xi,w,n,type))+...
  19. a3*xi+a4*w+a5);


  20. function H=KimH(T,t,sigma,rho,kappa,xi,w,n,type)
  21. if type == 1
  22. xi=1;
  23. else
  24. if type == 2
  25. xi=1i*xi;
  26. else
  27. type == 3
  28. xi=1+1i*xi;
  29. end
  30. end
  31. h=[];
  32. h(1)=0; % h-2
  33. h(2)=0;% h-1
  34. h(3)=1;% h0
  35. h(4)=((T-t)*(kappa-w*rho*sigma))/2; % h1
  36. for j=5:n+4 % h for n bigger than or equal 2
  37. h(j)=(((T-t)^2)/ (4*n*(n-1)*T^2))*(-1*(xi^2)*(sigma^2)*(1-(rho^2))*((T-t)^2)*h(j-4)+...
  38. (xi*sigma*T*(sigma-2*rho*kappa)-2*xi*w*sigma^2*T*(1-(rho^2)))*(T-t)*h(j-3)+...
  39. T*((kappa^2)*T-2*xi*rho*sigma-w*(2*rho*kappa-sigma)*sigma*T-(w^2)*(1-(rho^2)*(sigma^2)*T)*h(j-2)));
  40. end
  41. H=sum(h(3:n+4));

  42. function Htilde=KimHtilde(T,t,sigma,rho,kappa,xi,w,n,type)
  43. if type == 1
  44. xi=1;
  45. else
  46. if type == 2
  47. xi=1i*xi;
  48. else
  49. type == 3
  50. xi=1+1i*xi;
  51. end
  52. end
  53. h=[];
  54. h(1)=0; % h-2
  55. h(2)=0; % h-1
  56. h(3)=1; % h0
  57. h(4)=((T-t)*(kappa-w*rho*sigma))/2; % h1
  58. for j=5:n+4 % h for n bigger than or equal 2
  59. h(j)=(((T-t)^2)/ (4*n*(n-1)*T^2))*(-1*(xi^2)*(sigma^2)*(1-(rho^2))*((T-t)^2)*h(j-4)+...
  60. (xi*sigma*T*(sigma-2*rho*kappa)-2*xi*w*sigma^2*T*(1-(rho^2)))*(T-t)*h(j-3)+...
  61. T*((kappa^2)*T-2*xi*rho*sigma-w*(2*rho*kappa-sigma)*sigma*T-(w^2)*(1-(rho^2)*(sigma^2)*T)*h(j-2)));
  62. hh(j)=(j-4)/(T-t)*h(j);
  63. end
  64. Htilde=sum(hh(5:n+4))+1/(T-t)*h(4);
复制代码
xi是那个歪歪曲曲的变量
运行代码如下
  1. clear
  2. clc

  3. T=0.5
  4. t=0
  5. sigma=0.39
  6. kappa=1.15
  7. rho=-0.64
  8. n=10
  9. w=0
  10. nu=0.09
  11. r=0.05
  12. theta=0.348
  13. s0=100
  14. K=90
  15. syms xi

  16. global psi10
  17. psi10=Kimpsi(nu,theta,s0,r,T,t,sigma,rho,kappa,xi,w,n,1)

  18. C=KimCallQuad(nu,theta,s0,r,T,t,sigma,rho,kappa,w,n,K)
复制代码


论文中的公式如下:
由于t=0,所以0-t对log(Su)的积分我没有写进函数方程。



麻烦各位老师了!代码文件同样上传了附件








    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2026-2-7 18:40