Alternatieve portefeuille-optimalisatie

Introductie tot portefeuille-analyse in Python

Charlotte Werger

Data Scientist

Verwachting van risico en rendement op basis van historische data

$$

  • Gemiddelde historische rendementen of de historische portefeuillevariantie zijn geen perfecte schattingen van mu en Sigma
  • Gewichten uit portefeuille-optimalisatie werken niet per se goed op toekomstige data

$$ Als de geschiedenis zich herhaalt grap

Introductie tot portefeuille-analyse in Python

Historische data

Tijdreeksdata die in de tijd verandert

Introductie tot portefeuille-analyse in Python

Exponentieel gewogen rendementen

$$

  • We hebben betere maten voor risico en rendement nodig
  • Exponentieel gewogen risico en rendement geven meer gewicht aan recente data
  • Exponentieel voortschrijdend gemiddelde in de grafiek: meeste gewicht op observatie t-1

Gewichten bij berekening van exponentieel gewogen rendement

Introductie tot portefeuille-analyse in Python

Exponentieel gewogen covariantie

$$

  • De exponentiële covariantiematrix: geeft meer gewicht aan recente data
  • In de grafiek: exponentieel gewogen volatiliteit in zwart volgt de echte volatiliteit beter dan standaardvolatiliteit in blauw

$$ Exponentieel gewogen covariantie en normale covariantie vergeleken met de werkelijke covariantie

1 Bron: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Introductie tot portefeuille-analyse in Python

Exponentieel gewogen rendementen

from pypfopt import expected_returns
# Exponentieel gewogen voortschrijdend gemiddelde
mu_ema = expected_returns.ema_historical_return(df, 
                         span=252, frequency=252)
print(mu_ema)
symbol
XOM     0.103030
BBY     0.394629
PFE     0.186058
Introductie tot portefeuille-analyse in Python

Exponentieel gewogen covariantie

from pypfopt import risk_models
# Exponentieel gewogen covariantie
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Introductie tot portefeuille-analyse in Python

Neerwaarts risico gebruiken in de optimalisatie

$ $

  • Onthoud de Sortino-ratio: gebruikt alleen de variantie van negatieve rendementen
  • Met PyPortfolioOpt kun je semicovariantie gebruiken in de optimalisatie; dit meet neerwaarts risico:

$ $ Berekening van neerwaarts risico

Introductie tot portefeuille-analyse in Python

Semicovariantie in PyPortfolioOpt

Sigma_semi = risk_models.semicovariance(df,     
                        benchmark=0, frequency=252)

print(Sigma_semi)
         XOM         BBY          MA         PFE
XOM     0.018939    0.008505    0.006568    0.004058
BBY     0.008505    0.016797    0.009133    0.004404
MA      0.006568    0.009133    0.018711    0.005373
PFE     0.004058    0.004404    0.005373    0.008349
Introductie tot portefeuille-analyse in Python

Laten we oefenen!

Introductie tot portefeuille-analyse in Python

Preparing Video For Download...