finlight Logo

Tuesday, September 15, 2026

Transmite noticias bursátiles en tiempo real en Python con finlight

Kevin Bartsch

Transmite noticias bursátiles en tiempo real en Python con finlight

Hacer polling a una API para obtener noticias significa que siempre vas un poco por detrás. Para paneles en vivo y señales de trading, quieres cada artículo en el momento en que se publica. El WebSocket de finlight hace exactamente eso, y el SDK de Python lo reduce a unas pocas líneas. En este tutorial construirás un stream en vivo de noticias bursátiles, filtrado por ticker y ya puntuado por sentimiento.

Instalar el SDK

pip install finlight-client

El ejemplo completo

import asyncio

from finlight_client import FinlightApi, ApiConfig
from finlight_client.models import GetArticlesWebSocketParams

client = FinlightApi(config=ApiConfig(api_key="YOUR_API_KEY"))


def on_article(article):
    print(f"[{article.sentiment}] {article.title} - {article.source}")


async def main():
    await client.websocket.connect(
        request_payload=GetArticlesWebSocketParams(
            tickers=["AAPL", "NVDA"],
            includeEntities=True,
        ),
        on_article=on_article,
    )


if __name__ == "__main__":
    asyncio.run(main())

Ejecútalo, y cada vez que se publique un artículo coincidente, tu callback on_article se dispara con el artículo, incluyendo su sentiment, title, source y (porque includeEntities está activado) las empresas etiquetadas.

Qué está pasando

  • client.websocket.connect(...) abre una conexión persistente y transmite los artículos coincidentes. Es una llamada asíncrona, así que se ejecuta dentro de asyncio.run(...).
  • GetArticlesWebSocketParams acepta los mismos tipos de filtros que la API REST: tickers, query, sources, countries, categories, language, includeEntities y más.
  • on_article es tu manejador. Aquí es donde, en lugar de solo imprimir, enviarías a una cola, actualizarías un panel o evaluarías una señal.

El SDK gestiona la conexión por ti, incluida la reconexión automática con backoff, de modo que una caída de conexión no detendrá tu stream.

Enhanced vs raw

client.websocket es el stream enhanced: los artículos llegan con enriquecimiento completo (sentimiento y entidades). Si solo necesitas datos básicos y ligeros del artículo lo más rápido posible, también existe client.raw_websocket con la misma forma de connect(...). Usa enhanced cuando quieras el análisis, y raw cuando quieras latencia mínima.

Filtra exactamente lo que necesitas

Como el WebSocket acepta los mismos filtros que REST, puedes transmitir una porción precisa: solo noticias de cripto, solo una watchlist de tickers, solo ciertos países. Consulta Filtrado avanzado para ver el conjunto completo de filtros.

Adónde ir después

Consigue tu clave de API gratuita →