M2 MSA 2013/2014 Du mouvement brownien à la modélisation financière TP no 1 Travaux Pratiques : Marches aléatoires Le but de ce TP sur ordinateur est d’étudier et de comparer quelques marches aléatoires. 1 Introduction Une particule se déplace sur un axe en partant de l’origine. A chaque itération n, elle fait un pas dont l’amplitude Xn (positive ou négative) est indépendante de sa position et de son histoire (chaîne de Markov). Sa position Sn à l’itération n est donc donnée par Sn = Sn−1 + Xn avec S0 = 0. Dans la suite, on s’intéressera à des marches aléatoires de N pas et à la distribution P (SN ) de la position finale SN de la particule, dans les cas où les pas Xn sont distribués sur une loi f (Xn ) uniforme, binomiale, gaussienne et de Cauchy. En Fortran et en C, la fonction rand() génère des nombres pseudo-aléatoires uniformément distribués entre 0 et 1. Le générateur est initialisé par la fonction srand(s), où s est un entier appelé la “graine”. Changer s permet donc de changer la séquence des nombres pseudo-aléatoires en appelant “call srand(s)” avec une graine s différente pour chaque marche aléatoire. ⊲ 1-1 Proposer un moyen de changer la graine pour chaque marche aléatoire simulée. 2 Loi binomiale 1 − p. Les pas de la marche aléatoire discrète valent Xn = 1 avec la probabilité p ou Xn = −1 avec la probabilité ⊲ 2-1 Comment générer la variable aléatoire Xn à partir de la fonction rand() ? ⊲ 2-2 Générer quelques marches aléatoires de N = 10000 pas pour p = 0.4, 0.49 et 0.5. Tracer ces marches aléatoires (Sn en fonction de n). Quelle est la trajectoire moyenne < Sn > pour chaque valeur de p ? ⊲ 2-3 Observer l’aspect d’une marche aléatoire M symétrique (p = 0.5) de N = 10000 pas. Soit M′ la marche aléatoire obtenue à partir des 1000 premiers pas de M. Tracer sur un même graphe M et M′ en multipliant la taille des itérations (axe des abscisses) de cette dernière par 10. Par quel facteur faut-il multiplier la taille des pas (axe des ordonnées) de M′ pour que les deux marches aléatoires aient le même aspect ? Reprendre la même procédure avec M′′ , la marche aléatoire obtenue à partir des 100 premiers pas de M. q ⊲ 2-4 Pour p = 0.5, générer pM = 10 (d’abord pour q = 1, puis q = 2, 3 et 4) marches aléatoires de N = 10000 pas et calculer < Sn >q et V ar(Sn )q pour n ≤ N . Calculer la distribution (ie les histogrammes) P (SN )q de la p dernière position SN . Tracer sur un même graphe < Sn >q et V ar(Sn )q d’une part et P (SN )q d’autre part. Quelle est la fonction qui ajuste cette distribution dans la limite M ≫ 1 ? Pourquoi ? 3 Loi uniforme Les pas de la marche aléatoire sont distribués sur une loi uniforme f (Xn ) centrée entre −0.5 et 0.5. ⊲ 3-1 Comment générer la variable aléatoire Xn à partir de la fonction rand() ? ⊲ 3-2 Générer quelques marches aléatoires de N = 10000 pas. Vérifier que f (Xn ) est bien la distribution uniforme souhaitée. Tracer une marche aléatoire (Sn en fonction de n) et la comparer à une marche aléatoire binomiale symétrique. Quelle est la différence entre ces deux marches aléatoires ? ⊲ 3-3 Reprendre la question 2-4. Vers quelle fonction tend P (SN ) quand M ≫ 1 ? Pourquoi ? 1 4 Loi gaussienne Les pas de la marche aléatoire sont distribués sur une loi gaussienne de paramètres m et σ > 0 : 1 f (Xn ) = √ 2πσ 2 (Xn − m)2 2σ 2 e − ⊲ 4-1 Générer la variable aléatoire Xn à partir de la fonction rand() en utilisant par exemple la méthode de Box-Muller. ⊲ 4-2 Générer quelques marches aléatoires de paramètres m = 0 et σ = 1 de N = 10000 pas. Tracer ces marches aléatoires (Sn en fonction de n). Vérifier que f (Xn ) est bien la distribution gaussienne souhaitée. Quelle valeur de σ faut-il choisir pour que la marche aléatoire gaussienne et la marche aléatoire binomiale symétrique aient le même aspect ? ⊲ 4-3 Reprendre la question 2-4. Vers quelle fonction tend P (SN ) quand M ≫ 1 ? Pourquoi ? 5 Loi de Cauchy Les pas de la marche aléatoire sont distribués sur une loi de Cauchy de paramètres x0 et a > 0 : f (Xn ) = 1 0 2 πa(1 + ( x−x a ) ) ⊲ 5-1 Générer la variable aléatoire Xn à partir de la fonction rand() en utilisant par exemple la méthode de la transformation inverse. ⊲ 5-2 Générer quelques marches aléatoires de paramètres x0 = 0 et a = 1 de N = 10000 pas. Tracer ces marches aléatoires (Sn en fonction de n). Vérifier que f (Xn ) est bien la distribution de Cauchy souhaitée. ⊲ 5-3 Générer deux marches aléatoires de N = 1000 pas, l’une gaussienne (m = 0, σ 2 = 1), l’autre de Cauchy (x0 = 0 et a = .8). Tracer et comparer pour ces deux marches aléatoires : i) les distributions f (Xn ), ii) les historiques des pas Xn et iii) les trajectoires Sn . ⊲ 5-4 Reprendre la question 2-4. Vers quelle fonction tend P (SN ) quand M ≫ 1 ? Pourquoi ? 2