LoslegenKostenlos starten

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

<Kurs>Fortgeschrittene Portfolioanalyse in R</Kurs>
Kurs ansehen

Übungsanweisungen

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 praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.


# 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