LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Berechne Mittelwert und Standardabweichung von portfolio_losses und weise sie pm bzw. ps zu.
  • Bestimme den 95-%-VaR mit der .ppf()-Methode von norm – sie erwartet die Argumente loc für den Mittelwert und scale für die Standardabweichung.
  • Verwende den 95-%-VaR und die .expect()-Methode von norm, um die tail_loss zu 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()
Code bearbeiten und ausführen