Aan de slagGa gratis aan de slag

Verfijn constraints en doelstellingen

We veronderstellen hier dat het verfijnen van constraints en/of doelstellingen de prestaties zal verbeteren. Voeg een risicobudget-doelstelling toe om een minimale en maximale procentuele bijdrage aan het risico voor elk activum vast te leggen. We bouwen voort op de eerder gemaakte portefeuillespecificatie. Dit is een complexer optimalisatieprobleem en vereist een globale oplosser, dus we gebruiken willekeurige portfolio’s als optimalisatiemethode.

Deze oefening maakt deel uit van de cursus

Gevorderde portefeuilleanalyse in R

Cursus bekijken

Oefeninstructies

  • Voeg een risicobudget-doelstelling risk_budget toe aan port_spec waarbij risico is gedefinieerd als standaarddeviatie. Stel het minimale procentuele risico in op 5% en het maximale op 10%.
  • Voer de optimalisatie uit met kwartaalherweging. Gebruik een trainingsperiode en rolling window met 5 jaar aan data. Sla de resultaten op in een variabele opt_rebal_rb.
  • Visualiseer de gewichten.
  • Visualiseer de procentuele componentbijdrage aan het risico.
  • Bereken de portefeuillerendementen met Return.portfolio(). Sla de rendementen op in een variabele returns_rb.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.


# 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"
Code bewerken en uitvoeren