IniziaInizia gratis

Confrontare CVaR e VaR

Il conditional value at risk (CVaR), o expected shortfall (ES), chiede quale sarà la perdita media, condizionata al fatto che le perdite superino una certa soglia a un dato livello di confidenza. Parte dal VaR come punto di riferimento, ma contiene più informazioni perché tiene conto della coda della distribuzione delle perdite.

Per prima cosa calcolerai il VaR al 95% per una distribuzione Normale delle perdite di portafoglio, con la stessa media e deviazione standard delle portfolio_losses delle investment bank 2005-2010. Userai poi il VaR per calcolare il CVaR al 95% e traccerai entrambi rispetto alla distribuzione Normale.

Le portfolio_losses sono disponibili nel tuo workspace, così come la distribuzione Normale norm da scipy.stats.

Questo esercizio fa parte del corso

Gestione quantitativa del rischio in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Calcola la media e la deviazione standard di portfolio_losses e assegnale rispettivamente a pm e ps.
  • Trova il VaR al 95% usando il .ppf() di norm — accetta gli argomenti loc per la media e scale per la deviazione standard.
  • Usa il VaR al 95% e il metodo .expect() di norm per trovare il tail_loss, e usalo per calcolare il CVaR allo stesso livello di confidenza.
  • Aggiungi linee verticali che mostrino il VaR (in rosso) e il CVaR (in verde) a un istogramma della distribuzione Normale.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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()
Modifica ed esegui il codice