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 Carlo en nance et C++,
TP n◦ 2.
Discrétisation d'un portefeuille autonançant
11 Janvier 2008
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