IniziaInizia gratis

Calcolare la frontiera efficiente usando una griglia di rendimenti target

Come hai visto, un modo per calcolare la frontiera efficiente è definire prima una griglia di rendimenti target e poi, per ciascun target, trovare il portafoglio che ha un rendimento atteso pari al target con la varianza più bassa possibile.

Ma qual è una griglia ragionevole di rendimenti target? Imposterai il rendimento target massimo al rendimento medio massimo dei titoli. Idealmente, imposteresti il rendimento target minimo al rendimento del portafoglio a varianza minima. Poiché non conosci ancora il rendimento di quel portafoglio a varianza minima, crea una griglia usando il minimo dei rendimenti medi di tutti i titoli.

In questo esercizio, userai un ciclo for per calcolare la tua griglia di rendimenti medi potenziali del portafoglio, deviazioni e pesi.

Questo esercizio fa parte del corso

Introduzione all'analisi di portafoglio in R

Visualizza il corso

Istruzioni dell'esercizio

  • Calcola le medie delle colonne di returns (usando colMeans()), e chiamale stockmu.
  • Crea una sequenza (seq()) di lunghezza 50, che inizi da un tasso privo di rischio dell'1% e termini al valore massimo di stockmu, chiamata grid.
  • Inizializza due vettori vuoti con la stessa lunghezza di grid usando rep(), dove memorizzerai le medie e le deviazioni standard del portafoglio. Chiamali vpm e vpsd.
  • Inizializza una matrice vuota di 50 righe e 30 colonne. Chiamala mweights. Puoi usare la funzione matrix() per farlo.
  • Crea un ciclo for che inizi dal primo valore di grid e termini all'ultimo. Il ciclo for dovrebbe creare un portafoglio chiamato opt usando returns e con un rendimento target pari a grid.
  • A ogni iterazione, il ciclo for dovrebbe riempire i vettori vpm ($pm), vpsd ($ps) con i rispettivi valori estratti da opt.
  • Memorizza i pesi del portafoglio riga per riga in mweights ($pw).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Calculate each stocks mean returns


# Create a grid of target values
grid <- seq(from = ___, to = ___, length.out = ___)

# Create empty vectors to store means and deviations
vpm <- vpsd <- 

# Create an empty matrix to store weights
mweights <- matrix(NA, 50, 30)

# Create your for loop
for(i in 1:length(grid)) {
  opt <- portfolio.optim(x = ___, pm = ___[i])
  vpm[i] <- ___$__
  vpsd[i] <- ___$__
  mweights[i, ] <- ___$__
}
Modifica ed esegui il codice