Como vincular notícias a gráficos de ações e entender os drivers de movimento do mercado
Qualquer pessoa que já abriu um terminal de trading conhece isso. Uma ação cai 8% em uma única sessão, o gráfico desenha uma vela vermelha assustadora, e o feed de notícias financeiras é inundado com dezenas de artigos espalhados. Para correlacionar um evento específico com um movimento de preço, você acaba passando meio dia pesquisando manualmente por datas.
O autor do projeto open-source PokieTicker resolveu esse problema para si mesmo e disponibilizou o código-fonte no GitHub. O resultado é uma ferramenta que sobrepõe eventos diretamente em gráficos de velas, organiza notícias por tópico e os processa através de uma combinação de modelos de linguagem e aprendizado de máquina clássico.

O que a aplicação pode fazer
A interface é construída em torno de um gráfico interativo D3.js. Em vez de um terminal seco, você vê uma linha do tempo onde cada dia com notícias é marcado com um ponto. Clicar em um ponto abre um painel de contexto com detalhes.
As principais funcionalidades:
- Marcação de eventos interativos em gráficos de velas. Você pode ver imediatamente em qual dia saiu um relatório trimestral ou notícia regulatória e como o preço reagiu.
- Filtragem temática. As notícias são divididas por categoria: resultados, produtos, ações regulatórias, mudanças na gestão e condições gerais do mercado.
- Busca de analogias históricas. O sistema compara o cenário atual de notícias com períodos anteriores usando similaridade de cosseno de embeddings vetoriais e mostra para onde a ação se moveu em situações similares.
- Explicação de movimentos via LLM. Você seleciona um intervalo de datas com o mouse, e o modelo reúne os fatos e produz um resumo breve de por que a queda ou alta aconteceu.

Arquitetura e pipeline de dados econômico
Trabalhar com texto financeiro frequentemente resulta em contas altas de APIs de redes neurais. Se você enviar cada publicação diretamente para o Claude, seu saldo será consumido em poucas horas. O autor construiu um pipeline de filtragem em três camadas que reduz custos desnecessários.
Primeiro, os dados são buscados da API Polygon. Depois, a Camada 0 entra em ação — um conjunto simples de regras em Python que filtra spam, clickbait e compilações inúteis como "5 ações para comprar em maio". Esta etapa elimina cerca de 17% de ruído informacional de graça.
Os artigos restantes vão para a Camada 1. Aqui, o Claude Haiku é usado via Batch API em lotes de 50. O modelo determina o sentimento, extrai argumentos de alta ou baixa e formula o resumo da discussão. O processamento em lote custa apenas 35 centavos por 1.000 artigos.
Finalmente, a Camada 2 baseada no Claude Sonnet é ativada apenas mediante solicitação direta do usuário, quando é necessária uma análise profunda de um pico de preço específico para um período selecionado.
Como funciona a previsão de movimento de preços
Além do sentimento das notícias e indicadores técnicos, um modelo baseado em XGBoost está em funcionamento. O autor não está tentando construir um "graal de trading" e adverte honestamente na descrição que o projeto é orientado para pesquisa.
O vetor de características consiste em 31 parâmetros:
- Métricas de notícias: contagem de artigos por dia, pontuação média de sentimento, razão de positivos para negativos, médias móveis de sentimento em 3, 5 e 10 dias, além de momentum de sentimento.
- Sinais técnicos: retornos em 1, 3, 5 e 10 dias de trading, medida de volatilidade, anomalias de volume de trading, indicador RSI-14 e cruzamentos de médias móveis.
Classificadores XGBoost são treinados para prever a direção dos movimentos de preço em horizontes T+1, T+3 e T+5. A lógica é direta: notícias fortes desencadeiam inércia de mercado que frequentemente dura um a três dias, especialmente se publicações negativas saem em série.
O backend também inclui um módulo LSTM experimental, embora o gradient boosting permaneça como a solução principal de trabalho.
Frontend (React + Vite + D3.js) Backend (FastAPI + SQLite WAL)
+---------------------------------+ +----------------------------+
| CandlestickChart (D3.js) |----->| /api/stocks/{sym}/ohlc |
| NewsPanel & Predictions |<-----| /api/news, /api/predict |
+---------------------------------+ +----------------------------+
Início rápido sem registro de chave de API
Um detalhe interessante: para testar o projeto localmente, você não precisa comprar imediatamente assinaturas da Polygon ou criar uma conta na Anthropic. O repositório já inclui um arquivo pronto com um banco de dados SQLite contendo 51.000 velas e 61.000 artigos de notícias, além de pesos de modelos treinados.
O deploy leva cinco minutos:
git clone https://github.com/owengetinfo-design/PokieTicker.git
cd PokieTicker
# Распаковываем готовую базу и модели
gunzip -k pokieticker.db.gz
tar xzf models.tar.gz -C backend/ml/
# Настраиваем бэкенд на Python 3.10+
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Устанавливаем зависимости фронтенда
cd frontend && npm install && cd ..
Os serviços são iniciados em duas abas do terminal. Na primeira, subimos o FastAPI:
source venv/bin/activate
uvicorn backend.api.main:app --reload
Na segunda, iniciamos o Vite:
cd frontend && npm run dev
Depois disso, a interface abre no navegador em http://localhost:7777/PokieTicker/.
Se você quiser buscar dados novos da exchange, basta copiar .env.example para .env, adicionar sua chave gratuita da Polygon e chave da Anthropic, e então executar o comando python -m backend.weekly_update.
Impressões e conclusões
O PokieTicker é interessante não tanto como consultor de trading, mas como exemplo de uma aplicação full-stack bem projetada. Há muito o que aprender com ele:
- Uma configuração limpa de FastAPI e SQLite em modo WAL, que é mais que suficiente para centenas de milhares de registros.
- Uso eficiente de LLMs através de filtragem preliminar baseada em regras e Batch API.
- Visualização de dados financeiros em D3.js puro sem widgets pesados de terceiros.
- Combinação prática de métricas de NLP com análise clássica de séries temporais.
O repositório será útil para desenvolvedores que estão construindo seus próprios dashboards analíticos, experimentando com processamento de texto para ML, ou simplesmente querendo entender as causas das flutuações de mercado. O código-fonte é disponibilizado sob a licença MIT permissiva.
Projetos relacionados