CommencezCommencez gratuitement

Comparer le CVaR et le VaR

Le Conditional Value at Risk (CVaR), aussi appelé perte attendue (ES pour Expected Shortfall), 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é? Le CVaR utilise le VaR comme point de départ, mais il est plus informatif parce qu'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 portfolio_losses pour 2005–2010 dans les banques d'investissement. Vous utiliserez ensuite ce VaR pour calculer le CVaR à 95 %, puis vous tracerez les deux par rapport à la distribution normale.

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

Cette activité fait partie du cours

Gestion quantitative des risques en Python

Voir le cours

Instructions de l’exercice

  • Calculez la moyenne et l'écart-type de portfolio_losses et assignez-les à pm et ps, respectivement.
  • Trouvez le VaR à 95 % à l'aide de 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 tail_loss, puis servez-vous-en pour calculer le CVaR au même niveau de confiance.
  • Ajoutez des lignes verticales indiquant le VaR (en rouge) et le CVaR (en vert) à un histogramme de la distribution normale.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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