Dados B3 › Guias › Backtest sem look-ahead
Guia · Backtest e múltiplos
Backtest sem look-ahead: por que o P/L de 31/12 mente
Há um erro silencioso em quase todo backtest de ações brasileiras. Ele não dá erro na tela, não aparece no gráfico — só infla o resultado e faz uma estratégia medíocre parecer genial. Chama-se viés de look-ahead.
O erro
Você quer testar uma estratégia de "comprar ações com P/L baixo". Pega o lucro do balanço de 2023 e divide o preço de 31/12/2023 pelo lucro. Parece certo. Não é.
O balanço anual de uma empresa com exercício encerrado em 31/12 não existe publicamente em 31/12. Ele é publicado meses depois — tipicamente entre fevereiro e março do ano seguinte. Usar o preço de 31/12 com esse lucro é usar uma cotação que o mercado tinha antes de conhecer o número. É viajar no tempo: o backtest "sabe" um resultado que ninguém sabia naquele dia.
O jeito certo: ponto-no-tempo
O múltiplo tem que usar o preço do primeiro pregão a partir da data em que o balanço ficou público — não o fechamento do exercício. Assim o P/L reflete o que você poderia ter pago, com a informação que realmente existia.
Caso real, medido no nosso banco — a DFP de 2025 da WEG:
São quase dois meses de diferença. Multiplique isso por centenas de empresas e 16 anos, e o viés de look-ahead vira a diferença entre um backtest honesto e uma ilusão.
Como o Dados B3 faz
Todo múltiplo (P/L, P/VP, EV/EBITDA anual; P/L TTM trimestral) usa o preço do 1º pregão a partir do dt_receb — a data real em que a CVM recebeu o documento, gravada na própria capa. Nada é casado com o fechamento do período. E o número de ações usado é o do snapshot vigente naquela data, não o do fim do exercício — para um desdobramento no meio do caminho não quebrar o market cap em silêncio.
Por que isso importa para você
- Se você faz backtest ou pesquisa quantitativa, é a diferença entre um resultado replicável e um número que não sobrevive ao mundo real.
- Se você só compara múltiplos hoje, ganha a garantia de que o histórico não foi "maquiado" por viés de data.
- É auditável: cada múltiplo mostra
dt_recebe o pregão efetivamente usado.