Backtesting e realidade: essa expectativa perfeita está mentindo para você
Seu backtest: expectativa de 8R. Fator de lucro 3,5. 50.000 $ de ganho numa conta de 10.000 $.
Você vai para o real. Primeira semana: expectativa de -2R. Fator de lucro 0,4. Conta 12 % abaixo.
O que aconteceu? Seu backtest mentiu.
🚨 Falando a sério
A maioria dos backtests é pura fantasia. Eles supõem execuções perfeitas, zero slippage, spread nenhum e entradas mágicas que não existem no mercado de verdade.
Se o seu backtest parece bom demais para ser verdade, é porque é. Você se ajustou ao ruído, não ao sinal.
Nesta aula vais aprender:
- Por que 90 % dos backtests fracassam quando vão para o real
- Os 4 pecados capitais: sobreajuste, viés de antecipação, custos irreais e viés de sobrevivência
- Como modelar o slippage e os spreads de um jeito que reflita a realidade
- Dentro da amostra contra fora da amostra (a única validação que importa)
⚡ Ganhos rápidos para amanhã (clica para abrir)
- Acrescente custos realistas ao seu backtest — Inclua 0,03-0,05 % de slippage por operação mais o spread real. Se os resultados desabam, sua vantagem era falsa.
- Divida seus dados 70/30 — Otimize em 70 % dos dados e valide nos 30 % que você nunca viu. Se falhar fora da amostra, você sobreajustou.
- Opere em simulado por 30 dias antes do real — Se os resultados em simulado diferirem muito do backtest, algo está errado. Não vá para o real enquanto não baterem.
Exemplo real: como um backtest «perfeito» com expectativa de 1,3R virou um desastre de -0,45R no real
Contexto: Em março de 2024, Chris (exemplo composto) desenvolveu uma estratégia de rompimento após 6 meses de otimização. O backtest parecia incrível: expectativa de 1,3R, fator de lucro 4,9 e 67 % de acerto, testado em 2 anos de dados do SPY (2022-2023). Em abril de 2024 colocou 50.000 $ para trabalhar. Em junho de 2024 a conta estava 8.400 $ no vermelho (-16,8 %). Aqui vai a autópsia completa.
O backtest «perfeito» (dados de 2022-2023)
| Métrica | Valor | O que Chris pensava |
|---|---|---|
| Operações no total | 156 | Amostra de bom tamanho |
| Taxa de acerto | 67.3% (105W / 51L) | «Inacreditável! Muito acima da média.» |
| Ganho médio / perda média | +2.4R / -1R | «Ótimo R:R, os ganhos valem 2,4× as perdas.» |
| Fator de lucro | 4.9 | «Um número de nível profissional.» |
| Esperança | +1,3R por operação | «Território de santo graal.» |
| drawdown máximo | -8.2% | «Um drawdown minúsculo. Seguríssimo.» |
| Retorno total (2 anos) | +$40,600 (+406%) | «É esta. Vou largar meu emprego.» |
O processo de otimização de Chris:
- Testou 50 períodos de EMA diferentes (achou que EMA(34) era «perfeita»)
- Testou 20 multiplicadores de ATR para os stops (achou que 1,47× ATR era «ótimo»)
- Testou 15 níveis de alvo (achou que 2,8R era «o melhor»)
- Estratégia final: cruzamento de EMA(34) + stop em 1,47× ATR + alvo de 2,8R
- Combinações testadas no total: 50 × 20 × 15 = 15.000 variações
O que Chris não colocou no backtest:
- O slippage (supôs execuções perfeitas nos preços exatos)
- O spread de compra e venda (supôs spread zero)
- As corretagens (esqueceu de modelá-las)
- A rejeição de ordens (supôs 100 % de execução)
- O teste fora da amostra (nunca testou em dados não vistos)
A realidade no real (abril-junho de 2024, 10 semanas)
| Métrica | Backtest | Realidade no real | Diferença |
|---|---|---|---|
| Taxa de acerto | 67.3% | 51.4% (19W / 18L) | -15,9 pontos pior |
| Ganho médio | +2.4R (+$1,200) | +1.8R (+$900) | -25 % menor |
| Perda média | -1R (-$500) | -1.3R (-$650) | -30 % maior |
| Fator de lucro | 4.9 | 1.46 | -70 % de desabamento |
| Esperança | +1.3R | -0,45R líquido de custos | -1,75R NEGATIVO |
| drawdown máximo | -8.2% | -21.4% | 2,6× pior |
| Retorno total (10 semanas) | +9.600 $ projetados | -$8,400 (-16.8%) | 18.000 $ de diferença |
A contabilidade completa: para onde foram os 18.000 $
| Categoria de custo | Descrição | Impacto |
|---|---|---|
| 1. Sobreajuste (curva ajustada) | EMA(34) + 1,47× ATR funcionava perfeitamente nos dados de 2022-2023, mas estava otimizado ao ruído histórico. As condições de 2024 = outro ruído. | -$6,200 |
| 2. Slippage (não modelado) | Slippage médio de 0,08 % por operação × 25.000 $ de posição média × 37 idas e voltas = 1.480 $ em custos de slippage | -$1,480 |
| 3. Spread de compra e venda | Spread do SPY 0,01 $ × 500 ações em média × 37 operações = 185 $. Opções (usadas para alavancar) spread = 0,03 $ por ação × 100 ações por contrato × 20 contratos × 37 operações = 2.220 $ de custo total de spread | -$2,405 |
| 4. Corretagens | Opções: 0,65 $ por contrato × 20 contratos × 37 operações × 2 (ida e volta) = 962 $ | -$962 |
| 5. Rejeição de ordens | Em 8 operações as ordens limitadas nunca foram executadas (5 ganhadoras perdidas, 3 perdedoras perdidas). Custo de oportunidade líquido: 5 ganhadoras a +1,8R perdidas (-9R) menos 3 perdedoras a -1,3R evitadas (+3,9R) = -5,1R = 2.550 $ | -$2,550 |
| 6. Viés de antecipação | O código do backtest usava close[0] para calcular a entrada e entrava no fechamento daquele mesmo candle (impossível no real). No real a entrada é na abertura do candle seguinte. Uma entrada 0,3 % pior em média = 2.775 $ de degradação | -$2,775 |
| 7. Atrasos de execução | Latência da plataforma + tempo de conferência da ordem = 2 a 8 segundos de atraso. Rompimentos rápidos andavam 0,15 % em média antes da execução = 1.387 $ de slippage por atraso | -$1,387 |
| DEGRADAÇÃO TOTAL EM RELAÇÃO AO BACKTEST: | -$17,759 | |
As contas:
- Lucro projetado pelo backtest (10 semanas): +9.600 $
- Menos os custos de degradação: -17.759 $
- Resultado esperado no real: -8.159 $
- Resultado efetivo no real: -8.400 $ — a contabilidade chega a 250 $ do que realmente aconteceu
O que deveria ter sido feito: a validação correta
| Passo | O que Chris fez (errado) | O que se deve fazer (certo) |
|---|---|---|
| 1. Divisão dos dados | Usou todos os dados de 2022-2023 para otimizar | Otimizar em 2022 e guardar 2023 para o teste fora da amostra |
| 2. Otimização | Testou 15.000 combinações de parâmetros | Usar parâmetros padrão (EMA 20/50, stops em 2× ATR). Limitar os testes a menos de 10 variações |
| 3. Modelagem de custos | Supôs custos iguais a zero | Modelar 0,10 % de slippage + 0,01 $ de spread + 2 $ de corretagem por operação = no mínimo -30 $ por operação |
| 4. Verificação de antecipação | Usou o fechamento do mesmo candle para o sinal e a execução | Sinal em close[0], execução em open[1] (candle seguinte). Tempo realista. |
| 5. Teste fora da amostra | Nunca testou em dados não vistos | Testar nos dados de 2023 (intocados). Se o desempenho piorar mais de 30 %, a estratégia está sobreajustada |
| 6. Walk-forward | Um único período de backtest | Janelas de otimização de 6 meses, teste nos 3 meses seguintes. Repetir avançando. Conferir a consistência. |
O teste fora da amostra que Chris deveria ter feito
O método correto:
- Período dentro da amostra: Otimizar só nos dados de 2022 (não encostar em 2023)
- Encontrar os parâmetros: EMA(34) + 1,47× ATR (mesmo resultado, mas obtido só com 2022)
- Congelar os parâmetros: NADA MAIS MUDA. Os parâmetros estão fixados.
- Teste fora da amostra: Rodar exatamente esses parâmetros nos dados de 2023
- Comparar os resultados: Se o desempenho de 2023 ficar abaixo de 70 % do de 2022, a estratégia está sobreajustada
O que teria acontecido:
| Período | Esperança | Fator de lucro | Veredicto |
|---|---|---|---|
| 2022 (dentro da amostra) | +1.4R | 3.1 | Desempenho otimizado |
| 2023 (fora da amostra) | +0.4R | 1.4 | ⚠️ 71 % de degradação |
| Conclusão: A estratégia está gravemente sobreajustada. A expectativa de 2023 é 29 % da de 2022. Com custos realistas (-30 $ por operação = -0,15R), a expectativa líquida fica em +0,25R (mal acima de zero). NÃO COLOCAR EM PRODUÇÃO. | |||
A lição: o backtest de Chris era uma fantasia. Testar 15.000 combinações de parâmetros garante que você vai achar uma que encaixe perfeitamente no ruído histórico. Aquela expectativa «perfeita» de 1,3R era lixo ajustado à curva. Um teste fora da amostra teria revelado isso antes de perder 8.400 $. Backtesting não é achar o melhor desempenho passado, é achar o que vai funcionar daqui para a frente. E isso exige dados não vistos, custos realistas e zero viés de antecipação.
Por que sua estratégia perfeita vai fracassar no real
Vamos começar pela verdade incômoda: se você otimizou uma estratégia para encaixar em dados passados, não achou uma vantagem. Achou ruído.
Ajustar a curva a ruído aleatório
O que é: Otimizar parâmetros até o backtest ficar perfeito
Exemplo:
- Você testa 100 períodos de EMA diferentes (10, 11, 12… 110)
- EMA(47) dá 4,2R de expectativa no backtest
- Você acha que achou o «número mágico»
Realidade: EMA(47) simplesmente encaixou por acaso naquele conjunto de dados. E no teste adiante? Expectativa de -0,8R. Você aprendeu o ruído, não o sinal.
Melhor: Limite a otimização. Use parâmetros padrão. Teste em dados não vistos.
Usar dados do futuro (impossível no real)
O que é: Código que «espia» candles futuros para decidir agora
Exemplo:
if close[0] > high[5]: # usa os 5 candles FUTUROS
enter_long()
O problema: No backtesting você tem os dados do futuro. No real, não.
Realidade: Esse código simplesmente não roda no real. Seu backtest está testando uma estratégia que não existe.
Melhor: Use só os dados disponíveis no momento da decisão.
Supor execuções perfeitas a preços perfeitos
Suposição do backtest: «Compro a 100,00 $ exatos»
Realidade: A ordem a mercado executa a 100,12 $ (spread + slippage)
Impacto ao longo de 100 operações:
- Lucro do backtest: 5.000 $
- Custo do spread (0,10 $ por operação): -1.000 $
- Slippage (0,05 $ por operação): -500 $
- Corretagens (2 $ por operação): -200 $
Realidade: Lucro real = 3.300 $ (34 % menos que o backtest)
Testar só nos sobreviventes
O que é: Fazer backtesting só nas ações que hoje compõem o S&P 500
O problema: Você está deixando de fora mais de 200 ações que saíram do índice ou quebraram
Exemplo:
- Backtest na lista do S&P 500 de 2024: expectativa de 1,8R, fator de lucro 2,1
- Mas ao longo desse período você teria ficado comprado em Hertz (quebrou em 2020), em SVB Financial (colapsou em 2023) e em todo outro nome que foi a zero.
Realidade: Sua expectativa deixa de fora as perdas catastróficas das saídas do índice. Expectativa real: -0,2R (um sistema perdedor).
💡 o momento da verdade
Um backtest não é a realidade. É uma simulação. E se a sua simulação embute suposições impossíveis, seus resultados no real também serão impossíveis.
Os custos escondidos que matam estratégias
Isto é o que a maioria dos backtests ignora — e por isso o seu está provavelmente 20-40 % otimista demais:
Passo 1: modelar o spread de compra e venda
O que é: A diferença entre o preço de compra e o de venda
Exemplo:
- SPY compra: 450,00 $ / venda: 450,01 $ → spread = 0,01 $
- Você compra: paga 450,01 $ (meio spread = 0,005 $)
- Você vende: recebe 450,00 $ (meio spread = 0,005 $)
Custo por ida e volta: $0.01
Para 1.000 ações: 0,01 $ × 1.000 = 10 $ por operação
100 operações: 1.000 $ em custos de spread
Passo 2: modelar o slippage
O que é: Diferença entre o preço pretendido e a execução real
Slippage realista conforme as condições:
- Liquidez normal: 0.01-0.02%
- Mercados voláteis: 0.05-0.10%
- Liquidez rala: 0.10-0.30%
- Posição de tamanho grande: 0.20-0.50%
Suposição conservadora: 0,05 % por operação
Posição de 10.000 $ × 0,05 % = 5 $ de slippage por lado = 10 $ na ida e volta
Passo 3: modelar as corretagens
Exemplo: Interactive Brokers
- 0,005 $ por ação, mínimo de 1 $
- 200 ações × 0,005 $ = 1 $ por lado
- Ida e volta = 2 $
100 operações: 200 $ em corretagens
Passo 4: custo realista total
Por operação (ida e volta):
- Spread: 10 $
- Slippage: 10 $
- Corretagem: 2 $
Total: 22 $ por operação
Se sua estratégia rende 50 $ brutos por operação → 28 $ líquidos (44 % a menos!)
Exemplo de ajuste do backtest
Antes e depois dos custos realistas
Estratégia: 100 operações, 50 $ de lucro médio por operação
Backtest (fantasia):
100 operações × 50 $ = 5.000 $ de lucro
Depois dos custos realistas:
- Bruto: 5.000 $
- Spread: -1.000 $
- Slippage: -1.000 $
- Corretagens: -200 $
Lucro líquido: 2.800 $ (44 % a menos)
A única validação que importa
É assim que os profissionais validam uma estratégia:
Divida seus dados em dois períodos.
- Dentro da amostra (60-70 %): É aqui que você desenvolve e otimiza sua estratégia
- Fora da amostra (30-40 %): Validação em dados NÃO VISTOS
🎯 Exemplo: 6 anos de dados (2018-2024)
Dentro da amostra: 2018-2022 (otimize aqui)
- Teste parâmetros diferentes
- Ache as regras de melhor desempenho
- Refine a lógica de entrada e saída
Fora da amostra: 2023-2024 (valide aqui)
- Rode a estratégia sem NENHUMA mudança
- Compare o desempenho com o de dentro da amostra
- Se for parecido → não está sobreajustada!
- Se for bem pior → sobreajustada ao ruído de dentro da amostra
Sinais de alerta de sobreajuste
🚩 Indícios de que sua estratégia está ajustada à curva
- Sharpe acima de 3,0: Bom demais para ser verdade
- Expectativa acima de 5R: Extremamente raro (confira suas suposições de execução)
- Só 20-30 operações: Amostra pequena demais (estatisticamente sem sentido)
- Curva de capital perfeita: Uma linha lisa sem drawdowns (impossível)
- Testada num único ativo: Provavelmente ajustada àquele regime específico
- 10 ou mais parâmetros otimizados: Você ajustou o ruído, não o sinal
O método profissional de validação
Dentro contra fora da amostra é bom. Walk-forward é melhor.
Como funciona:
📊 O esquema walk-forward
Período 1: Treine em 2018-2019 → teste em 2020
Período 2: Treine em 2019-2020 → teste em 2021
Período 3: Treine em 2020-2021 → teste em 2022
Período 4: Treine em 2021-2022 → teste em 2023
Se for consistente em todos os períodos: Estratégia robusta
Se o desempenho piorar: Sobreajustada ou dependente do regime
🎓 Pontos essenciais
- Modele custos realistas: Spread, slippage, corretagens (20-40 % menos lucro)
- Evite o sobreajuste: Limite os parâmetros e teste em vários mercados
- Dentro contra fora da amostra: Desenvolva em 60-70 %, valide em 30-40 %
- Teste walk-forward: Confira a consistência ao longo do tempo
- Sinais de alerta: Sharpe acima de 3,0, expectativa acima de 5R, menos de 30 operações
- Teste adiante antes do real: Simulado por no mínimo 3 a 6 meses
🎯 Prática de validação de backtest
Exercício: valide sua estratégia com o detector de sinais de alerta
Pegue sua estratégia atual (ou uma que esteja considerando) e passe-a pela validação:
- Faça o backtest em 60 % dos seus dados (dentro da amostra). Anote: operações, expectativa, Sharpe, DD máximo
- Identifique os parâmetros usados (EMAs, limiares etc.). Você os otimizou testando vários valores?
- Teste nos 40 % restantes (fora da amostra). Compare com o resultado de dentro da amostra.
- Use a ficha de validação do modelo (8 categorias, 60 pontos no máximo)
- Some sua pontuação: 50-60 = seguir em frente, 40-49 = revisar, abaixo de 40 = descartar
- Se a pontuação chegar a 50: opere em simulado de 30 a 60 operações antes de ir para o real
Objetivo: Pegue o ajuste de curva, o viés de antecipação e as suposições irreais ANTES que destruam sua conta real. Melhor descartar uma estratégia ruim no backtesting do que perder dinheiro de verdade.
🎮 Verificação rápida
P: Você faz o backtest de uma estratégia: expectativa de 5,2R, índice de Sharpe de 4,2, testada em 25 operações, usando EMA(47) porque foi a que deu o melhor resultado depois de testar 100 períodos diferentes. O que está errado?
Você faz o backtest de uma estratégia de reversão à média no SPY de 2010 a 2024. Resultados: expectativa de 2,8R, 68 % de acerto, 120.000 $ de lucro. Os dados incluem apenas os componentes atuais do S&P 500 (as ações que estão no índice hoje). Você vai para o real em 2025 e fracassa. O que deu errado?
Você faz um teste walk-forward da sua estratégia: treina em 2018-2020 e testa em 2021 (passa). Treina em 2018-2021 e testa em 2022 (passa). Treina em 2018-2022 e testa em 2023 (passa). Você não modelou o slippage nem as corretagens. Deve operar essa estratégia no real?
No backtesting, a perfeição é suspeita. O realismo é a vantagem. Modele os custos, evite o sobreajuste, teste adiante — ou fracasse no real.
Aulas relacionadas
Dominar o diário de trading
Acompanhe o desempenho no real e compare com os resultados do backtest.
Ler a aula →Dimensionamento da posição
Aplique um dimensionamento correto nos backtests, para resultados realistas.
Ler a aula →Reconhecimento de regime
Teste sua estratégia em todos os regimes para verificar a robustez.
Ler a aula →⏭️ A seguir
Lição #33: gestão avançada de risco — os modelos profissionais — Aprenda o critério de Kelly, o dimensionamento dinâmico e os protocolos de drawdown.
Apenas para fins educativos. Negociar envolve risco substancial de perda. Resultados passados não garantem resultados futuros.
💬 Discussão (0 comentários)
A carregar comentários…
Pronto para operar com a Signal Pilot?
Põe a tua formação em prática com indicadores profissionais e ferramentas de análise de mercado em tempo real.
Voltar à Signal Pilot →Apenas para fins educativos. Negociar envolve risco substancial de perda. Não é aconselhamento financeiro. Resultados passados não garantem resultados futuros.