finlight Logo

Tuesday, September 15, 2026

Stream de Notícias de Ações em Tempo Real em Python com finlight

Kevin Bartsch

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 de asyncio.run(...).
  • GetArticlesWebSocketParams aceita os mesmos tipos de filtros da API REST: tickers, query, sources, countries, categories, language, includeEntities e 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

Pegue sua chave de API gratuita →