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

Уточнение ограничений и целевых функций

Предположим, что уточнение ограничений и/или целевых функций позволит улучшить результаты. Давайте добавим целевую функцию бюджета риска, чтобы задать минимальный и максимальный процентный вклад каждого актива в общий риск. Мы будем опираться на уже созданную спецификацию портфеля. Это более сложная задача оптимизации, которая требует глобального метода решения — в качестве метода оптимизации мы будем использовать случайные портфели.

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

Промежуточный анализ портфеля в 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"
Редактировать и запускать код