Driver 2: la scelta dei pesi di portafoglio
Gli investitori possono ottimizzare la scelta dei pesi per ottenere il rendimento corretto per il rischio più elevato, misurato dallo Sharpe ratio del portafoglio.
Nel caso particolare in cui l’intero valore del portafoglio sia investito in soli due asset, c’è un solo peso da determinare, perché il peso sul secondo asset è pari a uno meno il peso del primo asset.
Facciamolo per un portafoglio investito in azioni USA e obbligazioni USA. Useremo un approccio di forza bruta provando un gran numero di pesi possibili e tenendo quello che produce il valore più alto dello Sharpe ratio del portafoglio (assumendo un tasso risk-free pari a zero).
Questo esercizio fa parte del corso
Introduzione all'analisi di portafoglio in R
Istruzioni dell'esercizio
- Crea un vettore chiamato
gridusandoseq()che parte da 0, arriva a 1, con incrementi di 0,01. - Inizializza il vettore vuoto
vsharpecon la stessa lunghezza digrid. Un modo diffuso per farlo è creare un vettore che contenga NA usando la funzione rep(). Sostituirai questi NA nel ciclo che creerai tra poco. - Nel ciclo for, calcolerai lo Sharpe ratio per ciascuno dei possibili pesi in
grid. Il primo comando nel for seleziona l’i-esimo elemento di grid e lo memorizza nell’oggettoweight, che cambia a ogni iterazione. - Vuoi vedere come cambia il rendimento del portafoglio al variare del peso. Crea un oggetto
preturnsuguale alla somma diweightperreturns_equitiese(1-weight)perreturns_bonds. - Successivamente, sostituirai gli NA in
vsharpecon lo Sharpe ratio annualizzato (SharpeRatio.annualized()) dipreturns. - Completa la funzione di plot in cui i pesi possibili (
grid) sono sull’asse x e gli Sharpe ratio sull’asse y.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Create a grid
grid <- seq(from = ___, to = ___, by = ___)
# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )
# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
weight <- ___[i]
preturns <- ___ * ___ + (1 - ___) * ___
vsharpe[i] <- SharpeRatio.annualized(___)
}
# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)