CommencerCommencer gratuitement

Comparer le CVaR et le VaR

Le Conditional Value at Risk (CVaR), ou perte moyenne au-delà d’un seuil (Expected Shortfall, ES), répond à la question suivante : quelle sera la perte moyenne, conditionnellement au fait que les pertes dépassent un certain seuil à un niveau de confiance donné ? Il utilise le VaR comme point de départ, mais apporte plus d’informations car il tient compte de la queue de la distribution des pertes.

Vous allez d’abord calculer le VaR à 95 % pour une distribution normale des pertes de portefeuille, avec la même moyenne et le même écart type que les portfolio_losses des banques d’investissement entre 2005 et 2010. Vous utiliserez ensuite ce VaR pour calculer le CVaR à 95 % et tracerez les deux valeurs sur la distribution normale.

Les portfolio_losses sont disponibles dans votre espace de travail, ainsi que la distribution normale norm de scipy.stats.

Cet exercice fait partie du cours

Gestion quantitative des risques en Python

Afficher le cours

Instructions

  • Calculez la moyenne et l’écart type de portfolio_losses et affectez-les respectivement à pm et ps.
  • Trouvez le VaR à 95 % en utilisant la méthode .ppf() de norm : elle prend les arguments loc pour la moyenne et scale pour l’écart type.
  • Utilisez le VaR à 95 % et la méthode .expect() de norm pour trouver le tail_loss, puis servez-vous-en pour calculer le CVaR au même niveau de confiance.
  • Ajoutez des lignes verticales montrant le VaR (en rouge) et le CVaR (en vert) sur un histogramme de la distribution normale.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Compute the mean and standard deviation of the portfolio returns
pm = portfolio_losses.____
ps = portfolio_losses.____

# Compute the 95% VaR using the .ppf()
VaR_95 = norm.ppf(0.95, loc = ____, scale = ____)
# Compute the expected tail loss and the CVaR in the worst 5% of cases
tail_loss = norm.____(lambda x: x, loc = ____, scale = ____, lb = VaR_95)
CVaR_95 = (1 / (1 - 0.95)) * ____

# Plot the normal distribution histogram and add lines for the VaR and CVaR
plt.hist(norm.rvs(size = 100000, loc = pm, scale = ____), bins = 100)
plt.axvline(x = VaR_95, c='r', label = "VaR, 95% confidence level")
plt.axvline(x = ____, c='g', label = "CVaR, worst 5% of outcomes")
plt.legend(); plt.show()
Modifier et exécuter le code