欧式期权二叉树定价MATLAB代码

  • 格式:docx
  • 大小:15.47 KB
  • 文档页数:3

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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');