Gestion du risque avec la VaR et la CVaR

Gestion quantitative des risques en Python

Jamsheed Shorish

Computational Economist

Gestion du risque avec la théorie moderne du portefeuille

  • Portefeuille efficient
    • Pondérations qui maximisent le rendement pour un niveau de risque donné
  • Frontière efficiente : ensemble des points (risque, rendement) générés par différents portefeuilles efficients
    • Chaque point = optimisation des pondérations
  • Création du portefeuille/frontière efficients : théorie moderne du portefeuille

Graphique de la frontière efficiente

Gestion quantitative des risques en Python

Intégrer la Value at Risk à la MPT

  • Théorie moderne du portefeuille (MPT) : optimisation « moyenne-variance »
    • Rendement espéré maximal
    • Niveau de risque (volatilité) donné
    • Fonction objectif : rendement espéré
  • VaR/CVaR : mesurent le risque sur la distribution des pertes
  • Adapter la MPT pour optimiser la distribution des pertes plutôt que le rendement espéré
Gestion quantitative des risques en Python

Nouvel objectif : minimiser la CVaR

  • Changer l'objectif de l'optimisation du portefeuille
    • objectif moyenne-variance : maximiser le rendement moyen espéré
    • objectif CVaR : minimiser la perte conditionnelle espérée à un niveau de confiance donné
  • Exemple : distribution des pertes
    • VaR : perte maximale avec 95 % de confiance
    • Optimisation : pondérations minimisant la CVaR
    • CVaR : perte moyenne conditionnelle à une perte au moins égale à la VaR (pires 5 % des cas)
  • Trouver la perte moyenne la plus faible dans les pires 100 % − 95 % = 5 % des issues possibles
Gestion quantitative des risques en Python

Le problème de gestion du risque

  • Sélectionner les pondérations optimales $w^\star$ comme solution de

cvar_minimization

  • Rappel : $f(x)$ = densité de probabilité de la perte du portefeuille

  • PyPortfolioOpt : choisir la minimisation de la CVaR comme nouvel objectif

Gestion quantitative des risques en Python

Minimiser la CVaR avec PyPortfolioOpt

  • Créer un objet EfficientCVaR avec les rendements des actifs returns
  • Calculer les pondérations optimales avec la méthode .min_cvar()

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Gestion quantitative des risques en Python

Moyenne-variance vs gestion du risque par CVaR

  • Portefeuille à volatilité minimale moyenne-variance, actifs de banques d'investissement 2005-2010
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Gestion quantitative des risques en Python

Moyenne-variance vs gestion du risque par CVaR

  • Portefeuille minimisant la CVaR, actifs de banques d'investissement 2005-2010
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Gestion quantitative des risques en Python

Passons à la pratique !

Gestion quantitative des risques en Python

Preparing Video For Download...