Додайте обмеження
Обмеження додаються до об'єкта специфікації портфеля за допомогою функції 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 також підтримує обмеження на кількість позицій (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