Descargar dividendos recientes con Python, pandas y Yahoo_fin.

Yahoo_fin es un paquete de Python 3 diseñado para hacer scraping de datos históricos de precios de acciones, así como para proporcionar información actual sobre límites de mercado, rendimientos de dividendos y qué acciones comprenden las principales bolsas.

Nota actual sobre fuentes de datos financieros

Este articulo debe leerse como flujo didactico, no como recomendacion de inversion ni como fuente de datos de mercado para produccion. Librerias como yahoo_fin dependen de acceso no oficial a datos de Yahoo Finance y pueden fallar si cambian paginas, endpoints o condiciones. Antes de usar el CSV en una decision real, valida los dividendos contra un proveedor oficial, la pagina de relacion con inversores de la empresa o tu broker, y revisa moneda, fechas ex-dividendo y acciones corporativas.

Para un proyecto en produccion, separa el ejercicio del contrato de datos: cachea respuestas, registra tickers fallidos, reintenta de forma prudente, guarda la fecha de extraccion y compara el resultado con una fuente con licencia. Nasdaq Data Link, feeds de bolsa, APIs de broker o proveedores de datos de pago son referencias mas adecuadas cuando importan precision, licencia y soporte. Si prefieres una libreria abierta de Yahoo mas mantenida para investigacion, yfinance tambien es comun, pero su propia documentacion avisa de que no esta afiliada a Yahoo y esta orientada a investigacion y uso educativo.

Entre sus principales funcionalidades tenemos:
  • Recopilación de estados de resultados, balances, flujos de efectivo
  • Información de la empresa
  • Datos de analistas
  • Precios de acciones en tiempo real
  • Capturar datos de criptomonedas
  • Obtener las acciones negociadas más activamente en un día de negociación actual
  • Recuperar los precios de las opciones y las fechas de vencimiento.
  • Rastrear el historial del calendario de ganancias
  • RSS de noticias financieras
En este artículo nos centraremos en la descarga de dividendos, exactamente explicaremos cómo obtener un histórico reciente proporcionando una lista de tickers y almacenar el resultado en un fichero .csv para su posterior consulta.

Cuándo resulta útil este script de dividendos

El objetivo no es consultar un único valor de forma manual, sino generar un proceso repetible. Al mantener la lista de tickers en un CSV, puedes cambiar el conjunto de empresas, volver a ejecutar el script y obtener una tabla final preparada para pandas, hojas de cálculo o un panel de análisis.

Este tutorial encaja con otros contenidos de datos financieros, como qué es el mercado de valores y el análisis de reputación y sentimiento alrededor de Bitcoin.

Instalación del paquete y preparación del entorno.

Para poder llevar a cabo el proyecto, el primer paso es ejecutar el siguiente comando para descargarse el proyecto del repositorio github.

Una vez ya hemos descargado el proyecto, el siguiente paso es configurar nuestro entorno de programación python descargando todas las librerías necesarias para el proyecto

El proyecto que vamos a gestionar, esta almacenado en el directorio obtener_historico_dividendos y esta compuesto por dos ficheros: historico_dividendos.py y tickers.csv

EL fichero tickers.csv tiene almacenado un listado de tickers (abreviaturas de las empresas) a consultar. El formato del fichero tiene que ser como se muestra a continuación:

EL fichero historico_dividendos.py contiene el código que explicaremos en el siguiente apartado.

Explicación del fichero historico_dividendos.py

Este fichero contiene el siguiente código:

Dentro del código expuesto anteriormente, la primera parte corresponde a la carga del fichero tickers.csv con la librería panda de Python. El código es el siguiente:

El código continua creando un dataframe vacio dónde se almacenará toda la información que nos proporcione Yahoo_fin. A partir de este momento, lo único que vamos a realizar es una iteración que dependerá de la cantidad de valores almacenados en el fichero tickers.csv.

En este punto es importante analizar que tipo de información nos proporciona el método get_dividends(). Para ello os dejo la siguiente tabla:

dividendticker
2019-08-260.95JNJ
2019-11-250.95JNJ
2020-02-240.95JNJ
2020-05-221.01JNJ
2020-08-241.01JNJ
2020-11-231.01JNJ
2021-02-221.01JNJ

Además, para este ejercicio no queremos la información completa, con los últimos dividendos nos vale. Por ello crearemos la variable fecha_de_inicio que contiene el resultado de restar a la fecha de hoy 600 días. Una vez realizada la operación, simplemente realizamos la consulta de la siguiente forma:

El resultado lo añadimos al dataframe obtenido al principio. Importante ordenarlo por fecha.

El resultado es almacenado en un fichero resultados_dividendos.csv' con el siguiente formato:

CBAWKSCUJNJMO
2021-03-240.86
2021-03-180.78
2021-02-242.35
2021-02-221.01
2021-02-050.55
2020-12-240.86
2020-12-170.78
2020-11-231.01
2020-11-090.55
2020-09-170.78
2020-09-140.86
2020-08-241.01
2020-08-110.55
2020-06-180.78
2020-06-120.84
2020-05-221.01
2020-05-110.55
2020-03-240.84
2020-03-190.75
2020-02-240.53
2020-02-240.95
2020-02-060.5
2019-12-240.84
2019-12-190.75
2019-11-250.95
2019-11-150.03
2019-11-080.5
2019-09-190.75
2019-09-130.84
2019-08-260.95
2019-08-130.32

El código utilizado es:

Si lo desea puede consultar el el siguiente video explicativo https://www.youtube.com/watch?v=v3LNklgOvvc: