Imponer restricciones de pesos
A menudo los inversores están sujetos a límites máximos permitidos para los pesos de la cartera. Estas restricciones pueden ser una ventaja. La ventaja de imponer un peso máximo es que la cartera resultante estará menos concentrada en ciertos activos. Sin embargo, también tiene una desventaja: puede que el mismo rendimiento objetivo ya no sea posible o que se logre a costa de una mayor volatilidad.
Recuerda del ejercicio anterior que la función portfolio.optim() te permite fijar restricciones de pesos mediante el argumento reshigh. reshigh requiere un vector con los pesos máximos para cada activo.
En este ejercicio, crearás tres carteras con distintos límites máximos de peso. Para este ejercicio, es importante conocer la salida de la función portfolio.optim(). Esta función crea una lista con cuatro componentes: (i) $pw: los pesos de la cartera, (ii) $px: los rendimientos de la cartera en su conjunto, (iii) $pm: el rendimiento esperado de la cartera, (iv) $ps: la desviación estándar de los rendimientos de la cartera.
Este ejercicio forma parte del curso
Introducción al análisis de carteras en R
Instrucciones del ejercicio
- Crea tres vectores de pesos máximos para cada activo (columna) en
returnsusando la funciónrep(). El primer vector contendrá pesos máximos del 100 %, el segundo del 10 % y el tercero del 5 %. Llámalosmax_weights1,max_weights2,max_weights3, respectivamente. - Crea una cartera óptima con pesos máximos del 100 % llamada
opt1. - Crea una cartera óptima con pesos máximos del 10 % llamada
opt2. - Crea una cartera óptima con pesos máximos del 5 % llamada
opt3. - Calcula cuántos activos tienen un peso mayor que el 1 % en cada cartera. Accede a los pesos usando
$pwdespués del nombre de la cartera. - Imprime las volatilidades (desviaciones estándar
$ps) de las tres carteras que creaste.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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
___$__
___$__