LoslegenKostenlos loslegen

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 Evolution
  • random: Zufallsportfolios
  • GenSA: Generalized Simulated Annealing
  • pso: Particle Swarm Optimization
  • ROI: 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

Kurs anzeigen

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 trace auf TRUE und der Optimierungsmethode "random" aus. Weisen die Optimierungsausgabe einer Variablen namens opt zu.
  • 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
Code bearbeiten und ausführen