Volatilité et valeurs extrêmes

Gestion quantitative des risques en Python

Jamsheed Shorish

Computational Economist

Hypothèses du test de Chow

  • Test de Chow : vérifier la signification statistique d'une rupture structurelle possible
  • Exige : un point de rupture préspécifié
  • Exige : relation linéaire (p. ex. modèle factoriel) $$ \log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t $$

Image de la croissance de la population chinoise avec point de rupture indiqué

Gestion quantitative des risques en Python

Indications de rupture structurelle

  • La visualisation de la tendance peut ne pas indiquer le point de rupture
  • Autre approche : analyser la volatilité plutôt que la tendance
    • Le changement structurel s'accompagne souvent d'une plus grande incertitude ⇒ volatilité
    • Permet d'envisager des modèles plus riches (p. ex. modèles à volatilité stochastique)

Image de la volatilité mensuelle avec points de rupture possibles

Gestion quantitative des risques en Python

Volatilité à fenêtre glissante

  • Fenêtre glissante : calculer la volatilité dans le temps et détecter les changements
  • Rappel : fenêtre glissante de 30 jours

    • Créer la fenêtre glissante avec la méthode ".rolling()"
    • Calculer la volatilité de la fenêtre glissante (retirer les dates non disponibles)
    • Calculer une statistique sommaire, p. ex. .mean(), .min(), etc.

     

rolling = portfolio_returns.rolling(30)

volatility = rolling.std().dropna()
vol_mean = volatility.resample("M").mean()
Gestion quantitative des risques en Python

Volatilité à fenêtre glissante

  • Visualiser la volatilité obtenue (variance ou écart-type)
import matplotlib.pyplot as plt
vol_mean.plot(
  title="Monthly average volatility"
).set_ylabel("Standard deviation")
plt.show()

Image de la volatilité moyenne mensuelle

Gestion quantitative des risques en Python

Volatilité à fenêtre glissante

  • Visualiser la volatilité obtenue (variance ou écart-type)
  • Grandes variations de volatilité ⇒ point(s) de rupture possibles
  • Utiliser les points proposés dans un modèle linéaire de volatilité
    • Variante du test de Chow
  • Repères pour appliquer p. ex. ARCH, modèles de volatilité stochastique
vol_mean.pct_change().plot(
  title="$\Delta$ average volatility"
).set_ylabel("% $\Delta$ stdev")
plt.show()

Image de la variation en pourcentage de la volatilité mensuelle

Gestion quantitative des risques en Python

Valeurs extrêmes

  • VaR, CVaR : perte maximale, perte moyenne au-delà d'un niveau de confiance donné
  • Visualiser l'évolution de la perte maximale en traçant la VaR ?
    • Utile pour les grands ensembles de données
    • Petits ensembles : information insuffisante
  • Autre option : repérer les pertes dépassant un seuil
  • Exemple : $\text{VaR}_{95}$ est la perte maximale 95 % du temps
    • Donc 5 % du temps, les pertes devraient dépasser $\text{VaR}_{95}$
  • Rétro‑analyse (backtesting) : utiliser des données passées ex post pour évaluer l'estimation du risque
    • Très utilisée en gestion des risques d'entreprise
Gestion quantitative des risques en Python

Rétro‑analyse

  • Supposons $\text{VaR}_{95} = 0.03$
  • Les pertes au‑delà de 3 % sont alors des valeurs extrêmes
  • Rétro‑analyse : environ 5 % (100 % - 95 %) des pertes passées devraient dépasser 3 %
    • Plus de 5 % : distribution à queues plus larges (« plus épaisses »)
    • Moins de 5 % : distribution à queues plus étroites
  • CVaR pour la rétro‑analyse : tient mieux compte de la queue que la VaR

Image des pertes et seuil de VaR à 95 %

Gestion quantitative des risques en Python

Passons à la pratique !

Gestion quantitative des risques en Python

Preparing Video For Download...