Acceso a los reportes de la SIBOIF Nicaragua con R: Indicadores Financieros

Acceso a los reportes de la SIBOIF Nicaragua con R: Indicadores Financieros

De acuerdo con el Glosario de Indicadores Financieros a partir de 2019 de la Superintendencia de Bancos y Otras Instituciones Financieras (SIBOIF) de Nicaragua, el término Captaciones del Público que aparece en el Reporte de Indicadores Financieros hace referencia a:

Saldos de Depósitos en Instituciones Financieras del país, a la Vista, ahorro, a plazos, Otros Depósitos del público, Obligaciones por aceptación, Obligaciones por emisión de deuda, Obligaciones diversas con el público, Intereses por pagar sobre obligaciones con el público.

Por tanto, este ejercicio, se hará a partir de 2019 para guardar consistencia con los datos. Para acceder y descargar los datos del servicio web de la SIBOIF según se indica en su sitio web, procedo a definir la fecha de fin, que podría ir variando para actualizar el análisis, sin embargo la fecha de inicio quedaría fija en enero 2019 por la definición anterior. Así la fecha url de extracción sería:

url <- "https://www.siboif.gob.ni/rest/estadisticas?intendencia=Bancos&fecha[min]=2019-01-01&fecha[max]=2021-10-31&tipo_reporte=Indicadores%20Financieros"

Preparemos los paquetes necesarios para nuestro objetivo:

library(jsonlite)
library(httr)
library(dplyr)
library(readr)
library(ineq)
library(kableExtra)
library(ggplot2)

Pese a que la SIBOIF es muy eficiente en la entrega de la información, esta solicitud no es correctamente procesada y genera un error.

# Esto generará un error
# read_json(url, simplifyVector = TRUE)  
# provoca el siguiente error:
# Error in open.connection(con, "rb") : no se puede abrir la conexión

La solución que he encontrado, hasta ahora, es partir las consultas en bloques anuales e iterar sobre cada año y colapsar el resultado final en un sólo data.frame. Agradezco a mi amigo Carlos Zelaya Flores por sugerir esta solución.

Primero creo una url por cada año empezando el 1 de enero y finalizando el 31 de diciembre para cada año:

url_2019 <- "https://www.siboif.gob.ni/rest/estadisticas?intendencia=Bancos&fecha[min]=2019-01-01&fecha[max]=2019-12-31&tipo_reporte=Indicadores%20Financieros"
url_2020 <- "https://www.siboif.gob.ni/rest/estadisticas?intendencia=Bancos&fecha[min]=2020-01-01&fecha[max]=2020-12-31&tipo_reporte=Indicadores%20Financieros"
url_2021 <- "https://www.siboif.gob.ni/rest/estadisticas?intendencia=Bancos&fecha[min]=2021-01-01&fecha[max]=2021-10-31&tipo_reporte=Indicadores%20Financieros"

Luego, una vez construida la url con los parámetros necesarios para la obtención de la información, bastaría con leer el contenido de la url y guardarla en R.

indicadores_financieros <- purrr::map_df(list(url_2019, url_2020, url_2021), ~read_json(., simplifyVector = TRUE))

Validamos que los datos se hayan cargado correctamente:

indicadores_financieros %>%
  head

Se puede comprobar que los campos valor_1 y valor_2 son valor caracter (chr) en vez de ser valor numérico, pero esto se corrige fácilmente utilizando la función parse_number:

indicadores_financieros <- indicadores_financieros %>% 
  mutate(valor_1 = parse_number(valor_1),
         valor_2 = parse_number(valor_2))

indicadores_financieros %>% 
  head

Ya teniendo esa información disponible podemos realizar los análisis que queramos y cuantos resúmenes gráficos nos limite nuestra imaginación. Por ejemplo, podríamos medir el grado de concentración de mercado a partir de:

  1. Captaciones del público
  2. Cartera de créditos bruta

Para estimar el grado de desigualdad entre las variables antes mencionadas podríamos usar las funciones del paquete ineq, fundamentalmente la función Gini que nos da la estimación del Coeficiente de Gini.

Coeficiente de Gini para captaciones del público

Se obtendrá el coeficiente de Gini de los bancos para los meses de octubre de cada año de la muestra para que sea comparativo

indicadores_financieros %>% 
  filter(tipo_institucion == "Bancos",
         institucion != "SFB",
         variable_1 %in% c("1.- Captaciones del Publico","3.- Cartera de Créditos Bruta"),
         mes == "Octubre") %>% 
  group_by(variable_1, anio) %>% 
  summarise(Gini = round(Gini(valor_1), 2)) %>% 
  rename(Variable = variable_1,
         Año = anio) %>% 
  ungroup() %>% 
  kbl(caption = "Coeficiente de Gini, fuente: datos SIBOIF.") %>%
  kable_paper("hover", full_width = F)
Coeficiente de Gini, fuente: datos SIBOIF.
Variable Año Gini
1.- Captaciones del Publico 2019 0.46
1.- Captaciones del Publico 2020 0.52
1.- Captaciones del Publico 2021 0.53
3.- Cartera de Créditos Bruta 2019 0.42
3.- Cartera de Créditos Bruta 2020 0.50
3.- Cartera de Créditos Bruta 2021 0.49

De la tabla anterior se observa un comportamiento muy similar entre entre las captaciones del público y la cartera de crédito en cuanto al valor del coeficiente de Gini a octubre de cada año en cuestión. La conclusión es que el mercado bancario entre los años 2019-2021 se mantiene altamente concentrado con un repunte de concentración de 2019 a 2020 en ambas variables.

Por otro lado, podríamos ver la evolución mensual del coeficiente de Gini para ambas variables para identificar episodios de incrementos en la concentración o si, dicha concentración, se ha mantenido estable durante esos 34 meses:

indicadores_financieros %>% 
  filter(tipo_institucion == "Bancos",
         institucion != "SFB",
         variable_1 %in% c("1.- Captaciones del Publico","3.- Cartera de Créditos Bruta")) %>% 
  mutate(fecha = as.Date(fecha, format="%Y-%m-%d")) %>% 
  group_by(variable_1, fecha) %>% 
  summarise(Gini = round(Gini(valor_1), 2)) %>% 
  ggplot(aes(x=fecha, y=Gini, color=variable_1)) +
  geom_line() +
  labs(title = "Evolución del coeficiente de Gini",
       subtitle = "Periodo: Enero 2019 - Octubre 2021.",
       caption = "Fuente: datos SIBOIF.") +
  theme(axis.title.x=element_blank(),
        legend.position = "top",
        legend.title = element_blank())

Es claro que a partir de finales de 2019 los bancos incrementaron su nivel de concentración y que ésta se ha mantenido invariante desde entonces hasta octubre 2021.

indicadores_financieros %>% 
  filter(tipo_institucion == "Bancos",
         institucion != "SFB",
         variable_1 == "3.- Cartera de Créditos Bruta",
         anio == "2020") %>% 
  select(valor_1) %>% 
  unlist %>% 
  Lc(.) %>% 
  plot(., main="Curva de Lorentz de Cartera de crédito bruta durante 2020",
       xlab="Fuente: datos SIBOIF.")

Es claro que existe una alta concentración y desigualdad en la repartición de la cartera bruta de crédito, sin embargo, no hemos visto cómo se distribuye entre los bancos.

indicadores_financieros %>% 
  filter(tipo_institucion == "Bancos",
         institucion != "SFB",
         variable_1 == "4.- Cuota de Mercado de Cartera de Créditos Bruta") %>% 
  select(fecha, institucion, valor_1) %>% 
  mutate(fecha = as.Date(fecha)) %>% 
  ggplot(aes(x=fecha, y=valor_1, color=institucion))+
  geom_line()

indicadores_financieros %>% 
  filter(tipo_institucion == "Bancos",
         institucion != "SFB",
         variable_1 == "4.- Cuota de Mercado de Cartera de Créditos Bruta",
         fecha == "2021-10-31") %>% 
  select(fecha, institucion, valor_1) %>% 
  arrange(valor_1) %>% 
  ggplot(aes(x=reorder(institucion, valor_1), y=valor_1, fill=institucion))+
  geom_bar(stat = "identity")+
   theme(axis.title.x=element_blank(),
         axis.title.y=element_blank(),
        legend.position = "none")+
  coord_flip()+
  labs(title = "Cuota de mercado de cartera de créditos bruta",
       subtitle = "Corte a octubre 2021")

Es evidente que Banpro es el mayor banco en términos de carterta bruta de crédito, pero, dado que tenemos datos desde 2019 hasta 2021, podríamos comprobar si este comportamiento se mantiene durante los años observados, siembre con corte a octubre

indicadores_financieros %>% 
  filter(tipo_institucion == "Bancos",
         institucion != "SFB",
         variable_1 == "4.- Cuota de Mercado de Cartera de Créditos Bruta",
         mes == "Octubre") %>% 
  select(fecha, institucion, valor_1, anio) %>% 
  arrange(valor_1) %>% 
  ggplot(aes(x=reorder(institucion, valor_1), y=valor_1, fill=institucion))+
  geom_bar(stat = "identity")+
   theme(axis.title.x=element_blank(),
         axis.title.y=element_blank(),
        legend.position = "none")+
  coord_flip()+
  labs(title = "Cuota de mercado de cartera de créditos bruta",
       subtitle = "Corte a octubre de cada año")+
  facet_wrap(~anio)

Es evidente que la composición de la concentración de la cartera de crédito no ha variado sustancialmente en los últimos tres años y que Banpro es el indiscutible líder.

Este post evidencia dos objetivos importantes:

  1. Acceso a los datos de la SIBOF a través de R
  2. Parte del tema de la concentración de mercado en el contexto del ologopolio de la clase me microeconomía que imparto en la Universidad Thomas More

Así, que el objetivo principal de acceso a los datos de la SIBOIF está cumplido y, el otro objetivo de analizar la concentración de mercado, es parte de nuestra clase. Por cuanto la primera parte fue cumplida y la otra, la discutiremos en clases.

No hay comentarios:

Publicar un comentario