ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Crea tres vectores de pesos máximos para cada activo (columna) en returns usando la función rep(). El primer vector contendrá pesos máximos del 100 %, el segundo del 10 % y el tercero del 5 %. Llámalos max_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 $pw despué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
___$__
___$__

Editar y ejecutar código