Einperioden-Optimierung
Es gibt zwei Funktionen, um die Optimierung auszuführen: optimize.portfolio() und optimize.portfolio.rebalancing(). Diese Übung konzentriert sich auf die Einperioden-Optimierung; in der nächsten Übung verwenden wir optimize.portfolio.rebalancing() für Optimierung mit periodischem Rebalancing. optimize.portfolio() unterstützt Einperioden-Optimierung. Wichtige Argumente sind R für die Asset-Renditen, portfolio für das Portfolio-Spezifikationsobjekt und optimize_method, um die verwendete Optimierungsmethode festzulegen. In vielen Fällen ist es hilfreich, trace = TRUE anzugeben, um zusätzliche Informationen für jede Iteration/jeden Versuch der Optimierung zu speichern.
Die folgenden Optimierungsmethoden werden unterstützt:
DEoptim: Differenzielle Evolutionrandom: ZufallsportfoliosGenSA: Generalized Simulated Annealingpso: Particle Swarm OptimizationROI: R Optimization Infrastructure für lineare und quadratische Programmier-Solver
Die Wahl der Optimierungsmethode sollte auf dem Typ des Problems basieren, das du lösen möchtest. Ein Problem, das als quadratisches Programm formuliert werden kann, sollte beispielsweise mit einem Quadratic-Programming-Solver gelöst werden, während ein nicht-konvexes Problem mit einem globalen Solver wie DEoptim gelöst werden sollte.
In dieser Übung definieren wir das Portfolio-Optimierungsproblem so, dass die durchschnittliche Rendite maximiert und die Portfoliostandardabweichung minimiert wird, mit einem Standardabweichungs-Risikobudget, bei dem der minimale prozentuale Risikobeitrag 5 % und der maximale 10 % beträgt, unter der Nebenbedingung der Vollinvestition und Long-only. Das Risikobudget-Ziel erfordert einen globalen Solver, daher lösen wir das Problem mit Zufallsportfolios. Die Menge der Zufallsportfolios, rp, wird für diese Übung mit 500 Permutationen erzeugt.
Diese Übung ist Teil des Kurses
Fortgeschrittene Portfolioanalyse in R
Anleitung zur Übung
Die Portfolio-Spezifikation wurde bereits erstellt und heißt port_spec. Ebenfalls in deinem Workspace sind die Renditen asset_returns.
- Führe eine Einperioden-Optimierung mit
traceaufTRUEund der Optimierungsmethode"random"aus. Weisen die Optimierungsausgabe einer Variablen namensoptzu. - Gib die Ausgabe der Optimierung aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)
# Print the output of the single-period optimization