O que é validação walk-forward? 104 pares estratégia-ticker testados - só 54% sobreviveram
A validação walk-forward separa o acaso in-sample da vantagem real. 104 pares (estratégia, ticker) testados no universo QA - 56 ROBUST, 20 STABLE, 18 LUMPY, 10 sem trades. Aqui está o procedimento, os veredictos e por que a maioria dos backtests de varejo falha nele em silêncio.
A história padrão de um backtest é mais ou menos 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, declare vantagem. Opcionalmente, poste um gráfico no Twitter.
A história está meio certa. Um backtest positivo é uma condição necessária para a vantagem. Está longe de ser suficiente. Uma estratégia pode produzir uma linda curva de capital in-sample e ainda assim ser um curve-fit - um ajuste coincidente ao ruído daquela janela histórica específica, com zero poder preditivo sobre dados que a estratégia nunca viu. A forma de distinguir uma coisa da outra é a validação walk-forward: rodar a estratégia de novo em janelas futuras disjuntas que a otimização nunca tocou e ver se a vantagem sobrevive.
Acabamos de rodar um sweep na biblioteca tradfi-stocks da QA - cada estratégia da biblioteca × cada ticker do universo temático. 104 pares (estratégia, ticker) sobre 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 fatia ROBUST é alta para o padrão da indústria - a maioria dos universos públicos de backtest sobrevive na casa dos dígitos baixos ou pior - e a fatia alta é em si um sinal de que o universo é real, não de que a validação é fraca. Este texto percorre o procedimento, os quatro veredictos (com exemplos concretos do sweep ao vivo) e por que a maioria dos backtests de varejo falha nessa barra em silêncio.
O resumo. Um backtest walk-forward ajusta os parâmetros da estratégia em uma janela in-sample, os congela e então mede o desempenho em uma janela out-of-sample posterior que a otimização nunca viu. Repete-se ao longo de janelas móveis. Uma estratégia que imprime números positivos em múltiplas janelas out-of-sample tem vantagem real. Uma estratégia que imprime ótimos números in-sample e zera out-of-sample é um curve-fit. Os quatro veredictos da QA - ROBUST, STABLE, LUMPY, NOTRADES - comprimem esse julgamento em um único rótulo.
O que a validação walk-forward realmente é
O procedimento, em cinco passos:
- Pegue sua janela histórica completa. Para o sweep tradfi-stocks da QA: 2 anos de barras de 1 hora por ticker, terminando recentemente.
- Divida em pedaços. Dois pedaços de um ano cada é o padrão da QA (
wf_days: 365). Algumas configurações usam fatias móveis de duração mais curta - mesma lógica. - Treine (ou "ajuste") no pedaço 1. Encontre o conjunto de parâmetros que maximiza qualquer que seja a função objetivo que você está otimizando - tipicamente P&L ajustado ao risco. Congele esses parâmetros.
- Teste no pedaço 2. Aplique os parâmetros congelados a dados que a estratégia nunca viu. Meça o resultado.
- Repita. Opcionalmente, treine nos pedaços 1+2 e teste no pedaço 3. Ou role uma janela para frente barra a barra (a variante mais cara). O ponto é o mesmo: separar os dados usados para escolher a estratégia dos dados usados para julgar a estratégia.
Todo o sentido está no passo 4 - a estratégia é avaliada em dados que não teve a chance de observar. Qualquer estratégia que vai bem no passo 3 mas mal no passo 4 é um curve-fit. Qualquer estratégia que vai bem em ambos demonstrou, no mínimo, que o padrão que está explorando estava presente em duas fatias independentes do passado - o 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 de uma janela histórica específica de forma tão apertada que produz uma ótima curva de capital. A estratégia não aprendeu nada generalizável; aprendeu a sequência específica de gaps overnight e rebalanceamentos de ETF que por acaso ocorreram naquela janela. Quando você a roda em uma janela diferente, o ruído é diferente, e a estratégia volta a aproximadamente zero de vantagem (menos os custos de transação).
A assinatura do curve-fitting é a sensibilidade a parâmetros. Uma estratégia genuinamente robusta produz P&L semelhante em uma faixa de configurações de parâmetros semelhantes - sua vantagem vem da estrutura de mercado subjacente, não das configurações específicas dos botões. Uma estratégia curve-fit produz um pico agudo de P&L nos parâmetros ótimos e desaba rapidamente em desempenho conforme você se afasta deles. O walk-forward captura isso porque os dados do período de teste têm uma estrutura de ruído diferente da do período de treino; o pico agudo não reaparece no mesmo ponto de parâmetro.
A outra coisa que o walk-forward captura é a mudança de regime. Uma estratégia que funcionou em 2023 em um regime de alta volatilidade pode desabar em um regime de baixa volatilidade em 2024. Backtests in-sample fazem média entre regimes e escondem o colapso. O walk-forward mostra o colapso janela a janela.
Os quatro veredictos da QA - com exemplos ao vivo
O classificador do sweep da QA comprime cada par (estratégia, ticker) em um de quatro veredictos. Concretamente:
ROBUST - ambas as janelas walk-forward positivas e significativas. Nenhuma janela está fazendo todo o trabalho; a vantagem é distribuída.
Exemplo: $CIFR em regression_channel_mr. P&L completo de 2 anos $302K, dividido como WF1 $103K, WF2 $98K. As duas janelas são quase simétricas - metade da vantagem veio do primeiro ano, metade do segundo. Esse é o resultado ROBUST mais limpo que o sweep produz e um forte sinal empírico de que a estrutura subjacente de reversão à média da CIFR é persistente.
STABLE - ambas as janelas positivas, mas uma carrega mais do que a outra.
Exemplo: $CIFR em ema_crossover (mesmo ticker, estratégia diferente). P&L completo de 2 anos $112K, dividido como WF1 $69K, WF2 $31K. Ambas as metades funcionam; a primeira fez cerca de 2× a segunda. Isso é STABLE - vantagem real, mas com variação de timing que um sistema implantado precisa dimensionar ao redor.
LUMPY - uma janela faz praticamente todo o trabalho. A outra é plana ou negativa.
Exemplo: $NET em ema_crossover. P&L completo de 2 anos $29.352, dividido como WF1 $0, WF2 $29.352. O backtest apenas in-sample 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. Implantar isso em produção é cara ou coroa sobre se o próximo ano vai se parecer com 2024 ou 2025.
Mesmo padrão em $VRT em regression_channel_mr: completo $54K, WF1 -$68, WF2 $47K. O backtest ingênuo reporta $54K de vantagem. 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 vezes suficientes em uma ou ambas as janelas para ser estatisticamente significativa.
Exemplo: 10 de 104 pares fizeram zero trades em pelo menos uma janela ao longo do sweep completo. Isso acontece quando as condições de entrada de uma estratégia são restritivas demais em relação ao comportamento do ticker - a barra foi posta de uma forma que os dados nunca atingiram. Não é uma falha da estratégia em si, mas também não é uma demonstração empírica de vantagem.
O caso CIFR é o ponto estrutural do artigo em uma única ação. Mesmo ticker, duas estratégias, dois veredictos diferentes - ROBUST na reversão à média por canal de regressão, STABLE no cruzamento de EMA. Isso não é uma contradição. Diz: este papel tem uma estrutura real de reversão à média que sobrevive a ambas as janelas walk-forward, e um sinal mais fraco de seguimento de tendência que funciona em ambas as janelas, mas de forma desigual. Ambas as classificações são reais; implantar as duas como uma sleeve combinada diversificaria entre duas vantagens genuínas, mas diferentes, no mesmo ticker.
O sweep completo - como ficam 104 pares no agregado
| Veredicto | Contagem | Fatia | | --- | --- | --- | | ROBUST | 56 | 53,8% | | STABLE | 20 | 19,2% | | LUMPY | 18 | 17,3% | | NOTRADES | 10 | 9,6% | | Total de pares | 104 | - |
53,8% de ROBUST soa alto. E é. As razões pelas quais cai tão alto nesse universo específico:
- O universo foi pré-selecionado por estrutura temática. Os 35 tickers do sweep não são nomes aleatórios do S&P - são o universo de bolhas temáticas que a QA já valida via correlação residualizada. São nomes que de fato operam como clusters e de fato exibem o tipo de volatilidade estruturada da qual qualquer classe de estratégia sistemática consegue extrair vantagem.
- A biblioteca de estratégias é pequena e curada. A biblioteca tem por volta de 10 estratégias, não 1.000. O problema de taxa-base de testes múltiplos (quanto mais estratégias você tenta, mais aprovações espúrias vai ver) é limitado.
- O classificador é justo, não generoso. Uma classificação ROBUST exige ambas as janelas positivas e com tamanho significativo. LUMPY captura o modo de falha "uma janela fez tudo" que os backtests de varejo disfarçam de vantagem.
Em um universo menos curado - uma raspagem aleatória de nomes do S&P 500 sem nenhuma teoria temática por trás - rodar a mesma biblioteca produziria uma fatia ROBUST muito mais baixa. 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 nessa barra em silêncio
Três padrões comuns que os backtests de varejo usam, ordenados por quão mal eles falham:
1. Apenas in-sample. "Fiz o backtest nos últimos 2 anos e rendeu 40%." Sem walk-forward. Sem divisão out-of-sample. A estratégia foi ajustada por parâmetros nos mesmos dados em que está sendo julgada. Esse é o padrão dominante nos vídeos de backtest do Twitter e do YouTube. Ele te diz essencialmente nada sobre o desempenho futuro.
2. Divisão treino/teste (uma única dobra). "Treinei em 2022-2023 e testei em 2024." Melhor do que só in-sample - mas você só ganha um ponto de dado out-of-sample. Se 2024 por acaso for um regime que combina com a suposição estrutural da estratégia, você vai obter um número positivo e concluir que a estratégia funciona. O walk-forward com múltiplas janelas captura o caso em que a única janela de teste foi um sorteio de sorte.
3. Walk-forward com classificação de veredicto. A abordagem da QA. Múltiplas janelas OOS, rótulos estruturados de veredicto, nenhuma janela autorizada a carregar o resultado inteiro. Essa é a barra que os backtests de varejo sistematicamente evitam, porque a maioria das estratégias não passa nela.
Quanto mais alto nessa lista um backtest se senta, mais o seu resultado é uma propriedade do ruído histórico e não da estrutura de mercado subjacente. Quando você chega ao nível 3, você tem evidência empírica que de fato generalizaria, condicionada à suposição de que a estrutura de mercado subjacente persiste.
Limites honestos - o que o walk-forward ainda não consegue te dizer
O walk-forward é a melhor defesa amplamente disponível contra o 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 recebe ROBUST em dados de 2024-2026 foi testada em uma janela dominada pelo momentum temático do superciclo de IA. Se 2027 for um regime inteiramente diferente - digamos, uma sequência plurianual de baixa volatilidade - a suposição estrutural da estratégia pode falhar de formas que nenhuma das janelas de teste revelou. O WF só consegue validar contra regimes que existem nos dados.
Viés de seleção no nível do universo. Se você incluiu no seu universo apenas tickers que já tinham ido bem ao longo da janela completa, sua fatia ROBUST vai estar inflada por razões não relacionadas à sua estratégia. Essa é a versão de "sobrevivência" do curve-fitting e ela vive fora da checagem WF por ticker. Mitigação: pré-definir o universo a partir de fundamentos teóricos (pertencimento a tema, setor, capitalização de mercado) em vez de desempenho histórico.
Inflação por testes múltiplos. Se você varrer estratégias suficientes, algumas vão passar no walk-forward por puro acaso - quanto mais combinações (estratégia, ticker, parâmetro) você testa, maior o número esperado de falsos positivos. Mitigação: uma biblioteca de estratégias pequena e curada; justificativa prévia explícita para cada estratégia; e tratar um único resultado ROBUST com ceticismo (um resultado é mais crível quando estratégias irmãs da mesma classe também classificam bem, como os sweeps de Fibonacci e reversão à média demonstram em listas de nomes sobrepostas).
O enquadramento honesto: o walk-forward reduz drasticamente o risco de curve-fit, mas não o elimina. É o preço de entrada para levar um backtest a sério, não uma garantia de retornos futuros.
Como a QA aplica isso em produção
Toda estratégia no bot tradfi-stocks da QA 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 recebe a estratégia com o melhor veredicto WF naquele papel. ROBUST é preferido; STABLE é aceitável se não houver ROBUST; LUMPY é excluído por completo.
- Dimensionamento por ticker. Posições ROBUST recebem dimensionamento total; posições STABLE recebem dimensionamento parcial; posições LUMPY não são operadas de jeito nenhum. O veredicto está fazendo gestão de risco no nível do universo.
Essa metodologia aparece em ambos os textos anteriores da série educativa da QA:
- O texto sobre retração de Fibonacci reporta métricas no nível da 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" naquele texto é exatamente o mesmo procedimento na escala da cesta.
- O texto sobre reversão à média reporta a contagem de 22 de 35 ROBUST para a reversão à média por canal de regressão. É o mesmo sweep, o mesmo classificador, resumido para aquela estratégia especificamente.
As afirmações empíricas de ambos os textos anteriores estão a jusante do procedimento descrito aqui. A checagem walk-forward é a parte da metodologia que dá a esses números o seu peso epistêmico.
Para a metodologia mais ampla de correlação-versus-narrativa que decide quais tickers entram no universo em primeiro lugar, veja Por que correlação > narrativa no investimento temático.
Como aplicar isso nos 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. Meio a meio é um bom ponto de partida. Walk-forward com múltiplas janelas é melhor.
- Ajuste apenas na primeira janela. O que quer que você otimize - limiar de entrada, múltiplo de stop, comprimento de lookback - ajuste na primeira janela e congele.
- Teste na segunda janela sem reajustar. 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 em um único trade grande é frágil de formas que uma estratégia que o ganha ao longo 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 vantagem. Ou revise a estratégia ou aceite que ela não é implantável.
Para execução no varejo dos EUA em estratégias que sobrevivem a essa barra, a qualidade dos dados horários da IBKR e o suporte a frações de ações são o casamento mais limpo - veja /stack/ibkr. Veredictos walk-forward ao vivo sobre o universo QA - e alertas baseados em regras quando uma estratégia ROBUST dispara - fazem parte do /pro.
O que observar
- Cadência de revalidação. O sweep da QA é re-rodado aproximadamente a cada trimestre. Um ticker que cai de ROBUST para LUMPY entre sweeps é o indicador antecedente de que a estrutura de mercado subjacente daquele papel mudou.
- A fatia ROBUST ao longo do tempo. Se a fatia cair materialmente em sweeps consecutivos com o mesmo universo, o regime mais amplo mudou de uma forma que está corroendo a vantagem de múltiplas estratégias simultaneamente. Isso é um sinal de risco no nível do portfólio, não no nível de uma estratégia.
- Sobreposição entre estratégias. Quando um ticker classifica ROBUST sob múltiplas estratégias (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 papel. - A contagem de NOTRADES. Uma fatia crescente de NOTRADES com regras de entrada constantes significa que o regime de volatilidade do universo está colapsando - estratégias que precisam de volatilidade para disparar não estão a recebendo. Isso normalmente precede uma mudança de regime mais ampla.
- O número no nível da cesta. Mesmo com WF forte por ticker, o P&L no nível da cesta pode falhar se as correlações ao longo da cesta convergirem durante um drawdown. Observe o Sharpe da cesta em sweeps consecutivos como o principal sinal agregado.
Dados ao vivo da cesta validada por WF: /stocks/cifr, /stocks/aaoi, /stocks/rklb - três dos 56 pares ROBUST (estratégia, ticker) que vieram à tona neste sweep.
Contexto de bolha: /bubbles/photonics e os outros 8 clusters temáticos onde a densidade de ROBUST é mais alta.
Leitura adjacente: O que é retração de Fibonacci? e O que é reversão à média? - ambos os textos reportam números que estão a jusante do procedimento walk-forward descrito aqui. Para a metodologia de construção do universo, Por que correlação > narrativa no investimento temático.
A QuantAbundancia é pesquisa educativa. Nada aqui é recomendação de investimento. Veja /disclosures.
Related bubbles
Related research
Go deeper
The data stays free. Pro is where the edge gets debated.
Operator commentary on every live trade, the Bot Trades feed, early access to new bots and research, and higher limits on the AI assistant. $49/mo or $490/yr · cancel anytime.
Get the daily digest.
One email a day · alerts + bubble shifts + new research. Free during beta.
No spam. One email per day max. Pro adds Telegram trade alerts and higher AI-assistant limits.