楼主: Da_Lu~
2278 1

[讨论交流] Matlab 欧式期权单步二叉树定价问题(风险中性) [推广有奖]

  • 0关注
  • 0粉丝

硕士生

2%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
6.5500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
238 点
帖子
35
精华
0
在线时间
143 小时
注册时间
2015-7-29
最后登录
2023-3-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
      想请教大家一下关于写欧式看涨期权的二叉树定价问题,网上看到的二叉树定价代码是首先通过二叉树一步一步得到终端的股票价格,然后得到终端期权的payoff,再通过终端期权payoff与风险中性概率,一步一步地倒腾回去。
      但是,因为对于欧式期权而已,可以把期权的终端支付的期望直接通过无风险利率贴现回初始时刻,这样就一步到位了,我基于这个思想写了如下的Matlab代码:
function [CallP] = MYBSM(S0,K, r,T, sigma,M)
    dt = T/M;
    u = exp(sqrt(dt)*sigma);
    d = 1/u;
    S = zeros(M+1,1);
    NP = (exp(r*dt)-d)/(u-d);
    VectorP = zeros(M+1,1);
    for j = M:-1:0
            S(j+1,1) = S0*u^(j)*d^(M-j);
            VectorP(j+1,1) = NP^(j) * (1-NP)^(M-j)* nchoosek(M,j);
    end
    VectorC = max([S - K, zeros(M+1,1)],[],2);
    CallP = mean(VectorC .* VectorP) * exp(-r* T);
end


      这时候会出现问题,nchoosek(M,j),当M很大时候,Matlab无法计算,但是二叉树定价在200期左右才收敛。请问大家有没有办法解决这个问题,如何通过风险中性一步计算出期权价格?
      谢谢大家!
二维码

扫码加我 拉你入群

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

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

关键词:MATLAB matla atlab 欧式期权 Mat

沙发
Da_Lu~ 发表于 2019-6-2 21:34:26 |只看作者 |坛友微信交流群
代码倒数第二行有误,应该修改为CallP = sum(VectorC .* VectorP) * exp(-r* T);但是问题还是不变

使用道具

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

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

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

GMT+8, 2024-4-19 20:52