IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un vettore chiamato grid usando seq() che parte da 0, arriva a 1, con incrementi di 0,01.
  • Inizializza il vettore vuoto vsharpe con la stessa lunghezza di grid. 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’oggetto weight, che cambia a ogni iterazione.
  • Vuoi vedere come cambia il rendimento del portafoglio al variare del peso. Crea un oggetto preturns uguale alla somma di weight per returns_equities e (1-weight) per returns_bonds.
  • Successivamente, sostituirai gli NA in vsharpe con lo Sharpe ratio annualizzato (SharpeRatio.annualized()) di preturns.
  • 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)
Modifica ed esegui il codice