Trovare il portafoglio mean-variance efficiente
Un portafoglio mean-variance efficiente si ottiene minimizzando la varianza del portafoglio con il vincolo che il rendimento atteso del portafoglio sia pari a un rendimento target. Una funzione R comoda per farlo è portfolio.optim() del pacchetto R tseries. L’implementazione predefinita trova i pesi del portafoglio mean-variance efficiente con il vincolo che il rendimento del portafoglio sia uguale al rendimento del portafoglio equiponderato. L’unico argomento necessario sono i rendimenti mensili dei componenti del portafoglio per i quali bisogna determinare i pesi.
La variabile returns con i rendimenti mensili dei titoli del DJIA è già caricata nella console.
Questo esercizio fa parte del corso
Introduzione all'analisi di portafoglio in R
Istruzioni dell'esercizio
- Carica la libreria
tseries. - Crea un portafoglio mean-variance efficiente di rendimenti mensili usando il default di
portfolio.optim()che ha come target il rendimento del portafoglio equiponderato, e assegna l’output alla variabileopt. - Crea un vettore di pesi dal portafoglio ottimizzato. I pesi del portafoglio si trovano in
opt$pw. Chiamalopf_weights. - Assegna i nomi agli asset usando il codice fornito.
- Seleziona da
pf_weightsi pesi ottimali maggiori o uguali all’1%, chiamaliopt_weights. - Usa barplot() per visualizzare la distribuzione di
opt_weights. - Stampa il rendimento atteso del portafoglio (
opt$pm) e la volatilità (opt$ps) del portafoglio ottimizzato.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Load tseries
# Create an optimized portfolio of returns
opt <- portfolio.optim(___)
# Create pf_weights
pf_weights <- ___$pw
# Assign asset names
names(pf_weights) <- colnames(returns)
# Select optimum weights opt_weights
opt_weights <- pf_weights[___ >= 0.01]
# Bar plot of opt_weights
# Print expected portfolio return and volatility
___$pm
___$ps