Function: 計財系碩一 108071603 黃偉德 1. Latticeeurput.M
Function: 計財系碩一 108071603 黃偉德 1. Latticeeurput.M
Function: 計財系碩一 108071603 黃偉德 1. Latticeeurput.M
HW6
計財系碩一 108071603 黃偉德
1. LatticeEurPut.m
function [price, lattice] =
LatticeEurPut(S0,X,r,T,sigma,N)
deltaT = T/N;
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
lattice(N+1,j+1)=max(0 , X - S0*(u^j)*(d^(N-j)));
end
for i=N-1:-1:0
for j=0:i
lattice(i+1,j+1) = exp(-r*deltaT) * ...
(p * lattice(i+2,j+2) + (1-p) *
lattice(i+2,j+1));
end
end
price = lattice(1,1);
2. CompLatticeBLSPut.m
% CompLatticeBLS.m
S0 = 50;
X = 50;
r = 0.1;
sigma = 0.4;
T = 5/12;
N=50;
BlsP = blsprice_Put(S0,X,r,T,sigma);
LatticeP = zeros(1,N);
for i=(1:N)
LatticeP(i) = LatticeEurPut(S0,X,r,T,sigma,i);
end
plot(1:N, ones(1,N)*BlsP);
hold on;
plot(1:N, LatticeP);
3. LatticeAmCall vs.BLS
function [price, lattice] =
LatticeAmCall(S0,X,r,T,sigma,N)
deltaT = T/N;
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
lattice(N+1,j+1)=max(0 , S0*(u^j)*(d^(N-j))-X);
end
for i=N-1:-1:0
for j=0:i
lattice(i+1,j+1) = max( S0*u^j*d^(i-j)-X , ...
exp(-r*deltaT) *(p * lattice(i+2,j+2) + (1-
p) * lattice(i+2,j+1)));
end
end
price = lattice(1,1);
若要讓 LatticeAmCall(50,50,0.1,5/12,0.4,5,q)-6.3595=0
q=3.6269e-06
%LatticeAmCall v.s LatticeEurCall
fzero(@(q) LatticeAmCall(50,50,0.1,5/12,0.4,5,q)-
LatticeEurCall(50,50,0.1,5/12,0.4,5)+0.00001, 1)