НачатьНачать бесплатно

Оптимизация с пользовательской целевой функцией

Это упражнение продолжает предыдущее: мы запустим оптимизацию с пользовательской целевой функцией, которая вычисляет годовое стандартное отклонение портфеля. Поскольку целевой функцией может быть любая допустимая функция R, мы добавляем риск-objective для функции pasd(). Функция set.portfolio.moments() не распознаёт имя pasd() автоматически, поэтому нам нужно создать пользовательскую функцию моментов для вычисления второго момента — sigma. Задачу мы будем решать методом случайных портфелей.

Это упражнение является частью курса

Промежуточный анализ портфеля в R

Посмотреть курс

Инструкции к упражнению

  • Добавьте пользовательскую целевую функцию, созданную в предыдущем упражнении, в объект спецификации портфеля.
  • Выведите объект спецификации портфеля, чтобы увидеть ограничения и целевую функцию.
  • Запустите оптимизацию. Имя пользовательской функции моментов — set_sigma.
  • Выведите результаты оптимизации.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.


# Add custom objective to portfolio specification
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)

# Print the portfolio specificaton object


# Run the optimization
opt <- optimize.portfolio(R = ___, portfolio = ___, momentFUN = ___, optimize_method = "random", rp = rp)

# Print the results of the optimization

Редактировать и запускать код