1. Nauka
  2. /
  3. Kursy
  4. /
  5. Analiza portfela – poziom średniozaawansowany w R

Connected

ćwiczenie

Definiowanie własnej funkcji momentów

W wielu przypadkach zadań optymalizacji z ograniczeniami zarządzający portfelem lub analityk może chcieć estymować momenty za pomocą konkretnej techniki i/lub rozszerzyć możliwości funkcji set.portfolio.moments(). Własna, niestandardowa funkcja momentów może przyjmować dowolne nazwane argumenty. Argumenty o nazwie R (dla stóp zwrotu aktywów) oraz portfolio (dla obiektu portfela) są jednak wykrywane automatycznie i obsługiwane w efektywny sposób. Z tego powodu zdecydowanie zaleca się używanie nazwy R dla obiektu ze stopami zwrotu i nazwy portfolio dla obiektu portfela.

Niestandardowa funkcja momentów powinna zwracać nazwaną listę, której elementy reprezentują kolejne momenty:

  • $mu: pierwszy moment (wektor oczekiwanych stóp zwrotu)
  • $sigma: drugi moment (macierz wariancji-kowariancji)
  • $m3: trzeci moment (macierz koskośności)
  • $m4: czwarty moment (macierz kokurtozy)

W tym ćwiczeniu napiszesz własną funkcję momentów, która estymuje macierz wariancji-kowariancji metodą odporną. Użyjemy do tego funkcji cov.rob() z pakietu MASS. Sygnatura funkcji powinna zawierać argumenty R dla stóp zwrotu aktywów oraz portfolio dla obiektu specyfikacji. Funkcja powinna zwracać nazwaną listę. Ponieważ estymujemy tylko drugi moment, lista musi zawierać jeden odpowiednio nazwany element. Te same zasady możesz stosować do pisania własnych funkcji momentów dla innych modeli – takich jak modele czynnikowe, modele GARCH lub dowolne inne klasy modeli, które teoretycznie powinny dawać lepsze estymaty niż estymata z próby.

Instrukcje

100 XP
  • Zdefiniuj funkcję o nazwie moments_robust, która estymuje macierz wariancji-kowariancji stóp zwrotu aktywów, używając metody "mcd".
  • Estymuj momenty portfela za pomocą właśnie zdefiniowanej funkcji. Przypisz wynik do zmiennej o nazwie moments. Ten krok służy sprawdzeniu, czy twoja niestandardowa funkcja momentów działa poprawnie.
  • Oblicz macierz wariancji-kowariancji bezpośrednio za pomocą funkcji cov.rob() i sprawdź, czy jest równa moments$sigma.