Dodawanie ograniczeń
Ograniczenia dodaje się do obiektu specyfikacji portfela za pomocą funkcji add.constraint(). Każde dodane ograniczenie to osobny obiekt, przechowywany w slocie constraints obiektu portfela. Dzięki temu ograniczenia mają modularną budowę – można je łatwo dodawać, usuwać lub modyfikować. Wymagane argumenty funkcji add.constraint() to: portfolio, do którego dodawane jest ograniczenie, typ ograniczenia type oraz nazwane argumenty przekazywane przez ... do konstruktora danego typu ograniczenia.
Podstawowe typy ograniczeń:
- Ograniczenie na sumę wag
weight_sum,weight,leveragefull_investmentto szczególny przypadek, który ustawiamin_sum = max_sum = 1dollar_neutralto szczególny przypadek, który ustawiamin_sum = max_sum = 0
- Ograniczenia na wagi poszczególnych aktywów
boxlong_onlyto szczególny przypadek, który ustawiamin = 0imax = 1
- Ograniczenie na sumę wag aktywów według grupy (sektor, region, klasa aktywów itp.)
group
- Ograniczenie na docelową średnią stopę zwrotu
return
W tym ćwiczeniu dodasz kilka najczęściej stosowanych typów ograniczeń. Oprócz wymienionych powyżej, PortfolioAnalytics obsługuje również ograniczenia dotyczące limitów pozycji, rotacji portfela, dywersyfikacji, ekspozycji na czynniki ryzyka oraz ekspozycji dźwigni. Jeśli chcesz dowiedzieć się więcej o pozostałych typach ograniczeń, zajrzyj do plików pomocy dla konstruktorów ograniczeń – znajdziesz tam zarówno opis każdego typu, jak i przykładowy kod.
To ćwiczenie jest częścią kursu
Analiza portfela – poziom średniozaawansowany w R
Instrukcje do ćwiczenia
- Dodaj ograniczenie
weight_sumtak, aby minimalna i maksymalna suma wag wynosiła 1. - Dodaj ograniczenie
boxtak, aby pięć pierwszych aktywów miało minimalną wagę 10%, a pozostałe aktywa – minimalną wagę 5%. Maksymalna waga wszystkich aktywów wynosi 40%. - Dodaj ograniczenie
grouptak, aby aktywa 1, 5, 7, 9, 10 i 11 tworzyły pierwszą grupę, a aktywa 2, 3, 4, 6, 8 i 12 – drugą grupę. Ustaw minimalną wagę grupy na 40% i maksymalną na 60%.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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