Оптимизация с периодической ребалансировкой
Запуск оптимизации с периодической ребалансировкой и анализ результатов бэктеста на внебазовых данных — важный шаг для более глубокого понимания ограничений и целевых функций, а при необходимости и их уточнения. Функция optimize.portfolio.rebalancing() поддерживает оптимизацию с периодической ребалансировкой (бэктестирование) для оценки производительности на внебазовых данных. В дополнение к аргументам функции optimize.portfolio() необходимо указать: частоту ребалансировки с помощью параметра rebalance_on, количество периодов для обучающих данных первичной оптимизации через training_period, а также ширину скользящего окна оптимизации с помощью rolling_window. Если rolling_window задан как NULL, каждая оптимизация будет использовать все данные, доступные на момент её выполнения.
Чтобы сократить время вычислений в этом упражнении, набор случайных портфелей rp генерируется с использованием 50 перестановок, а параметр search_size, определяющий количество тестируемых портфелей, установлен равным 1000. При самостоятельной оптимизации портфелей вы, скорее всего, захотите протестировать больше вариантов (значение по умолчанию для search_size равно 20 000)!
Это упражнение является частью курса
Промежуточный анализ портфеля в R
Инструкции к упражнению
- Запустите оптимизацию с ежеквартальной ребалансировкой. Установите период обучения и скользящее окно равными 60 периодам. Поскольку набор данных содержит ежемесячные значения, мы используем 5 лет исторических данных. Сохраните результат оптимизации в переменную
opt_rebal. - Выведите результаты оптимизации на экран.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Run the optimization backtest with quarterly rebalancing
opt_rebal <- optimize.portfolio.rebalancing(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE, search_size = 1000, rebalance_on = ___, training_period = ___, rolling_window = ___)
# Print the output of the optimization backtest