dabu es un paquete de python enfocado en obtener información bursátil de las emisoras de capitales de la Bolsa Mexicana de Valores:
- Precios de mercado (De Yahoo!Finance)
- Precio de cierre diario (Apertura, Máx, Mín, Cierre)
- Precio intradía
- Reportes trimestrales (CNBV, 2017Q1 al presente)
- Balance General
- Estado de Resultados
- Flujos de efectivo
pip3 install dabu
- Python 3.9.1
- Pandas 1.2.0
- Requests 2.25.1
import dabu as db
amxl = db.Precios('amxl', '2021-01-10', '2021-02-04').resultado
amxl
Desplegara amxl
como un DataFrame de pandas.
Puedes incluir una lista de tickers en lugar de una sola emisora. Por default, Precios
descarga el Precio Ajustado
y
lo puedes cambiar por el precio de apertura
, max
, min
o cierre
.
maximo = db.Precios(['amxl', 'walmex', 'femsaubd'], '2021-01-20', '2021-02-04', tipo_precio='max').resultado
maximo
Puedes utilizar Intradia
. El intervalo por default es de 1m
y lo puedes cambiar a 2m
, 5m
,
10m
, 15m
, 30m
, 60m
y 90m
. Al parecer Yahoo! Finance solo guarda los últimos 29 días con intervalos de 1m
y no puedes
descargar un rango mayor a 7 días, utilizando intervalos de 1m
.
walmex = db.Intradia('walmex', '2021-01-30', '2021-02-04').resultado
walmex
datos = db.Reportes()
Vamos a decargar el Balance General de AC ("Arca Contal") del 1er trimestre de los años 2018 al 2020. La información
la desplegaremos utilizando el atributo .head()
de pandas.
ac = datos.balance('ac', ['2017-03-31','2018-03-31', '2019-03-31', '2020-03-31'])
ac.head()
Una vez cargada la instancia, no es necesario volverla a correr para cargar nueva información. Vamos a cargar el Estado de Resultados de WALMEX ("WalMart de México") al tercer trimestre del 2019 y 2020.
walmex = datos.restulados('walmex', ['2019-09-30', '2020-09-30'])
walmex.head()
Vamos a desplegar los Flujos de Efectivo de WALMEX para el mismo periodo que el Estado de Resultados.
walmex_cf = datos.flujos('walmex',['2019-09-30', '2020-09-30'])
walmex_cf.head()
Hasta este punto, solamente hemos comparado un estado financiero contra diferentes trimestres de una misma emisora.
También podemos comprar varias emisoras en un estado financiero utilizando el método comparar
.
ingresos = datos.comparar( 'flujos', '2020-09-30',['walmex', 'ac', 'femsa', 'cemex'])
ingresos.head()
Puedes enlistar todas las emisoras que tienen reportes financieros utilizando
data.lista_emisoras
Recuerda que puedes utilizar todas las funcionalidades de pandas para:
- Generar señales de compra y venta en las series de tiempo
- Calcular razones financieras
- Realizar gráficas
- Grabar DataFrames a Excel o a archivo csv
- Etc.
dabu es distribuido bajo la licencia BSD 3-Clause. Lee el archivo LICENSE.txt para mayor información.
Espero que este paquete te sea útil. Porfavor escribeme cualquier sugerencia, pregunta o simplemente si quieres saludar a [email protected]!
Carlos Crespo