You are on page 1of 2

HW

 Lower Triangular Matrix (下三角)

function lattice = BinTree(imod,S0,r,q,T,sigma,N)

% Returns Binomial Shrew Price Tree (imod=0 for JR, 1 for CRR)

deltaT = T/N;

if imod == 0

rnmut=(r-q-0.5*sigma^2)*deltaT;

u=exp(rnmut+sigma*sqrt(deltaT));

d=exp(rnmut-sigma*sqrt(deltaT));

else

u=exp(sigma * sqrt(deltaT));

d=1/u;

end

lattice = ones(N+1,N+1)*S0;

for j=2:N+1

lattice(1,j)= 0;

end

for i=2:1:N+1

for j=1:i-1

lattice(i,j) =d*lattice(i-1,j);

end

lattice(i,i) =u*lattice(i-1,i-1);

for j=i+1:N+1

lattice(i,j) =0;

end

end

 European Put (Binominal Tree V.S. Black Sholes)

function [price, lattice] =

BinOptionValue(imod,S0,X,r,q,T,sigma,N)

deltaT = T/N;

if imod == 0

rnmut=(r-q-0.5*sigma^2)*deltaT;

u=exp(rnmut+sigma*sqrt(deltaT));

d=exp(rnmut-sigma*sqrt(deltaT));
p=0.5;

else

u=exp(sigma * sqrt(deltaT));

d=1/u;

p=(exp((r-q)*deltaT) - d)/(u-d);

end

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);

You might also like