ПочатиПочніть безкоштовно

Додайте обмеження

Обмеження додаються до об'єкта специфікації портфеля за допомогою функції 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 також підтримує обмеження на кількість позицій (position limit), обіг портфеля (turnover), диверсифікацію, факторну експозицію та леверидж-експозицію. Якщо вас цікавлять інші типи обмежень, перегляньте файли довідки для конструкторів обмежень. У довідці наведено опис типу обмеження та приклади коду.

Ця вправа є частиною курсу

Середній рівень аналізу портфеля в R

Переглянути курс

Інструкції до вправи

  • Додайте обмеження weight_sum так, щоб мінімальна сума ваг дорівнювала 1 і максимальна сума ваг дорівнювала 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

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