1 votos

PortfolioAnalytics [R] - error de optimize.portfolio.rebalancing

Nuevo en el uso de PortfolioAnalytics (y bastante nuevo en R en general) y me encuentro con un error al ejecutar optimize.portfolio.rebalance -- ver a continuación:

Error in UseMethod("extractObjectiveMeasures") : no hay un método aplicable para 'extractObjectiveMeasures' aplicado a un objeto de clase "c('simpleError', 'error', 'condition')"

He consultado la viñeta y la documentación del paquete en CRAN, pero no he podido entender lo que podría estar causando este problema específico. optimize.portfolio parece funcionar bien con las mismas restricciones y objetivos. ¿Quizás no he cargado todas las bibliotecas requeridas? Abierto a cualquier otra sugerencia. Gracias.

# Cargar paquetes
library(xts)
library(ROI)
library(doParallel)
library(PortfolioAnalytics)

# Definir fechas pseudo y rendimientos (formato xts)
dates <- seq(from = as.Date("2016-01-01"), to = as.Date("2016-12-01"), by = "month")
returns <- as.xts(data.frame("A" = runif(12, -.05, .05), 
                         "B" = runif(12, -.10, .20), 
                         "C" = runif(12, -.15, .30)), 
                  order.by = dates)

# Registrar la sesión de doParalell (PortfolioAnalytics sugiere esto al ejecutar optimizaciones con rebalanceos)
registerDoParallel(cores = 2)

# Iniciar objeto de portafolio
port <- portfolio.spec(assets = colnames(returns))

# Agregar restricciones
port <- add.constraint(portfolio = port, type = "long_only")
port <- add.constraint(portfolio = port, type = "full_investment")
port <- add.constraint(portfolio = port, type = "box", min = 0.02, max = 0.40)

# Agregar objetivos - queremos maximizar el Ratio de Sharpe
port <- add.objective(portfolio = port, type = "risk", name = "StdDev")
port <- add.objective(portfolio = port, type = "return", name = "mean")

# Ejecutar optimización SIN rebalanceo - ESTO PARECE FUNCIONAR BIEN...
portOPT <- optimize.portfolio(R = returns,
                              portfolio = port,
                              optimize_method = "ROI",
                              maxSR = TRUE)
portOPT

# Ejecutar optimización con rebalanceo
portOPT.R <- optimize.portfolio.rebalancing(R = returns,
                                            portfolio = port,
                                            optimize_method = "ROI",
                                            maxSR = TRUE,
                                            training_period = 6,
                                            rebalance_on = "months")
portOPT.R

EDICIÓN

También, estoy ejecutando Windows 10 y pensé que sería útil incluir una lista de mis paquetes instalados actualmente:

https://docs.google.com/spreadsheets/d/1JLauyCpmDg3DOztRJKntoZ2LFMxV4_ouLOKYUVenEAA/edit?usp=sharing

0 votos

Intenté ejecutar tu código. Estoy recibiendo un error extraño relacionado con el paquete ROI...

0 votos

Gracias. Se olvidó de cargar el paquete ROI, ahora está cargado en la publicación. Debería mostrar correctamente el error que mencioné ahora.

0voto

Diego Martinoia Puntos 460

Las versiones 0.2 de los paquetes ROI realizaron cambios que afectan la compatibilidad. Estamos trabajando en una solución. Mientras tanto, te sugeriría que vuelvas a la versión 0.1-0 de ROI y a la versión 0.0-2 de ROI.plugin.*.

También podrías ejecutar la optimización con un método de optimización diferente, por ejemplo, optimize_method = "random" o optimize_method = "DEoptim".

0 votos

Gracias RossB. Volver a las versiones antiguas de ROI y sus complementos parecía resolver el problema. Gracias de nuevo.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X