Tuesday, September 15, 2026
Transmite noticias bursátiles en tiempo real en Python con finlight
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 deasyncio.run(...).GetArticlesWebSocketParamsacepta los mismos tipos de filtros que la API REST:tickers,query,sources,countries,categories,language,includeEntitiesy más.on_articlees 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
- REST vs WebSocket vs Webhooks vs MCP para decidir cuándo el streaming es la opción correcta.
- Documentación completa con las guías de WebSocket.
