Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Hw4

 LatticeEurCallDivP vs. LatticeAmCallDivP

function [price, lattice] = LatticeEurCallDivP(S0,X,r,T,sigma,N,div,tau)

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))*(1-div)-X);

end

for i=N-1:-1:tau
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

for i=tau-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);

end

---------------------------------------------------------------------
function [price, lattice] = LatticeAmCallDivP(S0,X,r,T,sigma,N,div,tau)

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))*(1-div)-X);

end

for i=N-1:-1:tau

for j=0:i

lattice(i+1,j+1) = max( S0*u^j*d^(i-j)*(1-div) -X, ...

exp(-r*deltaT) *(p * lattice(i+2,j+2) + (1-p) * lattice(i+2,j+1)));

end

end

for i=tau-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);
end

 LatticeEurPutDivP

function [price, lattice] = LatticeEurPutDivP(S0,X,r,T,sigma,N,div,tau)

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))*(1-div));

end

for i=N-1:-1:tau

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

for i=tau-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);
end

Hw5
 LatticeEurCallDivD vs. LatticeAmCallDivD

function [price, lattice] = LatticeEurCallDivD(S0,X,r,T,sigma,N,D,tau)

deltaT = T/N;

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

d=1/u;

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

S0a=S0-D*exp(-r*tau*deltaT);

lattice = zeros(N+1,N+1);
for j=0:N

lattice(N+1,j+1)=max(0 , S0a*(u^j)*(d^(N-j))-X);

end

for i=N-1:-1:tau

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

for i=tau-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);

end

-------------------------------------------------------
function [price, lattice] = LatticeAmCallDivD(S0,X,r,T,sigma,N,D,tau)

deltaT = T/N;

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

d=1/u;

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

S0a=S0-D*exp(-r*tau*deltaT);

lattice = zeros(N+1,N+1);

for j=0:N

lattice(N+1,j+1)=max(0 , S0a*(u^j)*(d^(N-j))-X);

end

for i=N-1:-1:tau

for j=0:i

lattice(i+1,j+1) = max( S0a*u^j*d^(i-j)-X , ...

exp(-r*deltaT) *(p * lattice(i+2,j+2) + (1-p) * lattice(i+2,j+1)));

end

end

for i=tau-1:-1:0
for j=0:i lattice(i+1,j+1) = max( S0a*u^j*d^(i-j)-D*exp(-r*(tau-i)*deltaT)-X ,

...

exp(-r*deltaT) *(p * lattice(i+2,j+2) + (1-p) * lattice(i+2,j+1)));

end

end

price = lattice(1,1);

 LatticeEurPutDivD

function [price, lattice] = LatticeEurPutDivD(S0,X,r,T,sigma,N,D,tau)

deltaT = T/N;

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

d=1/u;

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

S0a=S0-D*exp(-r*tau*deltaT);

lattice = zeros(N+1,N+1);

for j=0:N

lattice(N+1,j+1)=max(0 , X-S0a*(u^j)*(d^(N-j)));

end

for i=N-1:-1:tau
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

for i=tau-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);

end

Hw6
 TriEurPut

function [price, lattice] = TriEurPut(S0,X,r,T,sigma,N,lamda)

deltaT = T/N;

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

d=1/u;

pu=1/(2*lamda^2)+(r-(sigma^2/2))*sqrt(deltaT)/(2*lamda*sigma);

pm=1-1/(lamda^2);

pd=1-pu-pm;

lattice = zeros(N+1,2*N+1);
for j=1:N+1

lattice(N+1,j)=max(0 , X-S0*(d^(N-j+1)) );

end

for j=N+2:2*N+1

lattice(N+1,j)=max(0 , X-S0*(u^(j-N-1)) );

end

for i=N-1:-1:0

for j=1:2*i+1

lattice(i+1,j) = exp(-r*deltaT) * ...

(pd * lattice(i+2,j) + pm * lattice(i+2,j+1)+ ...

pu*lattice(i+2,j+2));

end

end

price = lattice(1,1);

end

 TriAmPut

function [price, lattice] = TriAmPut(S0,X,r,T,sigma,N,lamda)

deltaT = T/N;

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

d=1/u;

pu=1/(2*lamda^2)+(r-(sigma^2/2))*sqrt(deltaT)/(2*lamda*sigma);

pm=1-1/(lamda^2);

pd=1-pu-pm;

lattice = zeros(N+1,2*N+1);
for j=1:N+1

lattice(N+1,j)=max(0 , X-S0*(d^(N-j+1)) );

end

for j=N+2:2*N+1

lattice(N+1,j)=max(0 , X-S0*(u^(j-N-1)) );

end

for i=N-1:-1:0

for j=1:2*i+1

lattice(i+1,j) = exp(-r*deltaT) *(pd * lattice(i+2,j) + pm *

lattice(i+2,j+1)+pu*lattice(i+2,j+2));

end

end

price = lattice(1,1);

end

You might also like