Datos Fundamentales de Empresas Cotizadas en Bolsa

SimFin es una plataforma que proporciona datos financieros fundamentales y precios de acciones de empresas cotizadas en mercados estadounidenses (NYSE, NASDAQ, etc.). En el momento de escribir este artículo, SimFin ofrece datos de 2,452 empresas diferentes.

En este artículo vamos a hablar de SimFin, los datos y servicios que ofrece, cómo los puedes descargarlo y cómo usar python para transformar los datos. Para este análisis, usaremos los datos históricos que son gratuitos.

Servicios Ofrecidos por SimFin

SimFin ofrece los siguientes servicios:

  • Buscador de acciones: permite encontrar fácilmente qué empresas cumplen con los criterios de búsqueda que te interesen. Por ejemplo, puedes buscar qué empresas ofrecen un dividendo mayor del 3% y que además hayan incrementado sus ventas en los últimos años. Ofrece la posibilidad de exportar estos datos en un formato compatible con excel.
  • Perfiles detallados de compañías: si te interesa saber más acerca de una compañía, puedes leer su perfil detallado. Ofrece la posibilidad de exportar estos datos en un formato compatible con excel.
  • Transparencia de datos: si te interesa, puedes ver las fórmulas de cómo se calculan los ratios y valores contables que no procede directamente de los informes financieros.

Plataforma de Investigación de SimFin

Datos Fundamentales Financieros (incluye precio de acciones) en SimFin

Ya hay varios sitios online donde podemos obtener automáticamente datos de precios e indicadores técnicos. Lo que hace único a SimFin es que además de los precios históricos, proporciona también los datos fundamentales de cada empresa a lo largo del tiempo. Así, si nos interesa, también podemos ver cómo los datos fundamentales han cambiado en los últimos años.

SimFin ofrece dos formas de acceder a sus datos financieros: en tiempo real o como descarga de datos históricos

SimFin: Acceso a Datos

En tiempo real (necesita SimFin+)

Si accedemos a los datos financieros de SimFin en tiempo real, podemos saber las últimas novedades de las compañías que nos interesen. Por ejemplo, el precio en tiempo real y los valores fundamentales más recientes. El acceso a estos datos se hace a través de una API (Application Programming Interface), que en español vendría a decir: Interface de Programación de Aplicaciones. Esta API nos va a permitir acceder tanto a los datos como al buscador de acciones.

Para usar este interfaz en tiempo real de acceso a datos financieros necesitamos ser usuarios de SimFin+. Es un servicio de suscripción (de pago). Sin embargo, para probar el interfaz podemos usar la API 2,000 veces al día gratuitamente.

Datos Históricos Fundamentales (gratis)

Los datos históricos fundamentales son ¡gratis! SimFin los ofrece gratis para que podamos experimentar con ellos y podamos evaluar si nuestras ideas funcionan. Para acceder a estos datos hay que registrarse en su web. Por lo demás es bastante fácil. Sólo tenemos que elegir qué datos queremos y recibiremos un fichero comprimido como descarga directa.

En el siguiente ejemplo vemos cómo he seleccionado tantos los datos fundamentales (incluyendo ratios) como los precios. El formato que he elegido, para este ejemplo, ha sido el del uso de los ratios calculados al final del período, usando datos fundamentales anuales, en formato estrecho y separados por comas.

Descarga de Datos Históricos Fundamentales de Empresas Cotizadas en Bolsa Estadounidense

Lectura de datos fundamentales de SimFin en python

# importamos las librerías
import pandas as pd

# lectura del fichero
simfin = pd.read_csv('output-mixeddet-ttm-gaps-period-comma-narrow.zip')

# inspeccionamos el fichero
simfin.head()

Datos de SimFin originales

Los campos disponibles son:

  • Ticker: el símbolo con el que cotizan en bolsa. Por ejemplo, en la bolsa americana, Apple cotiza con el símbolo AAPL
  • SimFin ID: código de identificación interno a SimFin
  • Company Industry Classification Code: qué tipo de industria es de acuerdo con el  estándar de clasificación industrial americano
  • Indicator Name: el nombre del indicador. Por ejemplo, el número de acciones disponible, retorno de los activos, etc.
  • date: la fecha
  • Indicator Value: el valor numérico correspondiente al indicador de esta fila

A lo mejor no necesitamos el identificador de SimFin (SimFin ID). Así que lo podemos eliminar. También podemos renombrar las otras columnas para que sea más fácil trabajar con ellas y convertir la fecha a representación de fecha en pandas.

del(simfin['SimFin ID']) # borramos la columna "SimFin ID"

# usaremos estos nombres más cortos para los atributos
simfin.columns = ['ticker', 'industry', 'indicator', 'date', 'value'] 

simfin['date'] = pd.to_datetime(simfin['date']) # convertimos a fecha de pandas

simfin.head() # visualizamos como queda

Datos Fundamentales de SimFin simplificados

Como te habrás dado cuenta, cada fila corresponde con un indicador para una empresa. Dependiendo del tipo de aplicaciones que estemos desarrollando, puede ser más práctico reestructurar los datos. Por ejemplo, podríamos reestructurar estos datos para que cada columna correspondiese a un indicador diferente. Vamos a usar las tablas pivot en pandas para conseguirlo.

# usaremos como índice el ticker y la fecha
# las columnas serán los indicadores
# los valores de cada celda en la tabla, los valores de los indicadores
pivot = simfin.pivot_table(index=['ticker', 'date'], columns='indicator', values='value')

# veamos como quedan los últimos valores disponibles para Apple
pivot.loc['AAPL'].ffill().tail()

Datos de Apple de SimFin en una tabla pivot

Ideas para sacarle partido a estos datos

  • Análisis Fundamental: puedes intentar determinar el auténtico valor de una acción con análisis fundamental
  • Análisis Técnico: como SimFin también proporciona los datos diarios, puedes también probar a hacer análisis técnico
  • Entender el pasado: puedes usar alguna técnica de aprendizaje automático para resumir de forma concisa qué características tenían las empresas que más subieron en la bolsa estadounidense en los últimos años. Por ejemplo, puedes usar un árbol de decisión para regresión que prediga el retorno de la inversión dentro de un año. Otra posibilidad es usar un árbol de decisión para clasificación para predecir si el precio de una acción será mayor o menor al cabo de un año.
  • Predecir el futuro: este es sin duda la idea más difícil que te propongo. Puedes intentar entrenar un modelo con estos datos para predecir qué va a pasar en el futuro. Como siempre, ten en cuenta su capacidad de generalización. Si generaliza bien, pruébalo durante un tiempo con datos nuevos (por ejemplo, los datos del próximo mes) para ver cómo se comporta de verdad antes de invertir. La idea es estar seguros de que no has usado algún dato futuro accidentalmente en la evaluación del modelo que podría hacer que los resultados parezcan mejor de lo que en realidad son. A este fenómeno se le denomina en inglés data leakage. Es español lo podríamos traducir por filtración de datos.

Si te decides a hacer algún análisis con los datos fundamentales ofrecidos por SimFin, puedes contárnoslo en los comentarios.

Actualización 29.03.2020

  • simfin ha cambiando el formato de los datos, por lo que los ejemplos seguramente dejen de funcionar con el formato nuevo.
  • además ha empezado a cobrar por los datos más recientes. Los datos históricos antiguos (con un retraso de 12 meses) son gratuitos. Los puedes descargar en este enlace.

 

1 comentario en «Datos Fundamentales de Empresas Cotizadas en Bolsa»

Deja un comentario