Um projeto de portfΓ³lio demonstrando a interseΓ§Γ£o entre Engenharia de Software, Machine Learning e FinanΓ§as Quantitativas.
Arquitetura β’ InstalaΓ§Γ£o β’ Uso β’ MΓ³dulos β’ Disclaimer
Este projeto implementa um bot de anΓ‘lise de mercado baseado em IA com pipeline completo: ingestΓ£o de dados β anΓ‘lise tΓ©cnica β modelo preditivo β backtesting. O objetivo Γ© demonstrar boas prΓ‘ticas de engenharia de software em um domΓnio complexo e real.
β οΈ Este projeto Γ© exclusivamente educacional. NΓ£o Γ© um sistema de trading em produΓ§Γ£o, nΓ£o gerencia dinheiro real e nΓ£o garante retornos financeiros de qualquer espΓ©cie.
- Arquitetura modular com ProgramaΓ§Γ£o Orientada a Objetos e interfaces abstratas (Strategy Pattern)
- Pipeline de ML completo: feature engineering, TimeSeriesSplit, validaΓ§Γ£o cruzada temporal
- Dois modelos intercambiΓ‘veis: Random Forest (baseline interpretΓ‘vel) e LSTM (deep learning sequencial)
- Motor de backtesting com simulaΓ§Γ£o realista de taxas, slippage, stop-loss e take-profit
- MΓ©tricas financeiras profissionais: Sharpe Ratio, Maximum Drawdown, Profit Factor
- Cobertura de testes com pytest e fixtures para dados sintΓ©ticos
- CΓ³digo PEP8 com docstrings completas e logging estruturado
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI TRADING BOT PIPELINE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββββββββββ
β Exchange β β Data Ingestion β β Technical Analysis β
β (CCXT) βββββΆβ OHLCV Fetcher βββββΆβ RSI, MACD, BB, β
β Binance β β Rate Limiting β β EMA, SMA, ATR, β
β Kraken... β β Error Handling β β VWAP, Volume Ratio β
ββββββββββββββββ ββββββββββββββββββββ ββββββββββββ¬ββββββββββββ
β
ββββββββββββββββββββββββββββββββββββΌβββββββββββ
β Feature Engineering β
β Returns % | Volume Anomaly | Target Label β
ββββββββββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββββ
β AI Model Layer β
β β
β βββββββββββββββββββββββ ββββββββββββββββββββββββ β
β β Random Forest β β LSTM β β
β β (Baseline, Fast) β β (Sequential, Deep) β β
β β Feature Importance β β Lookback Window: 60 β β
β βββββββββββββββββββββββ ββββββββββββββββββββββββ β
β TimeSeriesSplit β sem look-ahead bias β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ
β Backtesting Engine β
β Capital Mgmt | Stop-Loss | Take-Profit | Slippage β
ββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββ
β Results & Reporting β
β Sharpe Ratio | Max Drawdown | Win Rate | JSON + Logs β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- DataIngestion conecta Γ exchange via CCXT e busca N candles OHLCV com rate limiting automΓ‘tico
- TechnicalAnalysis enriquece o DataFrame com 15+ indicadores usando Pandas (sem dependΓͺncia de TA-Lib)
- Feature Engineering gera retornos percentuais, anomalias de volume e o target label binΓ‘rio
- AI Model treina com
TimeSeriesSplitpara respeitar a ordem temporal e evitar data leakage - Backtester simula operaΓ§Γ΅es no conjunto de teste com custos realistas e gestΓ£o de risco
- Reporting salva mΓ©tricas em JSON e logs estruturados para auditoria
ai_trading_bot/
β
βββ src/
β βββ __init__.py
β βββ data_ingestion.py # MΓ³dulo de coleta de dados via CCXT
β βββ technical_analysis.py # CΓ‘lculo de indicadores tΓ©cnicos
β βββ ai_model.py # Random Forest + LSTM (BaseModel interface)
β βββ backtesting.py # Simulador de estratΓ©gias
β
βββ tests/
β βββ __init__.py
β βββ test_technical_analysis.py # Testes unitΓ‘rios (pytest)
β
βββ results/ # JSONs de resultados (gerado automaticamente)
βββ logs/ # Arquivos de log (gerado automaticamente)
β
βββ main.py # Orquestrador do pipeline (CLI)
βββ requirements.txt
βββ README.md
- Python 3.11+
- pip
# 1. Clone o repositΓ³rio
git clone https://github.com/seu-usuario/ai-trading-bot.git
cd ai-trading-bot
# 2. Crie e ative um ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/macOS
# ou: venv\Scripts\activate # Windows
# 3. Instale as dependΓͺncias
pip install -r requirements.txt
# 4. (Opcional) Para usar o modelo LSTM
pip install tensorflowpython main.py --dry-run# BTC/USDT, timeframe de 1 hora, 500 candles
python main.py --symbol BTC/USDT --timeframe 1h --limit 500
# ETH/USDT, timeframe de 4 horas
python main.py --symbol ETH/USDT --timeframe 4h --limit 1000
# Com modelo LSTM (requer TensorFlow instalado)
python main.py --model lstm --limit 2000 --dry-runpytest tests/ -v --cov=src --cov-report=term-missing| Argumento | PadrΓ£o | DescriΓ§Γ£o |
|---|---|---|
--symbol |
BTC/USDT |
Par de trading da exchange |
--timeframe |
1h |
Intervalo dos candles |
--limit |
500 |
NΓΊmero de candles histΓ³ricos |
--model |
random_forest |
Modelo de IA: random_forest ou lstm |
--dry-run |
False |
Usa dados sintΓ©ticos (sem API) |
--log-level |
INFO |
NΓvel de verbosidade dos logs |
--output |
results/ |
DiretΓ³rio para salvar resultados |
Conecta a 100+ exchanges via CCXT. Features:
- Busca candles OHLCV com retry automΓ‘tico
- Rate limiting integrado (
enableRateLimit=True) - Suporte a modo sandbox para testes seguros
- Busca multi-sΓmbolo com tratamento de falhas parciais
Calcula indicadores diretamente com Pandas/NumPy (zero dependΓͺncia de TA-Lib):
- MΓ©dias: SMA (20/50/200), EMA (9/21)
- Momentum: RSI (14), MACD (12/26/9)
- Volatilidade: Bollinger Bands, ATR
- Volume: VWAP, Volume Ratio
- API fluente com method chaining:
ta.add_sma().add_rsi().add_macd()
Interface BaseModel abstrata (Strategy Pattern) com duas implementaΓ§Γ΅es:
| Aspecto | Random Forest | LSTM |
|---|---|---|
| Dados mΓnimos | ~300 candles | ~2000 candles |
| Velocidade de treino | Segundos | Minutos |
| Interpretabilidade | β Feature Importance | β Caixa preta |
| Captura temporal | Limitada | Excelente |
| Recomendado para | InΓcio e baseline | Experimentos avanΓ§ados |
Simula operaΓ§Γ΅es histΓ³ricas com:
- GestΓ£o de capital por percentual (
position_size_pct) - Custos reais: taxa Binance (0.1%) + slippage (0.05%)
- Stop-loss e take-profit por candle
- Filtro de confianΓ§a mΓnima do modelo (
min_confidence) - MΓ©tricas: Sharpe Ratio, Max Drawdown, Win Rate, Profit Factor
Em sΓ©ries temporais, usar split aleatΓ³rio causa data leakage (vazamento de dados): o modelo
"vΓͺ" o futuro durante o treino, inflando artificialmente as mΓ©tricas. O TimeSeriesSplit garante
que o modelo seja sempre treinado com dados do passado e avaliado com dados do futuro.
Random Forest Γ© resistente a overfitting, treina rapidamente e fornece feature importance β essencial para entender quais indicadores tΓ©cnicos realmente contribuem para as previsΓ΅es. Γ o ponto de partida ideal antes de escalar para modelos mais complexos.
Slippage Γ© a diferenΓ§a entre o preΓ§o esperado e o preΓ§o executado, comum em mercados com pouca liquidez. IgnorΓ‘-lo produz backtests irrealisticamente otimistas (overfitting de estratΓ©gia).
Este projeto Γ© estritamente educacional e de portfΓ³lio.
- NΓ£o constitui aconselhamento financeiro, de investimento ou recomendaΓ§Γ£o de qualquer tipo.
- Resultados de backtesting nΓ£o garantem performance futura.
- Trading de criptomoedas e outros ativos envolve risco substancial de perda.
- Os autores nΓ£o se responsabilizam por qualquer perda financeira decorrente do uso deste cΓ³digo.
- Consulte um profissional financeiro certificado antes de tomar decisΓ΅es de investimento.
Nunca use dinheiro que vocΓͺ nΓ£o pode se dar ao luxo de perder.
DistribuΓdo sob a licenΓ§a MIT. Veja LICENSE para mais informaΓ§Γ΅es.
Feito com π§ e β β Para aprender, questionar e evoluir.