Kom igångKom igång gratis

Jämföra CVaR och VaR

Conditional Value at Risk (CVaR), även kallat expected shortfall (ES), mäter den genomsnittliga förlusten givet att förlusterna överstiger ett visst tröskelvärde vid en given konfidensnivå. CVaR utgår från VaR men ger mer information eftersom det tar hänsyn till svansen i fördelningen av förluster.

Du börjar med att beräkna 95%-VaR för en normalfördelning av portföljförluster, med samma medelvärde och standardavvikelse som investeringsbankernas portfolio_losses för perioden 2005–2010. Sedan använder du VaR för att beräkna 95%-CVaR och plottar båda mot normalfördelningen.

portfolio_losses finns tillgänglig i din arbetsyta, liksom norm-normalfördelningen från scipy.stats.

Den här övningen är en del av kursen

Kvantitativ riskhantering i Python

Visa kurs

Övningsinstruktioner

  • Beräkna medelvärdet och standardavvikelsen för portfolio_losses och tilldela dem till pm respektive ps.
  • Beräkna 95%-VaR med hjälp av norms .ppf()-metod – den tar argumenten loc för medelvärdet och scale för standardavvikelsen.
  • Använd 95%-VaR och norms .expect()-metod för att beräkna tail_loss, och använd sedan det för att beräkna CVaR vid samma konfidensnivå.
  • Lägg till vertikala linjer som visar VaR (i rött) och CVaR (i grönt) i ett histogram över normalfördelningen.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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()
Redigera och kör kod