全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
2584 1
2019-06-02
      想请教大家一下关于写欧式看涨期权的二叉树定价问题,网上看到的二叉树定价代码是首先通过二叉树一步一步得到终端的股票价格,然后得到终端期权的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期左右才收敛。请问大家有没有办法解决这个问题,如何通过风险中性一步计算出期权价格?
      谢谢大家!
二维码

扫码加我 拉你入群

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

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

全部回复
2019-6-2 21:34:26
代码倒数第二行有误,应该修改为CallP = sum(VectorC .* VectorP) * exp(-r* T);但是问题还是不变
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群