You are on page 1of 16

Homework6

101071010

LatticeOilBond.m

function [price, lattice] = LatticeOilBond(S0,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
k=S0*(u^j)*(d^(N-j));
if k>=40
lattice(N+1,j+1)=1000+(40-25)*170;
else if k<25
lattice(N+1,j+1)=1000;
else
lattice(N+1,j+1)=1000+(k-25)*170;
end
end
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);

[price, lattice] = LatticeOilBond(30,0.02,1,0.2,10)

CompLatticeOilBond.m

r=0.02;T=1;sigma=0.2;N=200;
i=1;
for s=20:1:60
Oilbond (i) = LatticeOilBond(s,r,T,sigma,N);
i=i+1;
end

plot(20:1:60, Oilbond);
xlabel('S0')
ylabel('price')
title('Oilbond Price')

Oilbond Price
3500

3000

price

2500

2000

1500

1000
20

25

30

35

40
S0

45

50

55

S0

60

LatticeCurrencyBond.m

function [price, lattice] = LatticeCurrencyBond(S0,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
k=S0*(u^j)*(d^(N-j));
if k>=169
lattice(N+1,j+1)=1000;
else if k<84.5
lattice(N+1,j+1)=0;
else
lattice(N+1,j+1)=1000-(169/k-1)*1000;
end
end
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);

[price, lattice] = LatticeCurrencyBond(100,0.02,1,0.5,10)

CompLatticeCurrencyBond.m

r=0.02;T=1;sigma=0.5;N=200;
CurrencyBond=zeros(1,300);
for i=1:300
CurrencyBond (i) = LatticeCurrencyBond(i,r,T,sigma,N);
end

plot(1:300, CurrencyBond);
xlabel('S0')
ylabel('price')
title('CurrencyBond Price')

CurrencyBond Price
1000

900

800

700

price

600

500

400

300

200

100

50

100

150
S0

200

250

S0

300

BlsMCPut.m

function [Price,sigma, CI] = BlsMCPut (S0,X,r,T,sigma,NRepl)


nuT = (r - 0.5*sigma^2)*T;
siT = sigma * sqrt(T);

DiscPayoff = exp(-r*T) * max( 0 , X-S0*exp(nuT+siT*randn(NRepl,1)) );


[Price, sigma, CI] = normfit(DiscPayoff);

BlsMCAVPut.m

function [Price, CI] = BlsMCAVPut(S0,X,r,T,sigma,NRepl)


nuT = (r - 0.5*sigma^2)*T;
siT = sigma * sqrt(T);
Veps = randn(NRepl,1);

Payoff1 = max( 0 , X-S0*exp(nuT+siT*Veps));


Payoff2 = max( 0 , X-S0*exp(nuT+siT*(-Veps)));
DiscPayoff = exp(-r*T) * 0.5 * (Payoff1+Payoff2);
[Price, VarPrice, CI] = normfit(DiscPayoff);

CompBlsMCAVPut.m

S0=50;
X=52;
r=0.1;
T=5/12;
sigma=0.4;
NRepl1=100000;
NRepl2=200000;
[BlsC,BlsP]=blsprice(S0,X,r,T,sigma);
randn('seed',0);
[MCPut200000, CI1] = BlsMCPut(S0,X,r,T,sigma,NRepl2);
randn('seed',0);
[MCAVPut100000, CI2] = BlsMCAVPut(S0,X,r,T,sigma,NRepl1);

BlsP
MCPut200000
CI1
MCAVPut100000
CI2


Monte Carlo
BlsPut

MCPi
1
=1
1/4=Pi/4
Monte CarloNC
Pi/4:1=C:N
Pi=4C/N

MCPi.m

function pi=MCpi(n)
x=rand(1,n);
y=rand(1,n);
c=x.^2+y.^2;
K=logical(c<=1);
S=sum(K);
pi=4*S/n;

Monte Carlo
Pi3.1416

You might also like