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
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 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")