Cómo obtener datos históricos financieros de una o varias empresas y cómo generar gráficas para su análisis con Python. Obtenemos datos de precios de cotización de Google, Tesla y Facebook, usando Yahoo Finanzas (gratuito) y la librería de Python yfinance. Dibujamos gráficas comparativas entre estas empresas con Python y la librería matplotlib.

Requisitos para obtener y analizar datos financieros con Python

Necesitaremos disponer de Python instalado en el equipo. En el siguiente artículo explicamos cómo instalarlo en Windows:

Usaremos un entorno de programación, por ejemplo Visual Studio Code, como el usado en el artículo anterior.

En sistemas Linux suele venir instalado Python.

Utilizaremos para este artículo algunas librerías adicionales de Python, una de ellas es yfinance, que podemos instalar desde la línea de comandos con:

pip install yfinance

Y para la extracción de datos online usaremos la librería pandas, en este artículo explicamos cómo instalarla en Python y cómo usarla:

Para dibujar las gráficas usaremos la librería matplotlib, que podemos instalar con:

pip install matplotlib

Obtener ticker de una compañía/empresa/organización

En primer lugar necesitaremos el nombre del ticker que requiere la librería yfinance. Cada compañía suele tener su identificativo (ticker). Por ejemplo, si accedemos a la URL:

Nos mostrará datos actuales de cotización de Google y también su nombre de ticker, en este caso GOOG:

Obtener ticker de una compañía/empresa/organización

Para el caso de Tesla será TSLA y para Facebook será FB. Estos serán los tikers de ejemplo que usaremos en este artículo.

Existen muchas otras librerías y orígenes de datos para obtener tickers de empresas, algunas son de pago. En nuestro caso hemos usado Yahoo finanzas, que es gratuita y válida para los ejemplos que realizaremos.

Gráfica de evolución del precio de cotización de Google GOOG con Python, yfinance, pandas y matplotlib

Abriremos el entorno de programación para Python, en nuestro caso Visual Studio Code, crearemos un nuevo fichero python con el nombre finanzas.py y agregaremos los imports de las librerías que vamos a usar:

A continuación agregaremos el código para obtener los datos (online) del ticker indicado, como ejemplo de Google, con el ticker GOOG, e indicando la fecha desde la que queremos obtener los datos, por ejemplo, desde el 1 de enero de 2012 hasta la fecha actual:

Y mostramos los cinco primeros registros obtenidos para comprobar que todo funciona correctamente:

Si compilamos la aplicación Python, nos debe mostrar los cinco primeros registros de cotización de Google desde el año 2012:

Gráfica de evolución del precio de cotización de Google GOOG con Python, yfinance, pandas y matplotlib

Una vez depurada y verificada la información obtenida, podremos dibujar una gráfica usando matplotlib, añadiendo el código Python:

Si compilamos ahora nuestra aplicación nos mostrará el gráfico con los datos obtenidos, en el eje X el año y en el Y el precio de cotización:

Gráfica de evolución del precio de cotización de Google GOOG con Python, yfinance, pandas y matplotlib

El código Python completo del ejemplo anterior:

Mostrar varios tickers en la gráfica, por ejemplo para Google, Tesla y Facebook

Para mostrar varios tickers en una misma gráfica y así poder comparar entre empresas, usaremos el mismo código anterior (o parecido), añadiendo una lista de tickers en lugar de uno sólo, el código Python será:

Si compilamos obtendremos un dataframe con los datos de las tres empresas:

Mostrar varios tickers en la gráfica, por ejemplo para Google, Tesla y Facebook

Ahora dibujamos la gráfica para mostrar visualmente la diferencia y evolución de cada una de ellas, el código completo Python:

Si compilamos la aplicación Python, obtendremos una gráfica con tres líneas (una por cada empresa), con su evolución y comparativa visual, también mostramos la leyenda para saber qué color corresponde a cada empresa:

Mostrar varios tickers en la gráfica, por ejemplo para Google, Tesla y Facebook

En la gráfica anterior cada empresa tiene su magnitud de valores de datos, su naturaleza, por ello, vemos que hay una de las líneas que se «dispara». Para solucionar esto, usaremos valores absolutos en función de su valor inicial:

Ahora al compilar y analizar el resultado, los valores sí que están en su misma magnitud, aunque vemos que la serie de Facebook no aparece:

Mostrar varios tickers en la gráfica, por ejemplo para Google, Tesla y Facebook

Esto es debido a que en la fecha de inicio (enero de 2012) tal vez no había datos para Facebook, y al dividir por ese primer valor inexistente el resto de la serie nos dará nula. Para solucionarlo ampliaremos la fecha de inicio, por ejemplo a 2014 y ahora sí que obtendremos la gráfica comparativa correcta:

Mostrar varios tickers en la gráfica, por ejemplo para Google, Tesla y Facebook