Walk-forward Analysis é a avaliação cronológica de um procedimento que seleciona ou ajusta regras em dados anteriores e as aplica ao período de teste subsequente. As funções de seleção e de teste avançam no tempo, sem que a decisão atual possa conhecer o resultado seguinte.
Walk-forward Analysis faz a simulação histórica avançar no tempo: seleciona ou ajusta uma regra com os dados disponíveis até então e avalia depois a sua aplicação no segmento seguinte. A QuantConnect descreve a otimização periódica numa janela que abrange o passado mais recente. A nossa distinção editorial: não avaliamos apenas um conjunto imutável de parâmetros, mas um procedimento de atualização descrito previamente. O momento da seleção seguinte, o seu objetivo e o conjunto de candidatos também fazem parte da regra. Um melhor ajuste aos dados recentes não confirma, por si só, um melhor resultado futuro. [QuantConnect — Walk Forward Optimization]
A QuantConnect alerta que o período usado para procurar os melhores parâmetros passa a fazer parte dos dados de desenvolvimento. Aplicar-lhe um vencedor escolhido a posteriori não é uma verificação honesta da decisão que se teria tomado nessa altura. O nosso protocolo encerra, por isso, a seleção antes do início do segmento de teste seguinte. Os dados desse segmento não podem influenciar o vencedor atual. Quando o segmento terminar e as suas informações estiverem realmente disponíveis, poderão entrar numa seleção posterior, segundo o procedimento predefinido; isso não altera, porém, as decisões de teste anteriormente registadas. [QuantConnect — Optimization Parameters]
TimeSeriesSplit cria índices de treino e de teste ordenados no tempo; por predefinição, expande gradualmente o conjunto de treino passado e permite limitar a sua dimensão. A nossa distinção: uma janela deslizante mantém a duração escolhida do passado, enquanto uma janela expansiva conserva um início fixo. A duração da janela e a frequência de atualização fazem parte da conceção, não são ajustes livres depois de observar os resultados. Para obter métricas comparáveis entre segmentos, a documentação exige amostras igualmente espaçadas; nos dados irregulares, é necessário controlar o intervalo real do calendário. [scikit-learn — TimeSeriesSplit]
O parâmetro gap de TimeSeriesSplit exclui amostras no fim do conjunto de treino antes do teste. O nosso requisito metodológico é determinar o intervalo necessário a partir do momento de disponibilidade dos dados de entrada e da conclusão dos resultados-alvo. Se o resultado de uma observação de treino usar preços do período de teste, a simples ordenação das linhas não elimina a fuga de informação. Por isso, a duração do intervalo não deve ser escolhida apenas pelo aspeto atraente da curva. Nem um intervalo adequado demonstra a independência dos períodos adjacentes ou elimina todas as formas de enviesamento de seleção. [scikit-learn — TimeSeriesSplit]
A documentação do scikit-learn alerta que a normalização, a imputação de valores em falta ou a seleção de características podem transferir informações do teste para o modelo. Os parâmetros destas transformações devem ser aprendidos apenas na parte de treino e depois aplicados à parte de teste. A nossa verificação repete esta separação em cada avanço da janela. Um cálculo anterior da média de todo o conjunto não é corrigido pela divisão posterior da tabela já preparada. Também é necessário conservar a versão dos dados e a sua disponibilidade temporal efetiva. [scikit-learn — Common Pitfalls: Data Leakage]
A QuantConnect distingue o modelo que determina o preço e a quantidade executada e que pode incluir spread e Slippage. O nosso requisito para unir os segmentos de teste é tratar de forma consistente o capital, as posições abertas e os custos da mudança de regra. Os lucros de treino não se somam ao resultado do teste subsequente, e os períodos de teste sobrepostos não podem ser contabilizados várias vezes sem explicação. Se forem transportadas posições, é necessário descrever a transição entre configurações. Pelo contrário, o nosso modelo abaixo termina cada período sem posições. [QuantConnect — Trade Fills: Key Concepts]
Bailey e os coautores descrevem o risco crescente de falsas descobertas quando se repete a pesquisa nos mesmos dados. A nossa consequência para Walk-forward Analysis: se alterarmos as durações das janelas, o objetivo ou os candidatos em função da série de teste obtida e repetirmos toda a execução, essa série já influencia o desenvolvimento. Não basta passar a chamar-lhe independente. O relatório deve indicar todos os protocolos experimentados e separar uma eventual validação adicional ainda não utilizada. O simples avanço temporal não é uma estimativa da probabilidade de sobreajuste nem uma garantia estatística automática. [Bailey et al. — The Probability of Backtest Overfitting]
A NFA salienta que os resultados hipotéticos não representam negociação real nem todo o impacto da liquidez, da derrapagem do preço e do comportamento perante uma perda efetiva. O nosso relatório de Walk-forward Analysis conserva, por isso, as fronteiras das janelas, os candidatos, as pontuações de seleção, as configurações escolhidas e os resultados dos segmentos seguintes, incluindo custos. A soma precisa do contexto do risco, do número de observações e de uma comparação em condições idênticas. Um pequeno exemplo negativo não prova a ineficácia geral do método, tal como uma soma positiva não prova uma vantagem de negociação futura. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]
Selecionar a partir do passado, avaliar só o período seguinte
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 período de teste anterior pode entrar mais tarde no treino?+
Sim, se já tiver terminado, as informações estiverem disponíveis e o protocolo predefinido o permitir. Contudo, não pode alterar retroativamente a seleção nem o resultado registados para esse período.
02Walk-forward Analysis elimina o sobreajuste?+
Não automaticamente. Continua a ser possível escolher repetidamente as durações das janelas, os candidatos ou todo o procedimento em função dos mesmos resultados. É necessário divulgar o historial de tentativas, controlar a fuga de informação e manter a distinção entre desenvolvimento e validação adicional.