O que é validação walk-forward? 104 pares estratégia-ticker testados — apenas 54% sobrevivem
Validação walk-forward separa o fluke in-sample do edge real. 104 pares (estratégia, ticker) testados no universo QA — 56 ROBUST, 20 STABLE, 18 LUMPY, 10 sem trades. Aqui está a procedure, os veredictos, e por que a maioria dos backtests de varejo falha silenciosamente nessa barra.
A história padrão do backtest vai assim. Escolha uma estratégia. Escolha um ticker. Rode nos últimos dois anos de dados. Some o P&L. Reporte um número. Se o número for positivo, reivindique edge. Opcionalmente, compartilhe um chart no Twitter.
A história está meio certa. Um backtest positivo é uma condição necessária para edge. Está longe de ser suficiente. Uma estratégia pode produzir uma curva de equity in-sample linda e ainda ser um curve-fit — um fit coincidental ao ruído na janela histórica específica, com zero poder preditivo em dados que a estratégia não viu. A forma de saber a diferença é validação walk-forward: re-rode a estratégia em janelas futuras disjuntas que a otimização nunca tocou e veja se o edge sobrevive.
Acabamos de rodar um sweep através da biblioteca tradfi-stocks da QA — cada estratégia da biblioteca × cada ticker do universo temático. 104 pares (estratégia, ticker) em 2 anos de dados horários, divididos em duas janelas walk-forward de 1 ano. Os veredictos: 56 ROBUST (53,8%), 20 STABLE (19,2%), 18 LUMPY (17,3%), 10 sem trades. Essa parcela ROBUST é alta pelo padrão da indústria — a maioria dos universos de backtest públicos sobrevive em dígitos duplos baixos ou pior — e a parcela alta é em si um sinal de que o universo é real, não de que a validação é fraca. Este artigo passa pela procedure, os quatro veredictos (com exemplos concretos do sweep ao vivo), e por que a maioria dos backtests de varejo falha silenciosamente nessa barra.
O TL;DR. Um backtest walk-forward ajusta os parâmetros da estratégia numa janela in-sample, congela-os, então mede performance numa janela posterior out-of-sample que a otimização nunca viu. Repita em janelas rolantes. Uma estratégia que imprime números positivos em múltiplas janelas out-of-sample tem edge real. Uma estratégia que imprime ótimo in-sample e zera out-of-sample é um curve-fit. Os quatro veredictos QA — ROBUST, STABLE, LUMPY, NOTRADES — comprimem esse julgamento em um único rótulo.
O que validação walk-forward realmente é
A procedure, em cinco passos:
- Pegue sua janela histórica completa. Para o sweep tradfi-stocks QA: 2 anos de candles de 1 hora por ticker, terminando recentemente.
- Fatie-a em chunks. Dois chunks de um ano cada é o padrão QA (
wf_days: 365). Alguns setups usam slices rolantes de menor duração — mesma lógica. - Treine (ou "ajuste") no chunk 1. Encontre o conjunto de parâmetros que maximiza a função objetivo que você está otimizando — tipicamente P&L ajustado ao risco. Congele esses parâmetros.
- Teste no chunk 2. Aplique os parâmetros congelados a dados que a estratégia nunca viu. Meça o resultado.
- Repita. Opcionalmente, treine nos chunks 1+2, teste no chunk 3. Ou role uma janela candle-por-candle (a variante mais cara). O ponto é o mesmo: separar os dados usados para escolher a estratégia dos dados usados para julgá-la.
Todo o ponto está no passo 4 — a estratégia é graduada em dados que não pôde olhar. Qualquer estratégia que vai bem no passo 3 mas mal no passo 4 é curve-fit. Qualquer estratégia que vai bem em ambos demonstrou, no mínimo, que qualquer padrão que esteja explorando estava presente em duas fatias independentes do passado — que é a evidência empírica mais limpa disponível de que o padrão pode persistir no futuro.
Por que isso importa — o problema do curve-fit
Backtests sem walk-forward são incrivelmente bons em mentir. O mecanismo é direto: qualquer estratégia com até um pequeno número de parâmetros ajustáveis pode ser ajustada ao ruído numa janela histórica específica tão firmemente que produz uma curva de equity ótima. A estratégia não aprendeu nada generalizável; aprendeu a sequência específica de gaps overnight e rebalanceamentos de ETF que aconteceram naquela janela. Quando você a roda em uma janela diferente, o ruído é diferente, e a estratégia retorna a aproximadamente zero edge (menos custos de transação).
A assinatura do curve-fitting é sensibilidade a parâmetros. Uma estratégia genuinamente robusta produz P&L similar através de um range de configurações de parâmetros similares — seu edge vem da estrutura de mercado subjacente, não das configurações específicas dos botões. Uma estratégia curve-fit produz um pico de P&L afiado nos parâmetros ótimos e colapsa rapidamente em performance conforme você se afasta deles. Walk-forward pega isso porque os dados do período de teste têm uma estrutura de ruído diferente do período de treinamento; o pico afiado não reaparece no mesmo ponto de parâmetro.
A outra coisa que o walk-forward pega é a mudança de regime. Uma estratégia que funcionou em 2023 num regime de alta vol pode colapsar num regime de baixa vol em 2024. Backtests in-sample fazem média entre regimes e escondem o colapso. Walk-forward mostra o colapso janela por janela.
Os quatro veredictos QA — com exemplos ao vivo
O classificador do sweep QA comprime cada par (estratégia, ticker) em um dos quatro veredictos. Concretamente:
ROBUST — ambas as janelas walk-forward positivas e significativas. Nenhuma janela faz todo o trabalho; o edge é distribuído.
Exemplo: $CIFR em regression_channel_mr. P&L 2 anos completo US$302K, dividido como WF1 US$103K, WF2 US$98K. As duas janelas são quase simétricas — metade do edge veio do primeiro ano, metade do segundo. Esse é tão limpo quanto um resultado ROBUST que o sweep produz e um forte sinal empírico de que a estrutura mean-revertente subjacente do CIFR é persistente.
STABLE — ambas as janelas positivas, mas uma carrega mais que a outra.
Exemplo: $CIFR em ema_crossover (mesmo ticker, estratégia diferente). P&L 2 anos completo US$112K, dividido como WF1 US$69K, WF2 US$31K. As duas metades funcionam; a primeira fez aproximadamente 2× a segunda. Isso é STABLE — edge real, mas com variação de timing que um sistema deployado tem que dimensionar em volta.
LUMPY — uma janela faz basicamente todo o trabalho. A outra é plana ou negativa.
Exemplo: $NET em ema_crossover. P&L 2 anos completo US$29.352, dividido como WF1 US$0, WF2 US$29.352. O backtest in-sample-only parece bom. O walk-forward revela que todo o P&L vem de um único ano — o outro ano produziu zero trades ou zero resultado líquido. Deployar isso em produção é cara-ou-coroa em se o próximo ano se parecerá com 2024 ou 2025.
Mesmo padrão em $VRT em regression_channel_mr: completo US$54K, WF1 -US$68, WF2 US$47K. O backtest naïve reporta US$54K de edge. O walk-forward reporta que uma janela foi efetivamente plana (com uma pequena perda) e a outra janela carregou tudo.
NOTRADES — a estratégia não disparou frequentemente o suficiente em uma ou ambas as janelas para ser estatisticamente significativa.
Exemplo: 10 dos 104 pares fizeram zero trades em pelo menos uma janela no sweep completo. Isso acontece quando as condições de entrada de uma estratégia são muito restritivas em relação ao comportamento do ticker — a barra foi colocada de uma forma que os dados nunca atenderam. Não é uma falha da estratégia per se, mas também não é uma demonstração empírica de edge.
O caso CIFR é o ponto estrutural do artigo em uma ação. Mesmo ticker, duas estratégias, dois veredictos diferentes — ROBUST em canal-de-regressão mean reversion, STABLE em EMA crossover. Isso não é uma contradição. Diz: este nome tem estrutura mean-revertente real que sobrevive a ambas as janelas walk-forward, e um sinal trend-following mais fraco que funciona em ambas as janelas mas desigualmente. Ambas as classificações são reais; deployar as duas como sleeve combinada diversificaria entre dois edges genuínos mas diferentes no mesmo ticker.
O sweep completo — como 104 pares se parecem em agregado
| Veredicto | Contagem | Parcela | | --- | --- | --- | | ROBUST | 56 | 53,8% | | STABLE | 20 | 19,2% | | LUMPY | 18 | 17,3% | | NOTRADES | 10 | 9,6% | | Total pares | 104 | — |
53,8% ROBUST parece alto. É. As razões pelas quais aterrissa tão alto neste universo específico:
- O universo foi pré-selecionado para estrutura temática. Os 35 tickers no sweep não são nomes S&P aleatórios — são o universo de bolha temática que a QA já valida via correlação residualizada. São nomes que de fato negociam como clusters e exibem o tipo de volatilidade estruturada que qualquer classe de estratégia sistemática pode extrair edge.
- A biblioteca de estratégias é pequena e curada. A biblioteca tem aproximadamente 10 estratégias, não 1.000. O problema base de múltiplos testes (quanto mais estratégias você tenta, mais passes espúrios você verá) é limitado.
- O classificador é justo, não generoso. Uma classificação ROBUST exige ambas as janelas positivas e significativamente dimensionadas. LUMPY pega o modo de falha "uma janela fez tudo" que backtests de varejo vestem como edge.
Num universo menos curado — um scrape aleatório de nomes do S&P 500 sem teoria temática por trás — rodar a mesma biblioteca produziria uma parcela ROBUST muito menor. O classificador é o mesmo; a qualidade dos dados é diferente. Esse é o conteúdo empírico de "estrutura temática importa".
Por que a maioria dos backtests de varejo falha silenciosamente nessa barra
Três padrões comuns que backtests de varejo usam, classificados por o quão mal falham:
1. In-sample-only. "Backtestei nos últimos 2 anos e retornou 40%". Sem walk-forward. Sem divisão out-of-sample. A estratégia foi tunada em parâmetros nos mesmos dados em que está sendo julgada. Esse é o padrão dominante no Twitter e em vídeos de backtest no YouTube. Não te diz essencialmente nada sobre performance futura.
2. Train/test split (single fold). "Treinei em 2022-2023 e testei em 2024." Melhor que in-sample-only — mas você só obtém um ponto de dado out-of-sample. Se 2024 por acaso for um regime que combina com a hipótese estrutural da estratégia, você obterá um número positivo e concluirá que a estratégia funciona. Walk-forward com múltiplas janelas pega o caso onde a única janela de teste foi um sorteio de sorte.
3. Walk-forward com classificação de veredicto. A abordagem QA. Múltiplas janelas OOS, rótulos de veredicto estruturados, nenhuma janela única autorizada a carregar todo o resultado. Essa é a barra que backtests de varejo sistematicamente evitam porque a maioria das estratégias não passa.
Quanto mais acima nessa lista um backtest se senta, mais seu resultado é uma propriedade do ruído histórico em vez da estrutura de mercado subjacente. Quando você está no nível 3, você tem evidência empírica que generalizaria, condicional à hipótese de que a estrutura de mercado subjacente persiste.
Limites honestos — o que o walk-forward ainda não pode te dizer
Walk-forward é a melhor defesa amplamente disponível contra curve-fitting. Não é uma garantia. Três modos de falha sobrevivem a ele:
Mudança de regime além da janela de teste. Ambas as janelas walk-forward podem cair dentro do mesmo regime de mercado abrangente. Uma estratégia que ganha ROBUST em dados de 2024-2026 foi testada numa janela dominada por momentum temático do superciclo AI. Se 2027 for um regime totalmente diferente — digamos, um grind multi-anual de baixa vol — a hipótese estrutural da estratégia pode falhar de formas que nenhuma janela de teste revelou. WF só pode validar contra regimes que existem nos dados.
Viés de seleção no nível de universo. Se você só incluiu tickers que já tinham ido bem na janela completa em seu universo, sua parcela ROBUST será inflada por razões não relacionadas à sua estratégia. Essa é a versão "sobrevivência" do curve-fitting e vive fora do check WF per-ticker. Mitigação: pré-definir o universo a partir de bases teóricas (filiação a tema, setor, market cap) em vez de performance histórica.
Inflação de múltiplos testes. Se você sweepar estratégias suficientes, algumas passarão walk-forward por puro acaso — quanto mais combinações (estratégia, ticker, parâmetros) você testa, maior o número esperado de falsos positivos. Mitigação: uma biblioteca de estratégias pequena e curada; justificação a priori explícita para cada estratégia; e tratar um único resultado ROBUST com ceticismo (um resultado é mais crível quando estratégias irmãs na mesma classe também classificam bem, como os sweeps Fibonacci e mean reversion demonstram em listas de nomes sobrepostas).
O enquadramento honesto: walk-forward reduz dramaticamente o risco de curve-fit mas não o elimina. É o preço de admissão para levar um backtest a sério, não uma garantia de retornos futuros.
Como a QA aplica isso em produção
Cada estratégia no bot QA tradfi-stocks passou por validação walk-forward antes de ver capital ao vivo. A classificação alimenta duas decisões de produção:
- Atribuição de estratégia por ticker. Cada ticker é atribuído à estratégia com o melhor veredicto WF naquele nome. ROBUST é preferida; STABLE é aceitável se nenhuma ROBUST existir; LUMPY é excluída de saída.
- Sizing por ticker. Posições ROBUST obtêm sizing completo; posições STABLE obtêm sizing parcial; posições LUMPY não são tradadas. O veredicto está fazendo gestão de risco no nível de universo.
Essa metodologia aparece em ambas as peças anteriores na série de educação QA:
- A peça de retracement de Fibonacci reporta métricas nível-cesta (PF 1,76, Sharpe 1,42, +23,7% em 3 anos) — todas pós-WF. O número "4 de 5 janelas walk-forward lucrativas" nessa peça é exatamente a mesma procedure na escala de cesta.
- A peça de mean reversion reporta a contagem 22-de-35 ROBUST para mean reversion de canal de regressão. É o mesmo sweep, mesmo classificador, resumido para essa estratégia especificamente.
Ambas as reivindicações empíricas das peças anteriores são downstream da procedure descrita aqui. O check walk-forward é a parte da metodologia que dá a esses números seu peso epistêmico.
Para a metodologia mais ampla correlação-vs-narrativa que decide quais tickers entram no universo em primeiro lugar, veja Por que correlação > narrativa em investimento temático.
Como aplicar isso em seus próprios backtests
Se você está testando uma estratégia por conta própria:
- Divida seus dados em pelo menos duas janelas disjuntas antes de ajustar qualquer coisa. Metade / metade é um bom ponto de partida. Walk-forward de múltiplas janelas é melhor.
- Ajuste apenas na primeira janela. O que quer que você otimize — threshold de entrada, múltiplo de stop, comprimento de lookback — ajuste na primeira janela e congele.
- Teste na segunda janela sem re-ajustar. Esse é o resultado que importa.
- Olhe as distribuições de P&L de ambas as janelas, não apenas suas somas. Uma estratégia que ganha seu P&L OOS num único trade grande é frágil de formas que uma estratégia que o ganha através de muitos trades pequenos não é.
- Seja impiedosamente honesto sobre resultados LUMPY. Um backtest que depende de uma janela de retornos não é evidência validada de edge. Ou revise a estratégia ou aceite que ela não é deployável.
Para execução US-retail em estratégias que sobrevivem a essa barra, a qualidade de dados horários e suporte a ações fracionárias da IBKR são o match mais limpo — veja /stack/ibkr. Veredictos walk-forward ao vivo no universo QA — e alertas baseados em regra quando uma estratégia ROBUST dispara — fazem parte de /pro.
O que observar
- Cadência de re-validação. O sweep QA é re-rodado aproximadamente trimestralmente. Um ticker que cai de ROBUST para LUMPY entre sweeps é o indicador antecedente de que a estrutura de mercado subjacente para aquele nome mudou.
- A parcela ROBUST ao longo do tempo. Se a parcela cai materialmente em sweeps consecutivos com o mesmo universo, o regime mais amplo mudou de uma forma que está erodindo o edge de múltiplas estratégias simultaneamente. Esse é um sinal de risco de nível-portfólio, não per-estratégia.
- Sobreposição entre estratégias. Quando um ticker classifica ROBUST sob múltiplas estratégias (por ex. $AAOI tanto em
regression_channel_mrquanto emadaptive), a estrutura subjacente é incomumente limpa. Quando a sobreposição encolhe, é um sinal antecedente de mudança de regime naquele nome. - A contagem NOTRADES. Uma parcela NOTRADES crescente em regras de entrada constantes significa que o regime de volatilidade do universo está colapsando — estratégias que precisam de volatilidade para disparar não a estão recebendo. Isso geralmente precede uma mudança de regime mais ampla.
- O número nível-cesta. Mesmo com WF forte per-ticker, o P&L nível-cesta pode falhar se correlações através da cesta convergem durante um drawdown. Observe o Sharpe da cesta em sweeps consecutivos como o sinal agregado primário.
Dados ao vivo na cesta WF-validada: /stocks/cifr, /stocks/aaoi, /stocks/rklb — três dos 56 pares (estratégia, ticker) ROBUST surfaceados neste sweep.
Contexto de bolha: /bubbles/photonics e os outros 8 clusters temáticos onde a densidade ROBUST é mais alta.
Leitura adjacente: O que é retracement de Fibonacci? e O que é mean reversion? — ambas as peças reportam números que são downstream da procedure walk-forward descrita aqui. Para a metodologia de construção de universo, Por que correlação > narrativa em investimento temático.
QuantAbundancia é pesquisa educacional. Nada aqui é conselho de investimento. Veja /disclosures.
Related bubbles
Get the daily digest.
One email a day · alerts + bubble shifts + new research. Free during beta.
No spam. One email per day max. Telegram alerts coming with the paid tier.