Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte

Transcription

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte
Master Modélisation Aléatoire Paris VII,
Cours Méthodes de Monte Carlo en nance et C++,
TP n◦ 1.
Valorisation d'option par méthode de Monte-Carlo
16 janvier 2007
Exercice à rendre individuellement lors du cours du 19 Janvier 2007.
A joindre :
- la justication mathématique des techniques employées.
- les valeurs numériques obtenues et vos commentaires.
- le listing du programme de simulation.
Soit un espace de probabilité ltré
(Ω, F, (Ft )t≥0 , P)
muni d'un mouvement Brownien unidimen-
W . On se place dans le cadre du modèle de Black et Scholes, i.e. on suppose qu'un actif
2
suit une dynamique de type Brownien géométrique, St = S0 exp((r − σ /2)t + σWt ),
cours initial de l'actif, r désigne le taux d'intérêt supposé constant, σ le paramètre de
sionnel standard
nancier
où
S0
(St )t≥0
est le
volatilité.
Le propos de cet exercice est d'estimer par méthode de Monte Carlo des quantités du type
RT
+ E[ 0 f (Ss )ds]). Pour f = 0
maturité T > 0 xé sur l'actif S . Le cas f 6= 0
marché, frais de gestion pour f ≤ 0, etc...
e−rT (E[h(S
T )]
ceci correspond au prix d'une option de pay-o
h
et
peut être vu comme une participation à l'évolution du
[0, 1]
myRand.
Une classe implémentant un générateur congruenciel sur
http ://www.proba.jussieu.fr/menozzi,
classe
vous est fourni à l'adresse :
Les étapes sont les suivantes :
- Ecriture d'une classe C++ pour simuler des lois normales
N (m, σ), m ∈ R, σ ∈ R+∗ .
- Ecriture d'une classe C++ pour estimer par simulation les quantités
Le but est de rendre paramétrable le pay-o
h
et le terme source
f
RT
e−rT (E[h(ST )] + E[ 0 f (Ss )ds]).
de sorte à pouvoir conserver le
maximum possible de code commun pour diérents pay-os et termes sources.
Pour chacune des classes on procèdera à la validation du code écrit en vériant certaines propriétés
statistiques associées aux variables aléatoires simulées.
1
Lois normales
Ecrire une classe de prototype
class Normale{
myRand U;
double mean, variance;
public:
Normale(double meani=0, double variance_i=1 );
double Simule() const;
};
1
Question 1. Ecrire le(s) constructeur(s) ainsi que la méthode
Simule()
de la classe
Normale.
Question 2. Testez à l'aide de fonctions annexes, le "bon comportement" de la classe écrite.
double getEmpiricalMean(const Normale & N,long NMC), qui va renvoyer la
associée à NMC réalisations indépendantes de l'instance N de Normale considérée.
- Ecrire une fonction
moyenne empirique
- Procéder de même pour la variance empirique, fonction
getEmpiricalVariance
de même prototype
que la précédente.
- Vérier le théorème de limite centrale et estimer une vitesse de convergence pour ce dernier.
- Tracer en fonction du nombre de réalisations
NMC
que l'on fera varier entre
judicieusement choisi la moyenne empirique et l'intervalle de conance à
2
95%
104
et
106
pour un pas
associé.
Options vanilles dans le modèle de Black et Scholes
On va à ce propos illustrer la notion d'héritage. On considère une classe abstraite
PayOff
de
prototype
class PayOff{
public:
virtual double operator()(double) const =0;
};
Cette classe sera la classe de base pour représenter un ensemble de Pay-Os qui pourront s'exprimer
comme une fonction de l'actif à un instant
T
donné. Il n'y a pas de dépendance trajectorielle ici. Les
vanille. De cette classe on va faire dériver
deux classes lesquelles vont implémenter l'opérateur operator() de PayOff. Il s'agit des classes Call et
Butterfly respectivement associées aux pay-os hC (x) = (x − K)+ , où l'on dit que K est le strike de
+
+
l'option, et hB (x) = ((K −F )−x) +(x−(K −F ))Ix∈[K−F,K) +(F −(x−K))Ix∈[K,K+F ] +(x−(K +F ))
où F > 0 sera une donnée membre de la classe Butterfly.
options associées à de tels pay-os sont souvent qualiées de
Les prototypes de ces classes seront les suivants
class Butterfly: public PayOff{
double K,F;
public:
Butterfly(double Ki=100,double Fi=5);
double operator()(double) const;
};
pour lesquelles on va préciser l'évaluation associée, i.e. on écrit l'opérateur operator(). L'utilisation
l'héritage et du polymorphisme pour le PayOff permet d'écrire une classe VanillaOptionBS qui
class Call:public PayOff{
double K;
public:
Call(double Ki=100);
double operator()(double) const;
};
de
traitera de façon générique pour un pay-o donné la procédure d'estimation de la moyenne par méthode
de Monte Carlo. Le prototype est le suivant :
class VanillaOptionBS{
PayOff & PO;
double T,r,sigma,S0;
Normale N;
public:
VanillaOptionBS(PayOff & PO_i, double Ti=1,double ri=.03, double sigmai=.15,
double S0i=100);
double Simule() const;
};
2
Question 1 Ecrire les corps des diérentes classes précédemment introduites.
−rT E[h (S )] en termes de la foncQuestion 2. Pour le call déterminer l'expression explicite de e
C
T
∀x ∈ R, N (x) ≡ P[N (0, 1) ≤ x]. Prouver la
e−rT E[(ST − K)+ ] = S0 − e−rT K + e−rT E[(K − ST )+ ]. En déduire l'expression explicite de
e−rT E[hB (ST )].
Question 3. Modier les classes Normale, VanillaOptionBS, de sorte à utiliser de façon générique
l'approximation de Monte Carlo. On suggère de les faire hériter d'une même classe de base, Loi_Proba :
tion de répartition de la loi normale centrée réduite
relation
class Loi_Proba{
public:
virtual double Simule() const=0;
};
C'est cette classe qui sera désormais en argument des fonctions :
-
double getEmpiricalMean(const Loi_Proba &,long),
double getEmpirical_Variance(const Loi_Proba &,long)
- ...
Question 4. Estimer en faisant varier le nombre de trajectoires considérées les prix du Call et
T = .5, K = S0 = 100, r = .02, σ = .2, F = 5 par méthode de Monte Carlo.
Comparer à l'expression explicite. On suggère pour évaluer N (x) d'utiliser la fonction erf du C :
R
erf(x) = √2π 0x exp(−t2 )dt. Attention au changement de variable !
du Call Buttery pour
3
Modèle de Black et Scholes avec second membre
On considère ici le cas où
RT
Q := E[ 0 f (Ss )ds],
∃c > 0, |f (x)| ≤ exp(c|x|).
terme
f 6= 0.
On se propose d'étudier trois techniques de simulation du
lorsque la fonction
1. Etudier tout d'abord l'approximation de
f
est mesurable et à croissance polynomiale, i.e.
Q à l'aide d'une discrétisation de l'intégrale par une somme
de Riemann. Préciser les ordres des erreurs respectivement associés à la discrétisation de l'intégrale et
à l'approximation de Monte Carlo. Comment équilibrer ces erreurs de sorte à avoir une erreur globale
de l'ordre de
2. Ecrire
Q
ε>0
xé.
sous forme d'une espérance ne faisant plus intervenir d'intégrale en temps. Utiliser pour
cela une loi uniforme sur
[0, T ].
3. Déduire un procédé de simulation de
Q
à partir de l'exercice suivant, qu'il faut bien entendu
également faire et rendre.
(Ui )i∈[[1,n]] un échantillon i.i.d. de loi uniforme U[0,1] de taille n ∈ N∗ . On note V1 ≤ V2 ≤ ... ≤ Vn
l'échantillon ordonné. Par convention, on écrit V0 = 0, Vn+1 = 1 et l'on pose pour i ∈ [[0, n]], ∆i :=
Vi+1 − Vi .
Soit
a. Calculer la loi du couple
b. Montrer que
c. Soit
(Vi , Vi+1 )
pour
i ∈ [[0, n]].
En déduire la loi de
∆i , i ∈ [[0, n]].
n
supi∈[[0,n]] ∆i −→ 0.
p.s.
g ∈ C([0, 1], R).
Montrer que l'estimateur
Zn :=
n
X
∆i g(Vi )
converge presque sûrement vers
i=0
I :=
R1
0
g(x)dx.
c. Montrer que la suite
d. Supposons
g∈
(E[Zn ])n∈N∗
converge vers
I.
C 1 ([0, 1], R). Montrer qu'il existe une constante
C > 0 telle que |Zn −I| ≤ C
n
X
i=0
En déduire la vitesse de convergence de
Zn
vers
3
I
dans
L1 (P).
∆2i .
e. Peut-on espérer la même vitesse pour l'estimateur naturel, i.e.
Yn :=
1
n
n
X
g(Ui ) ?
i=1
f. Représenter les graphes de
g(x) = x
On xe désormais
simuler
Q
(Yn )
et
et un échantillon de taille
f (s) = Is>K0 .
(Zn ) pour des valeurs de n
N = 104 . Commenter.
qui sont des multiples de 50 pour
Avec les paramètres précédents pour
S
et
K0 ∈ {90, 100, 110},
suivant les trois techniques indiquées ci-avant. Discuter les variances empiriques ainsi ob-
tenues. Le choix de la modélisation par objets est ici laissé à l'utilisateur. Fixer dans chacun des cas
les paramètres nécessaires, i.e. nombre de trajectoires et de pas de discrétisation, pour obtenir une
précision relative de l'ordre de
10−3 .
4

Documents pareils

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Carlo en nance et C++, TP n◦ 2. Discrétisation d'un portefeuille autonançant 11 Janvier 2008

Plus en détail

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Carlo en nance et C++, TP n◦ 2. Techniques de correction pour les options barrières

Plus en détail