IniziaInizia gratis

Imporre vincoli sui pesi

Gli investitori sono spesso soggetti a valori massimi consentiti per i pesi di portafoglio. Questi vincoli possono essere un vantaggio: limitando il peso massimo, il portafoglio risulta meno concentrato su alcuni asset. C’è però anche uno svantaggio: lo stesso rendimento obiettivo potrebbe non essere più raggiungibile oppure richiedere una volatilità più alta.

Ricorda dall’esercizio precedente che la funzione portfolio.optim() ti permette di impostare vincoli sui pesi tramite l’argomento reshigh. reshigh richiede un vettore di pesi massimi per ciascun asset.

In questo esercizio creerai tre portafogli con diversi vincoli sul peso massimo. È importante conoscere l’output della funzione portfolio.optim(). Questa funzione restituisce una lista con quattro componenti: (i) $pw: i pesi del portafoglio, (ii) $px: i rendimenti del portafoglio complessivo, (iii) $pm: il rendimento atteso del portafoglio, (iv) $ps: la deviazione standard dei rendimenti del portafoglio.

Questo esercizio fa parte del corso

Introduzione all'analisi di portafoglio in R

Visualizza il corso

Istruzioni dell'esercizio

  • Crea tre vettori di pesi massimi per ciascun asset (colonna) in returns usando la funzione rep(). Il primo vettore conterrà pesi massimi del 100%, il secondo del 10% e il terzo del 5%. Chiamali rispettivamente max_weights1, max_weights2, max_weights3.
  • Crea un portafoglio ottimo con pesi massimi del 100% chiamato opt1.
  • Crea un portafoglio ottimo con pesi massimi del 10% chiamato opt2.
  • Crea un portafoglio ottimo con pesi massimi del 5% chiamato opt3.
  • Calcola quanti asset hanno un peso superiore all’1% per ciascun portafoglio. Accedi ai pesi usando $pw dopo il nome del portafoglio.
  • Stampa le volatilità (deviazioni standard $ps) dei tre portafogli che hai creato.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Create vectors of maximum weights
max_weights1 <- rep(1, ncol(returns))
max_weights2 <- ___
max_weights3 <- ___

# Create an optimum portfolio with max weights of 100%
opt1 <- portfolio.optim(___, reshigh = ___)

# Create an optimum portfolio with max weights of 10%


# Create an optimum portfolio with max weights of 5%


# Calculate how many assets have a weight that is greater than 1% for each portfolio
sum(opt1$pw > .01)
sum(___$pw > .01)
sum(___$pw > .01)

# Print portfolio volatilites 
opt1$ps
___$__
___$__

Modifica ed esegui il codice