LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Erstelle ein Portfolio-Spezifikationsobjekt mit den Asset-Namen aus dem Datensatz index_returns und nenne das Objekt zur Portfolio-Spezifikation port_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")
Code bearbeiten und ausführen