Kom igångKom igång gratis

Förfina restriktioner och målsättningar

Här antar vi att förfinade restriktioner och/eller målsättningar kan förbättra prestandan. Låt oss lägga till en riskbudgetmålsättning för att ange ett minimi- och maximiprocentuellt riskbidrag för varje tillgång. Vi bygger vidare på den portföljspecifikation vi skapade. Det här är ett mer komplext optimeringsproblem som kräver en global lösare, så vi använder slumpmässiga portföljer som optimeringsmetod.

Den här övningen är en del av kursen

Portföljanalys på avancerad nivå i R

Visa kurs

Övningsinstruktioner

  • Lägg till en riskbudgetmålsättning risk_budget till port_spec där risk definieras som standardavvikelse. Ange minsta procentuella risk till 5 % och högsta till 10 %.
  • Kör optimeringen med kvartalsvisa ombalanseringar. Ange träningsperioden och det rullande fönstret till 5 år av data. Tilldela resultaten till en variabel med namnet opt_rebal_rb.
  • Visualisera vikterna.
  • Visualisera komponenternas procentuella riskbidrag.
  • Beräkna portföljavkastningen med Return.portfolio(). Tilldela avkastningen till en variabel med namnet returns_rb.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.


# 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"
Redigera och kör kod