楼主: vivisays
3347 1

[问答] 美式期权implied volatility 计算程序提示错误,如何修改呢,多谢大家 [推广有奖]

  • 0关注
  • 0粉丝

大专生

43%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
105 点
帖子
37
精华
0
在线时间
68 小时
注册时间
2009-11-26
最后登录
2016-9-25

楼主
vivisays 发表于 2012-3-10 20:04:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大大好,我是刚刚开始学习matlab的菜鸟一只,在使用bisection method 计算美式期权的implied volatility时 程序总是显示出错,美式期权的计算式要求用binomial tree计算的,请各位高手帮忙看一下程序~
function impval=F1(P,S,K,r,T,delta,N)
%set the upper bound and lower bound of the sigma
ubound=2;
lbound=1;
sigma=0.5*(ubound+lbound);
%precompute invariant quantities
deltaT=T/N;
u=exp((r-delta)+sigma*sqrt(deltaT));
d=1/u;
p=(exp((r-delta)*deltaT)-d)/(u-d);
discount=exp(-r*deltaT);
p_u=discount*p;
p_d=discount*(1-p);
%set up S value
SVals=zeros(2*N+1,1);
SVals(N+1)=S;
for i=1:N
    SVals(N+1+i)=u*SVals(N+i);
    SVals(N+1-i)=d*SVals(N+2-i);
end
%set up terminal values
PVals=zeros(2*N+1,1);
for i=1:2:2*N+1
    PVals=max(K-SVals(i),0);
end
%work backward
for tau=1:N
    for i=(tau+1):2:(2*N+1-tau);
        PVals(i)=max(p_u*PVals(i+1)+p_d*PVals(i-1), K-SVals(i));---显示此处错误为Attempted to access PVals(3); index out of bounds because numel(PVals)=1.

    end
end
CP=PVals(N+1);
%set some variant
tol=1e-4;%the tolernce of the error
iter=0;
iter_max=1000;
diff=CP-P;
while abs(diff)>tol && iter<iter_max
    if(diff<0)
        sigma=lbound;
    elseif(diff>0)
        sigma=ubound;
    else
        sigma=0.5*(ubound+lbound);
    end
    iter=iter+1;
end
impval=sigma;

估计整个程序也有很大的问题,希望大家能够指点一下~
二维码

扫码加我 拉你入群

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

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

关键词:Volatility Implied 计算程序 美式期权 IED implied volatility bisection

沙发
matlab-007 发表于 2016-8-23 06:42:45
错误在你读文件的时候,读到的结果是x是个空矩阵,也就是读不出文件中的数据,你可以检查你的文件有没有问题

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 13:49