Um backtest pode acertar a marca temporal de cada vela e, ainda assim, usar informação do futuro. Isso acontece quando a estratégia testa os ativos que sobreviveram até hoje ao longo de vários anos de histórico, como se já soubesse quais mercados continuariam líquidos, cotados e merecedores de permanecer na lista.
A construção do universo faz parte da estratégia. Se o sistema em produção só podia escolher entre os ativos disponíveis em cada momento de decisão, o backtest tem de respeitar esse mesmo limite. Há três atalhos que o eliminam com frequência.
Erro um: testar a lista de hoje ao longo de todo o histórico
Imagine que hoje seleciona os 50 maiores mercados de contratos perpétuos de criptomoedas e depois os testa desde 2021. A lista exclui contratos que desapareceram, perderam liquidez ou foram retirados de cotação. Também dá às datas mais antigas acesso a mercados que talvez ainda nem existissem.
Os estragos passam facilmente despercebidos: a estratégia parece mais estável porque os ativos que falharam desapareceram da amostra. Uma regra de momentum, por exemplo, pode parecer excelente nos 50 mercados de hoje, embora a versão histórica tivesse alocado repetidamente a ativos que mais tarde colapsaram ou perderam a cotação na plataforma. Testou uma carteira selecionada com conhecimento do desfecho.
Registe a pertença ao universo com datas. Para cada ativo, acompanhe quando passou a ser elegível, quando deixou de o ser e porquê. Em cada rebalanceamento, aplique as regras usando apenas a informação então disponível. Um mercado só deve entrar depois da sua cotação efetiva e de qualquer período inicial necessário. Se deixar de estar cotado, a posição final precisa de uma regra definida de saída ou liquidação; eliminar as respetivas linhas não é uma regra de saída.
Erro dois: ordenar por uma estatística medida depois da decisão
Até um universo histórico pode ter fuga de informação se a regra de pertença usar uma janela completa que inclui o futuro. «Negociar as 20 ações mais líquidas todos os meses» parece razoável, até percebermos que a liquidez é ordenada com base no mês inteiro em que a estratégia deveria negociar.
Imagine um rebalanceamento no primeiro dia de negociação. Ordenar pelo volume médio em dólares desse mês usa discretamente as três semanas seguintes para decidir o que era elegível no primeiro dia. Os estragos surgem muitas vezes sob a forma de uma capacidade invulgarmente boa: a estratégia evita ativos que perderam liquidez mais tarde no mês, embora não pudesse saber disso no momento da entrada.
Defina o limite temporal da medição antes do momento da seleção. Num rebalanceamento mensal na primeira sessão, pode ordenar pelos 20 períodos concluídos anteriores, até à sessão precedente. Depois, explicite o atraso na execução: se a ordenação usa o fecho de ontem, é possível submeter a ordem na abertura de hoje segundo o fluxo de trabalho assumido?
| Regra de seleção | Versão point-in-time | Fuga comum |
|---|---|---|
| 20 primeiros por volume em dólares | Ordenar pelas sessões concluídas antes do rebalanceamento | Incluir o dia ou o mês do rebalanceamento |
| Cotado na plataforma | Usar as datas efetivas de cotação e retirada de cotação | Usar um endpoint atual de símbolos para datas antigas |
| Histórico mínimo | Contar as observações disponíveis no momento da seleção | Exigir sobrevivência futura para passar o filtro |
Erro três: tratar a falta de histórico como prova de que um ativo não era elegível
O arquivo de um fornecedor de dados não é necessariamente um registo completo do mercado histórico. A ausência de um símbolo pode significar que o ativo nunca existiu, que a plataforma mudou a convenção de nomenclatura, que o fornecedor não guardou os instrumentos retirados de cotação ou simplesmente que há uma falha no feed. Cada caso tem implicações diferentes.
Os estragos aparecem num universo organizado, mas com lacunas por explicar. É comum os investigadores exigirem uma janela completa de dados históricos e excluírem silenciosamente tudo o que não a tiver. Essa pode ser uma regra sensata para o período inicial, mas também exclui deliberadamente os ativos cotados há pouco tempo. Pior ainda: se o histórico em falta se concentrar em mercados falhados, «apenas dados completos» torna-se mais um filtro de sobrevivência.
Mantenha a elegibilidade, a disponibilidade de dados e o período inicial da estratégia como factos separados. Registe por que motivo um ativo foi excluído em cada data. Preserve a ausência de dados no registo de investigação, em vez de a transformar numa eliminação silenciosa. Quando a fonte não permitir confirmar se um mercado estava cotado ou era negociável, indique-o e meça até que ponto o resultado depende dessa incerteza.
Torne o universo reproduzível
Uma auditoria útil começa com um rebalanceamento histórico. Reconstrua a lista de candidatos a partir das cotações datadas e dos dados disponíveis até esse limite temporal. Recalcule os dados usados na ordenação apenas com observações concluídas. Depois, compare o universo resultante com a lista efetivamente usada pelo seu backtest.
Guarde a regra, o respetivo limite temporal, as decisões de pertença e a versão da fonte junto dos resultados da execução. Se não conseguir explicar por que motivo um ativo entrou e outro ficou de fora numa determinada data, ainda não pode saber se a estratégia descobriu uma vantagem ou herdou uma amostra moldada pelo futuro.
Os erros na construção do universo raramente se anunciam com preços impossíveis. Revelam-se numa estratégia que, por conveniência, evitou os mercados que deixaram de ser convenientes.
← Todos os artigos


