Уточнение ограничений и целевых функций
Предположим, что уточнение ограничений и/или целевых функций позволит улучшить результаты. Давайте добавим целевую функцию бюджета риска, чтобы задать минимальный и максимальный процентный вклад каждого актива в общий риск. Мы будем опираться на уже созданную спецификацию портфеля. Это более сложная задача оптимизации, которая требует глобального метода решения — в качестве метода оптимизации мы будем использовать случайные портфели.
Это упражнение является частью курса
Промежуточный анализ портфеля в R
Инструкции к упражнению
- Добавьте целевую функцию бюджета риска
risk_budgetвport_spec, где риск определяется как стандартное отклонение. Установите минимальный процентный вклад в риск равным 5%, а максимальный — 10%. - Запустите оптимизацию с ежеквартальной ребалансировкой. Установите обучающий период и скользящее окно равными 5 годам. Сохраните результаты в переменную
opt_rebal_rb. - Постройте график весов.
- Постройте график процентного вклада компонентов в риск.
- Вычислите доходность портфеля с помощью
Return.portfolio(). Сохраните доходность в переменнуюreturns_rb.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Add a risk budge objective
port_spec <- add.objective(portfolio = ___,
type = ___,
name = ___,
min_prisk = ___,
max_prisk = ___)
# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___,
portfolio = ___,
optimize_method = "random", rp = rp,
trace = TRUE,
rebalance_on = ___,
training_period = ___,
rolling_window = ___)
# Chart the weights
# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)
# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"