由于美式期权没有解析解,编完了也不知道算的对不对,向大家请教了
function price=bidimen_binomial(sigma1,sigma2,T,S10,S20,K,rho,q1,q2,r,n)%rho为相关系数,n为步数%
t=T/n;
u1=exp(sigma1*sqrt(t));
d1=exp(-sigma1*sqrt(t));
u2=exp(sigma2*sqrt(t));
d2=exp(-sigma2*sqrt(t));
v1=r-q1-sigma1^2/2;
v2=r-q2-sigma2^2/2;
p_uu=0.25*(1+sqrt(t)*(v1/sigma1+v2/sigma2)+rho);
p_ud=0.25*(1+sqrt(t)*(v1/sigma1-v2/sigma2)-rho);
p_du=0.25*(1+sqrt(t)*(-v1/sigma1+v2/sigma2)-rho);
p_dd=0.25*(1+sqrt(t)*(-v1/sigma1-v2/sigma2)+rho);
for i=1:n
for j=0:i
s1(j+1,i)=S10*u1^(i-j)*d1^(j)%求标的S1资产价格%
end
end
for i=1:n
for j=0:i
s2(j+1,i)=S20*u2^(i-j)*d2^(j)%求标的S2资产价格%
end
end
s1
for i=1:n
for j=0:i
for k=0:i
o(i,j+1,k+1)=max(s1(j+1,i)-s2(k+1,i)-K,0)%求组合交割价格,i为所在步数,j为第一个标的资产的行数,k为第二个标的资产的行数%
end
end
end
i=n-1;
while i>0
for j=1:i
for k=1:i
o(i,j,k)=max((o(i+1,j,k)*p_uu+o(i+1,j,k+1)*p_ud+o(i+1,j+1,k)*p_du+o(i+1,j+1,k+1)*p_dd)*exp(-r*t),o(i,j,k))%比较组合持有和交割价格%
end
end
i=i-1;
end
price=max((o(2,1,1)*p_uu+o(2,1,2)*p_ud+o(2,2,1)*p_du+o(2,2,2)*p_dd)*exp(-r*t),max(S10-S20-K,0))