Řízení rizik pomocí VaR & CVaR

Kvantitativní řízení rizik v Pythonu

Jamsheed Shorish

Computational Economist

Řízení rizik pomocí moderní teorie portfolia

  • Eficientní portfolio
    • Váhy portfolia maximalizují výnos při dané úrovni rizika
  • Eficientní hranice: množina bodů (riziko, výnos) generovaných různými eficientními portfolii
    • Každý bod = optimalizace vah portfolia
  • Tvorba eficientního portfolia/hranice: Moderní teorie portfolia

Graf eficientní hranice

Kvantitativní řízení rizik v Pythonu

Zahrnutí Value at Risk do MPT

  • Moderní teorie portfolia (MPT): optimalizace „mean-variance"
    • Nejvyšší očekávaný výnos
    • Úroveň rizika (volatilita) je zadána
    • Účelová funkce: očekávaný výnos
  • VaR/CVaR: měření rizika na základě rozdělení ztrát
  • Adaptace MPT: optimalizace podle rozdělení ztrát místo očekávaného výnosu
Kvantitativní řízení rizik v Pythonu

Nový cíl: minimalizace CVaR

  • Změna cíle optimalizace portfolia
    • Cíl mean-variance: maximalizace očekávaného průměrného výnosu
    • Cíl CVaR: minimalizace očekávané podmíněné ztráty při dané hladině spolehlivosti
  • Příklad: Rozdělení ztrát
    • VaR: maximální ztráta s 95% spolehlivostí
    • Optimalizace: váhy portfolia minimalizující CVaR
    • CVaR: očekávaná ztráta při ztrátě alespoň VaR (nejhorších 5 % případů)
  • Hledání nejnižší očekávané ztráty v nejhorších 100 % – 95 % = 5 % možných výsledků
Kvantitativní řízení rizik v Pythonu

Problém řízení rizik

  • Optimální váhy portfolia $w^\star$ jako řešení

Minimalizace CVaR

  • Připomenutí: $f(x)$ = funkce hustoty pravděpodobnosti ztráty portfolia

  • PyPortfolioOpt: minimalizace CVaR jako nový optimalizační cíl

Kvantitativní řízení rizik v Pythonu

Minimalizace CVaR pomocí PyPortfolioOpt

  • Vytvoření objektu EfficientCVaR s výnosy aktiv returns
  • Výpočet optimálních vah portfolia metodou .min_cvar()

 

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

optimal_weights = ec.min_cvar()
Kvantitativní řízení rizik v Pythonu

Mean-variance vs. řízení rizik CVaR

  • Portfolio s minimální volatilitou (mean-variance), aktiva investičních 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}
Kvantitativní řízení rizik v Pythonu

Mean-variance vs. řízení rizik CVaR

  • Portfolio minimalizující CVaR, aktiva investičních 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}
Kvantitativní řízení rizik v Pythonu

Pojďme si to procvičit!

Kvantitativní řízení rizik v Pythonu

Preparing Video For Download...