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
Oefeninstructies
- Bereken het gemiddelde en de standaardafwijking van
portfolio_lossesen sla ze op in respectievelijkpmenps. - Vind de 95%-VaR met de
.ppf()-methode vannorm— deze gebruikt de argumentenlocvoor het gemiddelde enscalevoor de standaardafwijking. - Gebruik de 95%-VaR en de
.expect()-methode vannormom detail_losste 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()