WeCore
Trading algorítmico

Overfitting em estratégias de trading: como identificar e evitar

Overfitting e curve fitting em estratégias: parâmetros demais, data snooping, in-sample vs out-of-sample, walk-forward, testes de robustez e sinais de alerta.

WeCore·Publicado em ·4 min de leitura

Uma das formas mais certeiras de criar uma estratégia que parece brilhante no gráfico e decepciona ao vivo é o overfitting. Quanto mais fáceis e rápidas ficam as ferramentas de teste, mais fácil é cair nessa armadilha. Este artigo explica o que é overfitting, por que acontece e quais testes ajudam a separar uma vantagem real de puro ruído.

O que é overfitting

Overfitting (no trading muitas vezes chamado de curve fitting) é quando uma estratégia aprende o ruído dos dados históricos em vez do padrão que se repete. O resultado: desempenho excelente nos dados em que foi construída e desempenho fraco em dados novos.

Os dados de preço contêm um pouco de "sinal" e muito ruído aleatório. Todo período histórico inclui eventos únicos: um dia com um anúncio surpresa do banco central, uma semana de volatilidade fora do normal, uma tendência especialmente longa. Uma estratégia ajustada para explorar exatamente esses eventos vai parecer perfeita olhando para trás, mas esses eventos não vão se repetir do mesmo jeito.

Parâmetros demais

Cada parâmetro de uma estratégia é um "botão" que dá para ajustar: período da média móvel, distância do stop, horário de início, um limiar de indicador. Com dois parâmetros é difícil se encaixar no passado. Com dez, dá para "explicar" praticamente qualquer série de dados.

Um exemplo hipotético: uma estratégia com média móvel de 37 candles, stop de 23 ticks, entradas só entre 09:47 e 11:12 e só quando o RSI está abaixo de 41. Cada um desses números foi escolhido porque deu o melhor resultado histórico. A pergunta-chave: por que 37 e não 35 ou 40? Se você não tem uma resposta sensata além de "porque foi o que funcionou melhor", é um sinal de alerta.

Regra prática: quanto menos parâmetros e mais operações no teste, mais confiável o resultado.

Data snooping

Mesmo quando cada estratégia individual tem poucos parâmetros, o problema volta quando você testa muitas ideias nos mesmos dados. Teste cem variações e algumas vão parecer ótimas por puro acaso. Isso se chama data dredging ou data snooping.

Ele também aparece sem querer: você testa uma ideia, não funciona, muda um detalhe, testa de novo, e assim por diante. Depois de cinquenta rodadas, os dados já "vazaram" para dentro da estratégia, mesmo que você nunca tenha rodado uma otimização automática. Anote quantas variações você testou. Esse número importa quase tanto quanto o resultado.

In-sample vs out-of-sample

A ferramenta básica contra o overfitting é separar os dados:

  • In-sample: os dados em que você desenvolve e ajusta a estratégia.
  • Out-of-sample: dados que você reservou e não tocou de forma alguma durante o desenvolvimento.

Só quando a estratégia está "congelada" você a roda nos dados out-of-sample. Se o desempenho desabar, o overfitting é provável. Importante: se depois disso você voltar, mudar a estratégia e testar de novo nos mesmos dados, eles já não são mais realmente out-of-sample.

Teste walk-forward

O walk-forward amplia essa ideia. Você divide o histórico em janelas consecutivas. A cada passo, ajusta numa janela e testa na seguinte; depois avança as duas janelas e repete.

  1. Ajuste no ano 1 e teste no trimestre seguinte.
  2. Avance: ajuste no novo período e teste no trimestre depois dele.
  3. Junte todos os períodos de teste numa única curva.

A curva emendada simula uma situação realista, em que você reajusta de tempos em tempos e depois opera um futuro que não conhece. Se ela parecer muito pior que a otimização completa, essa é uma informação importante.

Testes de robustez

Além de separar os dados, há alguns testes simples que qualquer trader pode fazer:

  • Vizinhança dos parâmetros: mexa um pouco cada parâmetro para cima e para baixo. Uma estratégia robusta mostra resultados parecidos numa faixa ampla. Se só um valor funciona e os "vizinhos" perdem, você achou um pico de sorte.
  • Mercados relacionados: se a estratégia funciona no NQ, como ela se comporta no ES? Não precisa ser idêntico, mas um colapso total levanta dúvidas.
  • Tempos gráficos diferentes: uma pequena mudança de tempo gráfico não deveria transformar uma estratégia lucrativa em perdedora.
  • Períodos diferentes: verifique cada ano separadamente. O lucro vem de um único trecho curto?
  • Custos mais pesados: acrescente mais slippage e corretagem maior. Uma vantagem real deveria sobreviver a isso. Mais em backtest vs operação real.
  • Remova as melhores operações: tire as cinco operações mais lucrativas. Se todo o lucro sumir, a estratégia depende de sorte.

Sinais de que sua estratégia está sobreajustada

  • Uma curva de patrimônio quase perfeitamente lisa, sem fases difíceis.
  • Muitos parâmetros com valores estranhamente precisos.
  • Poucas operações em relação ao número de parâmetros.
  • Bom desempenho só numa faixa muito estreita de configurações.
  • Resultados que mudam muito cada vez que você acrescenta um pouco mais de histórico.
  • Regras especiais criadas para "consertar" perdas específicas do passado.
  • Uma grande diferença entre in-sample e out-of-sample.

Pontos principais

  • Overfitting é aprender ruído em vez de padrão, e só parece ótimo olhando para trás.
  • Menos parâmetros e mais operações são uma defesa básica.
  • Guarde dados out-of-sample e não toque neles até a estratégia estar congelada.
  • Walk-forward e testes de vizinhança de parâmetros expõem picos de sorte.
  • Mesmo uma estratégia que passa em todos os testes precisa de forward test e de um dimensionamento de posição cuidadoso.

Nenhum teste garante sucesso no futuro, por isso a etapa depois do laboratório importa tanto quanto ele. A WeCore permite rodar uma estratégia ou alertas no modo de simulação com regras de risco automatizadas, para você ver como ela se comporta em dados novos antes de arriscar uma conta real. Para uma introdução geral, veja o que é trading algorítmico.

Fontes e leitura adicional