Mejores Librerías de Python Para Análisis Fundamental

0
5
Análisis fundamental en Python

Análisis fundamental en Python

¿Te interesa el trading y la programación en Python? ¿Tu enfoque de análisis preferido es el análisis fundamental? En este artículo mostramos las principales librerías de Python para aplicar el enfoque fundamental en el análisis de múltiples mercados financieros.

¿Porque usar Python para análisis fundamental?

Python es una excelente opción para el análisis fundamental de distintos mercados, sobre todo el mercado de valores, debido a su versatilidad, facilidad de uso y el ecosistema de librerías especializadas. En primer lugar, cuenta con bibliotecas poderosas para manejar datos financieros y realizar análisis cuantitativo. Lo mejor de todo es que estas librerías son gratuitas y en la mayoría de los casos son fáciles de usar.

Estas librerías permiten automatizar la recolección y procesamiento de datos, lo que evita errores manuales. Además, facilitan el cálculo rápido de métricas clave (P/E, EV/EBITDA, ROE, crecimiento de ingresos, etc.). Y mediante la programación adecuada se pueden usar para analizar múltiples empresas o sectores de manera simultánea.

En Python podemos combinar el análisis fundamental con machine learning gracias a librerías como scikit-learn y TensorFlow que cuentan con múltiples herramientas incorporadas de machine learning como redes neuronales. Esto puede servir para predecir tendencias o detectar patrones.

Herramientas como StatsModels permiten realizar regresiones y análisis estadísticos para validar hipótesis.

Así mismo, Python permite trabajar desde análisis simples (ej: calcular el PER de una acción) hasta modelos complejos (DCF – Flujo de Caja Descontado). Es fácil integrarlo con bases de datos (SQL, MongoDB) o APIs de brokers para estrategias de inversión automatizadas.

Finalmente, hay una gran cantidad de tutoriales, cursos y ejemplos enfocados en finanzas cuantitativas y análisis fundamental.

Ahora vamos a mostrar las principales librerías que ofrece este lenguaje para aplicar el enfoque fundamental con códigos de ejemplo.

Lista de librerías de Python para Análisis Fundamental

yfinance

Ya hemos hablado de esta librería. yfinance es una librería de Python que permite acceder a datos históricos y en tiempo real de Yahoo Finance. Es ampliamente utilizada en el análisis fundamental debido a su facilidad de uso y a la gran cantidad de información financiera que proporciona, como precios de acciones, dividendos, splits y estados financieros (balance sheet, income statement y cash flow statement).

Ventajas:

  • No requiere API key.
  • Proporciona datos consolidados de miles de empresas.
  • Permite descargar datos históricos con granularidad diaria, semanal o mensual.

Ejemplo de Uso:

import yfinance as yf

# Obtener datos financieros de Microsoft (MSFT)
msft = yf.Ticker("MSFT")

# Mostrar el PER (Price-to-Earnings Ratio)
print(f"PER de Microsoft: {msft.info['trailingPE']}")

# Descargar el balance sheet anual
balance_sheet = msft.balance_sheet
print(balance_sheet.head(3))  # Primeras filas del balance

pandas

Es otra librería bastante popular de la que hemos hablado anteriormente. pandas es una librería esencial para el análisis de datos en Python. En el contexto del análisis fundamental, se utiliza para manipular DataFrames (estructuras tabulares) que contienen información financiera, como estados de resultados, balances generales y flujos de efectivo. Permite calcular ratios financieros, filtrar datos y realizar operaciones avanzadas de agregación.

Ventajas:

  • Sintaxis intuitiva para manipulación de datos.
  • Integración con otras librerías como numpy y matplotlib.
  • Soporte para operaciones vectorizadas (rápidas y eficientes).

Ejemplo de Uso:

import pandas as pd

# Calcular el margen bruto a partir de un income statement
income_stmt = pd.DataFrame({
    'Year': [2020, 2021, 2022],
    'Revenue': [100_000, 120_000, 150_000],
    'Gross Profit': [60_000, 72_000, 90_000]
})

income_stmt['Gross Margin (%)'] = (income_stmt['Gross Profit'] / income_stmt['Revenue'] * 100).round(2)
print(income_stmt)

fundamentalanalysis

fundamentalanalysis es una librería especializada en datos fundamentales extraídos de la SEC (U.S. Securities and Exchange Commission). Proporciona acceso a reportes 10-K, 10-Q y otros documentos regulatorios, lo que la hace ideal para análisis detallados de empresas cotizadas en EE.UU.

Ventajas:

  • Datos directamente de fuentes oficiales (SEC).
  • Incluye métricas avanzadas como Free Cash Flow, Deuda Neta, etc.

Ejemplo de Uso:

import fundamentalanalysis as fa

api_key = "TU_API_KEY"  # Registrarse en https://site.financialmodelingprep.com
ticker = "TSLA"

# Obtener el balance sheet anual de Tesla
balance_sheet = fa.balance_sheet_statement(ticker, api_key)
print(balance_sheet[['totalAssets', 'totalLiabilities']].head())

BeautifulSoup + requests (Web Scraping)

BeautifulSoup (junto con requests) permite extraer datos de páginas web que no ofrecen APIs públicas. En análisis fundamental, se utiliza para obtener información de portales financieros como Yahoo Finance, Bloomberg o Morningstar cuando los datos no están disponibles en yfinance u otras APIs.

Ventajas:

  • Flexibilidad para extraer datos de casi cualquier sitio web.
  • Útil cuando no hay una API disponible.

Limitaciones:

  • Requiere mantenimiento si la estructura HTML del sitio cambia.
  • Puede violar los términos de servicio de algunos sitios.

Ejemplo de uso:

import requests
from bs4 import BeautifulSoup

# Extraer el precio de una acción desde Yahoo Finance
url = "https://finance.yahoo.com/quote/AAPL"
response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(response.text, 'html.parser')

price = soup.find("fin-streamer", {"data-symbol": "AAPL"})['value']
print(f"Precio de AAPL: ${price}")

alpha_vantage

alpha_vantage es una librería que se conecta a la API de Alpha Vantage, proporcionando datos históricos de acciones, indicadores técnicos y datos fundamentales (EBITDA, ingresos, etc.). Es útil para análisis cuantitativo y fundamental.

Ventajas:

  • Ofrece datos en tiempo real e históricos.
  • Incluye información macroeconómica (ej: tipos de interés).

Limitaciones:

  • Requiere API key (gratuita con límite de solicitudes).

Ejemplo de Uso:

from alpha_vantage.fundamentaldata import FundamentalData

api_key = "TU_API_KEY"  # Obtener en https://www.alphavantage.co/
fd = FundamentalData(api_key, output_format='pandas')

# Obtener el income statement anual de Amazon (AMZN)
income_stmt, _ = fd.get_income_statement_annual(symbol="AMZN")
print(income_stmt[['revenue', 'netIncome']].head())  # Ingresos y beneficio neto

matplotlib / seaborn (Visualización)

matplotlib y seaborn son librerías para visualización de datos. En análisis fundamental, se usan para crear gráficos de tendencias financieras (ej: evolución de ingresos, deuda/patrimonio, ROE histórico).

Ventajas:

  • Personalización avanzada de gráficos.
  • Integración con DataFrames de pandas.

Ejemplo de Uso:

import matplotlib.pyplot as plt
import seaborn as sns

# Datos de ejemplo: ROE histórico
years = [2018, 2019, 2020, 2021, 2022]
roe = [15, 18, 20, 22, 25]  # En porcentaje

plt.figure(figsize=(8, 4))
sns.lineplot(x=years, y=roe, marker="o")
plt.title("ROE Histórico (2018-2022)")
plt.ylabel("ROE (%)")
plt.grid(True)
plt.show()

Alternativas menos conocidas

FinancialModelingPrep (FMP)

Ofrece una API con datos fundamentales detallados (10-K, 10-Q), ratios, crecimiento histórico, y hasta datos de insider trading. Es una de las alternativas más completas a Yahoo Finance.

Ventajas:

  • Datos limpios y estructurados directamente de la SEC.
  • Permite descargar estados financieros en formato JSON o pandas.

Ejemplo de uso:

import requests

api_key = "TU_API_KEY"  # Regístrate en https://site.financialmodelingprep.com
ticker = "AAPL"
url = f"https://financialmodelingprep.com/api/v3/income-statement/{ticker}?apikey={api_key}"
response = requests.get(url).json()

# Mostrar ingresos y beneficio neto anual
for statement in response[:3]:  # Últimos 3 años
    print(f"Año {statement['date']}: Ingresos = ${statement['revenue']/1e9}B, Net Income = ${statement['netIncome']/1e9}B")

EOD Historical Data

Proporciona datos históricos de cierre, dividendos, splits, y fundamentales (EBITDA, deuda, etc.) para mercados globales. Ideal para análisis de empresas fuera de EE.UU.

Ventajas:

  • Cobertura internacional (bolsas europeas, asiáticas, etc.).
  • Datos ajustados por dividendos.

Ejemplo de uso:

import pandas as pd

api_key = "TU_API_KEY"  # https://eodhistoricaldata.com
ticker = "AAPL.US"  # Formato: [Símbolo].[Mercado]
url = f"https://eodhistoricaldata.com/api/fundamentals/{ticker}?api_token={api_key}"
data = pd.read_json(url)

# Extraer P/E y deuda total
pe = data['Valuation']['PriceBookMRQ']
total_debt = data['Financials']['Balance_Sheet']['yearly'][0]['totalDebt']
print(f"P/B: {pe}, Deuda Total: ${total_debt/1e9}B")

Quandl (ahora parte de Nasdaq Data Link)

Base de datos con información financiera, económica y alternativa (ej: datos de ESG, commodities). Incluye datasets premium como Sharadar (fundamentales) y Zacks Earnings.

Ventajas:

  • Datos limpios y normalizados.
  • Algunos datasets son gratuitos (ej: precios históricos).

Ejemplo de uso:

import quandl

api_key = "TU_API_KEY"  # https://data.nasdaq.com
quandl.ApiConfig.api_key = api_key

# Descargar EBITDA de Microsoft (Sharadar dataset)
data = quandl.get("SHARADAR/SF1", ticker="MSFT", dimension="ARQ", qopts={"columns": ["ebitda"]})
print(f"EBITDA trimestral de MSFT:\n{data.tail()}")

Recomendación general

Con base en esta lista de librerías, recomendamos lo siguiente:

  • Usar yfinance o alpha_vantage para datos de mercado.
  • Emplear pandas y numpy para manipulación y cálculos.
  • Considerar fundamentalanalysis para datos más detallados (SEC).
  • Utilizar matplotlib/seaborn para gráficos profesionales.

Conclusion

Como hemos visto, estas librerías conforman un ecosistema robusto para el análisis fundamental en Python, permitiendo desde la extracción de datos hasta su visualización. Su combinación facilita tareas como:

  • Cálculo de ratios financieros (PER, ROE, margenes).
  • Análisis histórico de estados financieros.
  • Comparativas entre empresas o sectores.
  • Automatización de informes.

En conjunto, pueden usarse para tener un panorama general de los fundamentos detrás del movimiento de una acción, un sector o del mercado a nivel general.


 

TagsPython

Leave a reply