IniziaInizia gratis

Affina vincoli e obiettivi

Qui ipotizziamo che affinare vincoli e/o obiettivi migliori le performance. Aggiungiamo quindi un obiettivo di risk budget per impostare una percentuale minima e massima di contribuzione al rischio per ciascun asset. Partiremo dalla specifica di portafoglio che abbiamo creato. Questo è un problema di ottimizzazione più complesso e richiederà un solver globale, quindi useremo portafogli casuali come metodo di ottimizzazione.

Questo esercizio fa parte del corso

Analisi di portafoglio intermedia in R

Visualizza il corso

Istruzioni dell'esercizio

  • Aggiungi un obiettivo di risk budget risk_budget a port_spec in cui il rischio è definito come deviazione standard. Imposta la percentuale minima di rischio al 5% e la massima al 10%.
  • Esegui l'ottimizzazione con ribilanciamento trimestrale. Imposta periodo di training e finestra mobile per usare 5 anni di dati. Assegna i risultati a una variabile chiamata opt_rebal_rb.
  • Visualizza i pesi.
  • Visualizza la percentuale di contribuzione al rischio delle componenti.
  • Calcola i rendimenti del portafoglio usando Return.portfolio(). Assegna i rendimenti a una variabile chiamata returns_rb.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.


# 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"
Modifica ed esegui il codice