Gestione del rischio con VaR e CVaR

Gestione quantitativa del rischio in Python

Jamsheed Shorish

Computational Economist

Gestione del rischio con la modern portfolio theory

  • Portafoglio efficiente
    • I pesi massimizzano il rendimento dato un livello di rischio
  • Frontiera efficiente: insieme di punti (rischio, rendimento) generati da diversi portafogli efficienti
    • Ogni punto = ottimizzazione dei pesi del portafoglio
  • Creazione di portafoglio/frontiera efficienti: Modern Portfolio Theory

Grafico della frontiera efficiente

Gestione quantitativa del rischio in Python

Integrare il Value at Risk nella MPT

  • Modern Portfolio Theory (MPT): ottimizzazione "media-varianza"
    • Massimo rendimento atteso
    • Livello di rischio (volatilità) dato
    • Funzione obiettivo: rendimento atteso
  • VaR/CVaR: misurano il rischio sulla distribuzione delle perdite
  • Adatta MPT per ottimizzare sulla distribuzione delle perdite invece che sul rendimento atteso
Gestione quantitativa del rischio in Python

Un nuovo obiettivo: minimizzare il CVaR

  • Cambia l'obiettivo dell'ottimizzazione del portafoglio
    • obiettivo media-varianza: massimizzare il rendimento medio atteso
    • obiettivo CVaR: minimizzare la perdita condizionale attesa a un dato livello di confidenza
  • Esempio: distribuzione delle perdite
    • VaR: perdita massima con confidenza 95%
    • Ottimizzazione: pesi del portafoglio che minimizzano il CVaR
    • CVaR: perdita attesa dato almeno la perdita VaR (peggiore 5% dei casi)
  • Trova la minore perdita attesa nel peggiore 100% - 95% = 5% degli esiti possibili
Gestione quantitativa del rischio in Python

Il problema di risk management

  • Seleziona i pesi ottimali $w^\star$ come soluzione di

cvar_minimization

  • Ricorda: $f(x)$ = funzione di densità di probabilità della perdita del portafoglio

  • PyPortfolioOpt: imposta la minimizzazione del CVaR come nuovo obiettivo

Gestione quantitativa del rischio in Python

Minimizzazione del CVaR con PyPortfolioOpt

  • Crea un oggetto EfficientCVaR con i rendimenti degli asset returns
  • Calcola i pesi ottimali del portafoglio usando il metodo .min_cvar()

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Gestione quantitativa del rischio in Python

Media-varianza vs. gestione del rischio CVaR

  • Portafoglio a minima volatilità media-varianza, asset di investment bank 2005-2010
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Gestione quantitativa del rischio in Python

Media-varianza vs. gestione del rischio CVaR

  • Portafoglio che minimizza il CVaR, asset di investment bank 2005-2010
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Gestione quantitativa del rischio in Python

Esercitiamoci!

Gestione quantitativa del rischio in Python

Preparing Video For Download...