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
Istruzioni dell'esercizio
- Crea un oggetto di specifica del portafoglio usando i nomi degli asset dal dataset
index_returnse chiama l’oggetto di specifica del portafoglioport_spec. - Aggiungi a
port_specun vincolo di pieno investimento tale che i pesi sommino a 1. - Aggiungi a
port_specun vincolo long only tale che il peso di un asset sia compreso tra 0 e 1. - Aggiungi a
port_specun 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 chiamatoopt.
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 = "___")