13 de outubro de 2026 · investigação

O teu backtest encontrou uma vantagem de 20%. Quanto veio de um timestamp incorreto?

O teu backtest encontrou uma vantagem de 20%. Quanto veio de um timestamp incorreto?

Um backtest teve um retorno anualizado de 20%. Usou 8 anos de dados, 1,640 operações e uma divisão walk-forward sem falhas. Depois substituímos o histórico atual do fornecedor pelos valores registados na altura, e a vantagem caiu para 3%.

O número surpreendente não foi o retorno inicial. Foram os 17 pontos percentuais que dependiam de dados revistos. Este tipo de conhecimento retrospetivo pode esconder-se em divulgações económicas, fundamentos das empresas, composição de índices e até em campos de mercado aparentemente simples. Os dados históricos dizem-te o que a fonte afirma agora. Um conjunto de dados point-in-time diz-te o que a tua estratégia podia saber na altura.

Porque é que os dados históricos podem mudar depois do acontecimento?

Alguns valores são primeiro estimativas e só depois correções. Uma estatística económica divulgada numa sexta-feira pode ser revista no mês seguinte. Uma empresa pode reformular um valor dos resultados. Um fornecedor de dados pode corrigir uma cotação errada, preencher um intervalo em falta ou substituir um valor preliminar por um definitivo. Uma base de dados que guarda apenas o valor mais recente faz parecer que todas essas alterações sempre foram verdadeiras.

Isto é importante quando uma estratégia classifica empresas com base nas receitas divulgadas ou negoceia num mercado após uma divulgação de dados agendada. Se tiver acesso ao valor corrigido meses antes, o backtest deu-lhe informação que não estava no mercado no momento da decisão. O cálculo do sinal pode estar impecável; o dado de entrada continua a vir da versão errada do histórico.

Há aqui uma armadilha fácil: um campo chamado date descreve muitas vezes o período a que um valor diz respeito, não quando ficou disponível. Uma linha de receitas trimestrais com a data de 31 de março pode só ter sido publicada em maio. A etiqueta refere-se ao período da atividade, não ao conjunto de informação disponível para a estratégia.

Que timestamp deve um backtest usar?

Regista separadamente o período de referência do valor e o momento em que ficou disponível. Sempre que possível, guarda também a hora de publicação e a hora de ingestão. Uma estratégia só podia usar um valor depois de este ter sido publicado e recebido pelo sistema; se esses momentos forem diferentes, usa o mais tardio numa reprodução conservadora.

TimestampO que descreveComo ajuda
Momento efetivoO período ou acontecimento a que o valor se refereAgrupa observações pelo elemento medido
Hora de publicaçãoQuando a fonte divulgou esta versãoImpede que uma divulgação apareça antes de existir
Hora de ingestãoQuando o sistema recebeu a versãoRegista atrasos na entrega e reposições tardias

Por exemplo, suponhamos que as vendas trimestrais de uma empresa abrangem janeiro a março, são divulgadas a 8 de maio às 16:15, hora de Nova Iorque, e chegam ao teu repositório de investigação às 16:17. Uma estratégia que decide no fecho de 8 de maio não pode usar esse relatório se a decisão no fecho ocorreu às 16:00. Uma estratégia que decide na manhã seguinte já pode. A data do fim do trimestre, por si só, não permite responder a nenhuma destas perguntas.

Como posso testar se as revisões estão a determinar o resultado?

Executa a mesma estratégia 2 vezes: uma com a versão dos dados disponível em cada momento histórico de decisão e outra com o histórico revisto mais recente. Mantém fixos os pressupostos de execução, o universo e o código. A diferença é um resultado de sensibilidade às revisões, não uma nova comparação entre estratégias.

Depois, analisa de onde vem a diferença. O desempenho muda nos dias de divulgação? As maiores diferenças concentram-se em algumas empresas que reformularam os resultados ou em observações corrigidas? A estratégia negoceia antes da hora de publicação relevante? Uma pequena auditoria ao nível dos eventos explica muitas vezes mais do que outro gráfico de retornos acumulados.

20%retorno com o histórico mais recente
3%retorno com valores point-in-time
17 ppdiferença sensível às revisões

Estes números são um exemplo, não uma penalização universal. O resultado útil é uma comparação emparelhada para a tua própria estratégia, mantendo iguais, tanto quanto possível, as operações e os custos. Se a versão revista tiver um desempenho muito superior, descobre que campos e datas explicam a diferença antes de confiares no número principal do backtest.

O que deve registar uma auditoria a dados point-in-time?

Começa pelos campos que a tua estratégia realmente usa. Para cada um, identifica a fonte, o significado do timestamp, a política de revisões e se é possível recuperar versões anteriores. Pergunta ao fornecedor como são representadas as correções: linhas substituídas, novas linhas de versão ou um registo de auditoria separado. A palavra «histórico» numa página de produto não esclarece a questão.

E mantém o âmbito prático. Se a tua estratégia usa apenas operações e barras das bolsas, as revisões de dados económicos podem ser irrelevantes. Mas as correções de barras e as reposições de dados pelos fornecedores podem continuar a importar, sobretudo quando um sinal depende de um mercado pouco líquido ou de uma janela de evento precisa.

Quando não há histórico point-in-time disponível

Não trates silenciosamente o valor de hoje como se fosse o de ontem. Assinala o campo como uma limitação, exclui-o de afirmações que dependam da disponibilidade histórica ou aplica um atraso conservador e mostra quanto muda o resultado. Uma aproximação com atraso pode ser útil na investigação, desde que o atraso seja explícito e a limitação acompanhe o resultado.

O objetivo do backtest é reconstruir uma decisão usando o conjunto de informação que existia na altura. Se os teus dados só mostram a versão mais recente, o resultado tem um limite: pode testar a estratégia face ao histórico reconstruído de hoje, mas não pode determinar exatamente o que um agente histórico poderia ter visto.

backtestingengenharia de dadosações empresariaisdados point-in-time
← Todos os artigos