Extrayendo valores del dólar y procesando la brecha cambiaria: un tutorial práctico

tutorial
codigo
apuntes
visualizaciones
Author

Pedro Damián Orden

Published

January 10, 2024

Contexto

La economía argentina, marcada por una historia de volatilidad y crisis recurrentes, enfrenta el desafío constante de la brecha cambiaria, una realidad que se manifiesta en la disparidad entre el dólar oficial y el mercado paralelo (blue). Esta brecha es mucho más que una simple diferencia en cifras; es un reflejo crudo de las tensiones económicas, la inestabilidad política y los desafíos socioeconómicos que enfrenta el país.

En un país donde los vaivenes económicos impactan profundamente en todos los aspectos de la vida cotidiana, comprender y analizar la brecha cambiaria se convierte en una necesidad imperante. Esta no es solo una cifra económica, sino una herramienta esencial para captar los avatares de la economía de nuestro país, ofreciendo perspectivas sobre las fluctuantes políticas monetarias, la confianza (o la falta de ella) en el mercado y las reacciones sociales ante los eventos económicos.

En este complicado panorama, la tecnología y el análisis de datos se vuelven fundamentales. Procesar y analizar grandes cantidades de datos financieros no solo proporciona una comprensión más profunda de la situación económica, sino que también democratiza el acceso a información crítica.

Este tutorial se plantea como objetivo mostrar cómo utilizar herramientas open source como R para monitorear y analizar la brecha cambiaria, brindando a los usuarios, independientemente de su trasfondo, un acceso detallado y actualizado a un elemento clave de la realidad económica argentina.

Nociones a incorporar

A lo largo del documento, cubriremos las siguientes nociones clave:

  1. Workflow de ETL (Extracción, Transformación y Carga): conoceremos cómo extraer datos directamente desde una API. Este es un paso crucial en cualquier proceso de análisis de datos, donde recopilamos la información cruda de las cotizaciones que más tarde será transformada y analizada.

  2. Transformación de Datos: Una vez recopilados los datos, el siguiente paso es procesarlos. En nuestro caso, esto implica calcular la diferencia entre el dólar blue y el oficial para determinar la brecha cambiaria. Este paso es esencial para convertir los datos crudos en una forma que sea significativa y lista para el análisis.

  3. Visualización de Datos Interactiva y Compleja: La última pieza del rompecabezas es la presentación de nuestros hallazgos. Utilizaremos herramientas avanzadas de visualización de datos en R para crear representaciones gráficas interactivas y complejas de la información. Esto no solo mejora la comprensión de los datos, sino que también nos permite explorar y interactuar con ellos de manera más efectiva.

Vamos ahora lo que nos convoca!

Los datos

Desambiguando

En nuestro análisis de divisas, diferenciaremos dos tipos principales de cotizaciones del dólar en Argentina, cada uno representando diferentes segmentos del mercado cambiario:

Dólar Oficial (Bancos): Esta cotización no se limita al valor establecido por el Banco Nación, sino que refleja el precio promedio del dólar en una variedad de bancos y casas de cambio. Este tipo de cambio es regulado y supervisado, sujeto a las políticas monetarias del Banco Central de la República Argentina. Aunque es más estable que el dólar blue, este valor del dólar está influido por las políticas económicas y las regulaciones gubernamentales de turno.

Dólar Blue: En contraste, el “dólar blue” se refiere al tipo de cambio en el mercado paralelo o informal. Incluye transacciones realizadas fuera de los canales oficiales, como en “cuevas” financieras o a través de vendedores informales conocidos en Argentina como “arbolitos”. El valor del dólar blue puede variar considerablemente en comparación con el dólar oficial bancario, y suele ser un reflejo más inmediato de la oferta y demanda en el mercado, así como de las expectativas y percepciones del riesgo económico.

La brecha entre estas dos cotizaciones se convierte en un indicador económico crucial, que da cuenta de la tensión entre las políticas oficiales y las percepciones y realidades del mercado informal.

Carga de librerías

Antes de comenzar, vamos a asegurarnos de tener instalado R y los siguientes paquetes:

  • httr: Para realizar solicitudes a la API.

  • jsonlite: Para convertir datos JSON en estructuras de R.

  • dplyr y tidyr: Para manipular y transformar los datos.

  • highcharter: Para crear visualizaciones interactivas.

Podemos instalar estos paquetes con el siguiente comando en R:

Code
#install.packages(c("httr", "jsonlite", "dplyr", "tidyr", "highcharter"))

Consulta a la API

¿Qué es una API?

Una API (Interfaz de Programación de Aplicaciones) es un conjunto de reglas que permite que diferentes programas se comuniquen entre sí. Utilizaremos la API de Bluelytics para obtener datos actualizados sobre las cotizaciones del dólar que nos interesan.

Extracción

Definición de la Función de Extracción

Para comenzar poner en movimiento nuestro análisis, necesitamos recopilar datos actualizados sobre las cotizaciones de divisas. Esto lo lograremos definiendo una función llamada obtener_datos_api. Esta función realizará una solicitud a una API pública y manejará la respuesta obtenida. Veamos:

Code
library(httr)
library(jsonlite)

# Definimos la función para obtener datos de la API
obtener_datos_api <- function() {
  # Establecemos la URL de la API que proporciona las cotizaciones del dólar
  url <- "https://api.bluelytics.com.ar/v2/evolution.json"

  # Realizamos la solicitud GET a la URL
  respuesta <- GET(url)
  
  # Verificamos si la respuesta es exitosa (código 200)
  if (status_code(respuesta) == 200) {
    # Convertimos y retornamos el contenido de la respuesta en texto
    return(content(respuesta, "text", encoding = "UTF-8"))
  } else {
    # Enviamos un mensaje de error si la solicitud falla
    stop("No se pudieron obtener datos de la API")
  }
}

Esta función nos abre la puerta a los datos actualizados sobre los valores del dólar. Se encarga de conectar con la API de Bluelytics y, en caso de éxito, nos entrega los datos en un formato que luego convertiremos para analizar en R. Si se encuentra con algún problema en la solicitud, nos alerta para tomar medidas alternativas o de corrección.

Procesamiento de Datos

De JSON a DataFrame

Una vez que hemos extraído los datos, el siguiente paso es transformarlos de un formato JSON a un DataFrame de R. Esta transformación es crucial para facilitar el análisis y la manipulación de los datos.

Code
# Llamamos a la función para obtener los datos de la API
datos_api <- obtener_datos_api()

# Verificamos si hemos recibido los datos
if (!is.null(datos_api)) {
  # Convertimos los datos JSON a un DataFrame de R
  df <- fromJSON(datos_api)
} else {
  # Si no se recibieron datos, detenemos la ejecución y mostramos un error
  stop("No se recibieron datos de la API")
}

# Mostramos las primeras filas del DataFrame para verificar su estructura
print(head(df))
        date  source value_sell value_buy
1 2024-01-29 Oficial        872       813
2 2024-01-29    Blue       1230      1180
3 2024-01-26 Oficial        872       813
4 2024-01-26    Blue       1220      1170
5 2024-01-25 Oficial        870       811
6 2024-01-25    Blue       1245      1195

En este segmento, utilizamos fromJSON de la librería jsonlite para convertir los datos JSON en un DataFrame. Esto nos permite aprovechar las capacidades de dplyr y tidyr para la manipulación y análisis de datos en R. Al final, imprimimos las primeras filas del DataFrame para asegurarnos de que los datos se han transformado correctamente.

Cálculo de la Brecha Cambiaria

El siguiente paso en nuestro análisis es calcular la brecha cambiaria. Este cálculo se realiza agrupando los datos por fecha y evaluando las diferencias entre las cotizaciones.

Code
library(tidyr)
library(dplyr)


# Primero, agrupamos los datos por fecha
df1 <- df %>% 
  group_by(date) %>% 
  # Calculamos la diferencia neta entre el valor máximo y mínimo de venta
  mutate(n_brecha = max(value_sell) - min(value_sell)) 

# Luego, calculamos el porcentaje de la brecha
df2 <- df1 %>% 
  mutate(perc_brecha = round(n_brecha / min(value_sell) * 100, 1))

# Aseguramos que la columna 'date' esté en formato de fecha
df2$date <- as.Date(df2$date)

En este caso lo que hicimos fue usar la función group_by, para agrupar los datos según la fecha. Luego, con mutate, añadimos una columna n_brecha que representa la diferencia neta en las cotizaciones de venta del dólar. Posteriormente, agregamos otra columna perc_brecha para calcular esta brecha como un porcentaje del valor más bajo de venta, redondeando el resultado a un decimal. El propósito de estas transformaciones es preparar los datos para un análisis más detallado de cómo varía la brecha cambiaria a lo largo del tiempo.

Code
print(head(df2))
# A tibble: 6 × 6
# Groups:   date [3]
  date       source  value_sell value_buy n_brecha perc_brecha
  <date>     <chr>        <dbl>     <dbl>    <dbl>       <dbl>
1 2024-01-29 Oficial        872       813      358        41.1
2 2024-01-29 Blue          1230      1180      358        41.1
3 2024-01-26 Oficial        872       813      348        39.9
4 2024-01-26 Blue          1220      1170      348        39.9
5 2024-01-25 Oficial        870       811      375        43.1
6 2024-01-25 Blue          1245      1195      375        43.1

Extracción de Datos Específicos

En esta etapa, nos centramos en extraer información específica de nuestro conjunto de datos, particularmente las cotizaciones más recientes y la brecha cambiaria correspondiente.

Code
# Encontrar la última fecha disponible en el conjunto de datos
last_date <- max(df2$date, na.rm = TRUE)

# Filtrar los datos para obtener los valores correspondientes a la última fecha
values_day <- df2 %>% filter(date == last_date)

# Extraer la cotización del dólar Blue para la última fecha
blue <- values_day %>% filter(source == "Blue") %>% select(value_sell)

# Agregar el cálculo de la brecha para la última fecha
brecha <- values_day %>% select(perc_brecha) %>% unique()

En este fragmento de código, primero identificamos la última fecha disponible en nuestro DataFrame usando max(df2$date, na.rm = TRUE). Luego, filtramos df2 para obtener las cotizaciones y la brecha cambiaria específicas para esa fecha. Este paso es crucial para comprender la situación actual del mercado cambiario.

Con filter(source == “Blue”), extraemos específicamente el valor de venta del dólar Blue, y con select(perc_brecha), obtenemos la brecha porcentual. Aquí lo imprimimos

Code
print(blue)
# A tibble: 1 × 2
# Groups:   date [1]
  date       value_sell
  <date>          <dbl>
1 2024-01-29       1230

Estos valores serán la base para nuestras visualizaciones y análisis posteriores, ofreciendo una instantánea actualizada de la brecha cambiaria en el mercado argentino.

Visualizando la brecha

Con los datos procesados y listos para el análisis, avanzamos hacia la etapa de comunicación de nuestros resultaos: la visualización. Esta fase nos permitirá entender de manera más clara y concreta las tendencias y patrones subyacentes en las cotizaciones del dólar y la brecha cambiaria.

La implementación de un Gráfico Interactivo

Utilizaremos la librería highcharter para crear una representación visual que nos permita observar cómo han evolucionado estas variables en los últimos 45 días. Este tipo de gráficos no solo aporta claridad, sino que también ofrece una manera interactiva de explorar los datos.

Code
library(highcharter)


# Calcular la fecha más reciente en el conjunto de datos
fecha_maxima <- max(df2$date, na.rm = TRUE)

# Calcular la fecha de inicio para el rango de 45 días
fecha_inicio <- fecha_maxima - 45

# Filtrar las filas que están en el rango de los últimos 45 días
df_transformado <- df2 %>%
  filter(date >= fecha_inicio) %>%
  select(date,source,value_sell,perc_brecha) %>% 
  ungroup() %>%
  spread(key = source, value = value_sell) %>%
  rename(cotizacion_oficial = Oficial, cotizacion_blue = Blue)

# Asegúrate de que las fechas en df_transformado sean de tipo 'Date'
df_transformado$date <- as.Date(df_transformado$date)

hc <- highchart() %>%
  hc_title(text = "Valores del Dólar Oficial, Blue y Brecha Cambiaria") %>%
  hc_subtitle(text = paste("Período: ", min(df_transformado$date), " - ", max(df_transformado$date)))%>% 
  hc_xAxis(categories = df_transformado$date) %>%
  hc_add_series(name = "Cotización Oficial", data = df_transformado$cotizacion_oficial, type = "line", color ="#89c7bc") %>%
  hc_add_series(name = "Cotización Blue", data = df_transformado$cotizacion_blue, type = "line", color ="#86b8dc") %>%
  hc_add_series(name = "Brecha", data = df_transformado$perc_brecha, type = "column",color ="#FBA276" ,yAxis = 1) %>%
  hc_yAxis_multiples(
    list(title = list(text = "Cotización")),
    list(title = list(text = "Brecha (%)"), opposite = TRUE)
  ) %>%
  hc_tooltip(shared = TRUE, 
             formatter = JS("function() {
                return 'Fecha: <b>' + this.x + '</b><br>' +
                       'Cotización Oficial: <b>$' + this.points[0].y + '</b><br>' +
                       'Cotización Blue: <b>$' + this.points[1].y + '</b><br>' +
                       'Brecha: <b>' + this.points[2].y + '%</b>';
             }"))

bslib::card(hc,
                 full_screen = TRUE,
) #esto queda para investigar B)

La implementación de esta visualización es un ejemplo concreto de cómo la visualización de datos puede enriquecer el análisis económico. Al representar gráficamente las cotizaciones del dólar y la brecha cambiaria, trabajando con dos ejes, en los últimos 45 días, estamos simplificando la comprensión de datos complejos. Esta técnica no solo facilita la interpretación de tendencias, sino que también mejora la capacidad de comunicar hallazgos económicos de manera efectiva.

Qué vemos?

Este primer abordaje exploratorio y descriptivo, nos da una pista sobre el nuevo rumbo económico llevado adelante por el Gobierno Nacional; que por medio de una fuerte intervención estatal, devaluó la cotización oficial del dolar más de un 100% y acercó la misma al valor del blue, reduciendo significativamente la brecha entre ambos tipos de dólar.

Conclusion:

A lo largo de este tutorial, aprendimos a cómo extraer, transformar y visualizar datos sobre la brecha cambiaria en Argentina. En particular, desarrollamos las siguientes habilidades:

Extracción de datos desde una API: Utilizamos la API de Bluelytics para obtener datos actualizados sobre las cotizaciones del dólar.

Transformación de datos: Convertimos los datos JSON en un DataFrame de R para facilitar el análisis y la manipulación.

Cálculo de la brecha cambiaria: Calculamos la brecha cambiaria como la diferencia entre las cotizaciones del dólar oficial y el dólar blue.

Visualización de datos: Creamos una visualización interactiva que nos permite observar cómo han evolucionado las cotizaciones del dólar y la brecha cambiaria en los últimos 45 días.

Estos conocimientos son esenciales para cualquier profesional de los datos que desee analizar fenómenos de la economía argentina como el mercado de divisas. La brecha cambiaria es un indicador económico crucial que refleja la tensión entre las políticas oficiales y las percepciones y realidades del mercado informal. Seguir la brecha puede ser un predictor del éxito o fracaso económico del gobierno, así como de las expectativas de los inversores y consumidores.

A lo largo de este trabajo exploramos la brecha cambiaria entre el dólar oficial y el dólar blue. Sin embargo, será importante tener en cuenta que existen otros tipos de dólares en el mercado argentino, como el dólar MEP y el dólar CCL. En futuros trabajos, sería interesante explorar la brecha cambiaria entre estos tipos de dólares, para comprender mejor el impacto de las políticas económicas en el mercado cambiario argentino.

Bonus

Este apartado extra es para presentar una implementación concreta del código como el que estuvimos trabajando, en un app shiny (experimental pero usable) que permite explorar realtime e interactivamente las cotizaciones del dólar y la evolución de la brecha en el tiempo.

Querés utilizar esta app en pantalla completa? Podés hacerlo acá.

Hasta la próxima!

Reuse

Citation

BibTeX citation:
@online{damián orden2024,
  author = {Damián Orden, Pedro},
  title = {Extrayendo Valores Del Dólar y Procesando La Brecha
    Cambiaria: Un Tutorial Práctico},
  date = {2024-01-10},
  url = {https://tecysoc.netlify.app/posts/brecha_cambiaria},
  langid = {en}
}
For attribution, please cite this work as:
Damián Orden, Pedro. 2024. “Extrayendo Valores Del Dólar y Procesando La Brecha Cambiaria: Un Tutorial Práctico.” January 10, 2024. https://tecysoc.netlify.app/posts/brecha_cambiaria.