Vous êtes sur la page 1sur 14

Compte rendu dut TP1

Mthodes de Monte Carlo et techniques de


rduction de variance, application au pricing
doptions

Travail prsent Madalina Deaconu


Modlisation Stochastique

ralis par Sami Ankrim


Master 2 IMOI parcours MF Modlisation stochastique

Table des matires


Introduction 3

Exercice 1 : Formule de Black-Scholes 3

Exercice 2 : Mthode de Monte Carlo 6

Exercice 3 : chantillonnage prfrentiel 10

Exercice 4 : Variables de contrle 11

Exercice 5 : Variables antithtiques 13

Exercice 6 : Comparaison 14

2
Master 2 IMOI parcours MF Modlisation stochastique

Introduction

Le but de ce TP est destimer le prix des options de type europen par la mthode de
Monte Carlo. On considre pour la suite un march compos des deux produits suivants :

placement au taux sans risque r,

actif risqu de prix (St )0tT linstant t.

Une option europenne est un contrat qui donne le droit son dtenteur dacheter (option
dachat appele aussi Call ) ou de vendre (option de vente appele aussi Put) une quantit
dun bien ou dun actif une date fixe T (chance de loption) au un prix convenu lavance
K (prix dexercice ou strike).

On cherche ici calculer C le prix du call (resp. P le prix du put) inconnus t=0. On
va donc estimer ces quantits par diffrentes thodes de Monte Carlo, en se basant sur la
modlisation de Black et Scholes du prix de lactif St pour t [0, T ] :

2
  
St = S0 exp t + Bt , (1)
2

o Bt , t [0, T ] est un mouvement brownien.

En supposant le march sans opportunit darbitrage on peut considrer que :

C = E[(St K)+ ], P = E[(K St )+ ]. (2)

Pour la simulation, on sintressera aux mthodes de Monte Carlo utilisant un chantillon-


nage prfrentiel, des variables de contrle ou des variables antithtiques pour rduire la
variance et retrouver la mthode de Monte Carlo la moins coteuse.

Exercice 1 : Formule de Black-Scholes


Le but de cet exercice est de faire le calcul exact du call et du put. On reprend les mme
notations prsentes dans lnonc et en introduction.

On reprend la formule de Black et Scholes pour le Call approxime dans lnonc :

C = E[(exp(G) K)+ ]. (3)

o G est une normale centre rduite et > 0.

3
Master 2 IMOI parcours MF Modlisation stochastique

1. Montrer que
   
log(K)
2 log(K)
C=e N 2 KN ,

avec
y 2
Z x
e 2
N (x) = P(G x) = dy.
2

On reprend lquation (3) et on applique le thorme du transport :


Z + x2
e 2x
C= e K 1[ log(K) ;[ (x)dx
2
Z + 
1 x2 x2

= ex 2 Ke 2 dx
2 log(K)

2 Z
+ Z +
e2 (x)2
2 K x2
= e dx e 2 dx,
2 log(K)

2 log(K)

On fait le changement de variable suivant : t = x dans la premire intgrale :


2 Z + Z +
e2 t2
2 K x2
C= e dt e 2 dx,
2 log(K)

2 log(K)

Puis on fait un changement de variable maintenant sur les deux intgrales : t = x = y pour
alterner les bornes des intgrales et inverser leur signe. On trouve alors :
y2 Z log(K) y2
log(K)

e 2
Z
2 e 2
C=e 2 dy K dy,
2 2
   
2
log(K) log(K)
=e2N KN .

2. En dduire aussi la formule pour le put


   
log(K) 2 log(K)
P = KN e N
2 . (4)

On reprend maintenant la formule de parit introduite dans la proposition de lnonc :

C P = S K. (5)

4
Master 2 IMOI parcours MF Modlisation stochastique

Et daprs la modlisation utilise dans lnonc pour dcrire le cours du sous-jacent et en


2
appliquant le TCL on a : S = E(eG ) = e 2 . On a donc :
P =C +K S
2
=C +K e 2
       
2 log(K) log(K)
=e2 N 1 K N 1 .

Or :
N (x) = P(G x)
= 1 P(G > x)
= 1 P(G x) (G normale centre rduite)
= 1 N (x),
donc :
N (x) = 1 N (x) (6)
et en appliquant (6) la dernire expression trouve pour P :
   
log(K) 2 log(K)
P = KN e 2 N

.
y 2
Z
e 2
3. Notons (x) = dy. Exprimer les formules prcdentes en fonction de
x 2
.

Grce au changement de variable dj effectu la question 1. : y = t, on obtient :


Z y2
e 2
(x) = dy
x 2
Z x t2
e 2
= dt
2
= N (x).
Il suffit de remplacer dans les expressions (1) et (2) :
   
2 log(K) log(K)
C=e2 K ,

   
log(K) 2 log(K)
P = K e 2 .

Par la suites nous allons considrer = 1 et K = 1 donc que :
C = e1/2 N (1) N (0), P = N (0) e1/2 N (1). (7)

5
Master 2 IMOI parcours MF Modlisation stochastique

Exercice 2 : Mthode de Monte Carlo


1. crire une mthode de Monte Carlo pour le calcul de C et justifier son
application. Tracer sur un mme graphe la valeur de C donne par la formule
exacte, la valeur approche de C par la mthode de Monte Carlo, et les bornes
des intervalles de confiance, en fonction du nombre de simulations.

On utilise l mthode de moyenne empirique et on crit :

C = E[f (G)],

avec f (x) = (exp(x) 1)+ .

Soient (Xi )1in une suite de variables alatoires indpendantes et identiquement distri-
bues de mme loi que f (G). Comme G N (0, 1) et f est une fonction positive alors f (G)
est intgrable les v.a. Xi sont intgrables. La mthode de Monte Carlo converge et on peut
crire :
n
1X
C = E((f (G)) = lim Xi . (8)
n n
i=1

On crit cette modlisation du Call par Monte Carlo sur scilab :

function [c,var,IC1,IC2]=Cemp(n)
//Mthode de Monte Carlo empirique pour calculer le prix du call C pour un K=1
//---------------------------------------------------
//La fonction Cemp prend en entre n le nombre de simulations
//elle retourne "c" lestimation du call et "IC1,IC2" les deux bornes de
//lintervalle de confiance 95% et "var" la variance de lestimateur
//---------------------------------------------------
c=0;
c2=0;
for i=1:1:n
eG=exp(rand(1,"normal")); //simulation dun va suivant N(0,1)
c= c + (eG>1)*(eG-1);
c2= c2 + (eG>1)*(eG-1)^2;
end
c= c/n;//simulateur du prix du call
c2=c2/n;
var=c2-c^2;
IC1=c-1.96*sqrt(var/n);
IC2=c+1.96*sqrt(var/n);
endfunction

6
Master 2 IMOI parcours MF Modlisation stochastique

Ensuite on trace sur le mme graphe la valeur de C donne par la formule exacte, la valeur
approche de C par la mthode de Monte Carlo, et les bornes des intervalles de confiance,
en fonction du nombre de simulations :
function graphCemp()
//Trac sur un mme graphe de C, sa valeur approche
//et les bornes de lintervalle de confiance
for i=1:100
//Simulation de C avec la mthode de Monte Carlo
//pour un nombre de simulation entre 1000 et 100000
[c(1,i),var(1,i),IC1(1,i),IC2(1,i)]=Cemp(i*1000);
end
//valeur exacte du call C
Call=(exp(1/2)*cdfnor("PQ",1,0,1)-cdfnor("PQ",0,0,1))*ones(1,100);
x=(1:100)*1000;
//Trac sur le mme graphe
plot(x,Call,x,c,x,IC1,x,IC2);
legend("Valeur exacte","Valeur approch","IC1","IC2")
xtitle("La valeur du Call en fonction du nombre de simulations");
xlabel("Nombre de simulations");
ylabel("Prix du call");
endfunction

Ce qui donne le graphe suivant :

Figure 1 Courbe reprsentative du prix du Call C, sa valeur approche, et les bornes de


lintervalle de confiance par une mthode de Monte Carlo par moyenne empirique en fonction
du nombre de simulations.

7
Master 2 IMOI parcours MF Modlisation stochastique

La mthode de Monte Carlo converge bien vers la valeur du Call calcule par la formule
exacte dapproximativement 0,8. On remarque nanmoins quelques fluctuations autour de
celle-ci pour une variance de lordre de 3 et un intervalle de confiance de lordre de 0.5 pour
plus de 50 000 simulations.

2. Traiter la mme question pour le put P .

On reprend la mme procdure mais cette fois-ci avec :

P = E[(1 exp(G))+ ]. (9)

Le code sur Scilab de la mthode de Monte Carlo pour le Put devient :

function [p,var,IC1,IC2]=Pemp(n)
//Mthode de Monte Carlo empirique pour calculer le prix du put P pour un K=1
//---------------------------------------------------
//La fonction Pemp prend en entre n le nombre de simulations
//elle retourne "p" lestimation du put et "IC1,IC2" les deux bornes de
//lintervalle de confiance 95% et "var" la variance de lestimateur
//---------------------------------------------------
p=0;
p2=0;
for i=1:1:n
eG=exp(rand(1,"normal")); //simulation dune va suivant N(0,1)
p= p + (eG<1)*(1-eG);
p2= p2 + (eG<1)*(1-eG)^2;
end
p= p/n;//simulateur du prix du call
p2=p2/n;
var=p2-p^2;
IC1=p-1.96*sqrt(var/n);
IC2=p+1.96*sqrt(var/n);
endfunction

Puis on trace le graphe sur le mme graphe la valeur de P donne par la formule exacte,
la valeur approche de P par la mthode de Monte Carlo, et les bornes des intervalles de
confiance, en fonction du nombre de simulations :

function graphPemp()
//Trac sur un mme graphe P, sa valeur approche,
//et les bornes de lintervalle de confiance
for i=1:100
//Simulation de P avec la mthode de Monte Carlo
//pour un nombre de simulation entre 1000 et 100000
[p(1,i),var(1,i),IC1(1,i),IC2(1,i)]=Pemp(i*1000);
end

8
Master 2 IMOI parcours MF Modlisation stochastique

//valeur exacte du put P


Put=(-exp(1/2)*cdfnor("PQ",-1,0,1)+cdfnor("PQ",0,0,1))*ones(1,100);
x=(1:100)*1000;
//Trac sur le mme graphe
plot(x,Put,x,p,x,IC1,x,IC2);
legend("Valeur exacte","Valeur approch","IC1","IC2")
xtitle("La valeur de P en fonction du nombre des simulations");
xlabel("Nombre de simulations");
ylabel("Prix du put");
endfunction

On trouve le graphe suivant :

Figure 2 Courbe reprsentative du prix du Put P, sa valeur approche, et les bornes de


lintervalle de confiance par une mthode de Monte Carlo par moyenne empirique, en fonction
du nombre de simulation.

La mthode de Monte Carlo converge bien vers la valeur du Pull calcule par la formule
exacte dapproximativement 0,24. On remarque nanmoins quelques fluctuations autour de
celle-ci pour une variance de lordre de 0.08 et un intervalle de confiance de lordre de 0.0075
pour plus de 50 000 simulations.

3. Commenter.

On peut dire que la mthode de Monte Carlo a t plus prcise pour le calcul du Put que
celui du Call vu les valeurs et variances des mthodes pour un mme nombre de simulations.

9
Master 2 IMOI parcours MF Modlisation stochastique

Exercice 3 : chantillonnage prfrentiel


1. Pour x petit on a ex 1 x. En utilisant cette remarque exprimer C sous
la forme :
!
1 e 2Y 1
C= E , (10)
2 2Y

o Y est une v.a exponentielle de paramtre 1

On a :

esqrt2x 1 x
Z
1
C = E[(exp(G) 1)+ ] = e dx
2 0 2x
!
1 e 2Y 1
= E .
2 2Y

o Y est une v.a exponentielle de paramtre 1.

2. crire une nouvelle mthode de Monte Carlo base sur cette expression (10)
et estimer ensuite C par une mthode de Monte Carlo.

Soient (Yi )1in une suite de variables alatoires indpendantes


et identiquement distri-
2Yi
e 1
bues de mme loi que Y . Pour tout i {1, ..., n}, on pose Xi = , alors les (Xi )1in
2Yi
sont des v.a.i.i.d. intgrables car fonction positive des Yi intgrables. La mthode de Monte
Carlo converge et :
n !
1X e 2Yi 1
lim Xi = E = 2C (11)
ni nf ty n 2Yi
i=1

Le code Scilab du calcul du Call C avec cette mthode est donc :


function [c,var,IC1,IC2]=Cech(n)
//Echantillonage prfrentionnel
//Mthode de Monte Carlo par echantillonage prfrentiel
//pour calculer le prix du call C pour un K=1
//---------------------------------------------------
//La fonction Cech prend en entre n le nombre de simulations
//elle retourne "c" lestimation du call et "IC1,IC2" les deux bornes de
//lintervalle de confiance 95% et "var" la variance de lestimateur
//---------------------------------------------------
c=0;
c2=0;
for i=1:1:n

10
Master 2 IMOI parcours MF Modlisation stochastique

Y=-log(rand()); //simulation dune loi exponentielle de paramtre 1


c=c+ (%e^(sqrt(2*Y))-1)/sqrt(2*Y);
c2=c2+ ((%e^(sqrt(2*Y))-1)/sqrt(2*Y))^2;
end
c= (1/sqrt(2*%pi))*c/n;//simulateur du prix du call
c2=(1/(2*%pi))*c2/n;
var=c2-c^2;
IC1=c-1.96*sqrt(var/n);
IC2=c+1.96*sqrt(var/n);
endfunction

3. Comparer avec la mthode de lexercice 2, en terme de prcision et en terme


de temps de calcul.

On regroupe les rsultats des deux mthodes de calcul du Call avec 10 000 simulations
dans le tableau suivant :

Mthode C Var(C) IC inf IC sup Temps


Moy. empirique 0.8728552 3.4698339 0.8363453 0.9093651 0.4375
Ech. prfrentiel 0.8792241 0.2011605 0.8704334 0.8880149 0.15625

La mthode par chantillonnage est 10 fois plus prcise que la premire (en comparant les
variances), et la taille de lintervalle de confiance est tout aussi rduite. On a donc russi
faire une rduction de variance tout en gagnant en temps de calcul.

Exercice 4 : Variables de contrle


1. En utilisant la formule de parit, approchez C en utilisant une valeur ap-
proche de P .

On reprend la formule de parit call-put :

Ct Pt = St Ker(T t) .

Puis on introduit la variable de contrle Y () pour calculer C = C0 :

Y () = C (P P ), (12)

avec P = P0 le prix du put corrl C grce la formule de parit call-put, et P un


estimateur de P . Pour = 1 on :

Y = C P + P
= S0 KerT + P .

Il suffit donc de simuler P par Monte Carlo, vu que C = E(C) = E(Y ).

11
Master 2 IMOI parcours MF Modlisation stochastique

2. Estimer le call par une mthode de Monte Carlo base sur le calcul approch
de P . Comparer aux mthodes prcdentes, en terme de prcision et en terme
de temps de calcul.

On reprend la mthode de Monte Carlo introduite lexercice 2 pour estimer P et on


obtient le code Scilab suivant pour estimer le call C :

function [c,var,IC1,IC2]=Cvc(n,S_0,r)
//Variables de contle
//Mthode de Monte Carlo par variables de contrle
//pour calculer le prix du call C pour un K=1
//---------------------------------------------------
//La fonction Cvc prend en entre n le nombre de simulations
//S_0 la valeur de lactif au temps initial 0
//r le taux exponentiel du march
//et elle retourne "c" lestimation du call et "IC1,IC2" les deux bornes de
//lintervalle de confiance 95% et "var" la variance de lestimateur
//---------------------------------------------------
c=0;
c2=0;
//calcul de la valeur approche du put P laide de la moyenne empirique
p=0;
p2=0;
for i=1:1:n
eG=exp(rand(1,"normal")); //simulation dune va suivant N(0,1)
p= p + (eG<1)*(1-eG);
p2= p2 + ((eG<1)*(1-eG)+S_0-exp(-r))^2;
end
c=(p/n)+S_0-exp(-r);
c2=p2/n;
var=c2-c^2;
IC1=c-1.96*sqrt(var/n);
IC2=c+1.96*sqrt(var/n);
endfunction

Pour comparer les 3 mthodes, on a besoin davoir les mmes paramtres = 1 et K = 1,


donc S0 = 1.5 et r = 0.161 pour la dernire mthode. On regroupe les rsultats pour 10 000
simulations de ces mthodes dans le tableaux suivants :

Mthode C Var(C) IC inf IC sup Temps


Moy. empirique 0.8728552 3.4698339 0.8363453 0.9093651 0.4375
Ech. prfrentiel 0.8792241 0.2011605 0.8704334 0.8880149 0.15625
Var. de contrle 0.8849358 0.086564 0.8791691 0.8907024 0.484375

12
Master 2 IMOI parcours MF Modlisation stochastique

La mthode de Monte Carlo utilisant la variable de contrle est encore plus prcise que
celle par chantillonnage prfrentiel (en comparant les variances), mais elle reste la plus
coteuse des trois en temps de calcul. Ceci pourrait venir du fait que lon simule P par une
mthode de moyenne empirique coteuse en temps.

Exercice 5 : Variables antithtiques


Soit G une gaussienne centre et rduite. Comme G et G ont la mme loi, on peut
approcher C par
n
1 X Gi
C [(e 1)+ + (eGi 1)+ ], (13)
2n i=1

o (Gi )i1 note une suite de v.a.i.i.d. de loi gaussienne centre rduite.

1. Justifier lapplication de la mthode.

La mthode des variables antithtiques consiste introduire deux variables X et Y n-


gativement corrls de faon estimer une intgrale I en calculant E( X+Y
2
pour rduire la
Gi Gi
variance. Cest pour cela quon prend X = (e 1)+ et Y = (e 1)+ qui sont bien
ngativement corrls, avec G N (0, 1). On remarque la rduction de variance de la faon
suivante :
0
V = f rac12(V ar(X) + Cov(X, Y )) < V ar(X) = V

car :

Cov(X, Y ) = Cov((eGi 1)+ , (eGi 1)+ ) < 0

Cette mthode de Monte Carlo converge bien car X et Y sont bien intgrables daprs les
exercices prcdents. On crit cette mthode pour le calcul du Call C sur Scilab :

function [c,var,IC1,IC2]=Cva(n)
//Variables antithtiques
//Mthode de Monte Carlo par variables antithtiques
//pour calculer le prix du call C pour un K=1
//---------------------------------------------------
//La fonction Cva prend en entre n le nombre de simulations
//elle retourne "c" lestimation du call et "IC1,IC2" les deux bornes de
//lintervalle de confiance 95% et "var" la variance de lestimateur
//---------------------------------------------------
c=0;
c2=0;
for i=1:1:n
G=rand(1,"normal"); //simulation dune va suivant N(0,1)

13
Master 2 IMOI parcours MF Modlisation stochastique

c= c + 0.5*((exp(G)>1)*(exp(G)-1) + (exp(-G)>1)*(exp(-G)-1) );
c2= c2 + 0.25*((exp(G)>1)*(exp(G)-1) + (exp(-G)>1)*(exp(-G)-1) )^2;
end
c= c/n;//simulateur du prix du call
c2=c2/n;
var=c2-c^2;
IC1=c-1.96*sqrt(var/n);
IC2=c+1.96*sqrt(var/n);
endfunction

Pour comparer les 3 mthodes, on regroupe les rsultats de ces mthodes pour 10 000 simu-
lations dans le tableaux suivants :

Mthode C Var(C) IC inf IC sup Temps


Moy. empirique 0.8728552 3.4698339 0.8363453 0.9093651 0.4375
Ech. prfrentiel 0.8792241 0.2011605 0.8704334 0.8880149 0.15625
Var. de contrle 0.8849358 0.086564 0.8791691 0.8907024 0.484375
Var. antithtiques 0.869033 1.5052214 0.8449863 0.8930798 0.953125

La mthode de Monte Carlo utilisant les variables antithtiques est 2 fois plus prcise
que la mthode empirique mais moins prcise que les 2 autres mthodes (en comparant les
variances. Elle est aussi beaucoup plus coteuse en temps de calcul que les autres mthodes.

Exercice 6 : Comparaison
Conclure en comparant lensemble des mthodes.

On reprend le tableau de lexercice 5 pour conclure.

En prcision, la mthode utilisant les variables de contrle est la plus prcise, suivie par
la mthode par chantillonnage prfrentiel, puis celle utilisant les variables antithtiques et
enfin par moyenne empirique.

En temps de calcul, cest la mthode par chantillonnage prfrentiel qui est la plus rapide,
puis celle utilisant les variables de contrle, suivie de prs par la mthode par moyenne
empirique et enfin la mthode utilisant les variables antithtiques.

Pour conclure la meilleur mthode pour calculer nos prix de Call et Put reste donc celle
utilisant les variables de contrle vu quelle plus prcise et moyennement coteuse en temps de
calcul. En outre, on peut encore loptimiser pour diminuer le temps de calcul en la couplant
avec un chantillonnage prfrentiel pour lestimation du Put (dans le cas dun calcul du
Call).

14