UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

CICLO II-2022

Laboratorio 1: Acceso a bases de datos de Información económica y financiera a través de un API

MÉTODOS PARA EL ANÁLISIS ECONÓMICO

Docente:

Carlos Ademir Pérez Alas

Integrantes:

Blanco Ochoa, José Alejandro BO20007

Bonilla Melara, Jeffry Isaac BM20033

Iraheta Mendoza, Ana Sofía IM19002

Mejía Platero, Roberto Moisés MP19056

Palacios Zuniga, Luis Alexander PZ18008

Grupo Teórico

03

Grupo de Trabajo

San Salvador, Ciudad Universitaria, 19 de Octubre del 2022

1. ¿Explique que es un API?

Lo primero que se debe de conocer es que una API (siglas en inglés de Interfaz de programación de Aplicaciones) es una interfaz o zona de contacto de un conjunto de bibliotecas o paquetes de software capacitados para que otro software o programa pueda visualizarlos y ejecutarlos. Es decir, una API es la herramienta que permite que un software se comunique o interactúe con otro. ()

Una interfaz de programación representa una interfaz de comunicación entre componentes de software. Se trata del conjunto de llamadas a ciertas bibliotecas que ofrecen acceso a ciertos servicios desde los procesos y representa un método para conseguir abstracción en la programación, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de los principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso general. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose el trabajo de programar todo desde el principio.

Tipos de API’s

1. API abiertas

También conocidas como externas o públicas, las API abiertas tienen medidas de seguridad relajadas, lo que permite a los desarrolladores y usuarios externos acceder a los datos fácilmente. Algunos sistemas permanecen completamente transparentes, mientras que otros pueden requerir un registro simple o clave API. Esta característica convierte a las API públicas en una excelente opción para las empresas que desean optimizar la comunicación con usuarios de terceros, como proveedores o clientes. De igual manera, permite a los desarrolladores de software implementar componentes rápidamente sin restricciones.

2. API de socios

Al igual que el método abierto, las API de socios están destinadas a promover la comunicación entre una empresa y sus usuarios externos. Sin embargo, este método utiliza más seguridad para conceder acceso a datos a socios comerciales específicos. Aunque las API de partners suelen estar expuestas a otras plataformas de API públicas, las puertas de enlace de terceros garantizan que solo los servidores registrados tengan permiso para acceder a la información.

3. API internas

También conocidas como privadas, las API internas se ocultan a terceros y se utilizan para mejorar la comunicación dentro de una organización. Con este método, las empresas pueden optimizar el intercambio de datos entre departamentos y todas las ubicaciones empresariales. Aunque el acceso está limitado a las operaciones internas, las API internas siguen proporcionando medidas de seguridad para verificar la identidad de los empleados antes de conceder la entrada al sistema.

4. API compuestas

El diseño de API compuesta puede soportar varios sistemas de integración y combinar todos los datos. Esta mayor funcionalidad hace que las API compuestas sean el método ideal en microservicios, donde se necesitan varios servicios para ejecutar una operación. También permite a los desarrolladores acceder a numerosos endpoints, incluyendo web y/o otras aplicaciones API, en una llamada de procedimiento. La solida infraestructura de la API compuesta mejora el rendimiento del servicio de datos y proporciona una solucion todo en uno.

2. A través del uso del software R, investigue sobre el acceso a los datos disponibles mediante API, para las instituciones: Banco Mundial (wbstats), Fondo Monetario Internacional (imfr), Comtrade de Naciones Unidas (comtradr). Y para Yahoo Finance (quantmod).

a. Prepare un documento en Rmarkdown mostrando ejemplos de acceso a la información, para cada una de las API señaladas. Explicando en cada caso la sintaxis de los comandos empleados.

- Banco Mundial (wbstats)

wbstats: un paquete R para buscar y descargar datos de la API del Banco Mundial.

El Banco Mundial es una gran fuente de datos socioeconómicos globales; Abarcando varias décadas y docenas de temas, tiene el potencial de arrojar luz sobre numerosos problemas globales. Para ayudar a brindar acceso a esta rica fuente de información, el propio Banco Mundial proporciona una API RESTful bien estructurada. Si bien esta API es muy útil para la integración en servicios web y otras aplicaciones de alto nivel, rápidamente se vuelve abrumadora para los investigadores que no tienen ni el tiempo ni la experiencia para desarrollar software que interactúe con la API. Esto deja al investigador a depender de las descargas masivas manuales de hojas de cálculo de los datos que le interesan. Esto también puede volverse abrumador rápidamente, ya que el trabajo es manual, requiere mucho tiempo y no es fácil de reproducir. el objetivo de lawbstatsR-package es proporcionar un puente entre estas alternativas y permitir que los investigadores se centren en sus preguntas de investigación y no en la cuestión de acceder a los datos. El wbstatspaquete R permite a los investigadores buscar y descargar rápidamente los datos de su interés particular de manera programática y reproducible; esto facilita una integración perfecta en su flujo de trabajo y permite que el análisis se vuelva a ejecutar rápidamente en diferentes áreas de interés y con acceso en tiempo real a los últimos datos disponibles.

Características destacadas del wbstatspaquete R:

  • Utiliza la versión 2 de la API del Banco Mundial que brinda acceso a más indicadores y metadatos que la versión anterior de la API
  • Acceso a todos los datos anuales, trimestrales y mensuales disponibles en la API
  • Soporte para buscar y descargar datos en varios idiomas
  • Acceder a los Metadatos del Catálogo de Datos del Banco Mundial, proporcionando entre otra información; actualizar horarios e idiomas admitidos
  • Capacidad de devolver POSIXctfechas para una fácil integración en técnicas de análisis de series de tiempo y gráficos
  • Devuelve datos en formato largo (predeterminado) o ancho para la integración directa con paquetes como ggplot2ydplyr
  • Compatibilidad con consultas de valores más recientes
  • Compatibilidad con la grepbúsqueda de estilos para descripciones y nombres de datos
  • Capacidad para descargar datos no solo por país, sino también por agregados, como High Income o South Asia
  • Posibilidad de especificar countries_onlyo aggregatesal consultar datos

En Resumen la API WBSTATS conlleva a:

  • +16000 indicadores
  • Provienen de series de tiempo de hasta 50 años
  • La API permite el acceso a alrededor de 45 bases de datos.

¿Cómo instalar la libreria?
install.packages(“wbstats”)

  • Una vez instalada la libreria podemos hacer uso de sus funciones para poder acceder a los datos dentro de ella.

¿Como acceder a los datos en API wbstats?

##Cargamos la libreria wbstats que es la API del banco mundial, al efectuar la carga a traves de las funciones que esta libreria posee podemos acceder a la información a traves de una serie de comandos
library(wbstats)
library(dplyr)
##Asignamos al objeto index todos los indicadores que posee la API para luego utililizar "indicadorID" en nuestras consultas.
  index<-wbindicators(lang = "es")
##Asignamos al objeto paises para poder visualizar los paises que estan albergados en la API y poderlos utilizar en nuestras consultas.  
  paises<-wbcountries(lang = "es")
##Asignamos al objeto topics para poder visualizar los temas que estan albergados en la API y poderlos utilizar en nuestras consultas.  
  topics<-wbtopics()

Ejemplo #1: ¿Cual ha sido el PIB ($ a precios actuales) de guatemala(GTM) para el periodo 2000-2005?

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
pib_precio_actual<-wb(country = "GTM",indicator ="6.0.GDP_current",startdate = 2000,enddate = 2005) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar y de igual manera el indicador y para que fecha, es lo que hemos consultado en este ejemplo.
pib_precio_actual %>% as.data.frame() %>% kable(caption =paste("PIB ($ a precios actuales)  de guatemala(GTM) para el periodo 2000-2005"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14)
PIB ($ a precios actuales) de guatemala(GTM) para el periodo 2000-2005
iso3c date value indicatorID indicator iso2c country
GTM 2005 27211376361 6.0.GDP_current GDP (current $) GT Guatemala
GTM 2004 23965275027 6.0.GDP_current GDP (current $) GT Guatemala
GTM 2003 21917430518 6.0.GDP_current GDP (current $) GT Guatemala
GTM 2002 20776403595 6.0.GDP_current GDP (current $) GT Guatemala
GTM 2001 18702803044 6.0.GDP_current GDP (current $) GT Guatemala
GTM 2000 19290566570 6.0.GDP_current GDP (current $) GT Guatemala

Ejemplo # 2: ¿cual es el indice de Inscripción escolar, nivel secundario, sector privado (% del total del nivel secundario) de Estados Unidos para 2016-2019?

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
secundaria_sectorpriv<-wb(country = "USA",indicator = "SE.SEC.PRIV.ZS",startdate = 2016,enddate = 2019) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador y para que fecha, es lo que hemos consultado en este ejemplo.
secundaria_sectorpriv %>% as.data.frame() %>% select(country,date,value) %>% kable(caption =paste("indice de Inscripción escolar, nivel secundario, sector privado (% del total del nivel secundario)"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14)## es para darle formato a la tabla
indice de Inscripción escolar, nivel secundario, sector privado (% del total del nivel secundario)
country date value
United States 2019 8.89
United States 2018 8.95
United States 2017 8.95
United States 2016 8.86

Ejemplo #3: Para Colombia presente el indice de Sequías, inundaciones, temperaturas extremas (% de la población, promedio de 1990-2009) para el año 2009

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
S_I_TE<-wb(country = "COL",indicator = "EN.CLC.MDAT.ZS") ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador y para que fecha, es lo que hemos consultado en este ejemplo.
S_I_TE%>% as.data.frame() %>% select(country,date,value) %>% kable(caption =paste("Sequías, inundaciones, temperaturas extremas (% de la población, promedio de 1990-2009)"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Sequías, inundaciones, temperaturas extremas (% de la población, promedio de 1990-2009)
country date value
13 Colombia 2009 0.66

Ejemplo #4: Tierras agrícolas (% del área de tierra) 2000-2010

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
Tierras_agri<-wb(country = "HND",indicator = "AG.LND.AGRI.ZS",startdate = 2000,enddate = 2010) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador y para que fecha, es lo que hemos consultado en este ejemplo.
Tierras_agri%>% as.data.frame() %>% select(country,date,value) %>% kable(caption =paste("Tierras agrícolas (% del área de tierra)"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Tierras agrícolas (% del área de tierra)
country date value
Honduras 2010 29.23
Honduras 2009 28.60
Honduras 2008 28.46
Honduras 2007 28.24
Honduras 2006 28.24
Honduras 2005 28.15
Honduras 2004 28.06
Honduras 2003 28.18
Honduras 2002 27.06
Honduras 2001 26.24
Honduras 2000 26.23

Ejemplo #5: Créditos al gobierno central, etc. (% del PIB) 2000-2010

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
Credi_GC<-wb(country = "SLV",indicator = "FS.AST.CGOV.GD.ZS",startdate = 2000,enddate = 2010) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador y para que fecha, es lo que hemos consultado en este ejemplo.
Credi_GC%>% as.data.frame()  %>% kable(caption =paste("Créditos al gobierno central, etc. (% del PIB) 2000-2010"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Créditos al gobierno central, etc. (% del PIB) 2000-2010
iso3c date value indicatorID indicator iso2c country
SLV 2010 27.59 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2009 23.74 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2008 20.77 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2007 19.12 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2006 15.81 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2005 11.52 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2004 5.18 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2003 5.04 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2002 3.24 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2001 5.52 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador
SLV 2000 1.12 FS.AST.CGOV.GD.ZS Claims on central government, etc. (% GDP) SV El Salvador

Ejemplo #6: Cobertura de los programas de trabajo y protección social (% de la población) de Haiti.

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
traba_Psocial<-wb(country = "HTI",indicator = "per_allsp.cov_pop_tot") ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador.
traba_Psocial%>% as.data.frame()  %>% kable(caption =paste("Cobertura de los programas de trabajo y protección social (% de la población)"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Cobertura de los programas de trabajo y protección social (% de la población)
iso3c date value indicatorID indicator iso2c country
10 HTI 2012 19.46 per_allsp.cov_pop_tot Coverage of social protection and labor programs (% of population) HT Haiti
21 HTI 2001 0.75 per_allsp.cov_pop_tot Coverage of social protection and labor programs (% of population) HT Haiti

Ejemplo #7: Valor actual de la deuda externa (US$ a precios actuales) para China

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
valor_deuda<-wb(country = "CHN",indicator = "DT.DOD.PVLX.CD") ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador.
valor_deuda%>% as.data.frame()  %>% kable(caption =paste("Valor actual de la deuda externa (US$ a precios actuales) para China"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Valor actual de la deuda externa (US$ a precios actuales) para China
iso3c date value indicatorID indicator iso2c country
2 CHN 2020 3.9e+11 DT.DOD.PVLX.CD Present value of external debt (current US$) CN China

Ejemplo #8: Médicos (por cada 1.000 personas) en Cuba para el periodo 2000-2015

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
medicos<-wb(country = "CUB",indicator = "SH.MED.PHYS.ZS", startdate = 2000,enddate = 2015) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador, de igual manera la fehca que queremos consultar
medicos%>% as.data.frame() %>% select(date,value)  %>% kable(caption =paste("Médicos (por cada 1.000 personas) en Cuba para el periodo 2000-2015"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Médicos (por cada 1.000 personas) en Cuba para el periodo 2000-2015
date value
2015 7.77
2014 7.57
2013 7.42
2012 7.29
2011 7.00
2010 6.82
2009 6.67
2008 6.63
2007 6.44
2006 6.35
2005 6.27
2004 6.20
2003 6.06
2002 5.99
2001 5.94
2000 5.93

Ejemplo #9: Coeficiente de Gini 2010-2014 para Ecuador(ECU)

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
GINI<-wb(country = "ECU",indicator = "3.0.Gini", startdate = 2010,enddate = 2014) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador, de igual manera la fehca que queremos consultar
GINI%>% as.data.frame() %>% kable(caption =paste("Coeficiente de Gini 2010-2014 para Ecuador(ECU)"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Coeficiente de Gini 2010-2014 para Ecuador(ECU)
iso3c date value indicatorID indicator iso2c country
ECU 2014 0.45 3.0.Gini Gini Coefficient EC Ecuador
ECU 2013 0.47 3.0.Gini Gini Coefficient EC Ecuador
ECU 2012 0.47 3.0.Gini Gini Coefficient EC Ecuador
ECU 2011 0.46 3.0.Gini Gini Coefficient EC Ecuador
ECU 2010 0.49 3.0.Gini Gini Coefficient EC Ecuador

Ejemplo #10: Desempleados (%) para el año 2009 En El Salvador

library(wbstats) ## es necesaria para cargar la API 
library(kableExtra) ## Para aplicar formato a la tabla
desempleo<-wb(country = "SLV",indicator = "9.0.Unemp.All",startdate = 2009,enddate = 2009) ##la funcion wb dentro de wbstast nos permite seleccionar el pais que queremos consultar, el indicador, de igual manera la fehca que queremos consultar
desempleo%>% as.data.frame() %>% kable(caption =paste("Desempleados (%) para el año 2009 En El Salvador"),align = "c",digits = 2) %>%
  kable_classic(html_font = "Times New Roman",
                font_size = 14) ## es para darle formato a la tabla
Desempleados (%) para el año 2009 En El Salvador
iso3c date value indicatorID indicator iso2c country
SLV 2009 5.03 9.0.Unemp.All Unemployed (%) SV El Salvador

- Fondo Monetario Internacional (imfr)

El FMI se ocupa de promover la cooperación monetaria internacional, garantizar la estabilidad financiera, facilitar el comercio internacional, promover un empleo elevado y un crecimiento económico sostenible, y reducir la pobreza en el mundo entero. (Mundial)

Podemos acceder a los datos disponibles del Fondo Monterio Internacional mediante la API IMFR, haciendo uso de esta en RStudio, esta librería permite:

  1. Explorar la amplia gama de bases de datos publicadas por el FMI.

  2. Explorar el conjunto de variables contenidas en cada base de datos.

  3. Descargar datos de la base de datos de nuestra elección, seleccionando las variables, conjunto de países y además configurando la frecuencia de datos que deseemos.

Para poder hacer uso de la API del FMI, primero hay que descargar la libreria “IMFR” realizando la busqueda del cran. Una vez cargada la libreria en nuestro RStudio, para acceder a los datos se debe:

Cargar la libreria para acceder a la API de datos del FMI:

library(imfr) 

Para poder conocer las bases de datos disponibles del FMI, se utilizará el siguiente comando:

library(dplyr)
library(kableExtra)
tabla <- imf_databases<-imf_ids()
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
tabla %>% head() %>% 
  kable(
    caption= "Bases de Datos disponibles",
    col.names = c("ID","Descripción"),
    align= c("c","c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Bases de Datos disponibles
ID Descripción
BOP_2017M06 Balance of Payments (BOP), 2017 M06
BOP_2020M3 Balance of Payments (BOP), 2020 M03
BOP_2017M11 Balance of Payments (BOP), 2017 M11
DOT_2020Q1 Direction of Trade Statistics (DOTS), 2020 Q1
GFSMAB2016 Government Finance Statistics Yearbook (GFSY 2016), Main Aggregates and Balances
BOP_2019M12 Balance of Payments (BOP), 2019 M12
Fuente:
Elaboracion propia

La cual cargará todas las ID de las diferentes bases de datos disponibles (en total existen 259 bases de datos).

Para descargar datos de la API del FMI, se necesitará hacer uso de una lista de códigos de país ISO2 para los países de interés.

library(dplyr)
library(countrycode)
data(codelist)
country_set <- codelist
country_set<- country_set %>% 
  select(country.name.en , iso2c, iso3c, imf, continent, region) %>% filter(!is.na(imf) & !is.na(iso2c))

Ejemplo 1: Base de datos del Indice de Precios al Consumidor (CPI)

#Utilizaremos imf_codelist() para conocer las dimensiones de la base de datos
IPC_codelist <- imf_codelist(database_id= "CPI")
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
IPC_codelist %>% head() %>% 
  kable(
    caption= "Códigos del IPC",
    col.names = c("Código","Descripción"),
    align= c("c","c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Códigos del IPC
Código Descripción
CL_UNIT_MULT Scale
CL_FREQ Frequency
CL_AREA_CPI Geographical Areas
CL_INDICATOR_CPI Indicator
CL_TIME_FORMAT Time format
Fuente:
Elaboracion propia

El Índice de Precios al Consumidor tiene cinco dimensiones, cada una de las cuales es una lista de cosas que pueden solicitarse.

Ahora, accederemosa los indicadores contenidos en esta base de datos utilizando la función imf_codes

IPC_codigos_indicadores <- imf_codes(codelist = "CL_INDICATOR_CPI")
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
IPC_codigos_indicadores %>% head() %>% 
  kable(
    caption= "Base de datos del IPC",
    col.names = c("Código","Descripción"),
    align= c("c","c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Base de datos del IPC
Código Descripción
PCPI_IX Consumer Price Index, All items
PCPIF_IX Food and non-alcoholic beverages
PCPIFBT_IX Alcoholic Beverages, Tobacco, and Narcotics
PCPIA_IX Clothing and footwear
PCPIH_IX Housing, Water, Electricity, Gas and Other Fuels
PCPIHO_IX Furnishings, household equipment and routine household maintenance
Fuente:
Elaboracion propia

En total existen 178 indicadores para el IPC.

Datos del IPC de Estados Unidos, para el período 2010-2021

Consumer_price_index<-imf_data(database_id = "CPI",indicator = 'PCPI_IX', country = c('US'), freq = 'A', start = 2010 , end = current_year())
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
Consumer_price_index %>% 
 kable(
    caption= "IPC de Estados Unidos para el período 2010-2021",
    col.names = c("País","Año", "IPC"),
    align= c("c","c", "c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
IPC de Estados Unidos para el período 2010-2021
País Año IPC
US 2010 100.00
US 2011 103.16
US 2012 105.29
US 2013 106.83
US 2014 108.57
US 2015 108.70
US 2016 110.07
US 2017 112.41
US 2018 115.16
US 2019 117.24
US 2020 118.69
US 2021 124.27
Fuente:
Elaboracion propia

Ejemplo 2: Balanza de Pagos para El Salvador, período 2010-2020

BOP_codelist <- imf_codelist(database_id = "BOP")
## 
Downloading: 940 B     
Downloading: 940 B     
Downloading: 5.3 kB     
Downloading: 5.3 kB     
Downloading: 6.8 kB     
Downloading: 6.8 kB     
Downloading: 8.2 kB     
Downloading: 8.2 kB     
Downloading: 8.8 kB     
Downloading: 8.8 kB     
Downloading: 10 kB     
Downloading: 10 kB     
Downloading: 12 kB     
Downloading: 12 kB     
Downloading: 13 kB     
Downloading: 13 kB     
Downloading: 15 kB     
Downloading: 15 kB     
Downloading: 16 kB     
Downloading: 16 kB     
Downloading: 18 kB     
Downloading: 18 kB     
Downloading: 19 kB     
Downloading: 19 kB     
Downloading: 20 kB     
Downloading: 20 kB     
Downloading: 22 kB     
Downloading: 22 kB     
Downloading: 23 kB     
Downloading: 23 kB     
Downloading: 25 kB     
Downloading: 25 kB     
Downloading: 26 kB     
Downloading: 26 kB     
Downloading: 28 kB     
Downloading: 28 kB     
Downloading: 28 kB     
Downloading: 28 kB     
Downloading: 29 kB     
Downloading: 29 kB     
Downloading: 31 kB     
Downloading: 31 kB     
Downloading: 32 kB     
Downloading: 32 kB     
Downloading: 34 kB     
Downloading: 34 kB     
Downloading: 35 kB     
Downloading: 35 kB     
Downloading: 36 kB     
Downloading: 36 kB     
Downloading: 36 kB     
Downloading: 36 kB     
Downloading: 38 kB     
Downloading: 38 kB     
Downloading: 39 kB     
Downloading: 39 kB     
Downloading: 41 kB     
Downloading: 41 kB     
Downloading: 42 kB     
Downloading: 42 kB     
Downloading: 44 kB     
Downloading: 44 kB     
Downloading: 53 kB     
Downloading: 53 kB     
Downloading: 57 kB     
Downloading: 57 kB     
Downloading: 58 kB     
Downloading: 58 kB     
Downloading: 60 kB     
Downloading: 60 kB     
Downloading: 61 kB     
Downloading: 61 kB     
Downloading: 63 kB     
Downloading: 63 kB     
Downloading: 64 kB     
Downloading: 64 kB     
Downloading: 64 kB     
Downloading: 64 kB     
Downloading: 66 kB     
Downloading: 66 kB     
Downloading: 67 kB     
Downloading: 67 kB     
Downloading: 69 kB     
Downloading: 69 kB     
Downloading: 70 kB     
Downloading: 70 kB     
Downloading: 72 kB     
Downloading: 72 kB     
Downloading: 73 kB     
Downloading: 73 kB     
Downloading: 73 kB     
Downloading: 73 kB     
Downloading: 74 kB     
Downloading: 74 kB     
Downloading: 77 kB     
Downloading: 77 kB     
Downloading: 79 kB     
Downloading: 79 kB     
Downloading: 80 kB     
Downloading: 80 kB     
Downloading: 82 kB     
Downloading: 82 kB     
Downloading: 82 kB     
Downloading: 82 kB     
Downloading: 83 kB     
Downloading: 83 kB     
Downloading: 85 kB     
Downloading: 85 kB     
Downloading: 86 kB     
Downloading: 86 kB     
Downloading: 88 kB     
Downloading: 88 kB     
Downloading: 89 kB     
Downloading: 89 kB     
Downloading: 91 kB     
Downloading: 91 kB     
Downloading: 91 kB     
Downloading: 91 kB     
Downloading: 92 kB     
Downloading: 92 kB     
Downloading: 93 kB     
Downloading: 93 kB     
Downloading: 95 kB     
Downloading: 95 kB     
Downloading: 96 kB     
Downloading: 96 kB     
Downloading: 98 kB     
Downloading: 98 kB     
Downloading: 99 kB     
Downloading: 99 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB
BOP_codelist %>% head() %>% 
  kable(
    caption= "Códigos de la Balanza de Pagos",
    col.names = c("Código","Descripción"),
    align= c("c","c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Códigos de la Balanza de Pagos
Código Descripción
CL_UNIT_MULT Scale
CL_FREQ Frequency
CL_AREA_BOP Geographical Areas
CL_INDICATOR_BOP Indicator
CL_TIME_FORMAT Time format
Fuente:
Elaboracion propia
BOP_codigo<- imf_codes(codelist = "CL_INDICATOR_BOP")
## 
Downloading: 2.4 kB     
Downloading: 2.4 kB     
Downloading: 3.9 kB     
Downloading: 3.9 kB     
Downloading: 5.3 kB     
Downloading: 5.3 kB     
Downloading: 6.8 kB     
Downloading: 6.8 kB     
Downloading: 10 kB     
Downloading: 10 kB     
Downloading: 12 kB     
Downloading: 12 kB     
Downloading: 13 kB     
Downloading: 13 kB     
Downloading: 15 kB     
Downloading: 15 kB     
Downloading: 16 kB     
Downloading: 16 kB     
Downloading: 18 kB     
Downloading: 18 kB     
Downloading: 19 kB     
Downloading: 19 kB     
Downloading: 20 kB     
Downloading: 20 kB     
Downloading: 25 kB     
Downloading: 25 kB     
Downloading: 26 kB     
Downloading: 26 kB     
Downloading: 28 kB     
Downloading: 28 kB     
Downloading: 29 kB     
Downloading: 29 kB     
Downloading: 31 kB     
Downloading: 31 kB     
Downloading: 32 kB     
Downloading: 32 kB     
Downloading: 34 kB     
Downloading: 34 kB     
Downloading: 35 kB     
Downloading: 35 kB     
Downloading: 36 kB     
Downloading: 36 kB     
Downloading: 38 kB     
Downloading: 38 kB     
Downloading: 39 kB     
Downloading: 39 kB     
Downloading: 41 kB     
Downloading: 41 kB     
Downloading: 42 kB     
Downloading: 42 kB     
Downloading: 44 kB     
Downloading: 44 kB     
Downloading: 50 kB     
Downloading: 50 kB     
Downloading: 53 kB     
Downloading: 53 kB     
Downloading: 54 kB     
Downloading: 54 kB     
Downloading: 55 kB     
Downloading: 55 kB     
Downloading: 57 kB     
Downloading: 57 kB     
Downloading: 58 kB     
Downloading: 58 kB     
Downloading: 60 kB     
Downloading: 60 kB     
Downloading: 61 kB     
Downloading: 61 kB     
Downloading: 61 kB     
Downloading: 61 kB     
Downloading: 64 kB     
Downloading: 64 kB     
Downloading: 66 kB     
Downloading: 66 kB     
Downloading: 67 kB     
Downloading: 67 kB     
Downloading: 70 kB     
Downloading: 70 kB     
Downloading: 72 kB     
Downloading: 72 kB     
Downloading: 73 kB     
Downloading: 73 kB     
Downloading: 74 kB     
Downloading: 74 kB     
Downloading: 76 kB     
Downloading: 76 kB     
Downloading: 77 kB     
Downloading: 77 kB     
Downloading: 79 kB     
Downloading: 79 kB     
Downloading: 80 kB     
Downloading: 80 kB     
Downloading: 82 kB     
Downloading: 82 kB     
Downloading: 83 kB     
Downloading: 83 kB     
Downloading: 85 kB     
Downloading: 85 kB     
Downloading: 86 kB     
Downloading: 86 kB     
Downloading: 88 kB     
Downloading: 88 kB     
Downloading: 89 kB     
Downloading: 89 kB     
Downloading: 91 kB     
Downloading: 91 kB     
Downloading: 92 kB     
Downloading: 92 kB     
Downloading: 93 kB     
Downloading: 93 kB     
Downloading: 95 kB     
Downloading: 95 kB     
Downloading: 96 kB     
Downloading: 96 kB     
Downloading: 98 kB     
Downloading: 98 kB     
Downloading: 99 kB     
Downloading: 99 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB     
Downloading: 100 kB
BOP_codigo %>% head() %>% 
   kable(
    caption= "Balanza de Pagos",
    col.names = c("Código","Descripción"),
    align= c("c","c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Balanza de Pagos
Código Descripción
IAFR_BP6_EUR Assets (with Fund Record), Euros
IAFR_BP6_XDC Assets (with Fund Record), National Currency
IAFR_BP6_USD Assets (with Fund Record), US Dollars
IACCDC_NRES_CB_NC_BP6_EUR Assets, Currency Composition of Debt Claims on Nonresidents by Sector, Central Bank, Denominated in Domestic Currency, Euros
IACCDC_NRES_CB_NC_BP6_XDC Assets, Currency Composition of Debt Claims on Nonresidents by Sector, Central Bank, Denominated in Domestic Currency, National Currency
IACCDC_NRES_CB_NC_1YOL_BP6_EUR Assets, Currency Composition of Debt Claims on Nonresidents by Sector, Central Bank, Denominated in Domestic Currency, Of which One Year or Less, Euros
Fuente:
Elaboracion propia
## Activos (con registro de fondos), dólares estadounidenses de la Balanza de Pagos
Activos <- imf_data(database_id = "BOP", indicator = 'IAFR_BP6_USD', country = c('SV'), freq = 'A', start = 2010, end = current_year())
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
Activos %>% 
 kable(
    caption= "Activos de El Salvador desde 2010 hasta el 2021",
    col.names = c("País","Año", "Activo"),
    align= c("c","c", "c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Activos de El Salvador desde 2010 hasta el 2021
País Año Activo
SV 2010 7723.35
SV 2011 7303.53
SV 2012 8001.57
SV 2013 7531.66
SV 2014 8729.32
SV 2015 8902.72
SV 2016 9298.53
SV 2017 9948.03
SV 2018 9433.57
SV 2019 10895.98
SV 2020 11199.00
SV 2021 12261.27
Fuente:
Elaboracion propia

Ejemplo 3: Diversificación de Exportaciones de China, período 2000-2014

library(dplyr)
ED_codelist <- imf_codelist(database_id="ED")
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
ED_codigo <- imf_codes(codelist = "CL_INDICATOR_ED")
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
ED_codigo %>% head() %>% 
  kable(
    caption= "Diversificación de Exportaciones",
    col.names = c("Código","Descripción"),
    align= c("c","c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia")
Diversificación de Exportaciones
Código Descripción
total_theil Export Diversification Index
between_theil Extensive Margin
within_theil Intensive Margin
Fuente:
Elaboracion propia
total_theil <- imf_data(database_id = "ED", indicator = 'total_theil', country = c('CN'), freq = 'A', start = 2000, end = current_year())
## 
  |                                                                            
  |                                                                      |   0%
  |                                                                            
  |======================================================================| 100%
total_theil %>% 
  kable (
     caption= "
Índice de diversificación de exportaciones",
    col.names = c("País","Año", "Índice"),
    align= c("c","c", "c"),
    digits = 2
    ) %>% 
  kable_classic(html_font = "Times New Roman",
                font_size = 14) %>%
  row_spec(0, bold = T) %>%
  footnote(general_title = "**Fuente:**",
           general = "Elaboracion propia"
  )
Índice de diversificación de exportaciones
País Año Índice
CN 2000 2.02
CN 2001 2.01
CN 2002 2.03
CN 2003 2.06
CN 2004 2.07
CN 2005 2.07
CN 2006 2.05
CN 2007 1.90
CN 2008 1.86
CN 2009 1.98
CN 2010 2.04
CN 2011 1.99
CN 2012 2.02
CN 2013 2.03
CN 2014 2.01
Fuente:
Elaboracion propia

- Comtrade de Naciones Unidas (comtradr)

Un Comtrade es un repositorio de estadísticas oficiales de comercio internacional y tablas analíticas relevantes. Permite ver y descargar datos comerciales globales detallados, es decir, importaciones y exportaciones de todos los bienes o incluso de servicios o bienes específicos (por ejemplo: tomates).

Comtradr es un paquete R y una colección de funciones para interactuar con la API Comtrade de la ONU. Además de comtradr, usamos varios otros paquetes que cargaremos primero.

library(dplyr) #Nos proporciona un conjunto de funciones útiles para manipular data frames. 
library(tidyr) #nos permite hacer transformaciones de un data frame
library(stringr)
library(base)
library(kableExtra)
library(flextable)
library(ggplot2)
library(treemap)
library(RColorBrewer)
library(comtradr)
library(officer)
library(tidyverse)
library(comtradr)
library(visNetwork)
library(grid)
library(png)
library(RCurl)
library(scales)

Comercio internacional de El Salvador (2005-2020)

ct_country_lookup("el salvador")
## [1] "El Salvador"
sv1 <- ct_search(reporters = "El Salvador", 
                 partners = "All", 
                 trade_direction = c("imports", "exports"),
                 freq = "annual",
                 start_date = (2021-4),
                 end_date = 2021)

sv2 <- ct_search(reporters = "El Salvador", 
                 partners = "All", 
                 trade_direction = c("imports", "exports"),
                 freq = "annual",
                 start_date = (2017-4),
                 end_date = 2017)

sv3 <- ct_search(reporters = "El Salvador", 
                 partners = "All", 
                 trade_direction = c("imports", "exports"),
                 freq = "annual",
                 start_date = (2012-4),
                 end_date = 2012)

sv4 <- ct_search(reporters = "El Salvador", 
                 partners = "All", 
                 trade_direction = c("imports", "exports"),
                 freq = "annual",
                 start_date = (2007-4),
                 end_date = 2007)

sv <- bind_rows(sv1, sv2 , sv3 , sv4) %>% distinct()

comercio_sv <- sv %>% #distinct() %>% 
  filter(partner_iso != "WLD") %>% 
  mutate(trade_value_usd_bn = trade_value_usd) %>% 
  group_by(trade_flow, year) %>% 
  summarise(trade_value_usd_bn = sum(trade_value_usd_bn, na.rm = T))

comercio_sv %>% 
  ggplot(aes(x = year, y = trade_value_usd_bn, color = trade_flow)) +
  # geom_area(alpha = 0.1, position = "identity") +
  geom_line() +
  geom_point() +
  scale_y_continuous(labels = scales::number, breaks = seq(0, 2500, 500)) +
  scale_color_manual(values = c("#88be3f", "#02a7eb")) +
  scale_x_continuous(breaks = seq(2000, 2022, 2), expand = c(0.01, 0.01)) +
  labs(title = "El Salvador importaciones y exportaciones (2002-2021)",
       x = "", y = "valor comercial  en millones de dólares", caption = "Data: Comtradr", color = "", fill = "")

Principales socios comerciales de El Salvador para 2020 (importaciones y exportaciones).

sv  %>% 
  filter(partner!= "all", year== "2020") %>%  
  group_by(trade_flow, partner)%>% 
  summarise(Valor=sum(trade_value_usd)) %>% 
  treemap(index = c("trade_flow","partner"),
vSize = "Valor", vColor = "partner", 
range = c(0,50),
             fontsize.labels=c(20, 10),
             title = "Principales socios comerciales de El Salvador en 2020",
             mirror.x = T,
             palette = brewer.pal(n=5,"Paired"),
             border.col = "grey")

Importaciones de los 5 principales socios comerciales de El salvador en el mundo (2000-2020)

top_7 <- sv %>% 
  filter(partner_iso!= "WLD", year == 2020) %>% 
  group_by(partner_iso) %>% 
  tally(trade_value_usd, sort = T) %>% 
  top_n(7) %>% 
  pull(partner_iso)
sv %>% 
  filter(partner_iso %in% top_7, trade_flow == "Import") %>% 
  ggplot(aes(x = year, y =trade_value_usd , color = partner_iso)) +
  geom_line() +
  scale_x_continuous(breaks = seq(2000, 2020, 2)) +
  labs(title = "7 principales socios comerciales de El Salvador (2000-2020)",
       x = "", y = "valor comercial en millones de dólares", color = "",
       caption = "Date: comtradr ONU")

Principales productos exportados (por capitulo) por El Salvador (2020)

sv_exportaciones <- ct_search(reporters = "El Salvador", 
                                    type = "goods", 
                                    commod_codes = "AG2", 
                                    freq = "annual",
                                    partners = "All", 
                                    trade_direction = "exports", 
                                    start_date = '2020', 
                                    end_date = '2021') 
Top_Exportaciones<- sv_exportaciones  %>% 
  filter(year=="2020" &  partner=="World") %>% 
  transform(trade_value_usd=round(trade_value_usd/1000000),1) %>%  
  arrange(desc(trade_value_usd)) %>% slice_max(trade_value_usd, n=10) %>% 
  select(commodity_code, commodity, trade_value_usd) %>% 
  transform(commodity=str_sub(commodity, 1L, 30L)) %>%   
  kable(caption = "Principales capítulos arancelarios exportados por El Salvador al año 2021", 
        align = 'c',  
        digits = round(1), 
        col.names = c("Capítulo", "Descripción", "Valor en millones de US$")) %>% 
  kable_classic() %>% kable_styling(font_size=14,
full_width = TRUE)%>%

 kable_paper(full_width = F, "striped") %>%
  column_spec(2, width = "30em", background = "#bdc9e1", bold = T,  color = "Grid") %>%
add_footnote(c("Fuente= Elaboración propia con datos de UN comtradr"), notation = "none")

Top_Exportaciones
Principales capítulos arancelarios exportados por El Salvador al año 2021
Capítulo Descripción Valor en millones de US$
61 Apparel and clothing accessori 1364
39 Plastics and articles thereof 385
48 Paper and paperboard; articles 305
17 Sugars and sugar confectionery 286
85 Electrical machinery and equip 250
30 Pharmaceutical products 180
27 Mineral fuels, mineral oils an 158
62 Apparel and clothing accessori 158
19 Preparations of cereals, flour 147
63 Textiles, made up articles; se 125
Fuente= Elaboración propia con datos de UN comtradr

- Yahoo Finance (quantmod)

Quantmod es un paquete de Rstudio diseñado para asistir a los operadores cuantitativos (quantitative traders) en el desarrollo, pruebas y despliegue de modelos de trading basados en las estadísticas; proporciona un acceso estructurado a toda la información disponible en API finance, este también incluye soporte para múltiples idiomas, acceso a informes mensuales, trimestrales y anuales.

La librería Quantmod se puede traducir a un entorno rápido, donde los operadores cuantitativos pueden explorar y construir modelos de negociación rápida y limpiamente. A través de la función getSymbols podemos extraer datos financieros desde varias fuentes: Google Finance, Yahoo Finance y Federal Reserve Bank of St. Louis FRED. Con lo anterior nos facilita el modelado al eliminar los problemas de flujo de trabajo repetitivo relacionados con la gestión de datos, las interfaces de modelado y el análisis de rendimiento.

Funciones de getSymbols

  • La función se compone de 5 elementos principales:
  1. Nombre de la serie
  2. Fuente/source (src): src=“google”, src=“yahoo”, src=“FRED”
  3. Inicio de la serie (from): as.Date(“2020-02-06”)
  4. Fin de la serie (to): as.Date(“2021-10-25”)
  5. Periodo: puede ser daily, monthly or yearly

Con lo anterior la estructura de la función getSymbols se escribirá de la siguiente forma:

getSymbols(” “, src = , from = as.Date(” “), to = as.Date(” “), periodicity = )

Dentro de quantmod están albergados los rangos de precios de diferentes empresas con un respectivo código nemotécnico o ticker, una etiqueta de cotización también conocido como ticker, es un código alfanumérico que sirve para identificar de forma abreviada las acciones de una determinada empresa que cotiza en un determinado mercado bursátil. En R dicho código nos sirve para poder indicarle a la librería cual es la empresa que deseamos analizar, a continuación, se muestra un listado de las principales siglas a utilizar:

Nombre de Empresa

Ticker en R

Apple

AAPL

Google

GOOG

Facebook

FB

Amazon

AMZN

Netflix

NFLX

S&P 500 (Standard and Poor 500)

^GSPC

IPC de Mexico

^MXX

 

Una vez aclarado los conceptos básicos nos vamos a introducir a la parte práctica, es importante señalar que tenemos que instalar la librería “Quantmod” para luego utilizar la base de datos que ya esta incluida dentro de la librería.

library(quantmod)

Ejemplo 1: Se desea conocer los rangos de precios de la empresa Google a traves de Yahoo Finance para el año 2010

Especificamos que necesitamos analizar a la empresa “Google” con el ticker “GOOG”, “From” nos indica desde cuando queremos que inicie el periodo de estudio y “to” cuando finaliza dicho periodo, “periodicity” es el periodo con que se muestran los datos.

getSymbols("GOOG", src = "yahoo", from = "2010-01-01", to = "2010-12-31", periodicity = "daily") 
## [1] "GOOG"
head(GOOG) # Indicamos a R que nos muestre los primeros datos de la serie 
##            GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted
## 2010-01-04  15.61522  15.67898 15.54772   15.61024    78541293      15.61024
## 2010-01-05  15.62095  15.63739 15.48048   15.54150   120638494      15.54150
## 2010-01-06  15.58807  15.58807 15.10239   15.14972   159744526      15.14972
## 2010-01-07  15.17811  15.19305 14.76092   14.79704   257533695      14.79704
## 2010-01-08  14.74473  15.02493 14.67275   14.99430   189680313      14.99430
## 2010-01-11  15.05507  15.05507 14.79554   14.97163   289597429      14.97163
tail(GOOG) #Indicamos a R que nos muestre los ultimos datos de la serie
##            GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted
## 2010-12-22  15.04361  15.11833 15.02568   15.08072    48481040      15.08072
## 2010-12-23  15.07699  15.09343 14.99455   15.04934    44598542      15.04934
## 2010-12-27  15.01223  15.03813 14.93153   15.00326    48505130      15.00326
## 2010-12-28  14.99504  15.04037 14.89442   14.91709    42751645      14.91709
## 2010-12-29  14.99380  15.00401 14.91709   14.96889    40920808      14.96889
## 2010-12-30  14.89417  14.97711 14.87898   14.91559    39728356      14.91559

Gráfico de los precios de la empresa Google mediante el comando “ChartSeries”

chartSeries(GOOG,
            theme = chartTheme("white"), #Indicamos el tema de nuestro grafico
            bar.type = "hlc",    
            up.col = "green", #Color de la vela alza
            dn.col = "pink") #Color de la vela baja

Ejemplo 2. A continuacion se extraeran los datos del S&P 500 (Standard and Poor 500) para el periodo de 2010-01-01” hasta “2011-01-01”

Nota: S&P es el índice de referencia del mercado de acciones de Estados Unidos.

library (quantmod) #se carga la libreria

#Se especifica la estructura que tendra la serie
getSymbols("^GSPC", src = "yahoo", from = "2010-01-01", to = "2011-01-01", periodicity = "daily") 
## [1] "^GSPC"
chartSeries(GSPC,
            theme = chartTheme("white"),
            bar.type = "hlc",    
            up.col = "red", 
            dn.col = "black",
            TA=NULL) #Nos ayuda a imprimir  el grafico (introducimos "TA=NULL" PARA EVITAR QUE CHARTSERIES MUESTRE VOLUMEN)

Si queremos realizar filtros dentro del grafico para una mayor comprension seria de la siguiente forma:

chartSeries(GSPC, subset = "last 3 months", #Nos interesan los ultimos 3 meses
            theme = chartTheme("white"),
            bar.type = "hlc",    
            up.col = "red", 
            dn.col = "black")

Ejemplo 3 Multiples datos: Si queremos conocer las acciones de las empresas Amazon(AMZN), Apple(AAPL) y Netflix(NFLX) para el periodo de 2010-01-01 hasta 2018-07-30 seria de la siguiente forma:

library(quantmod)
getSymbols("AMZN", src = "yahoo", from = "2010-01-01", to = "2018-07-30", periodicity = "daily");
## [1] "AMZN"
getSymbols("AAPL", src = "yahoo", from = "2010-01-01", to = "2018-07-30", periodicity = "daily");
## [1] "AAPL"
getSymbols("NFLX", src = "yahoo", from = "2010-01-01", to = "2018-07-30", periodicity = "daily")
## [1] "NFLX"
plot(AMZN)

plot(AAPL)

plot(NFLX)

Ejemplo 4: Se desea realizar una transformacion de formato xts a dataframe para lo cual utilizaremos el IPC de Mexico que tiene como ticker “^MXX”

#Cargamos las librerias a utilizar 
library(quantmod)
library(xts)
library(ggplot2)
library(tidyverse)
library(zoo)
library(lubridate)


getSymbols("^MXX", src = "yahoo", 
           from= "2006-01-01", 
           to="2020-10-27", 
           periodicity="daily",
           format="xts")
## [1] "^MXX"
#Hacemos uso de la programación para elaborar una función que nos devuelva un dataframe de una serie xts

xts_to_datframe<-function(data_xts){
  df_t<-data.frame(fecha=(index(data_xts)),#index(data_xts): es una declaración que toma el tiempo de una serie xts diaria.
                   value=coredata(data_xts)) #coredata(data_xts): es una declaración que toma los valores de la serie xts diaria.
  colnames(df_t)<-c("fecha", "value")
  df_t
}


#Una vez que se crea la función, la utilizaremos para trasformar la serie
IPC<-xts_to_datframe(MXX$MXX.Adjusted) 

#MXX$MXX.Adjusted es la variable xts que utilizaremos

head(IPC) 
##        fecha    value
## 1 2006-01-02 17925.70
## 2 2006-01-03 18500.69
## 3 2006-01-04 18669.23
## 4 2006-01-05 18608.34
## 5 2006-01-06 18736.78
## 6 2006-01-09 18998.83

Gráficaremos el dataframe para corroborar que la transformación fue efectiva

ggplot(IPC, aes(x=fecha, y=value))+
  geom_line()+
  theme_minimal()+
  labs(title="IPC-Mexico",
       subtitle = "De 2006 a 2020",
       caption = "Elaboración propia con datos de Yahoo Finanzas")

b. Elabore un inventario de las series disponibles en cada API.

i. Presente mediante una tabla, para cada API las series disponibles y una breve descripción de la misma.

- Wbstats

Inventario de las series disponibles para la API del Banco Mundial (wbstats)

 

Función

Comando

Descripcion

wb

wb(country=”inserte_pais”,

indicador=”inserte_indicador”)

Permite Descargar datos de la API del Banco Mundial

wbcache

wbcache(lang = c("en", "es", "fr", "ar", "zh"))

Descarga una lista actualizada de información sobre países, indicadores, fuentes, catálogo de datos,

temas de indicadores, tipos de préstamos y niveles de ingresos de la API del Banco Mundial

wbcountries

wbcountries(lang = c("en", "es", "fr", "ar", "zh"))

Descarga información actualizada sobre países y regiones disponibles de la API del Banco Mundial

wbdatacatalog

wbdatacatalog()

Descarga una lista actualizada del catálogo de datos del Banco Mundial desde la API del Banco Mundial

wbget

wbget(url_stringindicator)

Esta función llama a wbget.raw y determina si hay varias páginas de la solicitud. Sí hay

son varias páginas, entonces si genera una lista de marcos de datos de cada página y luego combina los

resultados con do.call("rbind", mylist)

wbincome

wbincome(lang = c("en", "es", "fr", "ar", "zh"))

Descarga información actualizada sobre los tipos de ingresos disponibles de la API del Banco Mundial

wbindicators

wbindicators(lang = c("en", "es", "fr", "ar", "zh"))

Descarga información actualizada sobre indicadores disponibles de la API del Banco Mundial

wblending

wblending(lang = "es")

Descarga información actualizada sobre los tipos de préstamos disponibles de la API del Banco Mundial

wbsearch

wbsearch(pattern = "insert_topic", fields = c("indicator", "indicatorDesc"), extra = FALSE, cache

Esta función permite encontrar indicadores que coincidan con un término de búsqueda y devolver un marco de datos de coincidencia

resultados

wbsources

wbsources(lang = c("en", "es", "fr", "ar", "zh"))

Descargue información actualizada sobre las fuentes de datos disponibles de la API del Banco Mundial

wbstats

Library(wbstats)

wbstats: un paquete R para buscar y descargar datos del

API del Banco Mundial.

wbtopics

Topics<-wbtopics(lang = c("en", "es", "fr", "ar", "zh"))

Descargue información actualizada sobre el tema del indicador de la API del Banco Mundial

wb_cachelist

wb_cachelist

Información en caché de la API del Banco Mundial

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- Imfr

Inventario de las series disponibles para la API del Fondo Monetario Internacional (imfr)

 

Serie

Descripción

Country_set

 

Es un data frame que contiene 214 observaciones, en este caso países y 6 variables diferentes, se utiliza para que los usuarios puedan descargar datos de uno o más países.

Uso:

library(countrycode)

data(codelist)

country_set <- codelist

country_set<- country_set %>%

select(country.name.en , iso2c, iso3c, imf, continent, region) %>% filter(!is.na(imf) & !is.na(iso2c))

imf_databases

Se utiliza para conocer las diferentes bases de datos existentes dentro del FMI.

Uso:

imf_databases<-imf_ids()

Donde imf_ids() es: Lista de ID de la base de datos del IMF.

 

imf_codelist

Recupera la lista de códigos de una base de datos individual del FMI (Fondo Monetario Internacional). Estas pueden ser de escala, frecuencia, área geográfica, indicador o un formato de tiempo.

Uso:

IPC_codelist <- imf_codelist(database_id= "CPI")

imf_codes

Sirve para hacer uso de los diferentes códigos existentes en imf_codelist.

Uso:

IPC_codigos_indicadores <- imf_codes(codelist = "CL_INDICATOR_CPI")

Mediante este código se podrá obtener acceso a los diferentes indicadores del Índice de Precios al Consumidor.

Freq

Sirve para seleccionar la frecuencia en la que se quiera obtener los datos

Uso:

Freq = ‘A’ (para datos anuales)

Freq = ‘M’ (para datos mensuales)

Country

Para seleccionar el país de interés

Start y current_Year

Para seleccionar el año de inicio y final de los datos a obtener

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- Comtradr

Inventario de las series disponibles para la API de Naciones Unidas (comtradr).

 

Serie

Descripción

ct_search()

 

ct_search(reporters = "El Salvador",

partners = c("País 1", "País 2 ", … “Pais etc"),

trade_direction = "imports")

ct_search realiza consultas a la API Comtrade de la ONU, los datos se devuelven como un marco de datos ordenado

·         reporters: País(es) de interés, como vector de caracteres. Puede ser un vector de nombres de países o "All" para representar a todos los países.

·         Partners: País(es) que han interactuado con el(los) país(es) informante(s), como un vector de caracteres. Puede ser un vector de nombres de países o "all" para representar a todos los países.

·         trade_direction; se refiere al indicador comercial que requerimos conocer, los cuales pueden ser; "imports", "exports", "re_imports", "re_exports", caso contrario al no indicarserle el valor predeterminado es "all".

ct_country_lookup()

Es útil para buscar el nombre de un país del cual desconocemos su escritura correcta en la base de datos,

Ejemplo: ct_country_lookup("korea")

Y obtenemos como resultado

[1] "Dem. People's Rep. of Korea" "Rep. of Korea"

 

ct_commodity_lookup()

Esta es una función auxiliar para consultar la base de datos de productos el código de este.

Ejemplo:

ct_commodity_lookup("tomato").

Y obtenemos como resultado

[1] "0702 - Tomatoes; fresh or chilled"

[2] "070200 - Vegetables; tomatoes, fresh or chilled"

 

ct_register_token

Función para configurar un token de API Comtrade de la ONU.

 

ct_update_databases

Esta función verificará si Comtradr ha realizado alguna actualización en cualquiera de las bases de datos. Si hay una actualización encontrada, descargará la base de datos actualizada y la guardará en el directorio del paquete comtradr, y actualizará la base de datos para su uso dentro de la sesión actual de R.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- Quantmod:

Inventario de las series disponibles para la API de Yahoo Finance (quantmod).

SERIE

DESCRIPCION

getSymbols

 

getSymbols es un contenedor para cargar datos de varias fuentes, locales o remotas. Los datos son 'cargados' silenciosamente por la función en el entorno especificado. Su formato más común es:

getSymbols(" ", src = , from = as.Date(" "), to = as.Date(" "), periodicity = )

 

chartSeries

Dentro de la librería quantmod nos sirve para dibujar los gráficos que por defecto los crea en formato de velas japonesas, por ejemplo:

chartSeries(GOOG, #Ticker de la empresa

theme = chartTheme("white"), #Tema o fondo que tendra el grafico

bar.type = "hlc",

up.col = "green", #Color de la vela alza

dn.col = "pink") #Color de la vela baja

Head()

Nos muestra los primeros datos de nuestra serie en análisis o estudio por ejemplo, si deseamos conocer los primeros datos de Google seria:

Head(GOOG)

Tail()

Este comando nos indica o nos muestra cuales son los últimos datos de nuestra serie en estudio, por ejemplo:

Tail(GOOG) nos mostrara los últimos datos de la serie Google

Plot

Es otra forma manera en que podemos imprimir el grafico de nuestra serie en estudio.

 

Bibliografía

FMI. (s.f.). Fondo Monetario Internacional. Obtenido de ¿Qué es el FMI?: https://www.imf.org/es/About/Factsheets/IMF-at-a-Glance

Finance-r. (s.f.). Obtenido de Introducción a las finanzas quantitativas: https://finance-r.netlify.app/quantmod.html

Mundial, B. (s.f.). Banco Mundial. Obtenido de El Grupo Banco Mundial y el Fondo Monetario Internacional (FMI): https://www.bancomundial.org/es/about/history/the-world-bank-group-and-the-imf

Naciones Unidas, C. E.-C. (s.f.). Repositorio Cepal. Obtenido de Guía Básica de Conceptos y Nomenclaturas de Bases de Datos y Aplicaciones de Comercio Internacional : https://repositorio.cepal.org/bitstream/handle/11362/25806/1/LCmexL784_es.pdf


h1,h2,h3,h4{
   font-size:14px;
   font-weight: bold;
   font-family: 'Times New Roman', Times, serif;
   line-height:2;
}
h1 {
   text-align: center;
}
h4{
   text-align:center;
   font-weight: bold
}
p, li{
 text-indent: 40px;
   font-size:12 px;
   font-family: 'Times New Roman', Times, serif;
     line-height: 2;
}