HW 10
HW 10
HW 10
clear;
S0=50;
X=50;
r=0.1;
T=2/12;
sigma=0.4;
Sb=40;
Nsteps=60;
NRepl=19500;
NPilot=500;
[P,CI,NCrossed] = DOPutMCCV(S0,X,r,T,sigma,Sb,Nsteps,NRepl,NPilot)
nuT=(r-0.5*sigma^2)*T;
siT=sigma*sqrt(T);
randn("seed",0)
StockVals=S0*exp(nuT+siT*randn(NPilot,1));
OptionVals=exp(-r*T)*max(0,X-StockVals);
MatCov=cov(StockVals,OptionVals);
VarY=S0^2*exp(2*r*T)*(exp(T*sigma^2)-1);
c=-MatCov(1,2)/VarY;
ExpY=S0*exp(r*T);
Payoff=zeros(NRepl,1);
NCrossed=0;
for i=1:NRepl
Path=AssetPaths_1(S0,r,sigma,T,Nsteps,1);
crossed=any(Path<=Sb);
if crossed==0
NewOptionVals=exp(-r*T)*max(0,X-Path(Nsteps+1));
Payoff(i)=NewOptionVals+c*(Path(Nsteps+1)-ExpY);
else
Payoff(i)=c*(Path(Nsteps+1)-ExpY);
NCrossed=NCrossed+1;
end
end
[P,aux,CI]=normfit(Payoff);
end
function SPaths=AssetPaths_1(S0,mu,sigma,T,NSteps,NRepl)
dt = T/NSteps;
nudt = (mu-0.5*sigma^2)*dt;
sidt = sigma*sqrt(dt);
SPaths = exp(LogPaths);
end
clear;
S0=50;
X=50;
r=0.1;
T=2/12;
sigma=0.4;
Sb=40;
NSteps=60;
NRepl=50000;
Base1=2;
Base2=7;
[P,CI,NCrossed] = DOPutQuasiMC(S0,X,r,T,sigma,Sb,NSteps,NRepl,Base1,Base2)
Payoff=zeros(NRepl,1);
NCrossed=0;
dt=T/NSteps;
nuT=(r-0.5*sigma^2)*dt;
siT=sigma*sqrt(dt);
H1=GetHalton(ceil(NSteps*NRepl/2),Base1);
H2=GetHalton(ceil(NSteps*NRepl/2),Base2);
VLog=sqrt(-2*log(H1));
Norm1=VLog.*cos(2*pi*H2);
Norm2=VLog.*sin(2*pi*H2);
Norm3=[Norm1;Norm2];
Norm=reshape(Norm3,NSteps,NRepl);
for i=1:NRepl
Increments=nuT+siT*Norm(:,i);
LogPaths=cumsum([log(S0)*ones(1,1),Increments.',2]);
Path=exp(LogPaths);
%Path=S0*exp(nuT+siT*Norm(:,i));
crossed=any(Path<=Sb);
if crossed==0
Payoff(i)=max(0,X-Path(NSteps+1));
else
Payoff(i)=0;
NCrossed=NCrossed+1;
end
end
[P,aux,CI]=normfit(exp(-r*T)*Payoff);
end
Seq = zeros(HowMany,1);
NumBits = 1+ceil(log(HowMany)/log(Base));
VetBase = Base.^(-(1:NumBits));
WorkVet = zeros(1,NumBits);
for i=1:HowMany
j=1;
ok = 0;
while ok == 0
WorkVet(j) = WorkVet(j)+1;
ok = 1;
else
WorkVet(j) = 0;
j = j+1;
end
end
Seq(i) = dot(WorkVet,VetBase);
end
end