You are on page 1of 20

Homework10

101071010

AsianMC.m

function [P,CI] = AsianMC(S0,X,r,T,sigma,NSamples,NRepl)


Payoff = zeros(NRepl,1);
for i=1:NRepl
Path=AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff(i) = max(0, mean(Path(2:(NSamples+1))) - X);
end
[P,aux,CI] = normfit( exp(-r*T) * Payoff);

AsianMCCV.m

function [P,CI] = AsianMCCV(S0,X,r,T,sigma,NSamples,NRepl,NPilot)

ControlVars = zeros(NRepl,1);
for i=1:NRepl
StockPath = AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff = exp(-r*T) * max(0, mean(StockPath(2:(NSamples+1))) - X);
ControlVars(i) = Payoff + c * (sum(StockPath) - ExpSum);
end
[P,aux,CI] = normfit(ControlVars);

TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);
StockSum = sum(TryPath,2);
PP = mean(TryPath(:,2:(NSamples+1)) , 2);
TryPayoff = exp(-r*T) * max(0, PP - X);
MatCov = cov(StockSum, TryPayoff);
c = - MatCov(1,2) / var(StockSum);
dt = T / NSamples;
ExpSum = S0 * (1 - exp((NSamples + 1)*r*dt)) / (1 - exp(r*dt));

AsianHalton.m

function [P,CI]= AsianHalton(S0,X,r,T,sigma,NSamples,NRepl)


Payoff = zeros(NRepl,1);
Path=HaltonPaths(S0,r,sigma,T,NSamples,NRepl);
Payoff = max(0, mean(Path(:,2:(NSamples+1)),2) - X);
[P,aux,CI] = normfit( exp(-r*T) * Payoff);

AsianMC2.m
function [P,CI] = AsianMC2(S0,r,T,sigma,NSamples,NRepl)
Payoff = zeros(NRepl,1);
for i=1:NRepl
Path=AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff(i) = max(0, Path(NSamples+1)(mean(Path(2:(NSamples+1)))));
end
[P,aux,CI] = normfit( exp(-r*T) * Payoff);

AsianMCCV2.m

function [P,CI] = AsianMCCV2(S0,r,T,sigma,NSamples,NRepl,NPilot)

ControlVars = zeros(NRepl,1);
for i=1:NRepl
StockPath = AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff = exp(-r*T) * max(0, StockPath(NSamples+1)-mean(StockPath(2:(NSamples+1))));
ControlVars(i) = Payoff + c * (sum(StockPath) - ExpSum);
end
[P,aux,CI] = normfit(ControlVars);

TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);
StockSum = sum(TryPath,2);
PP = mean(TryPath(:,2:(NSamples+1)) , 2);
TryPayoff = exp(-r*T) * max(0,TryPath(NSamples+1)-PP);
MatCov = cov(StockSum, TryPayoff);
c = - MatCov(1,2) / var(StockSum);
dt = T / NSamples;
ExpSum = S0 * (1 - exp((NSamples + 1)*r*dt)) / (1 - exp(r*dt));

AsianHalton2.m

function [P,CI] = AsianHalton2(S0,r,T,sigma,NSamples,NRepl)


Payoff = zeros(NRepl,1);
Path=HaltonPaths(S0,r,sigma,T,NSamples,NRepl);
Payoff = max(0, Path(NSamples+1)mean(Path(:,2:(NSamples+1)),2));
[P,aux,CI] = normfit(exp(-r*T) * Payoff);

CompAsianOption.m

S0=50;
X=50;
r=0.1;
T=5/12;
sigma=0.4;
NSamples=20;
NRepl=50000;
NPilot=5000;

rand('seed',0);
[P,CI] = AsianMC(S0,X,r,T,sigma,NSamples,NRepl)
rand('seed',0);
[P,CI] = AsianMCCV(S0,X,r,T,sigma,NSamples,NRepl,NPilot)
rand('seed',0);
[P,CI]= AsianHalton(S0,X,r,T,sigma,NSamples,NRepl)
rand('seed',0);
[P,CI] = AsianMC2(S0,r,T,sigma,NSamples,NRepl)
rand('seed',0);
[P,CI] = AsianMCCV2(S0,r,T,sigma,NSamples,NRepl,NPilot)
rand('seed',0);
[P,CI] = AsianHalton2(S0,r,T,sigma,NSamples,NRepl)

CompAsianCall.result
max{A-X,0}
Price

CI

AsianMC

3.5774

[3.5307 , 3.6240]

AsianMCCV

3.5582

[3.5387 , 3.5777]

AsianHalton

3.6050

[3.5559 , 3.6542]

CompAsianCall.result
max{S(T)-A,0}
Price

CI

AsianMC2

3.3402

[3.2937 , 3.3867]

AsianMCCV2

3.3770

[3.3131 , 3.4410]

AsianHalton2

2.5063

[2.4745 , 2.5380]

LookbackMCcall.m

function [P,CI] = LookbackMCcall(S0,X,r,T,sigma,NSamples,NRepl)


Payoff = zeros(NRepl,1);
for i=1:NRepl
Path=AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff(i) = max(0, Path(NSamples+1)-min(Path(1:(NSamples+1))));
end
[P,aux,CI] = normfit( exp(-r*T) * Payoff);

LookbackMCCVcall.m

function [P,CI] = LookbackMCCVcall(S0,r,T,sigma,NSamples,NRepl,NPilot)


TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);
StockSum = sum(TryPath,2);
PP = min(TryPath,[],2);
TryPayoff = exp(-r*T) * max(0,TryPath(NSamples+1)-PP);
MatCov = cov(StockSum, TryPayoff);
c = - MatCov(1,2) / var(StockSum);
dt = T / NSamples;
ExpSum = S0 * (1 - exp((NSamples + 1)*r*dt)) / (1 - exp(r*dt));
ControlVars = zeros(NRepl,1);
for i=1:NRepl
StockPath = AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff = exp(-r*T) * max(0, StockPath(NSamples+1)-min(StockPath,[],2));
ControlVars(i) = Payoff + c * (sum(StockPath) - ExpSum);
end
[P,aux,CI] = normfit(ControlVars);

LookbackHaltonCall.m

function [P,CI] = LookbackHaltonCall(S0,r,T,sigma,NSamples,NRepl)


Payoff = zeros(NRepl,1);
Path=HaltonPaths(S0,r,sigma,T,NSamples,NRepl);
Payoff=max(0,Path(NSamples+1)-min(Path,[],2));
[P,aux,CI] = normfit(exp(-r*T) * Payoff);

CompLookbackCall.m

S0=50;
X=50;
r=0.1;
T=5/12;
sigma=0.4;
NSamples=50;
NRepl=10000;
NPilot=5000;

rand('seed',0);
[P,CI] = LookbackMCcall(S0,X,r,T,sigma,NSamples,NRepl)
rand('seed',0);
[P,CI] = LookbackMCCVcall(S0,r,T,sigma,NSamples,NRepl,NPilot)
rand('seed',0);
[P,CI] = LookbackHaltonCall(S0,r,T,sigma,NSamples,NRepl)

CompLookbackCall.result
Price

CI

LookbackMCcall

9.4106

[9.2266 , 9.5947]

LookbackMCCVcall

9.4296

[9.1679 , 9.6912]

LookbackHaltonCall

8.1419

[8.0124 , 8.2715]

LookbackMCput.m
function [P,CI] = LookbackMCput(S0,r,T,sigma,NSamples,NRepl)
Payoff = zeros(NRepl,1);
for i=1:NRepl
Path=AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff(i) = max(0, max(Path(1:(NSamples+1)))Path(NSamples+1));
end
[P,aux,CI] = normfit( exp(-r*T) * Payoff);

LookbackMCCVput.m

function [P,CI] = LookbackMCCVput(S0,r,T,sigma,NSamples,NRepl,NPilot)


TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);
StockSum = sum(TryPath,2);
PP = max(TryPath,[], 2);
TryPayoff = exp(-r*T) * max(0,PP-TryPath(NSamples+1));
MatCov = cov(StockSum, TryPayoff);
c = - MatCov(1,2) / var(StockSum);
dt = T / NSamples;
ExpSum = S0 * (1 - exp((NSamples + 1)*r*dt)) / (1 - exp(r*dt));
ControlVars = zeros(NRepl,1);
for i=1:NRepl
StockPath = AssetPaths1(S0,r,sigma,T,NSamples,1);
Payoff = exp(-r*T) * max(0, max(StockPath,[],2)-StockPath(NSamples+1));
ControlVars(i) = Payoff + c * (sum(StockPath) - ExpSum);
end
[P,aux,CI] = normfit(ControlVars);

LookbackHaltonPut.m

function [P,CI] = LookbackHaltonPut(S0,r,T,sigma,NSamples,NRepl)


Payoff = zeros(NRepl,1);
Path=HaltonPaths(S0,r,sigma,T,NSamples,NRepl);
Payoff = max(0, max(Path,[],2)-Path(NSamples+1));
[P,aux,CI] = normfit(exp(-r*T) * Payoff);

CompLookbackPut.m

S0=50;
X=50;
r=0.1;
T=5/12;
sigma=0.4;
NSamples=10;
NRepl=10000;
NPilot=5000;

rand('seed',0);
[P,CI] = LookbackMCput(S0,r,T,sigma,NSamples,NRepl)
rand('seed',0);
[P,CI] = LookbackMCCVput(S0,r,T,sigma,NSamples,NRepl,NPilot)
rand('seed',0);
[P,CI] = LookbackHaltonPut(S0,r,T,sigma,NSamples,NRepl)

CompLookbackPut.result
Price

CI

LookbackMCput

7.4871

[7.3621 , 7.6120]

LookbackMCCVput

7.3210

[7.0676 , 7.5744]

LookbackHaltonPut

9.5434

[9.3424 , 9.7445]

You might also like