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.
| Timestamp | O que descreve | Como ajuda |
|---|---|---|
| Momento efetivo | O período ou acontecimento a que o valor se refere | Agrupa observações pelo elemento medido |
| Hora de publicação | Quando a fonte divulgou esta versão | Impede que uma divulgação apareça antes de existir |
| Hora de ingestão | Quando o sistema recebeu a versão | Regista 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.
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.
- Guarda cada versão com o timestamp de publicação ou de primeira disponibilidade.
- Junta as variáveis às decisões usando a hora de disponibilidade, não as etiquetas de período.
- Mantém uma cópia congelada ou a versão da fonte para reproduzir as execuções.
- Assinala valores que chegam tarde, são revistos ou não têm um histórico fiável.
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.
← Todos os artigos

