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
Övningsinstruktioner
- Beräkna medelvärdet och standardavvikelsen för
portfolio_lossesoch tilldela dem tillpmrespektiveps. - Beräkna 95%-VaR med hjälp av
norms.ppf()-metod – den tar argumentenlocför medelvärdet ochscaleför standardavvikelsen. - Använd 95%-VaR och
norms.expect()-metod för att beräknatail_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()