ComenzarEmpieza gratis

Maximizar la función de utilidad cuadrática

En el vídeo sobre los retos de la optimización de carteras, viste cómo resolver un problema de optimización de utilidad cuadrática con el paquete quadprog. En este ejercicio verás cómo resolver un problema de utilidad cuadrática usando el paquete PortfolioAnalytics. Recuerda que la formulación de utilidad cuadrática tiene dos términos: uno para la rentabilidad media de la cartera y otro para la varianza de la cartera, con un parámetro de aversión al riesgo, lambda.

Este ejercicio forma parte del curso

Análisis de carteras intermedio en R

Ver curso

Instrucciones del ejercicio

  • Crea un objeto de especificación de cartera usando los nombres de activos del conjunto de datos index_returns y llama a ese objeto port_spec.
  • Añade a port_spec una restricción de inversión total (full investment) para que la suma de los pesos sea 1.
  • Añade a port_spec una restricción long only para que el peso de un activo esté entre 0 y 1.
  • Añade a port_spec un objetivo para maximizar la rentabilidad media de la cartera.
  • Añade a port_spec un objetivo para minimizar la varianza de la cartera. La aversión al riesgo debe fijarse en 10.
  • Ejecuta la optimización. Este problema puede resolverse con un solver de programación cuadrática, por lo que especificamos optimize_method = "ROI"

Ejercicio interactivo práctico

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

# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)

# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)

# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)

# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)

# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")
Editar y ejecutar código