ComenzarEmpieza gratis

Resuelve un problema sencillo de optimización de carteras

En este primer ejercicio aprenderás a resolver un problema sencillo de optimización de carteras usando PortfolioAnalytics. Verás cómo crear un objeto de especificación de cartera, añadir restricciones y objetivos, y resolver el problema de optimización. El problema consiste en construir una cartera de varianza mínima sujeta a inversión total y solo en largo. El objetivo es minimizar la varianza de la cartera. Hay dos restricciones en este problema: la restricción de inversión total implica que los pesos deben sumar 1, y la restricción de solo en largo implica que todos los pesos deben ser mayores o iguales que 0 (es decir, no se permiten posiciones cortas).

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 los activos del conjunto de datos index_returns y llama port_spec al objeto de especificación.
  • Añade una restricción de inversión total al objeto port_spec para que los pesos sumen 1.
  • Añade una restricción de solo en largo al objeto port_spec para que el peso de un activo esté entre 0 y 1.
  • Añade un objetivo para minimizar la desviación estándar de la cartera al objeto port_spec.
  • Resuelve el problema de optimización de la cartera usando optimize_method = "ROI". Asigna los resultados de la optimización a un objeto llamado opt.

Ejercicio interactivo práctico

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

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

# 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 minimize portfolio standard deviation
port_spec <- add.objective(portfolio = ___, type = "___", name = "___")

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