欧式期权是对的,美式期权定出的价格差距就很大,不知道哪里问题,是理论出问题了吗?谢谢大家
if AoE %欧式期权
P(1,:)=exp(-r*T)*P(N+1,:);
else
if type
P(i,:)=max(exp(-r*dt)*P(i+1,:),max(S(i,:)-K,0));%立即执行与贴现比较
else
P(i,:)=max(exp(-r*dt)*P(i+1,:),max(K-S(i,:),0));
end
end
这一部的意思是 倒数第二期的价值和立即执行比较,哪个大取哪一个。
MC2(30,28,0.04,1,0.7056,10,100000,1,1)=9.48
MC2(30,28,0.04,1,0.7056,10,100000,1,0)=17.82
这两个上面是欧式的 和书上一样,下面那个美式的也应该是9.48左右,哎。
现附上代码 请大神指点迷津 谢谢
function price=MC2(S0,K,r,T,sigma,N,M,type,AoE)%M是模拟次数 type=1是期权看涨 AoE=1 欧式期权
dt=T/N;
R=exp((r-sigma^2/2)*dt+sigma*sqrt(dt)*randn(N,M));
S=cumprod([S0*ones(1,M);R]);%合并矩阵
if type%看涨期权
P(N+1,:)=max(S(N+1,:)-K,0);
else
P(N+1,:)=max(K-S(N+1,:),0);
end
for i=N:-1:1
if AoE %欧式期权
P(1,:)=exp(-r*T)*P(N+1,:);
else
if type
P(i,:)=max(exp(-r*dt)*P(i+1,:),max(S(i,:)-K,0));%立即执行与贴现比较
else
P(i,:)=max(exp(-r*dt)*P(i+1,:),max(K-S(i,:),0));
end
end
end
price=mean(P(1,:));
end