7 de novembro de 2026 · microestrutura

O backtest leu o preço certo no mercado errado

O backtest leu o preço certo no mercado errado

Às 10:14 UTC, uma estratégia simples de quebra em alta comprou um perpétuo de cripto depois de o preço ultrapassar o máximo dos 20 minutos anteriores. O backtest indicou uma execução a $64,210. Esse valor constava dos dados, o sinal tinha a marca temporal correta e a ordem simulada chegou na barra seguinte. Quase considerámos que o resultado era fiável.

Depois, alinhámos os IDs dos instrumentos. O sinal veio do perpétuo BTCUSDT. A execução foi num contrato inverso BTCUSD. Ambos eram negociados perto de $64,210 e ambos eram mercados líquidos. Ainda assim, eram livros de ordens diferentes, com preços, tamanhos de tick, profundidade e tabelas de comissões diferentes. O backtest tinha juntado mercados aos quais nenhum trader poderia aceder.

A estratégia em si não tinha nada de especial: entrar num fecho acima do máximo móvel, sair num fecho abaixo do mínimo móvel e dimensionar cada posição para um risco fixo em dólares. O problema só surgiu quando fizemos uma pergunta mais precisa do que «quanto valia o BTC?». Perguntámos: «o que poderia esta ordem ter comprado neste contrato exato, naquele momento?»

O gráfico já era uma composição antes de a estratégia sequer começar

O nosso feed de investigação facilitava a comparação entre plataformas. Normalizava os símbolos e apresentava uma série de preços consolidada. Era útil para observar o mercado, mas servia mal como referência de execução. Uma composição pode mostrar o melhor preço entre várias plataformas, embora a estratégia só possa enviar uma ordem para uma delas.

Na quebra em alta, o máximo da barra consolidada era $64,205. A última transação do contrato selecionado já tinha chegado a $64,218. Entretanto, uma cotação em cache do contrato inverso continuava a mostrar uma oferta de venda a $64,210. O simulador usou a quebra em alta de uma série e a oferta de venda atraente de outra. Cada valor era real. A combinação era fictícia.

EntradaO que o backtest usouO que a ordem exigia
Máximo da quebra em altaPreço consolidado do BTCHistórico de preços do contrato selecionado
Referência de entradaOferta de venda em cache do contrato inversoOferta de venda atualizada do instrumento negociado
Quantidade executadaTamanho de posição solicitadoQuantidade disponível em cada nível de preço

Uma linha numa tabela de dados de mercado pode parecer completa, embora os seus campos descrevam mercados diferentes. Um alias de símbolo não prova que dois instrumentos partilham o mesmo livro de ordens. O ID do contrato, a plataforma, a moeda de cotação e a marca temporal têm de acompanhar o sinal ao longo da geração e da execução.

Reproduzimos a ordem contra o livro de ordens

Recalculámos a entrada usando a melhor oferta de venda do próprio perpétuo selecionado e as atualizações do livro de ordens disponíveis no momento da decisão. A cotação estava atualizada, mas havia apenas 0.18 BTC no nível superior. A nossa ordem simulada era de 0.50 BTC. Os 0.32 BTC restantes teriam consumido ofertas de venda a preços mais altos.

$64,218melhor oferta de venda à chegada da ordem
0.18 BTCdisponíveis a essa oferta
$64,231preço médio ponderado pelo volume na reprodução

A entrada ajustada ficou $21 por BTC acima da execução apresentada, antes das comissões. É uma diferença pequena numa única transação. No conjunto do teste, porém, a estratégia obteve a maior parte do lucro bruto com algumas quebras em alta rápidas. Reproduzir essas entradas contra os livros corretos reduziu o resultado bruto em 31%; as comissões de taker e o impacto no mercado reduziram-no ainda mais.

Também encontrámos dois casos em que a cotação do topo do livro chegou depois do momento de decisão do sinal. Um backtest que associa pela marca temporal mais próxima pode escolher discretamente uma atualização futura. Agora associamos apenas para trás: a cotação tem de ter sido observada até ao momento em que a ordem foi enviada e registamos a sua idade. Se a cotação utilizável mais recente for demasiado antiga, o simulador assinala a ordem como não executável ou aplica uma regra explícita para dados desatualizados.

O que é preciso para que um preço seja negociável

O fecho de uma barra é útil para calcular um sinal. Não demonstra que uma determinada ordem pudesse ser executada a esse preço. Para isso, o preço tem de corresponder ao instrumento e à plataforma exatos, estar disponível à chegada da ordem e ter quantidade disponível do lado oposto suficiente para o tamanho solicitado. Quando os dados não permitem responder a estas perguntas, o resultado honesto é um intervalo ou uma execução em falta, não um preço exato inventado.

Mantivemos a série consolidada para contextualizar o mercado e retirámo-la do processo de execução. Os sinais passam agora a usar o histórico do próprio contrato escolhido; as ordens são reproduzidas contra o livro desse contrato, aplicando as comissões e o tamanho depois de calcular a execução. Mais algum trabalho de integração e uma curva de capital bem menos impressionante.

Aquela quebra em alta aconteceu mesmo. O backtest simplesmente deu-lhe um mercado melhor do que aquele que a estratégia tinha selecionado.

futuros de criptolivros de ordensdados de mercadobacktestingexecução
← Todos os artigos