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.