Zarządzanie ryzykiem przy użyciu VaR i CVaR

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

Computational Economist

Zarządzanie ryzykiem a nowoczesna teoria portfela

  • Portfel efektywny
    • Wagi portfela maksymalizują zwrot przy danym poziomie ryzyka
  • Granica efektywności: zbiór punktów (ryzyko, zwrot) generowanych przez różne portfele efektywne
    • Każdy punkt = optymalizacja wag portfela
  • Budowa portfela/granicy efektywności: Nowoczesna Teoria Portfela

Wykres granicy efektywności

Ilościowe zarządzanie ryzykiem w Pythonie

Uwzględnienie Value at Risk w MPT

  • Nowoczesna Teoria Portfela (MPT): optymalizacja „średnia-wariancja"
    • Najwyższy oczekiwany zwrot
    • Dany poziom ryzyka (zmienność)
    • Funkcja celu: oczekiwany zwrot
  • VaR/CVaR: pomiar ryzyka na rozkładzie strat
  • Adaptacja MPT: optymalizacja względem rozkładu strat zamiast oczekiwanego zwrotu
Ilościowe zarządzanie ryzykiem w Pythonie

Nowy cel: minimalizacja CVaR

  • Zmiana celu optymalizacji portfela
    • Cel średnia-wariancja: maksymalizacja oczekiwanego zwrotu
    • Cel CVaR: minimalizacja oczekiwanej straty warunkowej przy danym poziomie ufności
  • Przykład: Rozkład strat
    • VaR: maksymalna strata z ufnością 95%
    • Optymalizacja: wagi portfela minimalizujące CVaR
    • CVaR: oczekiwana strata przy stracie co najmniej równej VaR (najgorsze 5% przypadków)
  • Minimalizacja oczekiwanej straty w najgorszych 100% – 95% = 5% wyników
Ilościowe zarządzanie ryzykiem w Pythonie

Problem zarządzania ryzykiem

  • Wyznaczenie optymalnych wag portfela $w^\star$ jako rozwiązania

minimalizacja_cvar

  • $f(x)$ = funkcja gęstości prawdopodobieństwa strat portfela

  • PyPortfolioOpt: minimalizacja CVaR jako nowy cel optymalizacji

Ilościowe zarządzanie ryzykiem w Pythonie

Minimalizacja CVaR przy użyciu PyPortfolioOpt

  • Utworzenie obiektu EfficientCVaR ze zwrotami returns
  • Obliczenie optymalnych wag portfela metodą .min_cvar()

 

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

optimal_weights = ec.min_cvar()
Ilościowe zarządzanie ryzykiem w Pythonie

Zarządzanie ryzykiem: średnia-wariancja a CVaR

  • Portfel minimalnej zmienności (średnia-wariancja), aktywa banków inwestycyjnych 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}
Ilościowe zarządzanie ryzykiem w Pythonie

Zarządzanie ryzykiem: średnia-wariancja a CVaR

  • Portfel minimalizujący CVaR, aktywa banków inwestycyjnych 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}
Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...