Quadratische Nutzenfunktion maximieren
Im Video zu den Herausforderungen der Portfolio-Optimierung hast du gesehen, wie sich ein quadratisches Nutzenoptimierungsproblem mit dem Paket quadprog lösen lässt. In dieser Übung siehst du, wie du ein quadratisches Nutzenproblem mit dem Paket PortfolioAnalytics löst. Zur Erinnerung: Die quadratische Nutzenformulierung hat zwei Terme – einen für die durchschnittliche Portfoliorendite und einen für die Portfoliovarianz – mit einem Risikoavversionsparameter, Lambda.
Diese Übung ist Teil des Kurses
Fortgeschrittene Portfolioanalyse in R
Anleitung zur Übung
- Erstelle ein Portfolio-Spezifikationsobjekt mit den Asset-Namen aus dem Datensatz
index_returnsund nenne das Objekt zur Portfolio-Spezifikationport_spec. - Füge eine Full-Investment-Restriktion hinzu, sodass sich die Gewichte zu 1 summieren, zum Objekt
port_spec. - Füge eine Long-only-Restriktion hinzu, sodass das Gewicht eines Assets zwischen 0 und 1 liegt, zum Objekt
port_spec. - Füge ein Objective hinzu, um die durchschnittliche Portfoliorendite zu maximieren, zum Objekt
port_spec. - Füge ein Objective hinzu, um die Portfoliovarianz zu minimieren. Die Risikoaversion soll auf 10 gesetzt werden.
- Führe die Optimierung aus. Dieses Problem kann mit einem Quadratic-Programming-Solver gelöst werden, daher setzen wir
optimize_method = "ROI"
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)
# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")