LoslegenKostenlos loslegen

Definiere eine benutzerdefinierte Momentfunktion

Bei vielen Optimierungsproblemen mit Nebenbedingungen möchte die Portfoliomanagerin oder der Analyst Momente mit einer bestimmten Technik schätzen und/oder die Idee von set.portfolio.moments() erweitern. Eine benutzerdefinierte Momentfunktion kann beliebige benannte Argumente haben. Argumente mit den Namen R für die Asset-Renditen und portfolio für das Portfolio-Objekt werden jedoch automatisch erkannt und effizient verarbeitet. Daher wird dringend empfohlen, R für das Objekt mit den Asset-Renditen und portfolio für das Portfolio-Objekt zu verwenden.

Die benutzerdefinierte Momentfunktion sollte eine benannte Liste zurückgeben, in der die Elemente die Momente darstellen:

  • $mu: erster Moment (Vektor der erwarteten Renditen)
  • $sigma: zweiter Moment (Varianz-Kovarianz-Matrix)
  • $m3: dritter Moment (Coskewness-Matrix)
  • $m4: vierter Moment (Cokurtosis-Matrix)

In dieser Übung schreibst du eine benutzerdefinierte Momentfunktion, um die Varianz-Kovarianz-Matrix mit einer robusten Methode zu schätzen. Wir verwenden die Funktion cov.rob() aus dem Paket MASS. Die Funktionssignatur soll die Argumente R für die Asset-Renditen und portfolio für das Spezifikationsobjekt enthalten. Die Funktion soll eine benannte Liste zurückgeben. Da du nur den zweiten Moment schätzt, musst du nur eine Liste mit einem entsprechend benannten Element zurückgeben. Diese Regeln kannst du auch anwenden, um benutzerdefinierte Momentfunktionen für andere Modelle wie Faktormodelle, GARCH-Modelle oder jede andere Modellklasse zu schreiben, die theoretisch eine bessere Schätzung liefert als die Stichprobenschätzung.

Diese Übung ist Teil des Kurses

Fortgeschrittene Portfolioanalyse in R

Kurs anzeigen

Anleitung zur Übung

  • Definiere eine Funktion namens moments_robust, die die Varianz-Kovarianz-Matrix der Asset-Renditen mit der Methode "mcd" schätzt.
  • Schätze die Portfoliomomente, die du gerade definiert hast. Weise sie einer Variablen namens moments zu. Das ist eine Prüfung, um sicherzustellen, dass deine benutzerdefinierte Momentfunktion wie erwartet funktioniert.
  • Berechne die Varianz-Kovarianz-Matrix direkt mit cov.rob() und prüfe, ob sie gleich moments$sigma ist.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Define custom moment function
moments_robust <- function(R, portfolio){
  out <- list()
  out$___ <- cov.rob(R, method = ___)$cov
  out
}

# Estimate the portfolio moments using the function you just defined 
moments <- moments_robust(R = ___, portfolio = ___)

# Check the moment estimate
cov.rob(___, method = ___)$cov == moments$___
Code bearbeiten und ausführen