Backtest · MetaTrader 5

Otimização de parâmetros e overfitting: quando o backtest vira ilusão

O otimizador acha o melhor conjunto do passado, e o passado não volta. Como reconhecer o ajuste, o que o walk-forward mede e como otimizar sem se enganar.

O otimizador do simulador é uma máquina de fazer o passado parecer previsível. Você dá a ele uma regra com três parâmetros, ele testa milhares de combinações e devolve a que mais ganhou. O número é lindo. E é o número de uma regra que foi esculpida para aquele pedaço de história, com o benefício de saber como ela terminou.

Isso é o overfitting: a regra se ajustou ao ruído do passado, não ao que se repete. O sinal de que aconteceu é simples e chega tarde: o mês seguinte não se parece com o teste.

Por que acontece

Todo histórico tem duas coisas misturadas: o que se repete (a tendência da tarde, o gap que fecha, a lateralidade do meio-dia) e o que aconteceu por acaso (aquele rompimento na terça que deu certo). Uma regra com parâmetros suficientes consegue capturar as duas. E o otimizador, que só olha o resultado, prefere a que capturou mais, inclusive o acaso.

Quanto mais parâmetros, mais fácil: com um período de média, você ajusta pouco; com período, múltiplo de ATR, horário de início, horário de fim, gatilho de breakeven e filtro de ADX, você tem seis botões, e seis botões ajustam quase qualquer coisa. Chamamos isso de graus de liberdade, e cada um custa uma parte da confiança no resultado.

Como reconhecer

O pico isolado. Otimize o período da média e olhe os vizinhos: 20 ganhou muito, 18 e 22 perderam. Isso não é uma regra; é uma coincidência de 20. Uma regra real tem um platô: 16, 18, 20, 22, 24 ganham parecido. O platô é o sinal de robustez; o pico é o sinal de ajuste.

O resultado bom demais. Fator de lucro 4, taxa de acerto 80%, curva reta. Estratégias reais não são assim, e a explicação mais provável para uma curva reta é que ela foi desenhada com o futuro na mão.

Muitos parâmetros para poucas operações. Seis parâmetros ajustados em 80 operações é ajuste garantido. A relação entre o número de operações e a confiança está em Quantas operações para julgar um robô.

Piorou fora da amostra. O teste definitivo, abaixo.

Um gráfico do resultado por valor do parâmetro: à esquerda, um pico estreito e alto num valor só com vizinhos ruins; à direita, um platô largo onde vários valores ganham parecido; embaixo, a curva de capital de cada um no período seguinte
O pico ganha mais no teste e perde no mês seguinte. O platô ganha menos no teste e continua. Ilustração.

O walk-forward

A defesa é não deixar o otimizador ver o período em que a regra será julgada. Divida o histórico: otimize em 2021 e 2022, teste em 2023 com os parâmetros que saíram. Depois otimize em 2022 e 2023, teste em 2024. E assim por diante. O resultado que importa é a soma dos períodos de teste, porque é o único resultado em que a regra não sabia o futuro.

Uma regra que ganha nos períodos de otimização e perde nos de teste está ajustada. Uma que ganha menos, mas ganha nos dois, é uma regra. Explicamos os três tipos de teste em Backtest, forward test e walk-forward.

O simulador do MetaTrader 5 tem a divisão embutida: a opção de forward (um quarto, metade, ou uma data) reserva o fim do período para o teste e mostra os dois resultados lado a lado. Como usar está em Backtest no MetaTrader 5 hoje.

As regras para otimizar sem se enganar

  1. Menos parâmetros. Cada um precisa de um motivo que exista fora do teste. "Média de 21 porque é o mês em dias úteis" é um motivo; "21 porque ganhou mais" não é.
  2. Passos grandes. Otimizar o período de 10 a 30 de 5 em 5 mostra o platô; de 1 em 1 mostra picos que não existem.
  3. Escolha o meio do platô, não o pico. Se 16 a 24 ganham parecido, use 20, mesmo que 17 tenha ganhado mais.
  4. Otimize um de cada vez. Dois parâmetros juntos criam combinações que se ajustam entre si. Um por vez, com os outros fixos, mostra o efeito de cada um.
  5. Reserve o fim. Nunca otimize no período em que vai julgar.
  6. Desconfie do salto. Se o resultado otimizado é o dobro do resultado com os parâmetros padrão, o dobro veio do passado.
  7. Teste a versão não otimizada. Os parâmetros padrão dos indicadores (14 do IFR, 20 das bandas) existem há décadas. Se a estratégia só funciona com o seu conjunto especial, ela não funciona.

O otimizador genético

O MetaTrader 5 tem um otimizador genético, que não testa todas as combinações: testa algumas, cruza as melhores e evolui. É mais rápido e mais perigoso, porque acha o pico sem mostrar a paisagem em volta. Use-o para achar regiões e depois teste a região com passos fixos, para ver se é platô.

O que sobra

Otimizar não é errado; é necessário, porque nenhum parâmetro cai do céu. O erro é confundir o melhor do passado com o melhor do futuro. Uma regra otimizada com walk-forward, poucos parâmetros e platô é uma regra que você entende por que funciona. Uma regra com o melhor resultado do otimizador é uma regra que funcionou uma vez, em condições que não voltam.