ComenzarEmpieza gratis

Refinar restricciones y objetivos

Aquí planteamos la hipótesis de que refinar las restricciones y/o los objetivos mejorará el rendimiento. Añadamos un objetivo de presupuesto de riesgo para fijar un porcentaje mínimo y máximo de contribución al riesgo para cada activo. Partiremos de la especificación del porfolio que creamos. Este es un problema de optimización más complejo y requerirá un solucionador global, por lo que usaremos porfolios aleatorios como método de optimización.

Este ejercicio forma parte del curso

Análisis de carteras intermedio en R

Ver curso

Instrucciones del ejercicio

  • Añade un objetivo de presupuesto de riesgo risk_budget a port_spec donde el riesgo se defina como desviación estándar. Establece el porcentaje mínimo de riesgo en 5% y el máximo en 10%.
  • Ejecuta la optimización con reajuste trimestral. Define el periodo de entrenamiento y la ventana rodante para usar 5 años de datos. Asigna los resultados a una variable llamada opt_rebal_rb.
  • Grafica los pesos.
  • Grafica la contribución porcentual de los componentes al riesgo.
  • Calcula los rendimientos del porfolio usando Return.portfolio(). Asigna los rendimientos a una variable llamada returns_rb.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.


# Add a risk budge objective
port_spec <- add.objective(portfolio = ___, 
                           type = ___, 
                           name = ___, 
                           min_prisk = ___, 
                           max_prisk = ___)

# Run the optimization
opt_rebal_rb <- optimize.portfolio.rebalancing(R = ___, 
                                               portfolio = ___, 
                                               optimize_method = "random", rp = rp,
                                               trace = TRUE,
                                               rebalance_on = ___, 
                                               training_period = ___,
                                               rolling_window = ___)

# Chart the weights


# Chart the percentage contribution to risk
chart.RiskBudget(___, match.col = "StdDev", risk.type = ___)

# Compute the portfolio returns
returns_rb <- Return.portfolio(R = ___, weights = ___)
colnames(returns_rb) <- "risk_budget"
Editar y ejecutar código