Daily Stock Analysis: um sistema de IA que transforma uma watchlist em um painel de decisão diário
O daily_stock_analysis, de ZhuLinsen, é um dos projetos de IA para finanças com mais estrelas do momento — o repositório Python #1 do dia no Trendshift. Mas a parte interessante não é a contagem de estrelas. É que o projeto se recusa a fingir que prevê preços. Em vez disso, resolve um problema mais estreito e muito mais útil: todo dia de negociação, pegar sua watchlist e produzir um relatório analítico estruturado e explicável — e entregá-lo onde você realmente lê as coisas, seu mensageiro.
Aviso do autor do projeto: apenas para aprendizado e pesquisa. Não é aconselhamento de investimento. Mercados envolvem risco.
Ideia central: não é um bot, é um analista-repórter diário

A maioria dos repositórios de "AI trading" persegue a mesma fantasia: modelo entra, sinal sai, dinheiro sobe. O daily_stock_analysis é construído sobre uma premissa mais honesta — a parte difícil de investir não é gerar mais um sinal, é montar um quadro completo e consistente de um ativo e escrevê-lo da mesma forma todos os dias.
Por isso ele se comporta como um analista júnior seguindo uma programação. O pipeline é linear e legível:
| Etapa | O que acontece |
|---|---|
| Busca de dados | Cotações, candles diários, indicadores, fluxo de capital, fundamentos, chips |
| Análise técnica | Médias móveis, RSI, volume, razão de bias, classificação de tendência |
| Notícias e inteligência | Pesquisa notícias recentes, anúncios, sentimento por ticker |
| Análise LLM | Constrói um pacote de contexto e prompt, produz um painel de decisão em JSON |
| Renderização do relatório | Relatório em Markdown, opcionalmente convertido em imagem |
| Notificação | Envia para WeCom, Feishu, Telegram, Discord, Slack ou e-mail |
Por padrão, roda em uma programação (dias úteis, após o fechamento) e pula os dias sem negociação. Cobre A-shares, Hong Kong, ações e ETFs dos EUA, com os mercados japonês e sul-coreano suportados em nível reduzido onde as fontes de dados não alcançam.
A parte silenciosamente inteligente: fallback de dados


A decisão de engenharia mais robusta do projeto não é o LLM — é como ele trata os dados como não confiáveis por padrão.
Os dados de mercado são obtidos por meio de uma cadeia de prioridade de seis provedores, cada um servindo de fallback para o anterior:
Efinance (P0) → Tencent (P0) → Akshare (P1) → Pytdx (P2) → Baostock (P3) → Yfinance (P4)
Quando você analisa um ticker dos EUA, o sistema automaticamente pula os provedores exclusivos da China e roteia para o Yahoo Finance. Se uma fonte falha, expira ou retorna dados parciais, a execução degrada apenas aquele bloco em vez de derrubar o relatório inteiro. O prompt é até informado sobre quais blocos são fallback, partial ou missing — assim o modelo é obrigado a escrever "dado indisponível" em vez de inventar um número.
Esse é o instinto certo para qualquer sistema em produção: a falha de uma única fonte de dados nunca deve derrubar toda a análise. Trate cada feed como best-effort, padronize os campos e torne os dados ausentes visíveis em vez de silenciosamente preenchidos.
O painel de decisão

O LLM não retorna prosa — ele retorna um "painel de decisão" JSON estrito que o relatório converte em um layout consistente:
- Conclusão central — uma frase: comprar, manter ou esperar, além da sensibilidade ao tempo.
- Conselho dividido — orientações diferentes para quem já mantém a posição versus quem está em dinheiro.
- Perspectiva de dados — alinhamento das MAs, preço versus suporte/resistência, razão de bias, leitura de volume.
- Inteligência — alertas de risco e catalisadores positivos, cada um exigindo uma data.
- Plano de batalha — pontos de precisão concretos: compra ideal, stop-loss, alvo, tamanho da posição.
- Checklist — cada condição marcada com ✅ / ⚠️ / ❌ (alinhamento altista, bias dentro da faixa, volume, ausência de más notícias importantes, avaliação).
A disciplina embutida no prompt é opinativa e sensata: não persiga o preço (um bias acima de 5% da MA5 é um "não compre" categórico), só negocie com alinhamento altista das MAs (MA5 > MA10 > MA20), prefira comprar um recuo com volume decrescente até o suporte, e nunca inverta entre compra e venda por causa do movimento de um único dia.
Estratégias de agentes: faça uma pergunta ao sistema

Além do relatório diário, o projeto oferece um modo de agente com 15 manuais de estratégia embutidos que você pode consultar por ticker:
| Família | Exemplos |
|---|---|
| Tendência / médias móveis | golden cross de MA, tendência de alta |
| Teoria de estrutura | teoria de Chan (Zen), onda de Elliott |
| Comportamento / liquidez | ciclo de emoção, rompimento de volume, volume de fundo, recuo com retração |
| Catalisador / narrativa | tema quente, orientado a eventos, reprecificação de expectativas |
| Qualidade / crescimento | qualidade do crescimento |
Cada estratégia é um arquivo YAML com suas próprias regras, ferramentas exigidas e ajustes de pontuação — de modo que a "inteligência" é configurável e auditável, não escondida dentro de um único prompt gigante.
Como ler sem se autoenganar

Qualquer projeto assim é fácil de confiar demais. Uma checklist honesta de avaliação:
- Qualidade da fonte de notícias. O bloco de inteligência é tão bom quanto seus provedores de busca configurados — sem eles, sentimento e catalisadores ficam vazios e o relatório se apoia inteiramente em análise técnica.
- Determinismo. As saídas do LLM variam; o mesmo ticker pode ser lido de forma ligeiramente diferente entre execuções. Trate o painel como uma opinião estruturada, não como uma verdade fixa.
- Cobertura por mercado. A profundidade das A-shares (fluxo de capital, chips, dragon-tiger) degrada graciosamente para
not_supportedem mercados que os dados não cobrem. - Atualidade dos dados. Fique atento às marcações
fallback/partial— entradas degradadas devem reduzir sua confiança, exatamente como o prompt instrui. - Backtesting ≠ lucro. O relatório é suporte à decisão, não uma vantagem comprovada.
Limitações e avaliação honesta

O que o daily_stock_analysis não é:
- Não é um sistema de execução. Ele analisa e reporta; não coloca ordens nem modela liquidez.
- Dependente do modelo. A qualidade da saída acompanha o LLM apontado.
- Dependente de busca. Sem chaves de API de notícias, a metade qualitativa do relatório fica mais fraca.
- Não determinístico. Entradas idênticas podem produzir painéis ligeiramente diferentes.
Links
- 💻 GitHub: ZhuLinsen/daily_stock_analysis
- 📄 Licença: MIT
Conclusão
O daily_stock_analysis é valioso não como um oráculo, mas como um hábito analítico repetível e automatizado:
- Padronizar o que significa "observar uma ação", todos os dias.
- Tratar os dados como não confiáveis e tornar as lacunas visíveis.
- Tornar a conclusão explicável — pontuação, níveis, checklist, riscos.
- Separar a geração de ideias (15 estratégias) de um quadro de decisão disciplinado.
Para aprendizado, revisão diária e prototipagem de um fluxo de pesquisa, é bem construído. Para produção, a próxima camada é a mesma que todo sistema sério exige: dados validados, controle de desvio de modelo, execução realista e regras de risco que vivem no código, não apenas nos prompts.
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.