Tuesday, September 15, 2026
Stream de Notícias de Ações em Tempo Real em Python com finlight
Stream de Notícias de Ações em Tempo Real em Python com finlight
Fazer polling de uma API por notícias significa que você está sempre um pouco atrasado. Para painéis ao vivo e sinais de trading, você quer cada artigo no momento em que ele é publicado. O WebSocket da finlight faz exatamente isso, e o SDK de Python reduz tudo a algumas linhas. Neste tutorial você vai construir um stream ao vivo de notícias de ações, filtrado por ticker e já pontuado por sentimento.
Instale o SDK
pip install finlight-client
O exemplo 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())
Execute o código e, toda vez que um artigo correspondente for publicado, seu callback on_article
dispara com o artigo, incluindo seu sentiment, title, source e (porque includeEntities está
ativo) as empresas marcadas.
O que está acontecendo
client.websocket.connect(...)abre uma conexão persistente e faz streaming dos artigos correspondentes. É uma chamada assíncrona, então roda dentro deasyncio.run(...).GetArticlesWebSocketParamsaceita os mesmos tipos de filtros da API REST:tickers,query,sources,countries,categories,language,includeEntitiese mais.on_articleé o seu handler. É aqui que você enviaria para uma fila, atualizaria um painel ou avaliaria um sinal, em vez de apenas imprimir.
O SDK gerencia a conexão para você, incluindo reconexão automática com backoff, então uma conexão que cai não vai interromper o seu stream.
Enhanced vs raw
client.websocket é o stream enhanced: os artigos chegam com enriquecimento completo (sentimento e
entidades). Se você só precisa de dados básicos e leves do artigo o mais rápido possível, há também o
client.raw_websocket, com o mesmo formato de connect(...). Use o enhanced quando quiser a análise,
o raw quando quiser latência mínima.
Filtre exatamente o que você precisa
Como o WebSocket aceita os mesmos filtros do REST, você pode fazer streaming de uma fatia precisa: apenas notícias de cripto, apenas uma watchlist de tickers, apenas determinados países. Veja Filtragem Avançada para o conjunto completo de filtros.
Para onde ir em seguida
- REST vs WebSocket vs Webhooks vs MCP para decidir quando o streaming é a escolha certa.
- Documentação completa para os guias de WebSocket.
