Marche aléatoire

Analyse des séries chronologiques en Python

Rob Reider

Adjunct Professor, NYU-Courant Consultant, Quantopian

Qu'est-ce qu'une marche aléatoire ?

  • Prix d'aujourd'hui = Prix d'hier + bruit

$\large \quad \quad \ P_t \quad \ \ = \quad P_{t-1} \quad \quad \ + \ \ \epsilon_t$

  • Graphique de données simulées

Analyse des séries chronologiques en Python

Qu'est-ce qu'une marche aléatoire ?

  • Prix d'aujourd'hui = Prix d'hier + bruit

$\large \quad \quad \ P_t \quad \ \ = \quad P_{t-1} \quad \quad \ + \ \ \epsilon_t$

  • La variation du prix est un bruit blanc

$\large \quad \quad P_t - P_{t-1} \quad \ \ = \quad \ \ \epsilon_t$

  • Impossible de prévoir une marche aléatoire
  • Meilleure prévision pour demain : le prix d'aujourd'hui
Analyse des séries chronologiques en Python

Qu'est-ce qu'une marche aléatoire ?

  • Prix d'aujourd'hui = Prix d'hier + bruit

$\large \quad \quad \ P_t \quad \ \ = \quad P_{t-1} \quad \quad \ + \ \ \epsilon_t$

  • Marche aléatoire avec dérive :

$\large \quad \quad \ P_t \quad \ \ = \ \mu \ + \ P_{t-1} \ \ + \quad \epsilon_t$

  • Variation du prix : bruit blanc à moyenne non nulle :

$\large \quad \quad P_t - P_{t-1} \ \ = \ \mu \ \ + \ \ \epsilon_t$

Analyse des séries chronologiques en Python

Test statistique de marche aléatoire

  • Marche aléatoire avec dérive

$\large \quad \quad P_t \quad \ \ = \ \mu \ \ + \ \ P_{t-1} \quad \ + \ \ \epsilon_t$

  • Test de régression pour marche aléatoire

$\large \quad \quad P_t \quad \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \ \ + \ \ \epsilon_t$

  • Test :

$\quad \quad \large H_0: \beta=1$ (marche aléatoire)

$\quad \quad \large H_1: \beta<1$ (pas marche aléatoire)

Analyse des séries chronologiques en Python

Test statistique de marche aléatoire

  • Test de régression pour marche aléatoire

$\large \quad \quad \quad \quad P_t \quad \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \quad \ + \ \ \epsilon_t$

  • Équivalent à

$\large \quad \quad P_t - P_{t-1} \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \ \ + \ \ \epsilon_t$

  • Test :

$\quad \quad \large H_0: \beta=0$ (marche aléatoire)

$\quad \quad \large H_1: \beta<0$ (pas marche aléatoire)

Analyse des séries chronologiques en Python

Test statistique de marche aléatoire

  • Test de régression pour marche aléatoire

$\large \quad \quad P_t - P_{t-1} \ \ = \ \alpha \ \ + \ \ \beta \ P_{t-1} \ \ + \ \ \epsilon_t$

  • Test :

$\large \ \ \ \ H_0: \beta=0$ (marche aléatoire)

$\large \ \ \ \ H_1: \beta<0$ (pas marche aléatoire)

  • Ce test s'appelle le test Dickey-Fuller
  • En ajoutant des retards supplémentaires à droite, c'est le test Dickey-Fuller augmenté
Analyse des séries chronologiques en Python

Test ADF en Python

  • Importer le module de statsmodels
    from statsmodels.tsa.stattools import adfuller
    
  • Exécuter le test Dickey-Fuller augmenté
    adfuller(x)
    
Analyse des séries chronologiques en Python

Exemple : le S&P 500 suit-il une marche aléatoire ?

# Exécuter le test Dickey-Fuller augmenté sur les données SPX
results = adfuller(df['SPX'])
# Afficher la p-valeur
print(results[1])
0.782253808587
# Afficher tous les résultats
print(results)
(-0.91720490331127869,
 0.78225380858668414,
 0,
 1257,
 {'1%': -3.4355629707955395,
  '10%': -2.567995644141416,
  '5%': -2.8638420633876671},
 10161.888789598503)
Analyse des séries chronologiques en Python

Passons à la pratique !

Analyse des séries chronologiques en Python

Preparing Video For Download...