Bienvenue !

Gestion quantitative des risques en Python

Dr. Jamsheed Shorish

Computational Economist

À propos de moi

  • Économiste computationnel(le)
  • Spécialisé(e) en :
    • évaluation des actifs
    • technologies financières (« FinTech »)
    • applications informatiques en économie et finance
  • Codirecteur(-trice) du cours « Economic Analysis of the Digital Economy » à l'ANU
  • Shorish Research (Belgique) : applications d'affaires computationnelles
Gestion quantitative des risques en Python

Qu'est-ce que la gestion quantitative des risques ?

  • Gestion quantitative des risques : étude de l'incertitude mesurable
  • Incertitude :
    • Les résultats futurs sont inconnus
    • Les résultats influencent la planification
  • Gestion des risques : atténuer les issues défavorables
  • Incertitude mesurable : repérer les facteurs pour mesurer le risque
    • Exemple : assurance incendie. Quels facteurs accroissent le risque ?
  • Ce cours : se concentre sur le risque d'un portefeuille financier
Gestion quantitative des risques en Python

Gestion des risques et crise financière mondiale

  • Grande Récession (2007‑2010)
    • Perte de croissance mondiale de plus de 2 billions $US
    • États‑Unis : près de 10 billions $US de richesse des ménages perdus
    • Bourses américaines : env. 8 billions $US en valeur envolés
  • Crise financière mondiale (2007‑2009)
    • Fortes variations des valeurs fondamentales des actifs
    • Incertitude massive sur les rendements futurs
    • Volatilité élevée des rendements des actifs
    • Gestion des risques déterminante pour réussir ou échouer
Gestion quantitative des risques en Python

Rappel rapide : portefeuilles financiers

  • Portefeuille financier
    • Ensemble d'actifs à rendements futurs incertains
    • Actions
    • Obligations
    • Devises (« forex »)
    • Options sur actions
  • Enjeu : quantifier le risque pour gérer l'incertitude
    • Prendre des décisions d'investissement optimales
    • Maximiser le rendement du portefeuille selon l'appétence au risque
Gestion quantitative des risques en Python

Quantifier le rendement

  • Rendement du portefeuille : somme pondérée des rendements des actifs
    • Bibliothèque d'analyse Pandas
    • DataFrame prices
    • Méthode .pct_change()
    • Méthode .dot() de returns
prices = pandas.read_csv("portfolio.csv")

returns = prices.pct_change()
weights = (weight_1, weight_2, ...)
portfolio_returns = returns.dot(weights)
Gestion quantitative des risques en Python

Quantifier le risque

  • Volatilité du portefeuille = risque
  • Calculer la volatilité via la matrice de covariance
  • Utiliser .cov() sur le DataFrame returns et annualiser

 

 

covariance = returns.cov()*252

print(covariance)

Exemple de matrice de covariance entre 4 actifs

Gestion quantitative des risques en Python

Quantifier le risque

  • Volatilité du portefeuille = risque
  • Calculer la volatilité via la matrice de covariance
  • Utiliser .cov() sur le DataFrame returns et annualiser
  • La diagonale de covariance donne les variances individuelles  

   

covariance = returns.cov()*252

print(covariance)

Exemple de matrice de covariance avec la variance sur la diagonale en surbrillance

Gestion quantitative des risques en Python

Quantifier le risque

  • Volatilité du portefeuille = risque
  • Calculer la volatilité via la matrice de covariance
  • Utiliser .cov() sur le DataFrame returns et annualiser
  • La diagonale de covariance donne les variances individuelles
  • Les hors‑diagonales de covariance sont les covariances entre actifs
covariance = returns.cov()*252

print(covariance)

Exemple de matrice de covariance avec les covariances hors diagonale en surbrillance

Gestion quantitative des risques en Python

Risque du portefeuille

  • Dépend des weights des actifs dans le portefeuille
  • La variance du portefeuille $\sigma_p^2$ est $$ \sigma_p^2 := w^T \cdot \textnormal{Cov}_p \cdot w $$
  • La multiplication matricielle se calcule avec l'opérateur @ en Python
  • On utilise généralement l'écart type plutôt que la variance
weights = [0.25, 0.25, 0.25, 0.25] # Suppose quatre actifs dans le portefeuille

portfolio_variance = np.transpose(weights) @ covariance @ weights
portfolio_volatility = np.sqrt(portfolio_variance)
Gestion quantitative des risques en Python

Série chronologique de la volatilité

  • On peut aussi calculer la volatilité du portefeuille dans le temps
  • Utiliser une « fenêtre » pour une période fixe (p. ex. semaine, « mois » de 30 jours)
  • Series.rolling() crée une fenêtre
  • Observer la tendance de volatilité et les événements extrêmes possibles
windowed = portfolio_returns.rolling(30)

volatility = windowed.std()*np.sqrt(252) volatility.plot() .set_ylabel("Standard Deviation...")

Graphique à fenêtre mobile de 30 jours de la volatilité annualisée du rendement

Gestion quantitative des risques en Python

Passons à la pratique !

Gestion quantitative des risques en Python

Preparing Video For Download...