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
Istruzioni dell'esercizio
- Crea tre vettori di pesi massimi per ciascun asset (colonna) in
returnsusando la funzionerep(). Il primo vettore conterrà pesi massimi del 100%, il secondo del 10% e il terzo del 5%. Chiamali rispettivamentemax_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
$pwdopo 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
___$__
___$__