Оптимизация с пользовательской целевой функцией
Это упражнение продолжает предыдущее: мы запустим оптимизацию с пользовательской целевой функцией, которая вычисляет годовое стандартное отклонение портфеля. Поскольку целевой функцией может быть любая допустимая функция 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