Aan de slagGa gratis aan de slag

CVaR en VaR vergelijken

De conditional value at risk (CVaR), of expected shortfall (ES), vraagt wat het gemiddelde verlies is, voorwaardelijk op verliezen die boven een bepaalde drempel uitkomen bij een gegeven betrouwbaarheidsniveau. CVaR gebruikt VaR als vertrekpunt, maar bevat meer informatie omdat het rekening houdt met de staart van de verliesverdeling.

Je berekent eerst de 95%-VaR voor een Normale verdeling van portefeuilleverliezen, met hetzelfde gemiddelde en dezelfde standaardafwijking als de portfolio_losses van de investeringsbank in 2005–2010. Daarna gebruik je de VaR om de 95%-CVaR te berekenen, en je zet beide uit tegen de Normale verdeling.

De portfolio_losses zijn beschikbaar in je werkruimte, net als de Normale verdeling norm uit scipy.stats.

Deze oefening maakt deel uit van de cursus

Kwantitatief risicobeheer in Python

Cursus bekijken

Oefeninstructies

  • Bereken het gemiddelde en de standaardafwijking van portfolio_losses en sla ze op in respectievelijk pm en ps.
  • Vind de 95%-VaR met de .ppf()-methode van norm — deze gebruikt de argumenten loc voor het gemiddelde en scale voor de standaardafwijking.
  • Gebruik de 95%-VaR en de .expect()-methode van norm om de tail_loss te vinden, en gebruik die om de CVaR bij hetzelfde betrouwbaarheidsniveau te berekenen.
  • Voeg verticale lijnen toe die de VaR (in rood) en de CVaR (in groen) weergeven aan een histogram van de Normale verdeling.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren