598 / 736WFA

Walk-forward Analysis

Análise com avanço progressivo no tempo

Walk-forward Analysis testa uma estratégia que muda ao longo do tempo: escolhe uma regra com dados já conhecidos, avalia o período seguinte e avança para repetir o processo.

Walk-forward Analysis avalia um procedimento de seleção em ordem cronológica. As regras são escolhidas ou ajustadas com o passado disponível e testadas em dados posteriores que não participaram daquela escolha.

Pedro tem várias versões de uma regra de negociação. Quer usar a que funcionou melhor recentemente. Walk-forward Analysis permite percorrer essa ideia passo a passo: escolher com base na história conhecida, registrar o resultado seguinte e escolher de novo. QuantConnect descreve esse ajuste periódico. O teste avalia também a forma de escolher, não apenas uma versão fixa. Por isso, candidatos, critério e data da próxima revisão precisam ser definidos antes. [1]

Se Pedro escolheu uma versão pelo lucro passado, esse mesmo lucro não valida a escolha de forma independente. QuantConnect explica que esses dados já pertencem ao desenvolvimento. A pergunta correta é como a versão se saiu depois da escolha. O teste atual não pode escolher seu próprio vencedor. Após o período terminar e os resultados ficarem disponíveis, regras predefinidas podem usá-los numa seleção posterior. Isso não reescreve a decisão registrada antes. [2]

A janela de seleção é o trecho da história usado naquele momento. Uma janela móvel mantém a duração e descarta dados mais antigos; uma janela expansiva conserva o início e acrescenta observações. TimeSeriesSplit do scikit-learn expande por padrão, mas permite limitar o tamanho. Defina duração e frequência das atualizações antes do teste. A documentação exige observações igualmente espaçadas para métricas comparáveis; em registros irregulares, confira também a duração real no calendário. [3]

Imagine que o resultado ligado à última observação de treinamento só termine durante o teste seguinte. Ele ainda não é conhecido no momento da escolha. Ordenar a tabela por data não resolve isso. O parâmetro gap de TimeSeriesSplit pode excluir observações no fim do treinamento. A separação necessária deve seguir a disponibilidade das entradas e o término dos resultados, não a curva mais bonita. Mesmo um intervalo adequado não demonstra independência entre períodos vizinhos nem elimina todo viés. [3]

O vazamento não precisa estar na regra de negociação. Uma média usada para mudar a escala dos valores pode ter sido calculada com o arquivo inteiro, incluindo o teste futuro. scikit-learn alerta para o mesmo problema ao preencher valores ausentes ou selecionar variáveis. Aprenda essas transformações só nos dados de treinamento e depois aplique-as ao teste. Repita a separação a cada avanço; dividir uma tabela já transformada não desfaz o vazamento. Preserve também versões e horários de disponibilidade dos dados. [4]

Após testar cada período, é preciso juntar os resultados corretamente. QuantConnect descreve modelos de preço e quantidade executada que podem incluir spread e Slippage. Nossa avaliação então precisa de contas coerentes: não creditar lucros de desenvolvimento na conta de teste nem contar testes sobrepostos repetidamente sem explicar. Ao mudar de versão, diga o que acontece com posições abertas, capital e custos da troca. O exemplo abaixo simplifica isso encerrando toda posição ao final de cada período. [5]

Pedro pode trocar repetidamente janelas, objetivos ou candidatos até o teste ficar bonito. Nesse caso, também usou a série de teste no desenvolvimento. Bailey e seus coautores estudam sucessos por acaso em buscas repetidas nos mesmos dados. Registre todos os procedimentos tentados e separe eventual validação em história ainda não usada. Avançar no tempo não é garantia estatística nem estimativa da probabilidade de sobreajuste, isto é, adaptação excessiva aos dados passados. [6]

Guarde limites das janelas, candidatos, pontuações de seleção, escolhas feitas e resultados seguintes após custos. Apresente o total junto das perdas, quantidade de observações e comparação em condições iguais. A NFA dos EUA lembra que resultados hipotéticos não captam todos os problemas de liquidez, deslizamento e comportamento diante de perdas reais; suas regras promocionais abrangem membros específicos. Um pequeno exemplo negativo não invalida o método inteiro. Tampouco um total positivo prova vantagem futura. [7]

ExemploEXEMPLO · WFA

O vencedor anterior pode perder na próxima vez

Considere nosso exemplo fictício: seis períodos iguais, de 1 a 6, e versões A e B predefinidas. Com o mesmo tamanho fixo de operação, os resultados líquidos são A [4, -1, 2, -3, 5, -2] USD e B [1, 2, 1, 1, -2, 4] USD. Cada resultado só fica disponível ao fim do período, inclui todos os custos modelados e não deixa posição aberta. Não há custos extras de troca, dívida, depósitos ou saques. Antes do teste definimos: somar os últimos três períodos completos, escolher a soma maior e usar o vencedor apenas no período seguinte; no empate, escolher A. As janelas de seleção são [1, 2, 3], [2, 3, 4] e [3, 4, 5], com testes seguintes [4, 5, 6]. As somas de A são [5, -2, 4] USD e as de B [4, 4, 0] USD. Escolhemos, portanto, A, B e A. Só entram no resultado conjunto de teste [-3, -2, -2] USD, totalizando -7 USD. A conta começa antes do período 4 com 1000 USD e termina com 993 USD; o tamanho das operações não muda com o saldo. Os lucros da seleção não são creditados na conta, e cada teste conta uma única vez. O esquema mostra janelas que avançam e os testes seguintes, não a história real de um mercado ou a probabilidade de sucesso futuro.

Para ter uma visão mais completa, leia este verbete junto com Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. Também há referências a este verbete em Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.

01Um teste anterior pode depois ser usado na seleção?

Sim, quando o período terminar, os dados necessários estiverem disponíveis e o procedimento predefinido permitir. Isso não pode alterar retroativamente a versão ou o resultado registrados para aquele teste.

02Walk-forward Analysis impede o sobreajuste?

Não sozinho. Janelas, candidatos ou todo o procedimento ainda podem ser ajustados repetidamente aos mesmos resultados. Registre os ensaios, verifique vazamentos de informação e diferencie desenvolvimento adicional de validação realmente nova.

DOC · 001QuantConnect — Walk Forward OptimizationDocumentação DOC · 002QuantConnect — Optimization ParametersDocumentação DOC · 003scikit-learn — TimeSeriesSplitDocumentação DOC · 004scikit-learn — Common Pitfalls: Data LeakageDocumentação DOC · 005QuantConnect — Trade Fills: Key ConceptsDocumentação DOC · 006Bailey et al. — The Probability of Backtest OverfittingFonte primária DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance ResultsDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento