Добавление ограничений
Ограничения добавляются к объекту спецификации портфеля с помощью функции add.constraint(). Каждое добавленное ограничение представляет собой отдельный объект и хранится в слоте constraints объекта портфеля. Такой подход делает ограничения модульными: их легко добавлять, удалять или изменять. Обязательные аргументы функции add.constraint() — это portfolio (портфель, к которому добавляется ограничение), type (тип ограничения) и именованные аргументы, передаваемые через ... в конструктор соответствующего типа.
Основные типы ограничений:
- Ограничение на сумму весов
weight_sum,weight,leveragefull_investment— частный случай, при которомmin_sum = max_sum = 1dollar_neutral— частный случай, при которомmin_sum = max_sum = 0
- Ограничения на веса отдельных активов
boxlong_only— частный случай, при которомmin = 0иmax = 1
- Ограничение на сумму весов активов по группам (сектор, регион, класс активов и т. д.)
group
- Ограничение на целевую среднюю доходность
return
В этом упражнении вы добавите несколько наиболее распространённых типов ограничений. Помимо перечисленных выше, PortfolioAnalytics также поддерживает ограничения на количество позиций, оборачиваемость, диверсификацию, факторные экспозиции и экспозицию по кредитному плечу. Если вас интересуют другие типы ограничений, обратитесь к файлам справки соответствующих конструкторов: в них содержится описание каждого типа и примеры кода.
Это упражнение является частью курса
Промежуточный анализ портфеля в R
Инструкции к упражнению
- Добавьте ограничение
weight_sumтак, чтобы минимальная и максимальная сумма весов равнялась 1. - Добавьте ограничение
boxтак, чтобы для первых пяти активов минимальный вес составлял 10%, для остальных активов — 5%, а максимальный вес для всех активов — 40%. - Добавьте ограничение
groupтак, чтобы активы 1, 5, 7, 9, 10 и 11 образовывали первую группу, а активы 2, 3, 4, 6, 8 и 12 — вторую. Для каждой группы установите минимальный вес 40% и максимальный вес 60%.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Add the weight sum constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min_sum = ___, max_sum = ___)
# Add the box constraint
port_spec <- add.constraint(portfolio = ___, type = ___, min = c(___), max = ___)
# Add the group constraint
port_spec <- add.constraint(portfolio = ___, type = ___, groups = list(c(___), c(___)), group_min = ___, group_max = ___)
# Print the portfolio specification object