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

Добавление ограничений

Ограничения добавляются к объекту спецификации портфеля с помощью функции add.constraint(). Каждое добавленное ограничение представляет собой отдельный объект и хранится в слоте constraints объекта портфеля. Такой подход делает ограничения модульными: их легко добавлять, удалять или изменять. Обязательные аргументы функции add.constraint() — это portfolio (портфель, к которому добавляется ограничение), type (тип ограничения) и именованные аргументы, передаваемые через ... в конструктор соответствующего типа.

Основные типы ограничений:

  • Ограничение на сумму весов
    • weight_sum, weight, leverage
    • full_investment — частный случай, при котором min_sum = max_sum = 1
    • dollar_neutral — частный случай, при котором min_sum = max_sum = 0
  • Ограничения на веса отдельных активов
    • box
    • long_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

Редактировать и запускать код