

BetBot
Bot de trading algorítmico que usa IA e análise técnica para operar ações em piloto automático.
Sobre o projeto
BetBot é um bot de day trading algorítmico que combina análise de sentimento via FinBERT, indicadores técnicos (RSI, EMA) e fluxo de opções numa Matriz de Confluência para decidir automaticamente quando comprar ou vender ações. Opera via Alpaca com bracket orders automáticas, regra no-overnight e dashboard visual em Streamlit para acompanhar P&L e scores em tempo real.

O que é
BetBot é um bot de day trading / scalping algorítmico construído em Python. Combina quatro fontes de dados independentes numa Matriz de Confluência que produz um score de 0 a 100 para cada ativo — decidindo automaticamente se deve comprar, vender ou aguardar.
Opera sobre uma watchlist de ~200 tickers líquidos do mercado norte-americano, via Alpaca (suporta paper trading e conta real), com ordens fracionadas para funcionar com qualquer orçamento.
Como funciona a Matriz de Confluência
O score final resulta da soma ponderada de quatro blocos:
| Fonte | Peso | O que analisa |
|---|---|---|
| Notícias | 35% | Headlines recentes via Finnhub, classificadas como positivas / negativas / neutras pelo modelo de linguagem FinBERT (treinado em textos financeiros) |
| Sentimento social | 25% | Agregado de Reddit + Twitter via Finnhub social-sentiment |
| Fluxo de opções | 20% | Rácio Put/Call via Polygon.io — rácio baixo sugere pressão bullish (smart money) |
| Técnico | 20% | RSI(14) e EMA9/EMA21 via yfinance |
Regras especiais:
- Se RSI > 70 (sobrecompra), o bloco técnico vai a zero mesmo que as notícias sejam boas
BUYse score ≥ 75 ·SELLse score ≤ 25 ·HOLDcaso contrário
Gestão de risco
- Bracket orders automáticas: cada compra cria simultaneamente uma ordem de take-profit (+2%) e stop-loss (-1%), garantindo que a saída é sempre automática
- Regra no-overnight: o bot fecha todas as posições abertas e cancela ordens pendentes X minutos antes do fecho da NYSE (configurável) — nunca mantém posições de um dia para o outro
- Posição por notional: compras definidas por valor monetário (ex: 5 USD por trade), não por quantidade de ações — funciona com frações e qualquer orçamento
Dashboard
Interface visual em Streamlit com três separadores:
- Resumo Diário — P&L por dia (válido porque a regra no-overnight garante que tudo abre e fecha no mesmo dia), gráfico de barras, orçamento de referência configurável na barra lateral
- Transações — tabela detalhada e filtrável (ticker, lado, intervalo de datas)
- Logs / Score ao vivo — evolução do score por ciclo (gráfico de linha) e breakdown completo da matriz de confluência por ciclo (expandível)
Stack técnica
- Python 3.11+
- FinBERT (HuggingFace
ProsusAI/finbert) — modelo NLP financeiro - Finnhub API — notícias e sentimento social
- Polygon.io — fluxo de opções (smart money)
- yfinance — RSI(14), EMA9, EMA21
- Alpaca (
alpaca-py) — execução de ordens fracionadas em paper/live trading - SQLite — persistência local dos ciclos de análise e transações
- Streamlit — dashboard visual
- Cache TTL em memória para suportar watchlist de ~200 tickers sem exceder limites gratuitos das APIs
Estado atual
O bot corre em paper trading (dinheiro fictício), o que permite validar a estratégia sem risco real. A lógica de execução, scoring, persistência e dashboard estão funcionais. Os pesos da Matriz (75 para BUY, 25 para SELL) são um ponto de partida — precisam de ajuste após backtesting com dados reais.
Próximos passos
- Calendário económico / earnings: bloquear trading no dia de resultados
- Notificações via Telegram ou Discord quando há BUY/SELL real
- Backtesting dos pesos e thresholds com dados históricos
- Testes unitários para a função de score (mocks das APIs)
- Autenticação no dashboard para exposição pública
Estado
Em planeamento
