function prize=actree(f,k,r,b,tn,n)
%用于无红利的美式看涨期权定价,参数依次为(现在股票价格,协议价格,无风险利率,波动率,期限,分的步数)
t=tn/n
u=exp(b*t^(1/2))
d=1/u
a=exp(r*t)
p=(a-d)/(u-d)%先定义下面需用的各变量
discount=exp(-r*t)%注意,这里必须先求出贴现率,而不能把它用exp(-r*t)代替然后直接放入循环中,那样由于循环中又定义了一个变量t,导致错误。
for t=0:n%事实上,这个变量最好不要用t,因为上面定义了t为时间,这样容易导致错误。
for j=0:t
S(n+1-j,t+1)=f*u^j*d^(t-j);
end
end
S
S1=[];
S1(:,n+1)=max(0,S(:,n+1)-k);
for t=1:n
for j=1:1+n-t
S1(j+t,n+1-t)=max(S(j+t,n+1-t)-k,(S1(j+t-1,n+2-t)*p+S1(j+t,n+2-t)*(1-p))*discount);
end
end
S1
%program by kevin 2006.11.03
|