Introduzione alla gestione del rischio di portafoglio in Python
Dakota Wixom
Quantitative Analyst | QuantCourse.com
Rischio di coda: rischio di esiti estremi d'investimento, soprattutto nel lato negativo della distribuzione.
Il Drawdown è la perdita percentuale dal massimo cumulato storico.
$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$

Supponendo che cum_rets sia un np.array di rendimenti cumulati nel tempo
running_max = np.maximum.accumulate(cum_rets)
running_max[running_max < 1] = 1
drawdown = (cum_rets) / running_max - 1
drawdown
Date Return
2007-01-03 -0.042636
2007-01-04 -0.081589
2007-01-05 -0.073062
Value at Risk (VaR) è una soglia tale che, a un dato livello di confidenza, le perdite non (storicamente) superano un certo livello.
Il VaR è spesso riportato con quantili 95, 99 e 99,9.
Esempio: VaR(95) = -2,3%

Con il 95% di confidenza, le perdite non superano -2,3% in un dato giorno sulla base dei valori storici.
var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
var_95
-0.023
Il Conditional Value at Risk (CVaR) stima la perdita media nei peggiori 1 - x% degli scenari.
Il CVaR è spesso riportato con quantili 95, 99 e 99,9.
Esempio: CVaR(95) = -2,5%

Nel peggior 5% dei casi, storicamente le perdite sono state in media superiori a -2,5%.
Supponi di avere un oggetto StockReturns, serie temporale dei rendimenti azionari.
Per calcolare il CVaR(95) storico:
var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
cvar_95 = StockReturns[StockReturns <= var_95].mean()
cvar_95
-0.025
Introduzione alla gestione del rischio di portafoglio in Python