ПочатиПочніть безкоштовно

Визначте користувацьку функцію моментів

У багатьох задачах оптимізації з обмеженнями менеджер портфеля або аналітик може захотіти оцінювати моменти за певною методикою та/або додатково розширити ідею set.portfolio.moments(). Користувацька функція моментів може мати довільно названі аргументи. Однак аргументи з іменами R для дохідностей активів і portfolio для об'єкта портфеля буде автоматично розпізнано та оброблено ефективно. Тому наполегливо радимо використовувати R для об'єкта дохідностей і portfolio для об'єкта портфеля.

Користувацька функція моментів має повертати іменований список, у якому елементи відповідають моментам:

  • $mu: перший момент (вектор очікуваних дохідностей)
  • $sigma: другий момент (матриця дисперсій-коваріацій)
  • $m3: третій момент (матриця коскосості)
  • $m4: четвертий момент (матриця коекцесу)

У цій вправі ви напишете користувацьку функцію моментів, щоб оцінити матрицю дисперсій-коваріацій за допомогою робастного методу. Ми використаємо функцію cov.rob() з пакета MASS. Сигнатура функції має містити аргументи з іменами R для дохідностей активів і portfolio для об'єкта специфікації. Функція повинна повертати іменований список. Оскільки ви оцінюєте лише другий момент, потрібно повернути список лише з одним елементом із коректною назвою. Ви можете застосувати ці правила, щоб писати користувацькі функції моментів для інших моделей, як-от факторні моделі, моделі GARCH або будь-які інші класи моделей, які теоретично дають кращу оцінку, ніж вибіркова.

Ця вправа є частиною курсу

Середній рівень аналізу портфеля в R

Переглянути курс

Інструкції до вправи

  • Визначте функцію moments_robust, яка оцінює матрицю дисперсій-коваріацій дохідностей активів методом "mcd".
  • Оцініть моменти портфеля, щойно визначені вами. Присвойте результат змінній moments. Це перевірка, що ваша користувацька функція моментів працює як очікується.
  • Обчисліть матрицю дисперсій-коваріацій безпосередньо за допомогою cov.rob() і перевірте, чи вона дорівнює moments$sigma

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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$___
Редагувати та запускати код