楼主: Da_Lu~
189 1

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

  • 0关注
  • 0粉丝

本科生

49%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
2.0000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
588 点
帖子
32
精华
0
在线时间
95 小时
注册时间
2015-7-29
最后登录
2019-6-19

Da_Lu~ 发表于 2019-6-2 16:02:29 |显示全部楼层
      想请教大家一下关于写欧式看涨期权的二叉树定价问题,网上看到的二叉树定价代码是首先通过二叉树一步一步得到终端的股票价格,然后得到终端期权的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期左右才收敛。请问大家有没有办法解决这个问题,如何通过风险中性一步计算出期权价格?
      谢谢大家!

stata SPSS
Da_Lu~ 发表于 2019-6-2 21:34:26 |显示全部楼层
代码倒数第二行有误,应该修改为CallP = sum(VectorC .* VectorP) * exp(-r* T);但是问题还是不变
回复

使用道具 举报

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

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

GMT+8, 2019-6-20 11:40