finlight Logo

Wednesday, September 23, 2026

Construa um Sinal de Sentimento de Notícias para Sua Watchlist

Kevin Bartsch

Construa um Sinal de Sentimento de Notícias para Sua Watchlist

O sentimento por artigo é útil, mas o que você costuma querer é um único número por empresa: o fluxo de notícias está pendendo para o positivo ou para o negativo agora? Neste tutorial você vai transformar o sentimento e a confiança da finlight em uma pontuação ponderada por confiança por ticker, para uma watchlist inteira, com Python e pandas.

A ideia

Cada artigo vem com um sentiment (positive, neutral, negative) e uma confidence. Vamos:

  1. Puxar os artigos recentes de cada ticker.
  2. Mapear o sentimento para um número: +1, 0, -1.
  3. Ponderar cada artigo pela sua confiança e tirar a média por ticker.

O resultado é uma pontuação entre -1 e +1 que resume o tom das notícias de cada empresa.

O código

import pandas as pd

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

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

WATCHLIST = ["AAPL", "NVDA", "TSLA"]
SCORE = {"positive": 1, "neutral": 0, "negative": -1}

rows = []
for ticker in WATCHLIST:
    response = client.articles.fetch_articles(
        GetArticlesParams(tickers=[ticker], from_="2026-06-01", pageSize=100)
    )
    for article in response.articles:
        if article.sentiment is None:
            continue
        rows.append({
            "ticker": ticker,
            "score": SCORE.get(article.sentiment, 0),
            "confidence": article.confidence or 0.0,
        })

df = pd.DataFrame(rows)

# Sentimento médio ponderado por confiança por ticker
df["weighted"] = df["score"] * df["confidence"]
signal = df.groupby("ticker").apply(
    lambda g: g["weighted"].sum() / g["confidence"].sum()
)

print(signal.sort_values(ascending=False))

O que você obtém

signal é um número por ticker:

ticker
NVDA    0.62
AAPL    0.18
TSLA   -0.34

Uma pontuação positiva significa que o fluxo recente de notícias pende para o positivo, uma pontuação negativa significa que pende para o negativo, e a magnitude reflete quão forte e confiante é essa tendência. Ponderar por confidence significa que um lote de notícias de alta confiança move a pontuação mais do que uma pilha de notícias incertas.

Como melhorar

  • Adicione ponderação por recência: multiplique por um decaimento temporal para que a notícia de hoje conte mais que a da semana passada.
  • Adicione volume: acompanhe a contagem de artigos ao lado da pontuação, já que uma pontuação forte baseada em dois artigos é uma evidência mais fraca que a mesma pontuação em cinquenta.
  • Torne incremental: rode novamente em um cronograma, ou troque para o WebSocket para atualizar o sinal em tempo real.

Uma ressalva

O sentimento é uma entrada, não uma previsão de preço. Os mercados podem ignorar más notícias ou reagir em excesso a boas notícias. Trate essa pontuação como uma feature a ser combinada com volume, fonte e seus próprios modelos, não como uma regra de trading isolada.

Para onde ir em seguida

Pegue sua chave de API gratuita →