Optimización de un solo período
Hay dos funciones para ejecutar la optimización, optimize.portfolio() y optimize.portfolio.rebalancing(). Este ejercicio se centra en la optimización de un único período y el siguiente usará optimize.portfolio.rebalancing() para optimizar con rebalanceos periódicos. optimize.portfolio() admite la optimización de un solo período. Los argumentos clave incluyen R para los rendimientos de los activos, portfolio para el objeto de especificación de la cartera y optimize_method para indicar el método de optimización que se usará para resolver el problema. En muchos casos, es útil especificar trace = TRUE para almacenar información adicional de cada iteración/prueba de la optimización.
Se admiten los siguientes métodos de optimización:
DEoptim: Evolución diferencialrandom: Carteras aleatoriasGenSA: Recocido simulado generalizadopso: Optimización por enjambre de partículasROI: R Optimization Infrastructure para resolutores de programación lineal y cuadrática
El método de optimización que elijas debe basarse en el tipo de problema que estés resolviendo. Por ejemplo, un problema que pueda formularse como uno de programación cuadrática debería resolverse con un resolutor de programación cuadrática, mientras que un problema no convexo debería resolverse con un resolutor global como DEoptim.
En este ejercicio, definiremos el problema de optimización de cartera para maximizar la rentabilidad media y minimizar la desviación estándar de la cartera con un presupuesto de riesgo por desviación estándar, donde el porcentaje mínimo de riesgo es del 5% y el máximo del 10%, sujeto a inversión total y restricciones de solo posiciones largas. El objetivo de presupuesto de riesgo requiere un resolutor global, por lo que resolveremos el problema usando carteras aleatorias. El conjunto de carteras aleatorias, rp, se genera usando 500 permutaciones para este ejercicio.
Este ejercicio forma parte del curso
Análisis de carteras intermedio en R
Instrucciones del ejercicio
La especificación de la cartera ya se ha creado y se llama port_spec. En tu espacio de trabajo también tienes los rendimientos, asset_returns.
- Ejecuta una optimización de un solo período con
traceestablecido enTRUEusando"random"como método de optimización. Asigna la salida de la optimización a una variable llamadaopt. - Imprime la salida de la optimización.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Run a single period optimization using random portfolios as the optimization method
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = ___, rp = rp, trace = TRUE)
# Print the output of the single-period optimization