Vous êtes sur la page 1sur 6

Simulation des prix

Daniel Herlemont

31 mars 2010

Table des matières


1 Simulation de prix lognormaux 1

2 Propriétés de la loi lognormale 3

3 Génération intraday 4

1 Simulation de prix lognormaux


Le but de cet exercice est de développer une fonction de simulation des prix lognormaux.
Un modèle lognormal est tel que les incréments du logarithme des prix δlog(p) sont
gaussiens N (µ, σ) de moyenne µ et variance σ 2 .
Le logarithme du prix est normalement distribué :

log(pt ) − log(p0 = (log(pt ) − log(pt−1 ) + ...(log(p1 ) − log(p0 )

est donc une somme de variables aléatoires indépendantes normalement distribuées et de


même loi,
log(pt /p0 ) est donc également normalement distribué de moyenne µt et variance σ 2 t (les va-
riables étant indépendantes, les variances
√ s’additionnent). On voit donc apparaı̂tre le facteur
d’échelle en t pour la moyenne, et σ t pour la volatilité.
Considérons un indice actions typique (le S&P, par exemple) dont le rendement annuel
est de r = 10% et la volatilité annuelle de σ = 20%, dans un modèle lognormal.
ˆ Calculer µ

ˆ Simuler les prix annuels sur 100 ans : on procédera de la façon suivante :

1
1 SIMULATION DE PRIX LOGNORMAUX

– générer un vecteur des rendements en utilisant rnorm(100,mu,sigma)


– ce vecteur représente donc log(pi /pi−1 ), reconstituer le vecteur des prix, en sup-
posant p0 = 1.

Afficher sous forme graphique.

ˆ Simuler les prix journaliers sur 1 an, afficher sous forme graphique.
note : on considère qu’il y a 252 jours de cotations dans l’année. On utilisera des
rendements journaliers en appliquant le facteur 1/252 sur µ et sqrt(1/252) sur σ.

ˆ Vérifier le lemme d’ito par simulation : pour ce faire

ˆ Simuler le prix pour une journée en intraday à raison de 1 tick par minute et 8 heures
de cotation par jour. Afficher sous forme graphique.

ˆ Noter les différences dans la perception des tendances.

ˆ Qu’elle est la probabilité d’avoir un rendement positif au bout de 10 ans ?

ˆ Inversement, combien de temps faut il attendre pour être quasi certain de gagner de
l’argent à 99% de confiance ?

ˆ Sur quel horizon de temps a t on une tendance comparable à la volatilité ?

ˆ Commentaires ...

Réaliser cette simulation sous la forme d’une fonction lognormalPrice.simul qui aura
pour paramètres
ˆ n : le nombre de périodes = taille du vecteur généré

ˆ r : l’espérance du rendement annuel

ˆ sigma : la volatilité annuelle

ˆ t : la fréquence, défaut=1/252, correspond à une génération de cotations journalières.


Pour une simulation intraday, de 1 tick par minute sur 8 heures de cotation, soit 480
ticks il suffira de prendre une fréquence d’échantillonnage de 1/(252*480)

ˆ price0 : le prix initial

On pourra ajouter un paramètre pour afficher un graphique. Effectuer plusieurs simula-


tions sur un même horizon et constater le caractère aléatoire des tendances ...

Daniel Herlemont 2
2 PROPRIÉTÉS DE LA LOI LOGNORMALE

2 Propriétés de la loi lognormale


On pourra vérifier quelques propriétés de la des lois lognormales xt = pt /pt−1 , avec les log xt
normalement distribuées de moyenne µ et variance σ 2 .
La densité de la loi lognormale est :
1 (log(x) − µ)2
f (x) = √ exp(− )
2πσx 2σ 2
l’espérance est
Ept /pt−1 = er
avec
r = µ + σ 2 /2
que l’on retrouve par le lemme d’itô appliqué à l’équation
dS/S = rdt + σdW
µ = E(d log S) = E(dS/S) − E(dS/S)2 /2 = r − σ 2 /2
La médiane est eµ . Elle est inférieure à l’espérance, la distribution est donc asymétrique
à droite (asymétrie positive). Cette propriété est simplement due au fait que le logarithme
est centré sur la moyenne µ, il y a donc autant de réalisations à droite et à gauche de eµ
pour log x et donc exp(µ) pour x. Le maximum de la densité (le mode) est atteint pour
2
eµ−σ (on pourra retrouver facilement cette valeur par la recherche du zéro de la dérivée de
f 0 (mode) = 0).
Le mode est donc inférieur à la médiane.
A court terme, il est difficile de distinguer une distribution log normale d’une simple
distribution normale. En revanche, pour des horizons plus longs, il existe des différence
perceptibles.
On vérifiera ces propriétés pour une action typique, sur 100 ans :
ˆ générer un échantillon de taille n = 10000 correspondant à une action typique : σ = 0.3
et µ = 0, donc r = 0 + 0.32 /2 = 0.045 = 4.5%.
ˆ Tracer l’histogramme des rendements arithmétiques x = exp(rnorm(n, mean = rµ, sd =
σ))−1, comparer à la distribution normale (c’est a dire aux rendements logarithmiques)
ˆ Vérifier que les rendements observés seront le plus souvent inférieurs à l’espérance(c’est
à dire que le mode est inférieur à l’espérance). Il s’agit là d’une caractéristique commune
à tout processus multiplicatif, la moyenne est due à des contributions exponentiellement
grandes et rares.

Daniel Herlemont 3
3 GÉNÉRATION INTRADAY

3 Génération intraday
ˆ Utiliser la fonction de génération de prix lognormaux pour simuler des cours de clôture,
ouverture, plus hauts et plus bas journaliers sur 1000 jours. On prendra , par exemple,
r=0.1, sigma=.2

ˆ Ranger soigneusement cette fonction dans util.R, elle sera utile pour developper des
estimateurs efficaces de volatilité en utilisant les plus haut et plus bas.

ˆ Montrer à l’aide d’un qqplot, que la loi du ”range” log(highs) − log(lows) est deux
fois celle de |log(opens) − log(closes)|. En particulier mean(log(highs) − log(lows)) =
2 ∗ mean(abs(log(opens) − log(closes)))

ˆ On vérifiera cette propriété en utilisant les données réelles du CAC40.

Exemple de fonction pour la génération de prix intraday avec gap On génère des ticks
minite par minute sur 24 heures, puis on extrait les prix entre 9h00 et 17h00

> intra = function(NbJours = 100, mu = 0.1, sigma = 0.3, S0 = 1) {


+ Open = 0
+ High = 0
+ Low = 0
+ Close = 0
+ nticks = 24 * 60
+ for (i in 1:NbJours) {
+ z = rnorm(nticks)
+ S = S0 * cumprod(1 + mu/(252 * nticks) + sigma/sqrt(252 *
+ nticks) * z)
+ openingtick = 9 * 60
+ closingtick = 17 * 60
+ Open[i] = S[openingtick]
+ High[i] = max(S[openingtick:closingtick])
+ Low[i] = min(S[openingtick:closingtick])
+ Close[i] = S[closingtick]
+ S0 = S[nticks]
+ }
+ cbind(Open, High, Low, Close)
+ }
> prices = intra(10, 0.1, 0.3)

Daniel Herlemont 4
3 GÉNÉRATION INTRADAY

prix en intraday

o o
1.04

c
o
c o c
1.03

o c o
c
1.02

o
prices[, c(1, 4)]

c
o c
c c
1.01
1.00
0.99

o
o
0.98

2 4 6 8 10

Note sur la loi du maximum. Considérons un Brownien Bt , Mt le maximum atteint entre


0 et t. Soit Ta le premier temps de passage au dessus de la barrière a

Ta = inf {s ≤ 0 : Bs = a}

Ta est un temps d’arrêt.


Tout d’abord notons que l’évènement Ta < t signifie que le maximum est au dessus de a

P (Ta < t) = P (Mt > a)

Montrons que pour tout a > 0

P (Mt > a) = 2P (Bt > a)

Daniel Herlemont 5
3 GÉNÉRATION INTRADAY

le brownien étant symétrique, on a P (Bt > a|Mt > a) = 1/2 On en déduit que

P (Bt > a|Mt > a) = P (Bt > a et Mt > a)/P (Mt > a) = P (Bt > a)/P (Mt > a)

D’ou le résultat
P (Mt > a) = 2P (Bt > a)

Daniel Herlemont 6

Vous aimerez peut-être aussi