Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 13

Matlab exercise

101071041

#HW1 Halton confidence interv


al
function [P,ci] = AsianHalton(S0,X,r,T,sigma,
NSamples,NRepl)
Payoff = zeros(NRepl,1);
Path=HaltonPaths(S0,r,sigma,T,NSamples,N
Repl);
Payoff = max(0, mean(Path(:,2:(NSamples+
1)),2) - X);
[P,~,ci] = normfit( exp(-r*T) * Payoff);

COM.m
S0=50;X=50;
r=0.1;T=5/12;
sigma=0.4;NSamples=5;
NRepl1=1000;NRepl2=2000;
NRepl3=3000;NRepl4=10000;
NRepl5=30000;
[AsianHalton1000,ci_1000]=AsianHalton(S0,X,r,T,sigma,NSamples,NR
epl1)
[AsianHalton2000,ci_2000]=AsianHalton(S0,X,r,T,sigma,NSamples,NR
epl2)
[AsianHalton3000,ci_3000]=AsianHalton(S0,X,r,T,sigma,NSamples,NR
epl3)
[AsianHalton10000,ci_10000]=AsianHalton(S0,X,r,T,sigma,NSamples,
NRepl4)

AsianHalton1000 =
4.0289
ci_1000 =
3.6465
4.4113
AsianHalton2000 =
3.9979
ci_2000 =
3.7294
4.2664
AsianHalton3000 =
3.9619

ci_3000 =
3.7460
4.1778
AsianHalton10000 =
3.9441
ci_10000 =
3.8270
4.0613
AsianHalton30000 =
3.9742
ci30000 =
3.9073
4.0412

#HW2 Asian option

max(s(T)-A,0)

function [P,ci] = Asianrandn(S0,r,T,sigma,NSamples,NRepl)


%% randn path
dt = T/NSamples;
nudt = (r-0.5*sigma^2)*dt;
sidt = sigma*sqrt(dt);
Increments = nudt + sidt*randn(NRepl, NSamples);
LogPaths = cumsum([log(S0)*ones(NRepl,1) , Increments] , 2);
Path = exp(LogPaths);
%% mc Asian max(s(T)-A,0)
Payoff = zeros(NRepl,1);
ST=Path(:,NSamples+1);
Payoff = max(0, ST-mean(Path(:,2:(NSamples+1)),2) );
[P,~,ci] = normfit( exp(-r*T) * Payoff);

Compare.m
S0=50;X=50;
r=0.1;T=5/12;
sigma=0.4;NSamples=5;
NRepl1=1000;NRepl2=2000;
NRepl3=3000;NRepl4=10000;
NRepl5=30000;
[Asian1000,ci_1000]=Asianrandn(S0,r,T,sigma,NSamples,NRepl1)
[Asian2000,ci_2000]=Asianrandn(S0,r,T,sigma,NSamples,NRepl2)
[Asian3000,ci_3000]=Asianrandn(S0,r,T,sigma,NSamples,NRepl3)
[Asian10000,ci_10000]=Asianrandn(S0,r,T,sigma,NSamples,NRepl4)
[Asian30000,ci30000]=Asianrandn(S0,r,T,sigma,NSamples,NRepl5)

Asian1000 =
2.8199

ci_1000 =
2.5550
3.0848

ci_3000 =
2.6858
3.0161
Asian10000 =
2.9471

Asian2000 =
2.9723

ci_2000 =
2.7660
3.1786

Asian3000 =
2.8510

ci_10000 =
2.8558
3.0384
Asian30000 =
2.9487
ci30000 =
2.8962
3.0012

#HW3.1 LOOKBACK OPTION


x-S(T)

function [P,ci] = lookback_rand_inversecdf(S0,r,T,sigma,NSamples,NRepl)


%% rand+inverse cdf path
dt = T/NSamples;
nudt = (r-0.5*sigma^2)*dt;
sidt = sigma*sqrt(dt);
zz=rand(NRepl, NSamples);
mu = 0;sigma = 1;
pd = makedist('Normal',mu,sigma);
c=icdf(pd,zz);
Increments = nudt + sidt*c;
LogPaths = cumsum([log(S0)*ones(NRepl,1) , Increments] , 2);
Path = exp(LogPaths);
%%LOOKBACK OPTION
Payoff = zeros(NRepl,1);
ST=Path(:,NSamples+1);
for i=1:NRepl
smax(i)=max(Path(i,:));
end
Payoff = max(0, (smax)'-ST );
[P,~,ci] = normfit( exp(-r*T) * Payoff);

Sma

S0=50;X=50;
r=0.1;T=5/12;
sigma=0.4;NSamples=5;
NRepl1=1000;NRepl2=2000;
NRepl3=3000;NRepl4=10000;
NRepl5=30000;
[lookback1000,ci_1000]=lookback_rand_inversecdf(S0,r,T,sigma,NSamples,NRe
pl1)
[lookback2000,ci_2000]=lookback_rand_inversecdf(S0,r,T,sigma,NSamples,NRe
pl2)
[lookback3000,ci_3000]=lookback_rand_inversecdf(S0,r,T,sigma,NSamples,NRe
pl3)
[lookback10000,ci_10000]=lookback_rand_inversecdf(S0,r,T,sigma,NSamples,N
Repl4)
[lookback30000,ci30000]=lookback_rand_inversecdf(S0,r,T,sigma,NSamples,NR
epl5)

lookback1000 =
6.6249
ci_1000 =
6.2315
7.0183

lookback10000 =
6.5920

lookback2000 =
6.5548
ci_2000 =
6.2802
6.8294

ci_10000 =
6.4687
6.7153

lookback3000 =
6.7119
ci_3000 =
6.4850
6.9389

lookback30000 =
6.5944
ci30000 =
6.5231
6.6656

#HW3.2 LOOKBACK OPTION


min

function [P,ci] = lookback_rand_boxmuller(S0,r,T,sigma,NSamples,NRepl)


%% rand+boxmuller path
dt = T/NSamples;
nudt = (r-0.5*sigma^2)*dt;
sidt = sigma*sqrt(dt);
NRepl = 2*ceil(NRepl/2);
z1=rand(NRepl/2, NSamples);z2=rand(NRepl/2, NSamples);
VLog = sqrt(-2*log(z1));
Norm1 = VLog .* cos(2*pi*z2);Norm2 = VLog .* sin(2*pi*z2);
RandMat = [Norm1 ; Norm2];
Increments = nudt + sidt*RandMat;
LogPaths = cumsum([log(S0)*ones(NRepl,1) , Increments] , 2);
Path = exp(LogPaths);
%LOOKBACRK MC
Payoff = zeros(NRepl,1);
ST=Path(:,NSamples+1);
for i=1:NRepl
smin(i)=min(Path(i,:));
end
Payoff = max(0, ST-(smin)' );
[P,~,ci] = normfit( exp(-r*T) * Payoff);

S(T)-s

S0=50;X=50;
r=0.1;T=5/12;
sigma=0.4;NSamples=5;
NRepl1=1000;NRepl2=2000;
NRepl3=3000;NRepl4=10000;
NRepl5=30000;
[lookback1000,ci_1000]=lookback_rand_boxmuller(S0,r,T,sigma,NSamples,NRepl1)
[lookback2000,ci_2000]=lookback_rand_boxmuller(S0,r,T,sigma,NSamples,NRepl2)
[lookback3000,ci_3000]=lookback_rand_boxmuller(S0,r,T,sigma,NSamples,NRepl3)
[lookback10000,ci_10000]=lookback_rand_boxmuller(S0,r,T,sigma,NSamples,NRepl
4)
[lookback30000,ci30000]=lookback_rand_boxmuller(S0,r,T,sigma,NSamples,NRepl
5)

lookback1000 =
8.3792
ci_1000 =
7.7955
8.9628
lookback2000 =
8.3801
ci_2000 =
7.9540
8.8061
lookback3000 =
7.7277

ci_3000 =
7.4089
8.0464

lookback10000 =
8.1042
ci_10000 =
7.9235
8.2850
lookback30000 =
8.0133
ci30000 =
7.9072
8.1194

You might also like