Skip to content

A modular Statistical Arbitrage framework for the Itaú Asset Quant AI Challenge. Focused on cointegration validation, backtesting of hybrid strategies (BB, Trend, GARCH), and advanced parameter optimization.

License

Notifications You must be signed in to change notification settings

arandugen/stat-arb-framework

Repository files navigation

Framework de Pesquisa para Estratégias de Cointegração Híbridas na B3

Descrição

Este repositório contém um framework completo e automatizado em Python para a pesquisa, validação e backtesting de estratégias de trading quantitativo baseadas em cointegração.

O projeto unifica duas abordagens de pesquisa:

  1. Análise de Pares (StatArb): Identificação de relações de equilíbrio de longo prazo entre ativos (ex: SUZB3 vs. KLBN11).
  2. Estratégias Híbridas: Aplicação de modelos avançados (Bollinger, Filtros de Tendência, GARCH) sobre o spread do par, que é tratado como um ativo sintético.

Funcionalidades Principais

  • Pipeline de Dados Flexível: Coleta dados de múltiplas fontes (MetaTrader 5 e yfinance) e permite a análise de pares com fontes mistas (ex: Spot do YFinance vs. Futuro do MT5).
  • Validação Estatística Robusta: Utiliza um pipeline de validação que testa os pares não apenas com Engle-Granger, mas também com testes de robustez como KPSS e Expoente de Hurst.
  • Estratégia Híbrida Modular: O motor de sinais (strategy.py) permite a configuração de estratégias complexas através de "interruptores" no config.py, combinando:
    • Sinais de Entrada: Bandas de Bollinger sobre o spread.
    • Filtro de Tendência: Uma SMA longa opcional para filtrar regimes (use_trend_filter: True/False).
    • Filtro/Ponderação de Volatilidade: Um filtro GARCH(1,1) que pode atuar como um "portão" (garch_mode: 'gate') ou como um "ponderador" de posição (garch_mode: 'weight').
  • Motor de Backtest Realista: A simulação (backtesting.py) é iterativa (candle-a-candle) e incorpora:
    • Juros Compostos: O tamanho da posição é rebalanceado com base no capital atual.
    • Custos Operacionais: Simulação do custo de aluguel (BTC) para posições vendidas.
    • Rendimento de Caixa (CDI): O capital não alocado (em caixa) rende a taxa CDI diária, fornecendo um benchmark de custo de oportunidade mais justo.
  • Otimização de Parâmetros: Incluirá futuramente um módulo (optimizer.py) com differential_evolution para a busca de parâmetros ótimos.

Estrutura do Projeto

A estrutura atual é plana, com os módulos de lógica dentro de src/ e os scripts orquestradores na raiz.


/stat-arb-framework/
│
├── data/                 \# Dados brutos e processados
│   ├── raw/
│   └── processed/
│
├── docs/                 \# Documentação detalhada da metodologia
│
├── reports/              \# Saída dos backtests (gráficos e CSVs)
│
├── src/                  \# Código fonte da biblioteca (o "motor")
│   ├── **init**.py
│   ├── backtesting.py
│   ├── benchmarks.py
│   ├── data_collection.py
│   ├── indicators.py
│   ├── models.py
│   ├── optimizer.py
│   ├── processing.py
│   ├── reporting.py
│   ├── strategy.py
│   ├── utils.py
│   └── validation.py
│
├── .env                  \# Arquivo para credenciais (NÃO COMMITAR)
├── .gitignore
├── config.py             \# Arquivo de configuração central
├── run_etl.py        \# Orquestrador do pipeline de ETL (Download/Processamento)
├── main_pipeline.py      \# Orquestrador principal (Roda tudo: ETL -\> Validação -\> Backtest)
├── run_backtest.py       \# Script para rodar um backtest em um único par
├── run_validation.py     \# Script para rodar apenas a validação
└── README.md             \# Este arquivo

Como Usar

1. Configuração do Ambiente

O projeto usa pip e venv para gerenciamento de dependências.

# 1. Clone o repositório e navegue até a pasta
cd stat-arb-framework

# 2. Crie o ambiente virtual
python -m venv .venv

# 3. Ative o ambiente
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate

# 4. Instale os pacotes
pip install -r requirements.txt

2. Configuração do MetaTrader 5 (Arquivo .env)

Para coletar dados do MT5, crie um arquivo .env na raiz do projeto com suas credenciais:

# Credenciais de acesso para o MetaTrader 5
MT5_LOGIN=seu_login_mt5
MT5_PASSWORD=sua_senha_mt5
MT5_SERVER=nome_do_servidor_da_corretora

3. Configurando o Pipeline (config.py)

Antes de executar, ajuste o config.py para definir sua pesquisa:

  1. ASSET_PAIRS_TO_ANALYZE: Defina os pares e suas fontes ('mt5' ou 'yfinance').
  2. STRATEGY_CONFIG: Ajuste os "interruptores" (use_trend_filter, garch_mode, exit_strategy) e os parâmetros (janelas, std).
  3. BACKTEST_CONFIG: Defina o capital, taxas, etc.

4. Executando o Pipeline

Você pode executar o pipeline de ponta-a-ponta ou em partes.

# Opção 1: Executar o pipeline completo (ETL -> Validação -> Backtest)
python main_pipeline.py

# Opção 2: Executar apenas o ETL (Download e Processamento)
python run_etl.py download --clean
python run_etl.py process

# Opção 3: Executar apenas a Validação (pressupõe que os dados existem)
python run_validation.py

# Opção 4: Executar um backtest único (pressupõe que os dados existem)
python run_backtest.py --pair SUZB3 KLBN11

Documentação

O framework é extensivamente documentado. Cada módulo e decisão de design é detalhado na pasta /docs.

About

A modular Statistical Arbitrage framework for the Itaú Asset Quant AI Challenge. Focused on cointegration validation, backtesting of hybrid strategies (BB, Trend, GARCH), and advanced parameter optimization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages