CVaR und VaR vergleichen
Der Conditional Value at Risk (CVaR), auch Expected Shortfall (ES), fragt danach, wie hoch der durchschnittliche Verlust ist, sofern Verluste bei einem bestimmten Konfidenzniveau einen Schwellenwert überschreiten. Er baut auf VaR als Ausgangspunkt auf, enthält aber mehr Informationen, weil er den Tail der Verlustverteilung berücksichtigt.
Du berechnest zuerst den 95-%-VaR für eine Normalverteilung der Portfoliowertverluste, mit demselben Mittelwert und derselben Standardabweichung wie die portfolio_losses der Investmentbank von 2005–2010. Danach verwendest du diesen VaR, um den 95-%-CVaR zu berechnen, und zeichnest beide gegen die Normalverteilung.
Die portfolio_losses stehen dir im Arbeitsbereich zur Verfügung, ebenso die Normalverteilung norm aus scipy.stats.
Diese Übung ist Teil des Kurses
Quantitative Risk Management in Python
Anleitung zur Übung
- Berechne Mittelwert und Standardabweichung von
portfolio_lossesund weise siepmbzw.pszu. - Bestimme den 95-%-VaR mit der
.ppf()-Methode vonnorm– sie erwartet die Argumentelocfür den Mittelwert undscalefür die Standardabweichung. - Verwende den 95-%-VaR und die
.expect()-Methode vonnorm, um dietail_losszu finden, und nutze sie, um den CVaR beim gleichen Konfidenzniveau zu berechnen. - Füge einem Histogramm der Normalverteilung vertikale Linien für den VaR (rot) und den CVaR (grün) hinzu.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()