IniziaInizia gratis

Massimizza la funzione di utilità quadratica

Nel video sulle sfide dell'ottimizzazione di portafoglio, hai visto come risolvere un problema di ottimizzazione con utilità quadratica usando il pacchetto quadprog. In questo esercizio vedrai come risolvere un problema di utilità quadratica usando il pacchetto PortfolioAnalytics. Ricorda che la formulazione dell'utilità quadratica ha due termini: uno per il rendimento medio del portafoglio e uno per la varianza del portafoglio, con un parametro di avversione al rischio, lambda.

Questo esercizio fa parte del corso

Analisi di portafoglio intermedia in R

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un oggetto di specifica del portafoglio usando i nomi degli asset dal dataset index_returns e chiama l'oggetto di specifica del portafoglio port_spec.
  • Aggiungi un vincolo di pieno investimento in modo che i pesi sommino a 1 all'oggetto port_spec.
  • Aggiungi un vincolo long only in modo che il peso di un asset sia compreso tra 0 e 1 all'oggetto port_spec.
  • Aggiungi un obiettivo per massimizzare il rendimento medio del portafoglio all'oggetto port_spec.
  • Aggiungi un obiettivo per minimizzare la varianza del portafoglio all'oggetto port_spec. L'avversione al rischio deve essere impostata a 10.
  • Esegui l'ottimizzazione. Questo problema può essere risolto da un solver di programmazione quadratica, quindi specifichiamo optimize_method = "ROI"

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)

# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)

# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)

# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")
Modifica ed esegui il codice