Zacznij terazZacznij za darmo

Doprecyzowanie ograniczeń i celów

Zakładamy, że doprecyzowanie ograniczeń i/lub celów poprawi wyniki. Dodamy cel w postaci budżetu ryzyka, który określi minimalny i maksymalny procentowy udział każdego aktywa w ryzyku portfela. Rozbudujemy wcześniej utworzoną specyfikację portfela. To bardziej złożony problem optymalizacyjny, który wymaga globalnego solvera – jako metodę optymalizacji zastosujemy losowe portfele.

To ćwiczenie jest częścią kursu

Analiza portfela – poziom średniozaawansowany w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Dodaj cel budżetu ryzyka risk_budget do port_spec, przyjmując odchylenie standardowe jako miarę ryzyka. Ustaw minimalny procentowy udział w ryzyku na 5%, a maksymalny na 10%.
  • Uruchom optymalizację z kwartalnym rebalansowaniem. Ustaw okres treningowy i okno kroczące na 5 lat danych. Przypisz wyniki do zmiennej o nazwie opt_rebal_rb.
  • Wykreśl wagi.
  • Wykreśl procentowy udział każdego składnika w ryzyku portfela.
  • Oblicz stopy zwrotu portfela za pomocą funkcji Return.portfolio(). Przypisz wyniki do zmiennej o nazwie returns_rb.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.


# Add a risk budge objective
port_spec <- add.objective(portfolio = ___, 
                           type = ___, 
                           name = ___, 
                           min_prisk = ___, 
                           max_prisk = ___)

# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___, 
                                               portfolio = ___, 
                                               optimize_method = "random", rp = rp,
                                               trace = TRUE,
                                               rebalance_on = ___, 
                                               training_period = ___,
                                               rolling_window = ___)

# Chart the weights


# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)

# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"
Edytuj i uruchom kod