欧式期权二叉树定价MATLAB代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
调用函数代码
function Price=EuroOption(S0,K,T,r,M,type,sigma)
dt = T/M;
u=exp(sqrt(dt)*sigma); d=1/u;
p = (exp(r*dt)-d)/(u-d);
S=zeros(M+1,M+1);
S(1,1)=S0;
for j=1:M
for i=0:j
S(i+1,j+1)= S0*u^(j-i)*d^i;
end
end
V=zeros(M+1,M+1);
for i=0:M
switch type
case'call'
V(i+1,M+1)=max(S(i+1,M+1)-K,0);
case'put'
V(i+1,M+1)=max(K-S(i+1,M+1),0);
case'stra'
V(i+1,M+1)=max(S(i+1,M+1)-K,0)+max(K-S(i+1,M +1),0);
case'bino'
V(i+1,M+1) =(S(i+1,M+1)>K);
end
end
for j=M-1:-1:0
for i=0:j
V(i+1,j+1)=exp(-r*dt)*(p*V(i+1,j+2)+(1-p)*V( i+2,j+2));
end
end
Price=V(1,1);
数据作图
S0 = 6; K = 5; T = 1; r = 0.05; sigma = 0.20; for M=1:100
type='call';
Price=EuroOption(S0,K,T,r,M,type,sigma);
Vec(M)=Price;
end
for M=1:100
type='put';
Price=EuroOption(S0,K,T,r,M,type,sigma);
Vep(M)=Price;
end
for M=1:100
type='call';
Price=AmOption(S0,K,T,r,M,type,sigma);
Vac(M)=Price;
end
for M=1:100
type= 'put';
Price=AmOption(S0,K,T,r,M,type,sigma);
Vap(M)=Price;
end
figure(1)
plot(Vec,'b');
hold on
plot(Vac,'r');
hold off
legend ('Eurocall','Amcall'); figure(2)
plot(Vep,'b');
hold on
plot(Vap,'r');
legend ('Europut','Amput');