Sie sind auf Seite 1von 1

%AmerikanschePutOptionmitdualemAnsatz,minimalsterHegde

%M:AnzahlderZeitschritte
%N:numberofMCpatZs
%S:Aktienpfade;
%Z:AuszahlungsfunktionZ(M,N)
%Beta:RegressionskoeffizientenBeta(J,M)
%NS:AnzahlderPfadefrdieSubsimulation
functionVDual=DualMC(r,q,sig,K,T,S,Z,M,N,J,NS,Beta)
dt=T/M;
V=zeros(M,N);%Preisfunktion
Ma=zeros(M,N);%DualeMartingal
Da=zeros(M,N);%dualerWert(Hedge)
fori=1:M
m=i+1;%aktuellerZeitpunkt
time=i*dt;
%Subsimulation
Ss=zeros(NS,N);%SubpfadefrdenbedingtenErwartungswert
Vs=zeros(NS,N);%PreisfunktionfrSubpfade
cs=zeros(NS,N);%ContinuationValuevonSubpfaden
Zs=zeros(NS,N);%AuszahlungsfunktionfrSubpfade
fork=1:NS%erzeugeSubpfadebasierendaufdieletzten
Aktienpreise
dW=sqrt(dt)*randn(1,N);
Ss(k,:)=S(m1,:).*(1+(rq)*dt+sig*dW);
Zs(k,:)=exp(r*time)*max(KSs(k,:),0);%Auszahlungberechnen
if(i==M)
Vs(k,:)=Zs(k,:);
else
Phi=Basislaguerre(Ss(k,:),J);%Basisvektor
cs(k,:)=(Beta(:,i)')*Phi;%frBerechnungdesContinuaion
Values
Vs(k,:)=max(Zs(k,:),cs(k,:));
end
end
Diff=V(i,:)sum(Vs,1)/NS;%MatingaleDifferenz
if(i==1)
Ma(i,:)=Diff;%MartingalsstartmitderDifferenzdefinieren
else
Ma(i,:)=Ma(i1,:)+Diff;
end
Da(i,:)=Z(i,:)Ma(i,:);%(ZM)berechnen
end
VDual=max(Da,[],1);%DualeHedgewerte
end

Das könnte Ihnen auch gefallen