You are on page 1of 26

HW10

101071035

Asian Average Rate Call


AsianHalton
% 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);

CompAsianHalton
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,CI1000]=AsianHalton(S0,X,r,T,sigma,NSamples,NRepl1);
[AsianHalton2000,CI2000]=AsianHalton(S0,X,r,T,sigma,NSamples,NRepl2);
[AsianHalton3000,CI3000]=AsianHalton(S0,X,r,T,sigma,NSamples,NRepl3);
[AsianHalton10000,CI10000]=AsianHalton(S0,X,r,T,sigma,NSamples,NRepl4);
[AsianHalton30000,CI30000]=AsianHalton(S0,X,r,T,sigma,NSamples,NRepl5);

AsianHalton1000
CI1000
AsianHalton2000
CI2000
AsianHalton3000
CI3000
AsianHalton10000
CI10000
AsianHalton30000
CI30000

AsianAverageStrikeCall
AsianASCallMC
function [P,CI] = AsianASCallMC(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);

AsianASCallMCCV
% AsianASCallMCCV.m
function [P,CI] = AsianASCallMCCV(S0,r,T,sigma,NSamples,NRepl,NPilot)
% pilot replications to set control parameter
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));
% MC run
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);

AsianASCallHalton
% AsianASCallHalton.m
function [P,CI] = AsianASCallHalton(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);

CompAsianASCall
S0=50;
r=0.1;
T=5/12;
sigma=0.4;
NSamples=5;
NRepl1=1000;
NRepl2=2000;
NRepl3=3000;
NRepl4=10000;
NRepl5=30000;
NRepl6=50000;
NRepl7=45000;
NPilot=5000;

rand('seed',0);
[PMC,CIMC]=AsianASCallMC(S0,r,T,sigma,NSamples,NRepl6);
rand('seed',0);
[PMCCV,CIMCCV]=AsianASCallMCCV(S0,r,T,sigma,NSamples,NRepl7
,NPilot);
[AsianASCallHalton1000,CI1000]=AsianASCallHalton(S0,r,T,sigma,N
Samples,NRepl1);
[AsianASCallHalton2000,CI2000]=AsianASCallHalton(S0,r,T,sigma,N
Samples,NRepl2);
[AsianASCallHalton3000,CI3000]=AsianASCallHalton(S0,r,T,sigma,N
Samples,NRepl3);
[AsianASCallHalton10000,CI10000]=AsianASCallHalton(S0,r,T,sigma
,NSamples,NRepl4);
[AsianASCallHalton30000,CI30000]=AsianASCallHalton(S0,r,T,sigma
,NSamples,NRepl5);

PMC
CIMC
PMCCV
CIMCCV
AsianASCallHalton1000
CI1000
AsianASCallHalton2000
CI2000
AsianASCallHalton3000
CI3000
AsianASCallHalton10000
CI10000
AsianASCallHalton30000
CI30000

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

LookbackCallMCCV
% LookbackCallMCCV.m
function [P,CI] = LookbackCallMCCV(S0,r,T,sigma,NSamples,NRepl,NPilot)
% pilot replications to set control parameter
TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);
StockSum = sum(TryPath,2);
PP = mean(TryPath(:,2:(NSamples+1)) , 2);
STMin = min(TryPath,[],2);
TryPayoff = exp(-r*T) * max(0, TryPath(NSamples+1)-STMin );
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));
% MC run
ControlVars = zeros(NRepl,1);
for i=1:NRepl
StockPath = AssetPaths1(S0,r,sigma,T,NSamples,1);
SMin=min(StockPath);
Payoff = exp(-r*T) * max(0, StockPath(NSamples+1)-SMin );
ControlVars(i) = Payoff + c * (sum(StockPath) - ExpSum);
end
[P,aux,CI] = normfit(ControlVars);

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

CompLookbackCall
S0=50;
r=0.1;
T=5/12;
sigma=0.4;
NSamples=5;
NRepl1=1000;
NRepl2=2000;
NRepl3=3000;
NRepl4=10000;
NRepl5=30000;
NRepl8=50000;
NRepl6=50000;
NRepl7=45000;
NPilot=5000;

rand('seed',0);
[PMC,CIMC]= LookbackCallMC(S0,r,T,sigma,NSamples,NRepl6);
rand('seed',0);
[PMCCV,CIMCCV]=LookbackCallMCCV(S0,r,T,sigma,NSamples,NRepl7,NPil
ot);
[LookbackCallHalton1000,CI1000]=LookbackCallHalton(S0,r,T,sigma,NSa
mples,NRepl1);
[LookbackCallHalton2000,CI2000]=LookbackCallHalton(S0,r,T,sigma,NSa
mples,NRepl2);
[LookbackCallHalton3000,CI3000]=LookbackCallHalton(S0,r,T,sigma,NSa
mples,NRepl3);
[LookbackCallHalton10000,CI10000]=LookbackCallHalton(S0,r,T,sigma,NS
amples,NRepl4);
[LookbackCallHalton30000,CI30000]=LookbackCallHalton(S0,r,T,sigma,NS
amples,NRepl5);
[LookbackCallHalton50000,CI50000]=LookbackCallHalton(S0,r,T,sigma,NS
amples,NRepl8);

PMC
CIMC
PMCCV
CIMCCV
LookbackCallHalton1000
CI1000
LookbackCallHalton2000
CI2000
LookbackCallHalton3000
CI3000
LookbackCallHalton10000
CI10000
LookbackCallHalton30000
CI30000
LookbackCallHalton50000
CI50000

LookbackPut
LookbackPutMC
%LookbackPutMC
function [P,CI] = LookbackPutMC(S0,r,T,sigma,NSteps,NRepl)
Payoff = zeros(NRepl,1);
for i=1:NRepl
Path=AssetPaths1(S0,r,sigma,T,NSteps,1);
SMax=max(Path);
Payoff(i)=max(0,SMax-Path(NSteps+1));
end
[P,aux,CI] = normfit( exp(-r*T) * Payoff);

LookbackPutMCCV
% LookbackPutMCCV.m
function [P,CI] = LookbackPutMCCV(S0,r,T,sigma,NSamples,NRepl,NPilot)
% pilot replications to set control parameter
TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);
StockSum = sum(TryPath,2);
PP = mean(TryPath(:,2:(NSamples+1)) , 2);
STMax = max(TryPath,[],2);
TryPayoff = exp(-r*T) * max(0, STMax-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));
% MC run
ControlVars = zeros(NRepl,1);
for i=1:NRepl
StockPath = AssetPaths1(S0,r,sigma,T,NSamples,1);
SMax=max(StockPath);
Payoff = exp(-r*T) * max(0, SMax-StockPath(NSamples+1) );
ControlVars(i) = Payoff + c * (sum(StockPath) - ExpSum);
end
[P,aux,CI] = normfit(ControlVars);

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

CompLookbackPut
S0=50;
r=0.1;
T=5/12;
sigma=0.4;
NSamples=5;
NRepl1=1000;
NRepl2=2000;
NRepl3=3000;
NRepl4=10000;
NRepl5=30000;
NRepl8=50000;
NRepl6=50000;
NRepl7=45000;
NPilot=5000;

rand('seed',0);
[PMC,CIMC]= LookbackPutMC(S0,r,T,sigma,NSamples,NRepl6);
rand('seed',0);
[PMCCV,CIMCCV]=LookbackPutMCCV(S0,r,T,sigma,NSamples,NRepl7,NPilot);
[LookbackPutHalton1000,CI1000]=LookbackPutHalton(S0,r,T,sigma,NSamples,N
Repl1);
[LookbackPutHalton2000,CI2000]=LookbackPutHalton(S0,r,T,sigma,NSamples,N
Repl2);
[LookbackPutHalton3000,CI3000]=LookbackPutHalton(S0,r,T,sigma,NSamples,N
Repl3);
[LookbackPutHalton10000,CI10000]=LookbackPutHalton(S0,r,T,sigma,NSamples
,NRepl4);
[LookbackPutHalton30000,CI30000]=LookbackPutHalton(S0,r,T,sigma,NSamples
,NRepl5);
[LookbackPutHalton50000,CI50000]=LookbackPutHalton(S0,r,T,sigma,NSamples
,NRepl8);

PMC
CIMC
PMCCV
CIMCCV
LookbackPutHalton1000
CI1000
LookbackPutHalton2000
CI2000
LookbackPutHalton3000
CI3000
LookbackPutHalton10000
CI10000
LookbackPutHalton30000
CI30000
LookbackPutHalton50000
CI50000

You might also like