Alternative Portfolio-Optimierung

Einführung in die Portfolioanalyse mit Python

Charlotte Werger

Data Scientist

Erwartete Risiken und Renditen aus historischen Daten

$$

  • Durchschnittliche historische Renditen oder die historische Portfoliovarianz sind keine perfekten Schätzer für mu und Sigma
  • Gewichte aus der Portfolio-Optimierung funktionieren daher nicht garantiert auf zukünftigen Daten

$$ Wenn sich die Geschichte wiederholt – Witz

Einführung in die Portfolioanalyse mit Python

Historische Daten

Zeitreihen ändern sich im Zeitverlauf

Einführung in die Portfolioanalyse mit Python

Exponentiell gewichtete Renditen

$$

  • Bessere Kennzahlen für Risiko und Rendite nötig
  • Exponentiell gewichtete Risiko/Rendite betont jüngste Daten stärker
  • EMA in der Grafik: meiste Gewichtung auf t-1-Beobachtung

Gewichte bei exponentiell gewichteter Renditeberechnung

Einführung in die Portfolioanalyse mit Python

Exponentiell gewichtete Kovarianz

$$

  • Die exponentielle Kovarianzmatrix: gibt jüngeren Daten mehr Gewicht
  • In der Grafik: exponentiell gewichtete Volatilität (schwarz) folgt der realen Volatilität besser als die Standard-Volatilität (blau)

$$ Vergleich: exponentiell gewichtete vs. normale Kovarianz zur tatsächlichen Kovarianz

1 Quelle: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Einführung in die Portfolioanalyse mit Python

Exponentiell gewichtete Renditen

from pypfopt import expected_returns
# Exponentiell gewichteter gleitender Durchschnitt
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
Einführung in die Portfolioanalyse mit Python

Exponentiell gewichtete Kovarianz

from pypfopt import risk_models
# Exponentiell gewichtete Kovarianz
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Einführung in die Portfolioanalyse mit Python

Abwärtsrisiko in der Optimierung nutzen

$ $

  • Denk an das Sortino-Verhältnis: nutzt nur die Varianz negativer Renditen
  • PyPortfolioOpt erlaubt Semikovarianz in der Optimierung; sie misst das Abwärtsrisiko:

$ $ Berechnung des Abwärtsrisikos

Einführung in die Portfolioanalyse mit Python

Semikovarianz 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
Einführung in die Portfolioanalyse mit Python

Lass uns üben!

Einführung in die Portfolioanalyse mit Python

Preparing Video For Download...