UPMC-X Master M2 Probabilités et Finance
Méthodes de Monte Carlo 2016/2017
Mini-projet Monte Carlo
à préparer pour le lundi 31 octobre
Algorithme Ziggurat
Partie 1 : Cas support compact
Soit fune densité de probabilité continue unimodale de support compact [l, r]. On note m[l, r]le mode
de la densité tel que fsoit strictement croissante sur [l, m]et strictement décroissante sur [m, r]. On note
f=f(m) = maxu[l,r]f(u)et F(x) = Rx
lf(u)du la fonction de répartition associée à f.
Pour tout y[0, f [, la fonction fpossède deux antécédents de y,f1({y}) = {f1
(y), f1
+(y)}où l’on suppose
conventionnellement que f1
(y)< f1
+(y). On note pour tout y[0, f[,
d(y) = f1
+(y)f1
(y).
Dans tout l’exercice on supposera qu’on sait évaluer la densité fen tout point.
Pour une fonction g:RRon note E(g)l’épigraphe de la fonction g,i.e.
E(g) = {(x, y)R2
+,06y6g(x)}.
La mesure λ2est la mesure de Lebesgue sur R2.
1. Montrer que E(f)[l, r]×[0, f ]. En déduire une méthode de rejet pour simuler selon la densité f.
2. Quelle est la loi τdu rejet et l’efficacité de la méthode (en fonction de λ2(E(g)),l,ret f).
3. Soit n>1et des points 0 = y0< y1<· · · < yn1< yn=fvérifiant
An>0,k∈ {1, . . . , n 1}, yk=An
k
X
j=1
1
d(yj1).
Pour ces points fixés, on considère les nrectangles Rk= [f1
(yk1), f1
+(yk1)]×[yk1, yk],k= 1, . . . , n,
et l’on pose En=
n
[
k=1
Rk.
4. Montrer que pour tout k= 1, . . . , n,λ2(Rk) = Anet en déduire que λ2(En) = nAn>1.
5. Soit (¯
X, ¯
Y)de loi uniforme sur En. Comment simuler efficacement (¯
X, ¯
Y)?
Quelle est la loi de la première marginale ¯
X? Si cette loi est à densité, on pourra noter celle-ci fn.
6. Soit (¯
Xm,¯
Ym)m>1une suite i.i.d. uniforme sur Enet τ= inf m>1,(¯
Xm,¯
Ym)∈ E(f).
Donner la loi de τet montrer que ¯
Xτa pour densité f.
7. Écrire l’algorithme de simulation de ¯
Xτà partir de lois uniformes sur [0,1].
8. Proposer un algorithme permettant de minimiser le nombre d’évaluations de la fonction f.
9. Montrer que pour tout n>1il existe une unique constuction possible i.e. qu’il existe un unique An
]0, f(rl)[, et montrer que limn+nAn= 1.
Partie 2 : Cas support non compact
On étend la construction précédente à une densité fde support R. On suppose que pour tout n>1, il existe
An>0tel que y1soit solution de F(f1
(y1)) + 1 F(f1
+(y1)) + y1d(y1) = Anet pour tout k∈ {2, . . . , n 1},
yk=An
k
X
j=2
1
d(yj1).
On modifie la construction précédente en considérant
˜
R1=E(f1]−∞,f1
(y1)])[f1
(y1), f1
+(y1)] ×[0, y1]∪ E(f1[f1
+(y1),+[),
et en posant ˜
En=˜
R1R2 · · · Rn.
1
1. Déterminer la fonction g1:R[0, y1]telle que ˜
R1=E(g1).
2. On suppose qu’on connaît explicitement F1. Comment simuler selon la loi de densité 1
An
g1à partir
d’une seule uniforme U∈ U([0,1]) ?
Donner l’algorithme complet de simulation selon la loi de Laplace de densité f(x) = λ
2eλ|x|en utilisant
cette construction.
3. On suppose que fest la densité gaussienne centrée réduite. Proposer une méthode de rejet de la loi
de densité proportionnelle à f1[f1
+(y1),+[par rapport à la queue d’une loi exponentielle à déterminer.
Préciser l’efficacité de la méthode (moyenne de l’inverse du temps de rejet).
Donner l’algorithme de simulation de la loi de densité 1
An
g1dans ce cas.
Implémentation en C++ et C++11
1. Programmer l’algorithme Ziggurat pour la loi bêta de paramètres α > 1et β > 1de densité de support
[0,1] définie par
f(x) = Cxα1(1 x)β1, x [0,1],
Cest la constante de normalisation. Tester.
2. Programmer l’algorithme Ziggurat pour la loi normale centrée réduite. Tester.
3. Ecrire un algorithme Ziggurat générique qui permet de simuler efficacement étant donnés :
une densité fet son inverse f1,
la fonction de répartition Fassociée et son inverse F1,
si nécessaire une fonction permettant de simuler les queues de distribution.
2
1 / 2 100%