Moderne Portfoliotheorie

Einführung in die Portfolioanalyse mit Python

Charlotte Werger

Data Scientist

Optimale Portfolios erstellen

Symbol für Anlagestrategie

Einführung in die Portfolioanalyse mit Python

Was ist Portfolio-Optimierung?

Lern Harry Markowitz kennen

Harry Markowitz

Einführung in die Portfolioanalyse mit Python

Das Optimierungsproblem: optimale Gewichte finden

$$ Markowitz’ Optimierungsproblem

In Worten:

  • Minimiere die Portfolio-Varianz, mit Bedingungen:
  • Die erwartete Rendite erreicht mindestens eine Zielrendite
  • Die Gewichte summieren sich auf 100 %
  • Mindestens einige Gewichte sind positiv
Einführung in die Portfolioanalyse mit Python

Variierende Zielrenditen ergeben die Efficient Frontier

Grafik der Efficient Frontier

Einführung in die Portfolioanalyse mit Python

PyPortfolioOpt für Portfolio-Optimierung

from pypfopt.efficient_frontier import EfficientFrontier
from pypfopt import risk_models
from pypfopt import expected_returns
df=pd.read_csv('portfolio.csv')
df.head(2)
                XOM        RRC        BBY         MA        PFE       
date
2010-01-04  54.068794  51.300568  32.524055  22.062426  13.940202 
2010-01-05  54.279907  51.993038  33.349487  21.997149  13.741367
# Erwartete jährliche Renditen und Stichproben-Kovarianz berechnen
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
Einführung in die Portfolioanalyse mit Python

Efficient Frontier und Gewichte ermitteln

# Erwartete jährliche Renditen und Risiko berechnen
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
# Efficient Frontier erzeugen
ef = EfficientFrontier(mu, Sigma)
# Ein optimales Portfolio wählen
ef.max_sharpe()
Einführung in die Portfolioanalyse mit Python

Verschiedene Optimierungen

# Portfolio mit maximalem Sharpe-Verhältnis
ef.max_sharpe()
# Zielrendite für vorgegebenes Risiko
ef.efficient_risk(2.3)
# Minimales Risiko für vorgegebene Rendite
ef.efficient_return(1.5)
Einführung in die Portfolioanalyse mit Python

Portfolio-Risiko und -Performance berechnen

# Performance ermitteln
ef.portfolio_performance(verbose=True, risk_free_rate = 0.01)
Erwartete Jahresrendite: 21,3%
Jahresvolatilität: 19,5%
Sharpe-Ratio: 0,98
Einführung in die Portfolioanalyse mit Python

Lass uns ein Portfolio optimieren!

Einführung in die Portfolioanalyse mit Python

Preparing Video For Download...