8 votos

Cambiar periodicidad en Rblpapi

Entonces Dirk Eddelbuettel, Whit Armstrong y John Laing lanzaron Rblpapi recientemente en CRAN, y es increíble. Sin embargo, estoy teniendo dificultades para entender cómo funcionan las anulaciones, espero que alguien pueda ayudarme.

Estoy intentando importar rendimientos de precios de dos índices, y quiero hacerlo utilizando datos mensuales. Sin la anulación de periodicidad, importa los datos diarios correctamente. Pero cuando intento agregar una anulación para convertirlo en solicitudes de datos mensuales, obtengo un error. En la api de Python, el comando de anulación es periodicity. ¿Es lo mismo en Rblpapi? ¿Alguien sabe cómo está diseñado para funcionar en Rblpapi? ¿Son los nombres y valores de anulación los mismos que en la guía de desarrollo de BBG?

Aquí tienes un ejemplo de código y el resultado obtenido:

library(Rblpapi)

#inicializar la importación de datos
end.dt = Sys.Date()
start.dt = as.Date(x = "1995-03-31") #definir la fecha de inicio

blpConnect() #conectar a BBG, no es necesario cerrar la conexión

#definir variables de importación
index.growth = "MXUS000G Index" #definir índice de crecimiento
index.value = "MXUS000V Index" #definir índice de valor

indices = c(index.growth, index.value)

overrides.px = "Monthly"
names(overrides.px) = "periodicity"

px = bdh(securities = indices, fields = "px_last", start.date = start.dt, end.date = end.dt,
         overrides = overrides.px)

Error: Elemento secundario de elección no encontrado para el nombre 'securityData'.

¡Gracias!

0 votos

Puedo replicar el error, no tengo idea de qué está mal. Algo en la información devuelta necesita ser analizado de forma diferente. Hasta ahora, solo he necesitado los datos diarios...

6voto

Vitalik Puntos 184

En un principio consideramos que era un error donde overrides no se propaga correctamente.

Edit: Aquí tienes unos ejemplos corregidos, gracias a @Sid. Establecerlo como un campo de opciones funciona:

library(Rblpapi)
blpConnect()

## inicializar importación de datos
end.dt <- Sys.Date()
start.dt <- end.dt - 100  # mantenerlo simple para el ejemplo

index.growth <- "MXUS000G Index" #definir índice de crecimiento
index.value <- "MXUS000V Index" #definir índice de valor
indices <- c(index.growth,index.value)

overrides.px <- structure("MONTHLY", names=c"periodicitySelection")
px <- bdh(indices,"px_last",start.dt, end.dt, options = overrides.px)
print(px)

lo cual funciona como esperas:

$ r /tmp/periodicity.R 
$`MXUS000G Index`
        date px_last
1 2015-05-29 3456.53
2 2015-06-30 3410.59
3 2015-07-31 3517.17

$`MXUS000V Index`
        date px_last
1 2015-05-29 2169.20
2 2015-06-30 2108.77
3 2015-07-31 2121.89

$ 

(Por cierto, sugerimos enviar informes de errores, etc. en GitHub. Tuviste suerte de que viera esto...)

0 votos

Gracias señor, esto funciona perfectamente. No puedo decirte cuánto aprecio tu trabajo en este paquete, realmente ha hecho mi semana. En el futuro publicaré errores en Github, ¡gracias!

0 votos

Con mucho gusto. También le damos mucho uso, y su informe mejorará la documentación. Y por favor siéntase libre de votar positivamente o aceptar la respuesta.

6voto

Mike Berrow Puntos 1020

Estás estableciendo una opción, no un reemplazo. Tu código funciona bien si reemplazas

names(overrides.px) = "periodicity"
px = bdh(securities = indices,fields = "px_last",start.date = start.dt,end.date = end.dt,
     overrides = overrides.px)

con

names(overrides.px) = "periodicitySelection"
px = bdh(securities = indices,fields = "px_last",start.date = start.dt,end.date = end.dt,
     options = overrides.px)

0 votos

De hecho. Buen trabajo.

0 votos

Excelente, gracias, @Sid. Esta solución funciona correctamente.

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