Ir para o conteúdo

Data leakage e viés de antecipação

Informação indisponível na decisão que contamina features, regras, validação ou simulação das ordens e produz resultados históricos sem causalidade replicável.

Em palavras simples — Há leakage quando o passado recebe uma pista que só estaria disponível depois da decisão. O backtest então resolve um problema mais fácil do que o sistema real.

Data leakage é a passagem de informação proibida entre etapas da pesquisa. O viés de antecipação (look-ahead bias) é o caso temporal em que a regra usa, direta ou indiretamente, informação futura. Ambos podem surgir nos dados, nas transformações, na seleção do modelo, na validação ou no simulador de ordens.

Pipeline causal: evento, sinal, ordem e fillCada seta respeita a disponibilidade e o primeiro instante executável. Exemplo temporal: nenhum fill na mesma barra é assumido sem regra de mercado verificável.Pipeline causal: evento, sinal, ordem e fillCada seta respeita a disponibilidade e o primeiro instante executávelExemplo temporal: nenhum fill na mesma barra é assumido sem regra de mercado verificável.t₀1EventoO fato econômicoou de mercadoocorre no tempo doevento.t₁2DisponibilidadeA estratégiarecebe e processao dado somenteapós o lagcorrespondente.t₂3SinalO cálculo terminausando o snapshotinformativodisponível.t₃4OrdemA instrução éconstruída,enviada e aceitasegundo oprotocolo.t₄5FillA execução exigepreço e liquidezposteriorescompatíveis com aordem.evento ≤ disponibilidade ≤ sinal ≤ ordem ≤ primeiro fill possívelCyclepedia · esquema educacional condicionado, não previsão nem promessa
Cada seta deve respeitar a disponibilidade real; ordenar linhas por data não basta quando os valores foram revisados ou processados no futuro.

Distinções essenciais

Problema Exemplo
Look-ahead usar o fechamento para sinalizar e comprar no mesmo fechamento sem mecanismo executável
Target leakage uma feature incorpora informação derivada do resultado futuro
Contaminação entre splits scaler, seleção de features ou imputação são ajustados antes de separar treino e teste
Data snooping o resultado do teste orienta repetidamente parâmetros e regras
Survivorship o universo histórico contém apenas os instrumentos que sobreviveram

Os problemas podem coexistir, mas pedem controles diferentes. Separar treino e teste não corrige um dataset já revisado com o futuro; dados point-in-time não eliminam a seleção entre centenas de modelos.


Três relógios: sinal, ordem e fill

O relógio informativo define quando o input pode ser usado. O relógio decisório define quando o sinal termina. O relógio de mercado define quando uma ordem pode chegar e encontrar liquidez. Um resultado causal respeita:

evento ≤ disponibilidade ≤ sinal ≤ ordem ≤ fill

Lag operacional, cutoff, timezone, calendário e latência fazem parte da regra. Um “gap” entre treino e teste pode proteger contra sobreposição de labels, mas não substitui a análise desses relógios.


Onde o leakage se esconde

Features e transformações

Normalizar com média e desvio da amostra inteira, preencher missing com valor calculado no futuro, ajustar PCA ou selecionar features antes do split transfere informação. Cada etapa com estado deve ser ajustada apenas no treino e aplicada ao período seguinte. Fundamental e macro exigem vintages e datas de publicação.

Pesquisa e seleção

Consultar repetidamente o holdout, escolher a melhor janela após ver o teste ou publicar apenas estratégias vencedoras torna a avaliação parte do treinamento. O registro de tentativas e um teste final intacto tornam essa seleção visível.

Ordens e execução

Fills na máxima ou mínima da barra, fill de limite apenas porque o preço tocou, uso do volume completo antes do fim do intervalo e reequilíbrio com composição anunciada depois são formas de antecipação. O simulador precisa de sequência, latência, quantidade e prioridade compatíveis com os dados disponíveis.


Protocolo causal

  1. Definir o instante da decisão e o primeiro instante executável.
  2. Versionar os dados segundo publicação, ingestão e revisão.
  3. Separar os splits antes de ajustar qualquer transformação com estado.
  4. Recalcular features em modo walk-forward, sem acesso ao futuro.
  5. Preservar composição histórica e eventos corporativos.
  6. Modelar ordens e fills em eventos posteriores ao sinal.
  7. Registrar todas as consultas ao holdout e todos os candidatos.
  8. Reproduzir o processo evento a evento com assertions temporais.

Testes diagnósticos

Truncar o dataset numa data antiga e recalcular tudo: valores anteriores não devem mudar sem revisão explicitamente versionada. Atrasar artificialmente inputs deve atrasar sinais. Embaralhar o futuro ou usar labels aleatórias não deve produzir performance estável. Comparar batch com execução sequencial ajuda a encontrar transformações globais. Esses testes detectam classes de erro, mas não provam ausência total de leakage.


Dependência entre observações e etapas aprendidas

O vazamento também aparece quando duas linhas parecem diferentes, mas carregam parte do mesmo evento. Labels com horizontes sobrepostos, várias janelas do mesmo ativo ou ativos ligados por uma mesma divulgação podem atravessar a fronteira entre treino e teste. Ordenar cronologicamente continua necessário, mas pode não bastar: é preciso medir quanto tempo cada observação usa e impedir que a informação compartilhada contamine os dois lados.

Toda etapa que aprende com dados pertence ao treino: imputação, seleção de variáveis, winsorization, normalização, redução de dimensionalidade e escolha de limiares. Primeiro ela é ajustada dentro do segmento permitido; depois é aplicada, sem reaprender, ao segmento seguinte. Fazer o pré-processamento uma única vez no dataset completo torna o teste parcialmente conhecido, mesmo que o modelo principal nunca tenha visto suas linhas.

Há ainda uma diferença entre processamento em lote e operação sequencial. Um arquivo produzido ao fim do dia pode conter correções e registros que não existiam quando uma decisão intradiária foi tomada. Por isso, um teste causal deve reconstruir não só a data do dado, mas a ordem de chegada e a primeira janela de execução possível. Logs de ingestão, snapshots e testes de atraso ajudam a localizar essa ruptura.

Limites

Nem toda correlação forte é leakage, e um resultado fraco não garante pipeline causal. Algumas fontes não preservam vintages; microestrutura pode exigir dados indisponíveis; labels sobrepostas criam dependência mesmo com ordem temporal. Lacunas devem ser declaradas e testadas por sensibilidade.


Fontes

Conexões