IniziaInizia gratis

Risolvi un semplice problema di ottimizzazione di portafoglio

Questo primo esercizio ti insegnerà a risolvere un semplice problema di ottimizzazione di portafoglio usando PortfolioAnalytics. Imparerai a creare un oggetto di specifica del portafoglio, ad aggiungere vincoli e obiettivi e a risolvere il problema di ottimizzazione. Il problema consiste nel costruire un portafoglio a varianza minima con vincoli di pieno investimento e solo posizioni long. L’obiettivo è minimizzare la varianza del portafoglio. In questo problema ci sono due vincoli: il vincolo di pieno investimento richiede che i pesi sommino a 1, mentre il vincolo long only richiede che tutti i pesi siano maggiori o uguali a 0 (cioè non sono ammesse posizioni short).

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 a port_spec un vincolo di pieno investimento tale che i pesi sommino a 1.
  • Aggiungi a port_spec un vincolo long only tale che il peso di un asset sia compreso tra 0 e 1.
  • Aggiungi a port_spec un obiettivo per minimizzare la deviazione standard del portafoglio.
  • Risolvi il problema di ottimizzazione del portafoglio usando optimize_method = "ROI". Assegna i risultati dell’ottimizzazione a un oggetto chiamato opt.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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

# 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 minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = "___", name = "___")

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