全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2679 7
2016-05-30
悬赏 10 个论坛币 已解决


我想算期权收敛的价格  但是为什么s和a的值是错误的啊 显示NaN
最后展示期权收敛的那个价格是用disp(price)吗?

最佳答案

cmwei333 查看完整内容

对于 factorial(n) 来说,如果 n 太大了,MATLAB 出来的结果就是 Inf,所以最好的办法就是把 a=factorial(N)/(factorial(N-j)*factorial(j))*p^(j)*(1-p)^(N-j)*f; 换成 a=binopdf(j,N,p)*f; 就可以避免出现 NaN 的问题。我已经测试过,出来的 price 没问题
二维码

扫码加我 拉你入群

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

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

全部回复
2016-5-30 13:59:24
对于 factorial(n) 来说,如果 n 太大了,MATLAB 出来的结果就是 Inf,所以最好的办法就是把

a=factorial(N)/(factorial(N-j)*factorial(j))*p^(j)*(1-p)^(N-j)*f;

换成

a=binopdf(j,N,p)*f;

就可以避免出现 NaN 的问题。我已经测试过,出来的 price 没问题
二维码

扫码加我 拉你入群

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

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

2016-5-30 14:02:04
刚刚贴的图好像看不见。
S0=31.39;
K=31;
sigma=0.10911818;
T=1/12;
n=500;
r=0.23;
price=zeros(1,n);
for N=1:n;
    dt=T/N;
    u=exp(sigma*sqrt(dt));
    d=1/u;
    p=(exp(r*dt)-d)/(u-d);
    s=0;
    for j=0:N;
        f=max(S0*u^(j)*d^(N-j)-K,0);
        a=factorial(N)/(factorial(N-j)*factorial(j))*p^(j)*(1-p)^(N-j)*f;
        s=s+a;
    end
    price(1,N)=s*exp(-r*dt);
end
plot(price)
二维码

扫码加我 拉你入群

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

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

2016-5-31 23:29:06
自己顶一下
二维码

扫码加我 拉你入群

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

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

2016-6-1 10:10:00
我跑出来的图形是这样的,属于正常的吗?
正常的图形难道不该是这样的吗?
二维码

扫码加我 拉你入群

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

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

2016-6-1 10:13:50
cmwei333 发表于 2016-6-1 06:41
对于 factorial(n) 来说,如果 n 太大了,MATLAB 出来的结果就是 Inf,所以最好的办法就是把

a=factoria ...
我跑出来的图形是图一这样的,属于正常的吗? QQ20160601-1.png

正常的图形难道不该是图二这样的吗?
图片 1.png
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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