You are on page 1of 5

金融商品設計與評價 HW4

第六組

BinTree (下三角)

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


% Returns Binomial Shrew Price Tree (imod=0 for JR,
imod=1 for CRR)
deltaT = T/N;
if imod == 0
mu=(r-q-0.5*sigma^2)*deltaT;
u=exp(mu+sigma*sqrt(deltaT));
d=exp(mu-sigma*sqrt(deltaT));
else
u=exp(sigma * sqrt(deltaT));
d=1/u;
end

lattice = ones(N+1,N+1)*S0;
Code 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
%for loop ends on last value of j
lattice(j+1,j+1) =u*lattice(i-1,j);
for j=i+1:N+1
lattice(i,j) =0;
end
end
Outcome

BinOptionValue (上三角)

function [price, lattice] =


BinOptionValue_Upper(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
Code
lattice = zeros(N+1,N+1);

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

for i=N-1:-1:0
for j=0:i
lattice(j+1, i+1) = exp(-r*deltaT) * (p *
lattice(j+2, i+2) + (1-p) * lattice(j+1, i+2));
end
end

price = lattice(1,1);
Outcome

BinOptionValue (一次折現)

function price = 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);
Code end

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

price = 0;
for j=0:N
price = price + exp(-r*T) * (nchoosek(N,j) * (p^j) *
((1-p)^(N-j)) * lattice(N+1, j+1));
end
Outcome

BinOptionValue_Put

function [price, lattice] =


BinOptionValue_Put(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
Code
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);
Outcome

You might also like