Moderne portefeuilletheorie

Kwantitatief risicobeheer in Python

Jamsheed Shorish

Computational Economist

De risico-rendementsafweging

  • Risicofactoren: bronnen van onzekerheid die het rendement beïnvloeden
  • Intuïtief: meer onzekerheid (meer risico) wordt gecompenseerd door hoger rendement
  • Geen garantie op rendement: gebruik een maat voor verwacht rendement
    • gemiddeld historisch rendement: proxy voor verwacht toekomstig rendement
Kwantitatief risicobeheer in Python

Risicobereidheid van beleggers

  • Beleggersonderzoek: minimum rendement vereist bij een bepaald risiconiveau?
  • Antwoord levert (risico, rendement)-punt op
  • Varieer risiconiveau => set van (risico, rendement)-punten
  • Belegger’s risicobereidheid: één gekwantificeerde relatie tussen risico en rendement
Kwantitatief risicobeheer in Python

Portefeuillegewichten kiezen

  • Varieer portefeuillegewichten van een gegeven portefeuille => levert een set (risico, rendement)-paren op
  • Gewichten wijzigen = begin van risicobeheer!
  • Doel: gewichten aanpassen om verwacht rendement te maximaliseren, gegeven risico
    • Equivalent: risico minimaliseren, gegeven verwacht rendement
  • Gewichten wijzigen = de risico-exposure van de belegger aanpassen
Kwantitatief risicobeheer in Python

Moderne portefeuilletheorie

  • Efficiënte portefeuille: gewichten met hoogste verwacht rendement bij gegeven risico
  • Moderne Portefeuilletheorie (MPT), 1952
    • H. M. Markowitz (Nobelprijs 1990)
  • Efficiënt gewichtsvector $w^\star$ lost op:

Optimalisatieprobleem om de efficiënte portefeuille te vinden

Kwantitatief risicobeheer in Python

De efficiënte grens

  • Bereken veel efficiënte portefeuilles voor verschillende risiconiveaus
  • Efficiënte grens: verzameling (risico, rendement)-paren van efficiënte portefeuilles
  • PyPortfolioOpt-bibliotheek: tools voor MPT
    • EfficientFrontier-klasse: genereert één optimale portefeuille per keer
    • Constrained Line Algorithm (CLA)-klasse: genereert de hele efficiënte grens
      • Vereist covariantiematrix van rendementen
      • Vereist proxy voor verwacht toekomstig rendement: gemiddeld historisch rendement
Kwantitatief risicobeheer in Python

Investeringsbankportefeuille 2005 - 2010

  • Verwachte rendementen: historische data
  • Covariantiematrix: Covariance Shrinkage verbetert de schatting
  • Constrained Line Algorithm object CLA
  • Minimum-variantieportefeuille: cla.min_volatility()
  • Efficiënte grens: cla.efficient_frontier()

 

expected_returns = mean_historical_return(prices)

efficient_cov = CovarianceShrinkage(prices).ledoit_wolf()
cla = CLA(expected_returns, efficient_cov)
minimum_variance = cla.min_volatility()
(ret, vol, weights) = cla.efficient_frontier()
Kwantitatief risicobeheer in Python

De efficiënte grens visualiseren

  • Spreidingsdiagram van (vol, ret)-paren

De efficiënte grens, geplot als (risico, rendement)-paren

Kwantitatief risicobeheer in Python

De efficiënte grens visualiseren

  • Spreidingsdiagram van (vol, ret)-paren
  • Minimum-variantieportefeuille: laagste volatiliteit van alle efficiënte portefeuilles

De minimum-variantieportefeuille gemarkeerd op de efficiënte grens

Kwantitatief risicobeheer in Python

De efficiënte grens visualiseren

  • Spreidingsdiagram van (vol, ret)-paren
  • Minimum-variantieportefeuille: laagste volatiliteit van alle efficiënte portefeuilles
  • Toenemende risicobereidheid: beweeg langs de grens

Beweging langs de efficiënte grens als pijl richting hoger risico en hoger rendement

Kwantitatief risicobeheer in Python

Laten we oefenen!

Kwantitatief risicobeheer in Python

Preparing Video For Download...