Risicobeheer met VaR & CVaR

Kwantitatief risicobeheer in Python

Jamsheed Shorish

Computational Economist

Risicobeheer via moderne portefeuilletheorie

  • Efficiënte portefeuille
    • Gewichten maximaliseren rendement bij gegeven risiconiveau
  • Efficiënte grens: verzameling (risico, rendement)-punten van verschillende efficiënte portefeuilles
    • Elk punt = optimalisatie van gewichten
  • Ontstaan efficiënte portefeuille/grens: Moderne Portefeuilletheorie

Plot van de efficiënte grens

Kwantitatief risicobeheer in Python

Value at Risk opnemen in MPT

  • Moderne Portefeuilletheorie (MPT): "mean-variance"-optimalisatie
    • Hoogst verwacht rendement
    • Risiconiveau (volatiliteit) is gegeven
    • Doelfunctie: verwacht rendement
  • VaR/CVaR: meten risico over de verdeling van verlies
  • Pas MPT aan om te optimaliseren over verliesverdeling i.p.v. verwacht rendement
Kwantitatief risicobeheer in Python

Een nieuw doel: minimaliseer CVaR

  • Verander de doelstelling van portefeuille-optimalisatie
    • mean-variance-doel: maximaliseer verwacht gemiddeld rendement
    • CVaR-doel: minimaliseer verwachte voorwaardelijke verlies bij een gegeven betrouwbaarheidsniveau
  • Voorbeeld: Verliesverdeling
    • VaR: maximaal verlies met 95% betrouwbaarheid
    • Optimalisatie: portefeuillegewichten die CVaR minimaliseren
    • CVaR: verwacht verlies gegeven ten minste VaR-verlies (slechtste 5% van de gevallen)
  • Vind het laagste verwachte verlies in de slechtste 100% - 95% = 5% van de uitkomsten
Kwantitatief risicobeheer in Python

Het risicobeheerprobleem

  • Kies optimale gewichten $w^\star$ als oplossing van

cvar_minimization

  • Herinner: $f(x)$ = kansdichtheidsfunctie van portefeuille-verlies

  • PyPortfolioOpt: kies minimalisatie van CVaR als nieuwe doelstelling

Kwantitatief risicobeheer in Python

CVaR-minimalisatie met PyPortfolioOpt

  • Maak een EfficientCVaR-object met rendementen returns
  • Bereken optimale portefeuillegewichten met de methode .min_cvar()

 

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

optimal_weights = ec.min_cvar()
Kwantitatief risicobeheer in Python

Mean-variance vs. CVaR-risicobeheer

  • Mean-variance minimum-volatiliteitportefeuille, 2005-2010 investmentbanks
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}
Kwantitatief risicobeheer in Python

Mean-variance vs. CVaR-risicobeheer

  • CVaR-minimaliserende portefeuille, 2005-2010 investmentbanks
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}
Kwantitatief risicobeheer in Python

Laten we oefenen!

Kwantitatief risicobeheer in Python

Preparing Video For Download...