Otener la cotización del Bitcoin con R

Publicado el 02 febrero 2022 por Daniel Rodríguez @analyticslane

Para consultar la cotización del Bitcoin, o de cualquier otra criptomoneda, se puede usar una de las múltiples API que existen en la actualidad. La plataforma de intercambio de criptomonedas Bitmex ofrece posiblemente una de las API más sencillas de utilizar. Además de no ser necesario disponer de una clave privada para poder consultar las cotizaciones como puede suceder en otras plataformas. Por eso, en esta entrada vamos a aprender a consultar la cotización del Bitcoin con R utilizando para ello el API de Bitmex. Información que posteriormente se podrá utilizar para realizar análisis en R de las cotizaciones.

El API de Bitmex

Para evaluar el API que ofrece Bitmex para consultar la cotización de las criptomonedas se puede usar su explorador https://www.bitmex.com/api/explorer/. Una página en la que se puede consultar la potencia de esta herramienta. Para obtener la información de una criptomoneda solamente hay que indicar el símbolo de esta y el periodicidad con la que se desea obtener los valores. Obteniendo por defecto 100 cotizaciones, aunque el número de perdidos se puede cambiar con facilidad.

Acceso al API desde R

Para acceder al API de Bitmex desde R solamente será necesario contar con el paquete jsonlite. Un paquete con el que se puede importar cualquier JSON en un DataFrame, tanto desde un archivo como desde la web. Paquete que si no tenemos en nuestra instalación de R se puede obtener desde el CRAN ejecutando el siguiente comando en una sesión de R

install.packages("jsonlite")

Una vez instalado el paquete solamente debemos crear la URL, con las propiedades que nos interese en cada momento e importar los datos con jsonlite(). Las propiedades más interesantes son la criptomoneda, lo que se indica mediante el símbolo ( symbol), la fecha de inicio ( startTime), la periodicidad con la que se consultan los datos ( binSize) y el número de perdidos que se desea importar ( count). URL que se puede construir mediante la función paste0(), como se hace en la siguiente función:

library(tidyverse)
library(jsonlite)

bimex_reader <- function(symbol = "XBTEUR", binSize = "1d", count = 10, startTime = as.Date(today()) - 10) {
  url <- paste0("https://www.bitmex.com/api/v1/trade/bucketed?", 
                'binSize=', binSize, 
                '&symbol=', symbol, 
                '&count=', count,
                '&startTime=', startTime)
  
  fromJSON(url) %>% mutate(timestamp = as_datetime(timestamp))
}

Una función en la que por defecto se carga la cotización del Bitcoin frente al euro, con una periodicidad diaria y para los últimos 10 días. Obteniendo por defecto el día de inicio a partir de la fecha actual menos los 10 días. En la función, una vez importados los datos, se convierte los valores de la columna timestamp en fecha para facilitar su posterior análisis.

Ahora para consultar la cotización del Bitcoin en septiembre de 2021 solamente se tiene que llamar a la función con la fecha de inicio.

> bimex_reader(startTime="2021-09-01")
    timestamp symbol    open    high     low   close trades   volume     vwap lastSize    turnover homeNotional foreignNotional
1  2021-09-01 XBTEUR 39859.5 40896.0 39662.0 39986.0    656  2943900 40138.56      200  7334360332     73.34360         2943900
2  2021-09-02 XBTEUR 39986.0 41538.0 39464.5 41316.5   1233  1337800 40650.08    23700  3291018000     32.91018         1337800
3  2021-09-03 XBTEUR 41316.5 42530.0 41131.0 41598.0   1294  4249500 41850.99    40000 10153887842    101.53888         4249500
4  2021-09-04 XBTEUR 41598.0 43036.0 40800.0 42074.0   1696  7612000 42240.61      100 18020647593    180.20648         7612000
5  2021-09-05 XBTEUR 42074.0 42530.0 41550.0 42100.0    812  2645600 42097.11     4000  6284531790     62.84532         2645600
6  2021-09-06 XBTEUR 42100.0 43666.0 41681.0 43547.0   1708 10168200 42539.43    22700 23903067746    239.03068        10168200
7  2021-09-07 XBTEUR 43547.0 44504.5 43050.0 44437.5   1445  5481500 43669.08      100 12552409008    125.52409         5481500
8  2021-09-08 XBTEUR 44437.5 44600.0 34639.5 39472.0   3127 21243200 40948.87      200 51877480251    518.77480        21243200
9  2021-09-09 XBTEUR 39472.0 39911.0 37610.0 38987.0   2104  5342800 38976.78      900 13707677674    137.07678         5342800
10 2021-09-10 XBTEUR 38987.0 40019.0 38555.0 39172.0   1700  6721500 39257.72      100 17121524141    171.21524         6721500

Conclusiones

En esta entrada se ha visto como se puede consultar la cotización del Bitcoin con R gracias al uso del jsonlite y el API de Bitmex. Siendo bastante útil lo aprendido en esta entrada, ya que lo visto se puede adaptar para obtener información de cualquier otra API que sea de interés para nosotros.

Imagen de MichaelWuensch en Pixabay