hw14 計財系大三 林奕全 Outline 1 range forward 出口商 long 美元賣權 進口商 long 美元買權 2Sallie Mae 3finite difference in European Call ID: 808662
Download The PPT/PDF document "金融商品設計與評價" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
金融商品設計與評價hw14
計財系大三 林奕全
Slide2Outline
1. range forward
-
出口商
(long
美元賣權
)
-
進口商
(long
美元買權
)
2.Sallie Mae
3.finite difference in European Call
-Explicit approach
-Implicit approach
Slide3流程:以出口商為例
Step1:
給定
s0,X,r,rf,T,sigma
由
B-S
算出賣權的權利金
,
假設為
P
Step2:
令
P =a*exp(-r*T)*
normcdf
(-d2)-s0*exp(-
rf
*T)*
normcdf
(-d1)
解未知數
a(
以
P
為權利金的買權執行價格
)
Slide4a=20:0.5:35;
s0=27;
X=26.7;
sigma=0.0311;
rf
=0.0304;
r=0.0565;
T=0.25;
d1=(log(s0./a)+(r-rf+sigma^2./2).*T)/(sigma.*sqrt(T));
d2=d1-sigma.*
sqrt
(T);
[K]=s0.*exp(-rf.*T).*
normcdf
(d1)-a.*exp(-r.*T).*
normcdf
(d2);
[ C,P ] =
Curoption
( s0,X,r,rf,T,sigma);
figure
plot(
a,P
-K,'-');
title('Solution');
xlabel
('a')
ylabel
('P-K')
legend('value')
Slide5Slide6Curoption
function [ C,P ] =
Curoption
( s0,X,r,rf,T,sigma )
d1=(log(s0/X)+(r-rf+sigma^2/2)*T)/(sigma*sqrt(T));
d2=d1-sigma*
sqrt
(T);
C=s0*exp(-
rf
*T)*
normcdf
(d1)-X*exp(-r*T)*
normcdf
(d2);
P=X*exp(-r*T)*
normcdf
(-d2)-s0*exp(-
rf
*T)*
normcdf
(-d1);
end
Slide7Demovalue
function [ K ] =
Demovalue
(s0,a,r,rf,T,sigma,jud)
d1=(log(s0/a)+(r-rf+sigma^2/2)*T)/(sigma*sqrt(T));
d2=d1-sigma*
sqrt
(T);
if
jud
==0
K=s0*exp(-
rf
*T)*
normcdf
(d1)-a*exp(-r*T)*
normcdf
(d2);
else
K=a*exp(-r*T)*
normcdf
(-d2)-s0*exp(-
rf
*T)*
normcdf
(-d1);
end
end
Slide8approx
function [sol] = approx(C,P,X,s0,r,rf,T,sigma,jud )
a=X;
S=zeros(1,2000);
if
jud
==0
for
i
=2:1:2001
S(i-1)=
Demovalue
(s0,a+(i-1)*0.001,r,rf,T,sigma,jud);
end
Slide9for
i
=2:1:2001
if (P-S(i-1))*(P-S(
i
))<0
c=P-S(i-1);
d=P-S(
i
);
sol=(c/(c-d))*(a+i*0.001)+(-d/(c-d))*(a+(i-1)*0.001);
break;
end
end
else
P=C;
for
i
=2:1:2001
S(i-1)=
Demovalue
(s0,a-(i-1)*0.001,r,rf,T,sigma,jud);
end
Slide11for
i
=2:1:2001
if (P- S(i-1))*(P- S(
i
))<0
c=P-S(i-1);
d=P-S(
i
);
sol=(-c/(d-c))*(a-i*0.001)+(d/(d-c))*(a-(i-1)*0.001);
break;
end
end
end
end
Slide12Curinterval
function [
lower,upper
] =
Curinterval
(s0,X,r,rf,T,sigma,jud )
[ C,P ] =
Curoption
( s0,X,r,rf,T,sigma );
[ K ] =
Demovalue
(s0,X,r,rf,T,sigma,jud);
if
jud
==0
sol = approx(C,P,X,s0,r,rf,T,sigma,jud );
lower=X;
upper=sol;
else
sol = approx(C,P,X,s0,r,rf,T,sigma,jud);
lower=sol;
upper=X;
end
end
Slide13出口商
s0=27;
X=26.7;
>> sigma=0.0311;
>> rf=0.0304;
>> r=0.0565;
>> jud=0;
>> T=0.25;
Slide14lower =
26.7000
upper =
27.6658
Slide15進口商
s0=27;
X=27.65;
>> sigma=0.0311;
>> rf=0.0304;
>> r=0.0565;
>> jud=1;
>> T=0.25;
Slide16lower =
26.7152
upper =
27.6500
Slide17SalliieMaeBond
function [ price ] =
SalliieMaeBond
( s0,r,T,sigma,N )
deltaT
=T/N;
strike=[131.75,131.75,129.5,127,124.5];
u=exp(sigma.*
sqrt
(
deltaT
));
d=1./u;
p=(exp(r.*deltaT)-d)/(u-d);
lattice=zeros(N+1,N+1);
for j=0:N
s=(50*((s0-124.5)/s0))*(
u^j
)*(d^(N-j));
if s<9.25
lattice(N+1,j+1)=9.25;
end
end
Slide18for
i
=N-1:-1:0
for j=0:i
k=strike(ceil(5*(i+1)/N));
s=s0*(
u^j
)*(d^(
i
-j));
lattice(i+1,j+1)=max((50*((s-k)/s)),exp(-r*
deltaT
)*(p*lattice(i+2,j+2)+(1-p)*lattice(i+2,j+1)));
if lattice(i+1,j+1)<9.25*exp(-r*(T-(5*
i
/N)))
lattice(i+1,j+1)=9.25*exp(-r*(T-(5*i/N)));
end
end
end
price=lattice(1,1);
Slide19N=500;
s0=10:5:500;
sigma=0.4;
r=0.02;
T=5;
Slide20Slide21EuCallExpl1
function [
price,matval,vetS,vetT
] =EuCallExpl1 (s0,X,r,T,sigma,Smax,dS,dt )
M=round(
Smax
/
dS
);
dS
=
Smax
/M;
N=round(T/
dt
);
dt
=T/N;
matval
=zeros(M+1,N+1);
vetS
=
linspace
(0,Smax,M+1);
vetj
=0:N;
veti
=0:M;
vetT
=
linspace
(0,T,N+1);
Slide22matval
(:,N+1)=max(vetS-X,0);
matval
(1,:)=0;
matval(M+1,:)=(vetS(M+1)-X).*exp(-r*dt*(N-vetj));
a=0.5*
dt
*(sigma^2*
veti
-r).*
veti
;
b=1-dt*(sigma^2*veti.^2+r);
c=0.5*
dt
*(sigma^2*
veti+r
).*
veti
;
Slide23for j=N:-1:1
for
i
=2:M
matval(i,j)=a(i)*matval(i-1,j+1)+b(i)*matval(i,j+1)+c(i)*matval(i+1,j+1);
end
end
idown
=floor(s0/
dS
);
iup
=ceil(s0/
dS
);
Slide24if
idown
==
iup
price=
matval
(idown+1,1);
else
price=
matval
(idown+1,1)+(s0-(idown+1)*
dS
)*(
matval
(iup+1,1)-
matval
(iup,1))/
dS
;
end
Slide25s0=50;
X=50;
r=0.1;
T=5/12;
sigma=0.3;
>>
Smax
=100;
>>
dS
=2;or
dS
=1.2
>>
dT
=5/1200;
Slide26[Expds1,matval,vetS,vetT] =EuCallExpl1 (s0,X,r,T,sigma,Smax,dS,dT);
mesh(
vetT,vetS,matval
);
xlabel
('Time');
>>
ylabel
('Stock price');
>> Title('European Call
Option,Explicit
Method');
Slide27Slide28Slide29EuCallImpl1(Confused)
function [
price,matval,vetS,vetT
] =EuCallImpl1 (s0,X,r,T,sigma,Smax,dS,dt )
M=round(
Smax
/
dS
);
dS
=
Smax
/M;
N=round(T/
dt
);
dt
=T/N;
matval
=zeros(M+1,N+1);
vetS
=
linspace
(0,Smax,M+1);
vetj
=0:N;
veti
=0:M;
Slide30vetT
=
linspace
(0,T,N+1);
matval
(:,N+1)=max(vetS-X,0);
matval
(1,:)=0;
matval(M+1,:)=(Smax-X)*exp(-r*dt*(N:-1:0));
a=0.5*(r*
dt
*veti-sigma^2*
dt
*(veti.^2));
b=1+sigma^2*
dt
*(veti.^2)+r*
dt
;
c=(-0.5)*(r*dt*veti+sigma^2*dt*(veti.^2));
coeff=diag(a(3:M),-1)+diag(b(2:M))+diag(c(2:M-1),1);
[L,U]=
lu
(
coeff
);
aux=zeros(M-1,1);
Slide31for j=N:-1:1
aux(1)=-a(2)*
matval
(1,j);
matval
(2:M,j)=U\(L\(
matval
(2:M,j+1)+aux));
end
idown
=floor(s0/
dS
);
iup
=ceil(s0/
dS
);
if
idown
==
iup
price=
matval
(idown+1,1);
else
price=
matval
(idown+1,1)+(s0-idown*
dS
)*(
matval
(idown+2,1)-
matval
(idown+1,1))/
dS
;
end
Slide32s0=50;
X=50;
r=0.1;
T=5/12;
sigma=0.3;
>>
Smax
=100;
>>
dS
=2;or
dS
=1.2
>>
dT
=5/1200;
Slide33[Expds1,matval,vetS,vetT] =EuCallImpl1 (s0,X,r,T,sigma,Smax,dS,dT);
mesh(
vetT,vetS,matval
);
xlabel
('Time');
>>
ylabel
('Stock price');
>> Title('European Call
Option,Implicit
Method');
Slide34Slide35