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
Instructions de l’exercice
- Calculez la moyenne et l'écart-type de
portfolio_losseset assignez-les àpmetps, respectivement. - Trouvez le VaR à 95 % à l'aide de la méthode
.ppf()denorm— elle prend les argumentslocpour la moyenne etscalepour l'écart-type. - Utilisez le VaR à 95 % et la méthode
.expect()denormpour trouvertail_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()