Especialista em Backtest
Abordagem sistemática para backtesting de estratégias de trading baseada em metodologia profissional que prioriza robustez sobre resultados otimistas.
Filosofia Central
Objetivo: Encontrar estratégias que "quebrem menos", não estratégias que "lucrem mais" no papel.
Princípio: Adicione fricção, teste suposições sob estresse e veja o que sobrevive. Se uma estratégia se mantém em condições pessimistas, é mais provável que funcione em trading ao vivo.
Quando Usar Esta Skill
Use esta skill quando:
- Desenvolvendo ou validando estratégias de trading sistemáticas
- Avaliando se uma ideia de trading é robusta o suficiente para implementação ao vivo
- Diagnosticando por que um backtest pode ser enganoso
- Aprendendo metodologia adequada de backtesting
- Evitando armadilhas comuns (curve-fitting, viés de look-ahead, viés de sobrevivência)
- Avaliando sensibilidade de parâmetros e dependência de regime
- Definindo expectativas realistas para slippage e custos de execução
Pré-requisitos
- Python 3.9+ (para o script de avaliação)
- Nenhuma chave de API necessária
- Nenhuma dependência de dados externos — as métricas são fornecidas pelo usuário
Fluxo de Trabalho
1. Declare a Hipótese
Defina a vantagem em uma frase.
Exemplo: "Ações que sobem >3% nos resultados e recuam para o fechamento do dia anterior dentro da primeira hora oferecem oportunidade de reversão à média."
Se você não consegue articular a vantagem claramente, não prossiga para o teste.
2. Codifique as Regras com Zero Discricionariedade
Defina com total especificidade:
- Entrada: Condições exatas, momento, tipo de preço
- Saída: Stop loss, meta de lucro, saída baseada em tempo
- Tamanho da posição: $$ fixo, % do portfólio, ajustado por volatilidade
- Filtros: Capitalização de mercado, volume, setor, condições de volatilidade
- Universo: Quais instrumentos são elegíveis
Crítico: Nenhum julgamento subjetivo é permitido. Cada decisão deve ser baseada em regras e inequívoca.
3. Execute o Backtest Inicial
Teste ao longo de:
- Mínimo de 5 anos (preferencialmente 10+)
- Múltiplos regimes de mercado (alta, baixa, alta/baixa volatilidade)
- Custos realistas: Comissões + slippage conservador
Examine os resultados iniciais para viabilidade básica. Se fundamentalmente quebrado, itere sobre a hipótese.
4. Estresse a Estratégia
É aqui que 80% do tempo de teste deve ser gasto.
Sensibilidade de parâmetros:
- Teste stop loss em 50%, 75%, 100%, 125%, 150% do valor base
- Teste meta de lucro em 80%, 90%, 100%, 110%, 120% do valor base
- Varie o momento de entrada/saída em ±15-30 minutos
- Procure por "platôs" de desempenho estável, não picos estreitos
Fricção de execução:
- Aumente o slippage para 1,5-2x as estimativas típicas
- Modele preenchimentos no pior caso (compre na ask+1 tick, venda na bid-1 tick)
- Adicione cenários realistas de rejeição de ordens
- Teste com estruturas de comissão pessimistas
Robustez temporal:
- Analise o desempenho ano a ano
- Exija expectativa positiva na maioria dos anos
- Garanta que a estratégia não dependa de 1-2 períodos excepcionais
- Teste em diferentes regimes de mercado separadamente
Tamanho da amostra:
- Mínimo absoluto: 30 trades
- Preferencial: 100+ trades
- Alta confiança: 200+ trades
5. Validação Fora da Amostra
Análise walk-forward:
- Otimize no período de treinamento (ex.: Ano 1-3)
- Teste no período de validação (Ano 4)
- Avance e repita
- Compare o desempenho dentro da amostra vs. fora da amostra
Sinais de alerta:
- Fora da amostra <50% do desempenho dentro da amostra
- Necessidade de re-otimização frequente de parâmetros
- Parâmetros mudam drasticamente entre períodos
6. Avalie os Resultados
Perguntas a responder:
- A vantagem sobrevive a suposições pessimistas?
- O desempenho é estável em variações de parâmetros?
- A estratégia funciona em múltiplos regimes de mercado?
- O tamanho da amostra é suficiente para confiança estatística?
- Os resultados são realistas, não "bons demais para ser verdade"?
Critérios de decisão:
- ✅ Implementar: Sobrevive a todos os testes de estresse com desempenho aceitável
- 🔄 Refinar: Lógica central sólida, mas precisa de ajuste de parâmetros
- ❌ Abandonar: Falha nos testes de estresse ou depende de suposições frágeis
Use o script de avaliação para uma avaliação quantitativa estruturada:
python3 skills/backtest-expert/scripts/evaluate_backtest.py \
--total-trades 150 \
--win-rate 62 \
--avg-win-pct 1.8 \
--avg-loss-pct 1.2 \
--max-drawdown-pct 15 \
--years-tested 8 \
--num-parameters 3 \
--slippage-tested \
--output-dir reports/
O script pontua em 5 dimensões (Tamanho da Amostra, Expectativa, Gerenciamento de Risco, Robustez, Realismo de Execução), detecta bandeiras vermelhas e gera um veredito de Implementar/Refinar/Abandonar.
Princípios Chave de Teste
Pune a Estratégia
Adicione fricção em todos os lugares:
- Comissões mais altas que a realidade
- Slippage 1,5-2x o típico
- Preenchimentos no pior caso
- Rejeições de ordens
- Preenchimentos parciais
Justificativa: Estratégias que sobrevivem a suposições pessimistas geralmente superam em trading ao vivo.
Busque Platôs, Não Picos
Procure por faixas de parâmetros onde o desempenho é estável, não valores ótimos que criam picos de desempenho.
Bom: Estratégia lucrativa com stop loss em qualquer lugar de 1,5% a 3,0% Ruim: Estratégia só funciona com stop loss exatamente em 2,13%
Desempenho estável indica vantagem genuína; ótimos estreitos sugerem curve-fitting.
Teste Todos os Casos, Não Exemplos Selecionados
Abordagem errada: Estudar "líderes de mercado" escolhidos a dedo que funcionaram Abordagem correta: Testar cada ação que atendeu aos critérios, incluindo aquelas que falharam
Exemplos seletivos criam viés de sobrevivência e superestimam a qualidade da estratégia.
Separe Geração de Ideias de Validação
Intuição: Útil para gerar hipóteses Validação: Deve ser puramente baseada em dados
Nunca deixe o apego a uma ideia influenciar a interpretação dos resultados do teste.
Padrões Comuns de Falha
Reconheça esses padrões cedo para economizar tempo:
- Sensibilidade a parâmetros: Só funciona com valores exatos de parâmetros
- Específico de regime: Ótimo em alguns anos, terrível em outros
- Sensibilidade a slippage: Não lucrativo quando custos realistas são adicionados
- Amostra pequena: Muito poucos trades para confiança estatística
- Viés de look-ahead: Resultados "bons demais para ser verdade"
- Sobre-otimização: Muitos parâmetros, resultados ruins fora da amostra
Veja references/failed_tests.md para exemplos detalhados e estrutura de diagnóstico.
Saída
reports/backtest_eval_<timestamp>.json— avaliação estruturada com pontuações por dimensão, bandeiras vermelhas e vereditoreports/backtest_eval_<timestamp>.md— relatório legível com tabela de dimensões, métricas principais e detalhes das bandeiras vermelhas
Recursos
Referência de Metodologia
Arquivo: references/methodology.md
Quando ler: Para orientação detalhada sobre técnicas específicas de teste.
Conteúdo:
- Métodos de teste de estresse
- Análise de sensibilidade de parâmetros
- Modelagem de slippage e fricção
- Requisitos de tamanho de amostra
- Classificação de regime de mercado
- Vieses e armadilhas comuns (sobrevivência, look-ahead, curve-fitting, etc.)
Referência de Testes com Falha
Arquivo: references/failed_tests.md
Quando ler: Quando a estratégia falha nos testes, ou ao aprender com erros passados.
Conteúdo:
- Por que falhas são valiosas
- Padrões comuns de falha com exemplos
- Estrutura de documentação de estudo de caso
- Lista de verificação de bandeiras vermelhas para avaliar backtests
Lembretes Críticos
Alocação de tempo: Gaste 20% gerando ideias, 80% tentando quebrá-las.
Exigência livre de contexto: Se a estratégia requer "contexto perfeito" para funcionar, não é robusta o suficiente para trading sistemático.
Bandeira vermelha: Se os resultados do backtest parecerem bons demais (>90% de taxa de acerto, drawdowns mínimos, timing perfeito), audite cuidadosamente para viés de look-ahead ou problemas de dados.
Limitações da ferramenta: Entenda as limitações da sua plataforma de backtesting e ferramentas de dados. Suposições sobre execução, custos e qualidade dos dados podem impactar significativamente os resultados.