Zacznij terazZacznij za darmo

Porównanie CVaR i VaR

Warunkowa wartość zagrożona (CVaR), zwana też oczekiwanym niedoborem (ES, ang. expected shortfall), odpowiada na pytanie: jaka będzie średnia strata, pod warunkiem że straty przekroczą określony próg przy danym poziomie ufności? CVaR wykorzystuje VaR jako punkt wyjścia, ale niesie więcej informacji – bierze bowiem pod uwagę ogon rozkładu strat.

Najpierw obliczysz 95% VaR dla rozkładu normalnego strat portfelowych, o tej samej średniej i odchyleniu standardowym co straty portfolio_losses banków inwestycyjnych z lat 2005–2010. Następnie użyjesz VaR do obliczenia 95% CVaR i naniesiasz oba wskaźniki na wykres rozkładu normalnego.

Zmienna portfolio_losses jest dostępna w twoim środowisku, podobnie jak rozkład normalny norm z biblioteki scipy.stats.

To ćwiczenie jest częścią kursu

Ilościowe zarządzanie ryzykiem w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz średnią i odchylenie standardowe portfolio_losses i przypisz je odpowiednio do zmiennych pm i ps.
  • Wyznacz 95% VaR, korzystając z metody .ppf() obiektu norm – przyjmuje ona argumenty loc dla średniej i scale dla odchylenia standardowego.
  • Użyj 95% VaR i metody .expect() obiektu norm, aby wyznaczyć tail_loss, a następnie oblicz CVaR przy tym samym poziomie ufności.
  • Dodaj pionowe linie oznaczające VaR (na czerwono) i CVaR (na zielono) do histogramu przedstawiającego rozkład normalny.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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()
Edytuj i uruchom kod