Skip to content

Latest commit

 

History

History
887 lines (743 loc) · 34.9 KB

File metadata and controls

887 lines (743 loc) · 34.9 KB

🤖 Jason Bot Trader - Projeto e Arquitetura

Versão: 0.0.2 Data: 05/11/2025 Autor: Lucas Galvão Status: 🔨 Em Desenvolvimento


📋 Índice

  1. Visão Geral
  2. Objetivos do Projeto
  3. Especificações Técnicas
  4. Arquitetura do Sistema
  5. Estratégias de Trading
  6. Gestão de Risco
  7. Stack Tecnológica
  8. Roadmap de Desenvolvimento
  9. Glossário Técnico

🎯 Visão Geral

O Jason Bot Trader é um bot de trading automatizado focado em day trading de tokens de alta volatilidade no SushiSwap V3, operando em redes com baixo custo de gas (Arbitrum, Base, Polygon).

Características Principais

  • Multi-Estratégia Dinâmica: Grid Trading + Momentum Trading (bot escolhe automaticamente)
  • Gestão de Risco Avançada: Stop-loss trailing, take-profit em níveis, circuit breaker 3 níveis
  • Dashboard Web em Tempo Real: Interface moderna e intuitiva
  • Backtesting Completo: Testa estratégias com dados históricos antes de operar
  • Análise Semanal Automatizada: Script para gerar whitelist/blacklist de tokens
  • Gas Otimizado: Cálculo dinâmico, cancela trades quando gas está alto
  • Operação Segura: Testnet primeiro, depois mainnet com capital controlado

🎯 Objetivos do Projeto

Objetivos de Negócio

  1. Capital Inicial: Começar com $30-50 USD
  2. Crescimento Sustentável: Foco em ganhos consistentes, não em lucros rápidos
  3. Baixo Risco: Operar apenas em tokens com liquidez mínima comprovada
  4. Automação: Minimizar intervenção manual (apenas ligar/desligar bot)

Objetivos Técnicos

  1. Simplicidade: Código modular, fácil de manter e expandir
  2. Performance: Polling eficiente (15 segundos), baixo uso de recursos
  3. Observabilidade: Logs estruturados, métricas claras, relatórios detalhados
  4. Segurança: Testes extensivos em testnet, validação de trades, proteção contra perdas

🔧 Especificações Técnicas

Redes Suportadas

Rede Chain ID Testnet Mainnet RPC Provider Gas Médio
Arbitrum 42161 Sepolia Arbitrum One Infura / Alchemy ~0.0001 ETH
Base 8453 Sepolia Base Infura / Alchemy ~0.0001 ETH
Polygon 137 Mumbai Polygon PoS Infura / Alchemy ~0.001 MATIC

Parâmetros de Operação

Parâmetro Valor Justificativa
Capital Inicial $30-50 USD Baixo risco para testes iniciais
% Capital por Trade Máx. 10% Diversificação de risco
Stop-Loss Trailing -3% a -5% Protege capital, ajustável por volatilidade
Take-Profit Níveis 25% @ +10%, 50% @ +20%, 25% @ +30% Realiza lucro gradualmente
Drawdown Máximo -15% Circuit breaker em 3 níveis
Gas Máximo 2% do valor do trade ou $0.001 ETH Evita trades não lucrativos
Timeout de Ordem 30 segundos Cancela se demorar muito
Slippage Fixo 0.5% Controle de execução
Frequência Polling 15 segundos Balance entre performance e custo

Critérios de Seleção de Tokens (Análise Semanal)

Critério Valor Mínimo Objetivo
Liquidez (TVL) $75,000 USD Garantir execução de trades
Volume 24h $25,000 USD Garantir atividade de mercado
Volatilidade Diária 5% Oportunidades de day trading
Market Cap Mín. $5,000,000 Evitar tokens muito pequenos (rug pull)
Idade do Pool Mín. 10 dias Evitar pools recém-criados (scam)

🏗️ Arquitetura do Sistema

Estrutura de Diretórios

jasonbottrader3/
├── src/                          # Código-fonte principal
│   ├── core/                     # Núcleo do sistema
│   │   ├── bot.js               # Orquestrador principal
│   │   ├── config.js            # Gerenciador de configurações (.env)
│   │   └── events.js            # Sistema de eventos (Event-Driven)
│   │
│   ├── blockchain/              # Interação com blockchain
│   │   ├── provider.js          # Gestão de providers (multi-rede)
│   │   ├── wallet.js            # Gestão de wallet/signer
│   │   ├── sushiswap.js         # Interface SushiSwap (pools, quotes, swaps)
│   │   └── gas.js               # Estimativa e otimização de gas
│   │
│   ├── strategies/              # Estratégias de trading
│   │   ├── base.js              # Classe abstrata base
│   │   ├── grid-trading.js      # Grid Trading (Estratégia A)
│   │   ├── momentum.js          # Momentum Trading (Estratégia B)
│   │   └── manager.js           # Gerenciador (escolhe estratégia dinamicamente)
│   │
│   ├── indicators/              # Indicadores técnicos
│   │   ├── rsi.js               # Relative Strength Index
│   │   ├── macd.js              # Moving Average Convergence Divergence
│   │   └── bollinger.js         # Bollinger Bands
│   │
│   ├── risk/                    # Gestão de risco
│   │   ├── position-manager.js  # Controla tamanho de posição (10% max)
│   │   ├── stop-loss.js         # Stop-loss trailing
│   │   ├── take-profit.js       # Take-profit em níveis (25/50/25%)
│   │   └── drawdown.js          # Circuit breaker (3 níveis: -5%, -10%, -15%)
│   │
│   ├── data/                    # Coleta e persistência de dados
│   │   ├── collector.js         # Coletor de dados de mercado (preços, volume, etc)
│   │   ├── storage.js           # Persistência em JSON (ciclos)
│   │   └── historical.js        # Dados históricos para backtesting
│   │
│   ├── analysis/                # Análise de mercado
│   │   ├── weekly-report.js     # Gerador de relatório semanal
│   │   ├── token-scanner.js     # Scanner de tokens (liquidez, volatilidade)
│   │   └── whitelist.js         # Gestão de whitelist/blacklist
│   │
│   ├── execution/               # Execução de trades
│   │   ├── order.js             # Lógica de ordens (buy/sell)
│   │   ├── executor.js          # Executor de trades (timeout, retry, cancel)
│   │   └── slippage.js          # Controle de slippage
│   │
│   ├── backtesting/             # Sistema de backtesting
│   │   ├── engine.js            # Engine de backtesting
│   │   ├── metrics.js           # Cálculo de métricas (Sharpe, Win Rate, etc)
│   │   └── simulator.js         # Simulador de trades (sem blockchain)
│   │
│   └── reporting/               # Relatórios e logs
│       ├── logger.js            # Logger estruturado (Winston)
│       ├── cycle-report.js      # Relatório de ciclo (ligar → desligar)
│       └── metrics.js           # Agregador de métricas
│
├── dashboard/                   # Dashboard web (Next.js)
│   ├── src/
│   │   ├── app/
│   │   │   ├── page.tsx         # Página principal
│   │   │   ├── layout.tsx       # Layout global
│   │   │   ├── reports/         # Aba de relatórios
│   │   │   │   └── page.tsx     # Lista de relatórios antigos
│   │   │   └── api/             # API Routes (comunicação com bot)
│   │   │       ├── status/      # GET - Status do bot
│   │   │       ├── start/       # POST - Iniciar bot
│   │   │       ├── stop/        # POST - Parar bot (gera relatório)
│   │   │       └── metrics/     # GET - Métricas em tempo real
│   │   │
│   │   ├── components/
│   │   │   ├── BotControl.tsx   # Botão ligar/desligar
│   │   │   ├── PnLChart.tsx     # Gráfico de P&L (Recharts)
│   │   │   ├── TradeHistory.tsx # Tabela de trades recentes
│   │   │   ├── Metrics.tsx      # Cards de métricas (capital, drawdown, etc)
│   │   │   ├── RiskPanel.tsx    # Painel de risco (drawdown, stop-loss ativo)
│   │   │   └── ReportsList.tsx  # Lista de relatórios anteriores
│   │   │
│   │   └── lib/
│   │       └── api-client.ts    # Cliente HTTP (axios + socket.io-client)
│   │
│   └── package.json
│
├── scripts/                     # Scripts utilitários
│   ├── weekly-analysis.js       # Análise semanal (rodar manualmente 1x/semana)
│   ├── deploy.js                # Deploy do bot
│   ├── migrate-testnet.js       # Helpers para migrar testnet → mainnet
│   └── setup-env.js             # Setup inicial de .env
│
├── data/                        # Dados persistidos (gitignored)
│   ├── cycles/                  # Um JSON por ciclo
│   │   ├── cycle-2025-11-05-001.json
│   │   └── cycle-2025-11-05-002.json
│   ├── market/                  # Dados de mercado coletados (histórico)
│   │   ├── arbitrum/
│   │   ├── base/
│   │   └── polygon/
│   └── reports/                 # Relatórios semanais
│       ├── weekly-2025-W45.json
│       └── weekly-2025-W45.html
│
├── tests/                       # Testes automatizados
│   ├── unit/                    # Testes unitários (Jest)
│   ├── integration/             # Testes de integração (Supertest)
│   └── e2e/                     # Testes E2E do dashboard (Playwright)
│
├── docs/                        # Documentação
│   ├── 1. regras-de-desenvolvimento.md
│   ├── 2. projeto-arquitetura.md     # (este arquivo)
│   ├── 3. estrategias.md             # Detalhes das estratégias
│   ├── 4. api-dashboard.md           # API do dashboard
│   └── 5. guia-deploy.md             # Guia de deploy
│
├── .env.example                 # Template de .env
├── .env                         # Configurações locais (gitignored)
├── .gitignore
├── package.json                 # Dependências do bot
├── README.md
├── CHANGELOG.md
└── jest.config.js               # Configuração de testes

Fluxo de Dados (Event-Driven Architecture)

┌─────────────────────────────────────────────────────────────┐
│                      Dashboard Web                          │
│               (Next.js - http://localhost:3000)             │
└───────────────────────┬─────────────────────────────────────┘
                        │
                        │ REST API + WebSocket (Socket.io)
                        │
┌───────────────────────▼─────────────────────────────────────┐
│                     Bot Core (Node.js)                      │
│                  (Express API: :4000)                       │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │           Event Bus (EventEmitter)                   │  │
│  └───┬──────────┬──────────┬──────────┬──────────┬──────┘  │
│      │          │          │          │          │          │
│  ┌───▼───┐  ┌──▼───┐  ┌───▼────┐  ┌──▼─────┐  ┌▼──────┐  │
│  │ Data  │  │Strat.│  │  Risk  │  │  Exec  │  │Report │  │
│  │Collect│  │Mgr   │  │Manager │  │Engine  │  │ Gen   │  │
│  └───┬───┘  └──┬───┘  └───┬────┘  └──┬─────┘  └┬──────┘  │
│      │         │          │           │          │          │
│      └─────────┴──────────┴───────────┴──────────┘          │
└───────────────────────────┬─────────────────────────────────┘
                            │
                            │ ethers.js + SushiSwap SDK
                            │
┌───────────────────────────▼─────────────────────────────────┐
│              SushiSwap V3 (Blockchain)                      │
│     Arbitrum | Base | Polygon (Testnet → Mainnet)          │
└─────────────────────────────────────────────────────────────┘

Principais Eventos do Sistema

// src/core/events.js
const EventEmitter = require('events');
const botEvents = new EventEmitter();

// Eventos emitidos:
// - bot.started
// - bot.stopped
// - bot.error
// - market.data.collected (dados novos de preço)
// - strategy.selected (estratégia escolhida para ciclo)
// - trade.signal (sinal de compra/venda)
// - trade.executed (trade executado com sucesso)
// - trade.failed (trade falhou)
// - risk.stop_loss_triggered
// - risk.take_profit_triggered
// - risk.drawdown.level1 (-5%)
// - risk.drawdown.level2 (-10%)
// - risk.drawdown.level3 (-15%)
// - report.generated (relatório de ciclo gerado)

📊 Estratégias de Trading

Estratégia A: Grid Trading

Descrição: Coloca ordens de compra/venda em níveis fixos (grid), aproveitando movimentos laterais do mercado.

Quando usar:

  • Mercado em consolidação (sem tendência clara)
  • Token com volatilidade moderada (5-15% ao dia)
  • Alta liquidez (baixo slippage)

Parâmetros:

{
  type: 'grid',
  levels: 5,                    // 5 níveis de compra/venda
  rangeMin: 0.95,               // -5% do preço inicial
  rangeMax: 1.10,               // +10% do preço inicial
  amountPerLevel: 0.02,         // 2% do capital por nível
  rebalanceInterval: 300        // Rebalancear a cada 5 minutos
}

Exemplo Visual:

Preço Inicial: $100
Nível 5 (Venda): $110  ← Vende 2% do capital
Nível 4 (Venda): $107.5
Nível 3 (Neutro): $102.5
Nível 2 (Compra): $97.5
Nível 1 (Compra): $95   ← Compra 2% do capital

Vantagens:

  • ✅ Funciona bem em mercados laterais
  • ✅ Lucros consistentes com pequenas variações
  • ✅ Fácil de entender e debugar

Desvantagens:

  • ❌ Perde eficiência em tendências fortes
  • ❌ Pode acumular posição perdedora se preço cai continuamente

Estratégia B: Momentum Trading

Descrição: Identifica movimentos fortes de preço e volume, entrando na direção da tendência.

Quando usar:

  • Mercado em tendência forte (alta ou baixa)
  • Token com alta volatilidade (>15% ao dia)
  • Volume acima da média

Parâmetros:

{
  type: 'momentum',
  entryThreshold: 0.05,         // Entra quando preço sobe 5% em 5min
  exitThreshold: 0.03,          // Sai quando preço cai 3% do pico
  volumeMultiplier: 2,          // Volume deve ser 2x a média
  lookbackPeriod: 20,           // Analisa últimos 20 candles (5min cada)
  rsiEntry: 30,                 // Só entra se RSI < 30 (sobrevendido)
  rsiExit: 70                   // Sai se RSI > 70 (sobrecomprado)
}

Indicadores Utilizados:

  • RSI (14): Identifica sobrecompra/sobrevenda
  • Volume: Confirma força do movimento
  • Taxa de variação: % de mudança de preço em X minutos

Exemplo de Trade:

T0: Preço $100, Volume 10k, RSI 28 → Sinal de compra!
T1: Preço $105 (+5%) → COMPRA executada
T2: Preço $110 (+10%) → RSI 72 → VENDA executada
Lucro: +10% (menos gas e slippage)

Vantagens:

  • ✅ Captura grandes movimentos rapidamente
  • ✅ Usa indicadores técnicos comprovados
  • ✅ Proteção com RSI (evita entrar em topo)

Desvantagens:

  • ❌ Pode gerar falsos sinais em mercado lateral
  • ❌ Exige monitoramento mais frequente

Seleção Dinâmica de Estratégia

O bot escolhe automaticamente entre Estratégia A e B baseado nas condições do mercado:

// src/strategies/manager.js
function selectStrategy(marketData) {
  const volatility = calculateVolatility(marketData.prices, 20);
  const volumeRatio = marketData.volume24h / marketData.avgVolume;
  const trend = detectTrend(marketData.prices);

  // Critérios de decisão:
  if (volatility > 0.15 && volumeRatio > 1.5 && trend !== 'sideways') {
    return 'momentum'; // Mercado volátil e com tendência
  } else {
    return 'grid';     // Mercado lateral ou baixa volatilidade
  }
}

🛡️ Gestão de Risco

1. Position Sizing (Tamanho de Posição)

// src/risk/position-manager.js
const MAX_POSITION_PERCENT = 0.10; // 10% do capital

function calculatePositionSize(capital, strategy) {
  const baseAmount = capital * MAX_POSITION_PERCENT;

  // Ajusta conforme volatilidade:
  // - Alta volatilidade → reduz posição
  // - Baixa volatilidade → mantém posição
  const volatilityAdjustment = Math.max(0.5, 1 - (volatility / 0.5));

  return baseAmount * volatilityAdjustment;
}

2. Stop-Loss Trailing

Descrição: Stop-loss que se move junto com o preço, protegendo lucro.

// src/risk/stop-loss.js
class TrailingStopLoss {
  constructor(entryPrice, trailingPercent = 0.03) {
    this.entryPrice = entryPrice;
    this.trailingPercent = trailingPercent; // 3%
    this.highestPrice = entryPrice;
    this.stopPrice = entryPrice * (1 - trailingPercent);
  }

  update(currentPrice) {
    if (currentPrice > this.highestPrice) {
      this.highestPrice = currentPrice;
      this.stopPrice = currentPrice * (1 - this.trailingPercent);
    }

    return currentPrice <= this.stopPrice; // true = triggered
  }
}

Exemplo:

Compra: $100
Stop inicial: $97 (-3%)

Preço sobe pra $110
Stop sobe pra $106.70 (-3% de $110)

Preço cai pra $106.70
→ Stop-loss triggered! VENDE automaticamente
Lucro: +6.7% (protegeu parte do lucro)

3. Take-Profit em Níveis

Descrição: Realiza lucro gradualmente em 3 níveis, reduzindo arrependimento.

// src/risk/take-profit.js
const TAKE_PROFIT_LEVELS = [
  { percent: 0.10, amount: 0.25 }, // +10% → vende 25%
  { percent: 0.20, amount: 0.50 }, // +20% → vende 50%
  { percent: 0.30, amount: 0.25 }  // +30% → vende 25% restante
];

Exemplo:

Comprou 1000 tokens a $1.00 (investimento: $1000)

Nível 1: Preço $1.10 (+10%)
→ Vende 250 tokens (25%) por $275
→ Restam 750 tokens, realizou $25 de lucro

Nível 2: Preço $1.20 (+20%)
→ Vende 500 tokens (50% do restante) por $600
→ Restam 250 tokens, realizou $125 de lucro acumulado

Nível 3: Preço $1.30 (+30%)
→ Vende 250 tokens (100% restante) por $325
→ Zerou posição, lucro total: $200 (+20% efetivo)

4. Circuit Breaker de Drawdown (3 Níveis)

Descrição: Para o bot automaticamente se perdas acumularem.

// src/risk/drawdown.js
const DRAWDOWN_LEVELS = [
  {
    percent: -0.05,
    action: 'pause',
    duration: 1800,           // 30 min
    message: 'Drawdown -5%: Pausando e trocando para estratégia conservadora'
  },
  {
    percent: -0.10,
    action: 'pause_and_reset',
    duration: 7200,           // 2h
    message: 'Drawdown -10%: Pausando 2h e resetando parâmetros'
  },
  {
    percent: -0.15,
    action: 'stop',
    duration: null,           // Indefinido
    message: 'Drawdown -15%: Bot parado! Intervenção manual necessária.'
  }
];

Comportamento:

  • Nível 1 (-5%): Pausa 30 min, troca pra estratégia grid (mais conservadora)
  • Nível 2 (-10%): Pausa 2h, reseta parâmetros (reduz % por trade, aumenta stop-loss)
  • Nível 3 (-15%): Para completamente, envia alerta, espera intervenção manual

🛠️ Stack Tecnológica (Versões STABLE)

Backend (Bot Core)

Dependência Versão Motivo da Escolha
Node.js 18.19.0 LTS Versão LTS estável, suporte até 2025
ethers 6.7.1 Mesma versão dos examples, estável
sushi 3.0.5 SDK oficial do SushiSwap, usado nos examples
graphql-request 6.1.0 Mesma versão dos examples
dotenv 16.3.1 Versão estável, compatível
express 4.18.2 LTS, amplamente testado
socket.io 4.6.2 Versão estável, compatível com client
winston 3.11.0 Logger maduro e estável
technicalindicators 3.1.0 Biblioteca estável de indicadores
axios 1.5.0 Mesma versão dos examples
cors 2.8.5 Estável, necessário para dashboard

package.json do Bot:

{
  "name": "jasonbottrader3",
  "version": "0.1.0",
  "description": "Bot de trading automatizado para SushiSwap V3",
  "main": "src/core/bot.js",
  "scripts": {
    "start": "node src/core/bot.js",
    "dev": "node --watch src/core/bot.js",
    "test": "jest",
    "weekly": "node scripts/weekly-analysis.js",
    "lint": "eslint src/ --fix"
  },
  "dependencies": {
    "ethers": "6.7.1",
    "sushi": "3.0.5",
    "graphql-request": "6.1.0",
    "dotenv": "16.3.1",
    "express": "4.18.2",
    "socket.io": "4.6.2",
    "winston": "3.11.0",
    "technicalindicators": "3.1.0",
    "axios": "1.5.0",
    "cors": "2.8.5"
  },
  "devDependencies": {
    "jest": "29.7.0",
    "eslint": "8.56.0",
    "prettier": "3.1.1",
    "supertest": "6.3.3"
  }
}

Frontend (Dashboard)

Dependência Versão Motivo da Escolha
next 14.2.4 Mesma versão dos examples
react 18.2.0 Mesma versão dos examples
react-dom 18.2.0 Compatível com React 18.2.0
typescript 5.2.2 Mesma versão dos examples
@types/node 20.5.9 Mesma versão dos examples
@types/react 18.2.21 Mesma versão dos examples
@types/react-dom 18.2.7 Mesma versão dos examples
tailwindcss 3.4.1 Versão estável, bem documentada
postcss 8.4.33 Necessário para TailwindCSS
autoprefixer 10.4.17 Necessário para TailwindCSS
recharts 2.10.3 Gráficos, compatível com React 18
socket.io-client 4.6.2 Mesma versão do backend
axios 1.5.0 Mesma versão dos examples
zustand 4.4.7 State manager leve e estável
date-fns 3.0.6 Manipulação de datas, estável

package.json do Dashboard:

{
  "name": "jasonbottrader-dashboard",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "next": "14.2.4",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "typescript": "5.2.2",
    "@types/node": "20.5.9",
    "@types/react": "18.2.21",
    "@types/react-dom": "18.2.7",
    "tailwindcss": "3.4.1",
    "postcss": "8.4.33",
    "autoprefixer": "10.4.17",
    "recharts": "2.10.3",
    "socket.io-client": "4.6.2",
    "axios": "1.5.0",
    "zustand": "4.4.7",
    "date-fns": "3.0.6"
  },
  "devDependencies": {
    "eslint": "8.56.0",
    "eslint-config-next": "14.2.4",
    "prettier": "3.1.1",
    "playwright": "1.40.1"
  }
}

Testing & DevOps

Ferramenta Versão Uso
Jest 29.7.0 Testes unitários
Supertest 6.3.3 Testes de API REST
Playwright 1.40.1 Testes E2E do dashboard
ESLint 8.56.0 Linting JavaScript/TypeScript
Prettier 3.1.1 Formatação de código
PM2 5.3.0 Process manager (produção)

🗓️ Roadmap de Desenvolvimento

Sprint 0.1 - Fundação (Semanas 1-2) - ~39h

Versão: 0.1.0 Objetivo: Base sólida, testnet funcional, coleta de dados real

Entregas

# Task Horas Descrição
1.1 Estrutura de diretórios 2h Criar estrutura completa conforme arquitetura
1.2 Sistema de configuração 3h src/core/config.js - Validação de .env
1.3 Logger estruturado 2h src/reporting/logger.js - Winston com níveis
1.4 Provider blockchain 4h src/blockchain/provider.js - Multi-rede
1.5 Interface SushiSwap 6h src/blockchain/sushiswap.js - getPools, getPrice, swap
1.6 Coletor de dados REAL 8h Substituir placeholders por dados reais (Graph + CoinGecko + Defillama)
1.7 Estimativa de gas 4h src/blockchain/gas.js - Cálculo dinâmico
1.8 Storage JSON 3h src/data/storage.js - Salvar ciclos
1.9 Testes em testnet 4h Arbitrum Sepolia, fazer swaps reais
1.10 CI/CD GitHub Actions 3h Lint + testes básicos

Critérios de Aceitação:

  • ✅ Bot conecta em 3 redes (testnet)
  • ✅ Coleta dados reais de preço/liquidez/volume
  • ✅ Salva dados em JSON por ciclo
  • ✅ Executa swap simples em testnet
  • ✅ CI/CD rodando no GitHub

Sprint 0.2 - Estratégias e Risco (Semanas 3-5) - ~66h

Versão: 0.2.0 Objetivo: Estratégias funcionais, gestão de risco completa

Entregas

# Task Horas Descrição
2.1 Classe base de estratégia 3h src/strategies/base.js - Interface comum
2.2 Grid Trading 8h Implementar com níveis configuráveis
2.3 Momentum Trading 8h Implementar com RSI + volume
2.4 Indicadores técnicos 6h RSI, MACD, Bollinger Bands
2.5 Position Manager 4h Gestão de tamanho (10% max)
2.6 Stop-loss trailing 6h Trailing com % configurável
2.7 Take-profit níveis 5h Sistema 25/50/25%
2.8 Drawdown circuit breaker 6h 3 níveis com pausas
2.9 Executor de trades 6h Timeout 30s, cancel se gas alto
2.10 Integração estratégia + risco 6h Orquestração no bot.js
2.11 Testes unitários 8h Cobertura > 70%

Critérios de Aceitação:

  • ✅ Grid Trading funcional
  • ✅ Momentum Trading funcional
  • ✅ Bot escolhe estratégia dinamicamente
  • ✅ Stop-loss trailing ativo
  • ✅ Take-profit em níveis
  • ✅ Circuit breaker testado (3 níveis)
  • ✅ Testes unitários passando

Sprint 0.3 - Backtesting e Análise (Semanas 6-7) - ~60h

Versão: 0.3.0 Objetivo: Sistema de backtesting, análise semanal funcional

Entregas

# Task Horas Descrição
3.1 Engine de backtesting 10h Replay de dados históricos
3.2 Simulador de trades 6h Simular swaps sem blockchain
3.3 Métricas de performance 6h Win rate, Profit factor, Sharpe, Drawdown
3.4 Coleta dados históricos 5h 10 dias de dados (Graph + CoinGecko + Defillama)
3.5 Script análise semanal 8h scripts/weekly-analysis.js - Scanner
3.6 Sistema de scoring 6h Score 0-100 (liquidez, volume, volatilidade)
3.7 Whitelist/Blacklist 4h Gestão de listas
3.8 Relatório JSON + HTML 5h Gerar relatório visual
3.9 Backtesting de estratégias 6h Rodar 10 dias, validar
3.10 Documentação estratégias 4h docs/3. estrategias.md

Critérios de Aceitação:

  • ✅ Backtesting funcional com 10 dias de dados
  • ✅ Script semanal gerando whitelist/blacklist
  • ✅ Relatório com top 10 tokens + score
  • ✅ Métricas de performance calculadas
  • ✅ Documentação completa

Sprint 0.4 - Dashboard Web (Semanas 8-10) - ~54h

Versão: 0.4.0 Objetivo: Dashboard bonito, funcional, tempo real

Entregas

# Task Horas Descrição
4.1 Setup Next.js 2h Criar projeto dashboard/
4.2 API interna do bot 5h Express API (porta 4000)
4.3 WebSocket tempo real 6h Socket.io (bot → dashboard)
4.4 Componente BotControl 3h Botão ligar/desligar + status
4.5 Gráfico P&L 6h Recharts - P&L ao longo do tempo
4.6 Trade History 4h Tabela últimos 20 trades
4.7 Cards de métricas 4h Capital, Drawdown, Win Rate, etc
4.8 Painel de risco 4h Indicador visual de drawdown
4.9 Tema futurista/moderno 5h TailwindCSS custom theme
4.10 Aba de relatórios 4h Lista relatórios antigos + download
4.11 Relatório de ciclo 4h Botão "Desligar e Gerar Relatório"
4.12 Responsivo 5h Adaptar para tablet/mobile
4.13 Testes E2E 6h Playwright - fluxo completo

Critérios de Aceitação:

  • ✅ Dashboard acessível em http://localhost:3000
  • ✅ Ligar/desligar bot via interface
  • ✅ Gráficos atualizando em tempo real
  • ✅ Aba de relatórios funcionando
  • ✅ Tema futurista aplicado
  • ✅ Responsivo e intuitivo

Sprint 0.5 - Otimização e Produção (Semanas 11-12) - ~49h

Versão: 0.5.0 Objetivo: Bot pronto para mainnet, otimizações, segurança

Entregas

# Task Horas Descrição
5.1 Otimização de gas 5h Calcular gas antes de cada trade
5.2 Cancelamento por gas alto 6h Cancela trade se gas > threshold
5.3 Dry-run mode 4h Modo simulação (não executa trades)
5.4 Logs estruturados 4h Winston com rotação de arquivos
5.5 Backup automático 3h Backup diário de data/ e reports/
5.6 Migração testnet → mainnet 4h Script + checklist de segurança
5.7 Documentação completa 6h README, API docs, guia de deploy
5.8 Testes de carga 4h Simular 100 trades, estabilidade
5.9 Auditoria de segurança 5h Revisar código, .env, permissões
5.10 Setup PM2 (opcional) 8h Deploy em VPS, monitoramento

Critérios de Aceitação:

  • ✅ Bot pronto para mainnet
  • ✅ Dry-run testado e documentado
  • ✅ Documentação completa e clara
  • ✅ Segurança auditada
  • ✅ (Opcional) Rodando em VPS com PM2

Resumo do Roadmap

Sprint Versão Semanas Horas Entregável Principal
0.1 0.1.0 1-2 39h Fundação + Testnet
0.2 0.2.0 3-5 66h Estratégias + Risco
0.3 0.3.0 6-7 60h Backtesting + Análise
0.4 0.4.0 8-10 54h Dashboard Web
0.5 0.5.0 11-12 49h Otimização + Mainnet
Total 12 semanas 268h Bot completo

Estimativa: ~3 meses trabalhando part-time (20h/semana)


📖 Glossário Técnico

Termos de Trading

Termo Definição Exemplo
Arbitragem Lucrar com diferença de preço entre DEXs Token $100 na DEX A, $105 na DEX B → lucro $5
Backtesting Testar estratégia com dados históricos Rodar bot com dados de 30 dias atrás
Bollinger Bands Indicador de volatilidade Preço toca banda inferior → possível reversão
Circuit Breaker Mecanismo que para operações ao atingir perda máxima Perda -15% → para bot automaticamente
Drawdown Queda percentual do capital desde pico Capital era $100, agora $85 → drawdown -15%
Grid Trading Ordens em níveis fixos (grade) Compra $95, $90, $85 / Vende $105, $110, $115
Liquidez (TVL) Total Value Locked no pool Pool WETH/USDC tem $500k de liquidez
MACD Indicador de momentum Linha MACD cruza Signal → sinal de compra
Momentum Força de movimento de preço Preço subiu 10% em 5min → momentum forte
P&L (Profit & Loss) Lucro e prejuízo acumulado Entrou com $100, agora $115 → P&L +$15
Position Sizing Tamanho da posição por trade Capital $1000, max 10% → $100 por trade
Profit Factor Lucro total / perda total Ganhou $300, perdeu $100 → PF = 3.0
RSI Relative Strength Index (sobrecompra/venda) RSI > 70 → sobrecomprado, RSI < 30 → sobrevendido
Scalping Trades rápidos com lucros pequenos Compra $100, vende $100.50 em 30 segundos
Sharpe Ratio Retorno ajustado ao risco Sharpe > 1.0 = bom, > 2.0 = excelente
Slippage Diferença entre preço esperado e real Esperava $100, executou $101 → 1% slippage
Stop-Loss Ordem que vende quando preço cai X% Comprou $100, stop $95 → vende se cair pra $95
Stop-Loss Trailing Stop que se move com o preço Preço $100→$110, stop $97→$107
Swing Trading Trades de médio prazo (horas a dias) Compra de manhã, vende à noite
Take-Profit Ordem que vende quando atinge lucro Comprou $100, take-profit $110 → vende ao atingir
Volatilidade Variação de preço em período Token varia 20% ao dia → alta volatilidade
Volume Quantidade negociada em 24h Volume $50k/dia → liquidez razoável
Win Rate % de trades lucrativos 10 trades, 7 lucrativos → win rate 70%

Termos de Blockchain

Termo Definição
Chain ID Identificador único da rede (42161 = Arbitrum)
DEX Decentralized Exchange (troca descentralizada)
Gas Taxa paga para executar transações
Gwei Unidade de medida de gas (1 ETH = 1 bilhão Gwei)
Mainnet Rede principal com dinheiro real
Pool Contrato que contém pares de tokens para swap
RPC Remote Procedure Call (endpoint para acessar blockchain)
Signer Wallet que assina transações
Testnet Rede de testes com dinheiro fake
TVL Total Value Locked (liquidez do pool)
Wallet Endereço Ethereum (ex: 0x123...)

📝 Notas Finais

Premissas do Projeto

  1. Capital Inicial: $30-50 USD (testnet → mainnet)
  2. Risco Aceitável: Até -15% de drawdown
  3. Tempo de Desenvolvimento: 3 meses part-time
  4. Operação: Manual (ligar/desligar), bot decide estratégias
  5. Foco: Day trading, tokens voláteis, SushiSwap apenas

Próximas Versões Futuras (v1.x)

  • 🔮 v1.1: WebSocket ao invés de polling (performance)
  • 🔮 v1.2: Múltiplas wallets (sistema de barragem de risco)
  • 🔮 v1.3: Suporte a outras DEXs (Uniswap, Curve)
  • 🔮 v1.4: MEV protection (Flashbots)
  • 🔮 v1.5: Machine Learning para prever movimentos

Contatos e Suporte


Última Atualização: 05/11/2025 Autor: Lucas Galvão Licença: MIT