全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
11368 3
2014-04-22
以下是欧式二叉树期权定价的matlab程序代码,求大神指点标黑的d=1/u;(系统显示
??? Error using ==> mldivide
Matrix dimensions must agree.

Error in ==> bino at 10
d=1/u;)
求指导,矩阵不对,怎么 改呢?


function EXS()
S=input('30:\n');%请输入当前股价
K=input('35:\n');%请输入股票执行价格
r=input('0.03:\n');%请输入无风险利率
theta=input('0.01:\n');%请输入波动率
T=input('2:\n');%请输入到期时间
bc=input('0.1:\n');%请输入步长
q=input('0.1:\n');%请输入股息率
KZ=input('1\n');%是否为看涨期权?若是请输入1,若不是请输入其他任意值
u=exp(theta*(T/bc)^0.5);
d=1/u;
a=exp((r-q)*(T/bc));
p=(a-d)/(u-d);
stock=[];
option=[];
stock(1,1)=S;
for i=2:bc+1
    for j=1:i
        if(j<=i/2)
            stock(i,j)=stock(i-1,j)*u;
        else
            stock(i,j)=stock(i-1,j-1)*d;
        end
    end
end
for i=1:bc+1
    if(KZ==1)   
      if(stock(bc+1,i)<=K)
        option(bc+1,i)=0;
      else
        option(bc+1,i)=stock(bc+1,i)-K;
      end
    else
          if(stock(bc+1,i)>=S)  
          option(bc+1,i)=0;
        else
         option(bc+1,i)=K-stock(bc+1,i);   
        end
    end
end
for i=bc:-1:1;
    for j=1:i
        option(i,j)=(option(i+1,j)*p+option(i+1,j+1)*(1-p))*exp(-r*T/bc);
    end
end
stock,option




二维码

扫码加我 拉你入群

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

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

全部回复
2014-4-23 23:45:04
我认为问题不在bino.m而是在你为input输入参数那里出现问题

可以考虑在变量窗口详细查看一下theta、T和bc是维数信息是不是输错了
本人试了一下,完全按照你默认的参数输了一遍,d没有问题,反而是
Attempted to access stock(1.1,1); index must be a positive integer or logical.

Error in Test (line 28)
      if(stock(bc+1,i)<=K)
目测你把步长和节点搞混了,再仔细检验一下你的数值算法吧

(BTW,input函数不是这么用的,建议起码弄个语言提示符,比如说:
复制代码

二维码

扫码加我 拉你入群

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

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

2014-4-25 21:11:41
Benlaron 发表于 2014-4-23 23:45
我认为问题不在bino.m而是在你为input输入参数那里出现问题

可以考虑在变量窗口详细查看一下theta、T和b ...
就是步长搞错了~~~谢谢你哦~~谢谢你哦!!赞!!
二维码

扫码加我 拉你入群

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

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

2015-5-15 13:05:26
请问你这个程序最后是否还有作图的步骤看一下期权价格的预测走势
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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