Validação cruzada que respeita o relógio
A validação cruzada reaproveita os dados: corta-os em dobras, testa numa dobra e treina nas demais. Para linhas independentes isso funciona, mas os rótulos financeiros se sobrepõem no tempo. Se o rótulo da linha é o retorno de a , sua janela é . Uma dobra de teste que cobre as linhas a tem rótulos que cobrem . Toda linha de treino cuja janela toque esse intervalo, isto é , compartilha retornos com os rótulos de teste. Manter essas linhas deixa o modelo ver parte da resposta.
A purga remove as linhas de treino que se sobrepõem. O embargo remove mais um trecho de linhas depois da dobra de teste, porque os retornos são autocorrelacionados e a volatilidade se agrupa, então as primeiras linhas após um bloco de teste ainda carregam informação sobre ele. Num esquema walk-forward o treino vem só antes do teste, e a mesma ideia vira uma folga: treinar nas linhas até , de modo que a folga é (mais ). O TimeSeriesSplit do scikit-learn tem um argumento gap para isso. No painel mensal de ações com , o coeficiente de informação walk-forward é sem embargo e com meses de embargo: a limpeza muda pouco porque a sobreposição é curta, mas não dá para saber sem fazê-la.
- Purgar e depois embargar: remover as linhas de treino cujos rótulos tocam os do teste e mais algumas depois do teste.
- Uma folga no walk-forward: treinar só em linhas pelo menos antes do teste.
- Faça mesmo que mude pouco: uma avaliação limpa custa algumas linhas, um vazamento pode custar uma estratégia.
Lab: o que é avaliado
- Linhas purgadas antes da dobra10 pts
- Linhas purgadas depois da dobra15 pts
- O tamanho de treino que resta15 pts
- Uma dobra walk-forward com folga10 pts
- Quais linhas são purgadas10 pts
- Uma divisão purgada10 pts
- Associar o vocabulário15 pts
- Por que também um embargo15 pts