vuoi
o PayPal
tutte le volte che vuoi
KEMNA AND VORST MODEL : VALUTAZIONE CHIUSA DI UN OPZIONE PUT ASIATICA IN MEDIA GEOMETRICA
% KEMNA AND VORST MODEL : VALUTAZIONE CHIUSA DI UN OPZIONE% PUT ASIATICA IN MEDIA GEOMETRICA
function AsianPutOption = AsianOption(S0,E,sig,r,T,qdiv,n)
Dati_progettodt = (T/n);
s = 0;
for i=1:n
s = s + i ;
end
MediaLogGeo = log(S0) + 1/n*(r - qdiv -(sig*sig)/2)*s*dt;
sum=0;
for i=1:n
for j=1:n
sum=sum+min(i*dt,j*dt); %min(ti-t0,tj-t0)
end
end
VarLogGeo = (sig*sig)/(n*n)*sum;
d = (MediaLogGeo - log(E) + VarLogGeo)/sqrt(VarLogGeo);
AsianOption = exp(-r*T)*(E*normcdf(-d+sqrt(VarLogGeo))-exp(MediaLogGeo +VarLogGeo/2)*normcdf(-d))
AsianPutOption=AsianOption
%VALUTAZIONE OPZIONE CALL ASIATICA CON SIMULAZIONE MONTE CARLO
Dati_progettodt=T/n;
for i=1:NMCS
S(i,1)= S0;
for j=1:n
S(i,j+1) = S(i,j)*exp((r-qdiv-0.5*sig^2)*dt+sig * sqrt(dt)*randn);
end
Payoff(i)= max(geomean(S(i,2:end)) - E,0);
fattoredisconto=exp(-r*T)
C = fattoredisconto*mean(Payoff(1:i));
end
MC_Call_Asian_Option = C;
ACtrue=ACerrore
AsianCall = max(abs(MC_Call_Asian_Option-ACtrue))
% TESTA LA CONVERGENZA
for i=1:1:NMC
vetC(i) =
```html
fattoredisconto*mean(Payoff(1:i));stdev(i) = fattoredisconto*std(Payoff(1:i));vetn(i) = i;end;plot(vetn,vetC);gridhold on;plot(vetn, 0*vetn + ACtrue,'r');xlabel('numero di estrazioni');ylabel('C');errore = vetC - ACtrue;figure(2)plot(vetn,errore);gridxlabel('numero di estrazioni');ylabel('errore');figure(3)plot(vetn,stdev);gridxlabel('numero di estrazioni');ylabel('standard deviation');%VALUTAZIONE OPZIONE PUT ASIATICA CON SIMULAZIONE MONTE CARLOclear allDati_progettodt=T/n;for i=1:NMCS(i,1)= S0;for j=1:nS(i,j+1) = S(i,j)*exp((r-qdiv - 0.5*sig^2)*dt+sig * sqrt(dt)*randn);endPayoff(i)= max(E-geomean(S(i,2:end)) ,0);fattoredisconto=exp(-r*T)P = fattoredisconto*mean(Payoff(1:i));endMC_Put_Asian_Option = P;APtrue=APerroreAsianPut = (abs(MC_Put_Asian_Option-APtrue))% TESTA LA CONVERGENZAfor i=1:1:NMCvetC(i) = fattoredisconto*mean(Payoff(1:i));stdev(i) = fattoredisconto*std(Payoff(1:i));vetn(i) =
```i;end;plot(vetn,vetC);gridhold on;plot(vetn, 0*vetn + APtrue,'r');xlabel('numero di estrazioni');ylabel('C');errore = vetC - APtrue;figure(2)plot(vetn,errore);gridxlabel('numero di estrazioni');ylabel('errore');figure(3)plot(vetn,stdev);gridxlabel('numero di estrazioni');ylabel('standard deviation');