Estimation paramétrique

Gestion quantitative des risques en Python

Jamsheed Shorish

Computational Economist

Une classe de distributions

  • Distribution des pertes : inconnue avec certitude
  • Classe de distributions possibles ?
    • Supposons une classe de distributions $f(x; \theta)$
    • $x$ est la perte (variable aléatoire)
    • $\theta$ est un vecteur de paramètres inconnus
  • Exemple : loi Normale
    • Paramètres : $\theta = (\mu, \sigma)$, moyenne $\mu$ et écart type $\sigma$
  • Estimation paramétrique : trouver le « meilleur » $\theta^\star$ à partir des données
  • Distribution des pertes : $f(x,\theta^\star)$
Gestion quantitative des risques en Python

Ajuster une distribution

  • Ajuster une distribution selon un critère minimisant l'erreur
    • Exemple : scipy.stats.norm.fit(), ajuste une loi Normale aux données
      • Résultat : moyenne et écart type ajustés de façon optimale
  • Avantages :
    • Peut visualiser l'écart entre données et estimation via un histogramme
    • Peut fournir des tests de qualité d'ajustement
Gestion quantitative des risques en Python

Qualité d'ajustement

  • Qualité de l'ajustement d'une distribution estimée aux données ?
  • Visualiser : tracer l'histogramme des pertes du portefeuille

image d'histogramme des pertes

Gestion quantitative des risques en Python

Qualité d'ajustement

  • Qualité de l'ajustement d'une distribution estimée aux données ?
  • Visualiser : tracer l'histogramme des pertes du portefeuille
  • Loi Normale avec norm.fit()

image d'histogramme des pertes avec une loi normale

Gestion quantitative des risques en Python

Qualité d'ajustement

  • Qualité de l'ajustement d'une distribution estimée aux données ?
  • Visualiser : tracer l'histogramme des pertes du portefeuille
  • Exemple :
    • Loi Normale avec norm.fit()
    • Loi de Student avec t.fit()
    • Histogramme asymétrique ?

image d'histogramme des pertes avec une loi normale

Gestion quantitative des risques en Python

Test d'Anderson-Darling

  • Test statistique de qualité d'ajustement
    • Hypothèse nulle : les données suivent une loi Normale
    • La statistique de test rejette la Normale si supérieure à critical_values
  • Importer scipy.stats.anderson
  • Calculer le résultat du test sur les données loss
from scipy.stats import anderson

anderson(loss)
AndersonResult(statistic=11.048641503898523,
critical_values=array([0.57 , 0.649, 0.779, 0.909, 1.081]),
significance_level=array([15. , 10. ,  5. ,  2.5,  1. ]))
Gestion quantitative des risques en Python

Asymétrie

  • Asymétrie : degré de dissymétrie de la distribution des données
    • Loi Normale : symétrique

distribution normale

Gestion quantitative des risques en Python

Asymétrie

  • Asymétrie : degré de dissymétrie de la distribution des données
    • Loi Normale : symétrique
    • Loi de Student : symétrique

distributions normale et de Student

Gestion quantitative des risques en Python

Asymétrie

  • Asymétrie : degré de dissymétrie de la distribution des données
    • Loi Normale : symétrique
    • Loi de Student : symétrique
  • Loi Normale asymétrique : dissymétrique
    • Contient la Normale comme cas particulier
    • Utile pour les données de portefeuille, p. ex. pertes plus fréquentes que gains
    • Disponible dans scipy.stats sous skewnorm

distributions normale, de Student et normale asymétrique

Gestion quantitative des risques en Python

Tester l'asymétrie

  • Tester l'éloignement d'une loi symétrique : scipy.stats.skewtest
  • Hypothèse nulle : pas d'asymétrie
  • Importer skewtest depuis scipy.stats
  • Calculer le résultat du test sur loss
    • Significatif ⇒ utiliser une classe de distributions avec asymétrie
from scipy.stats import skewtest

skewtest(loss)
SkewtestResult(statistic=-7.786120875514511,
pvalue=6.90978472959861e-15)
Gestion quantitative des risques en Python

Passons à la pratique !

Gestion quantitative des risques en Python

Preparing Video For Download...