Um backtest pode registrar uma execução a um preço que o mercado nunca exibiu. Em geral, o simulador inferiu uma execução aparentemente plausível a partir de dados incompletos: a máxima e a mínima de um candle, um preço médio ou um preço limite tocado por uma única negociação. Isso pode fazer o histórico de operações parecer preciso, enquanto oculta o que o mercado realmente oferecia.
Comece perguntando com qual preço sua ordem poderia ter interagido. Um candle de últimas negociações mostra quais preços foram negociados durante um intervalo. Ele não informa qual era o bid e o ask quando sua ordem chegou, quanto havia disponível nesses preços nem se sua ordem poderia chegar ao início da fila.
Por que meu backtest mostra uma execução fora do preço de mercado?
Primeiro, seja preciso sobre o que significa “fora”. Uma compra executada abaixo da mínima do candle ou uma venda acima da máxima é um erro evidente de contabilização ou de timing. Uma execução dentro da faixa entre máxima e mínima ainda pode ser fictícia: o preço pode ter sido negociado antes de a ordem existir, do outro lado do spread ou em uma quantidade pequena demais para executar sua ordem.
Considere um candle de 1 minuto com abertura em 100.00, mínima em 99.80 e fechamento em 100.10. Sua estratégia observa o candle completo, envia uma ordem de compra, e o simulador a executa em 99.80. Essa mínima pode ter ocorrido perto do início do minuto, cinquenta segundos antes do sinal. O candle não oferece evidência de que 99.80 ainda estava disponível depois da decisão.
| Dados disponíveis | O que comprovam | O que não comprovam |
|---|---|---|
| Candle OHLCV | Faixa observada de preços negociados e volume ao longo de um intervalo | Sequência de preços, bid e ask ou disponibilidade na chegada da ordem |
| Registros de negociações | Execuções reportadas com horários e preços | Liquidez disponível no livro ou sua posição na fila |
| Cotações do topo do livro | Melhor bid e ask exibidos nos horários amostrados | Profundidade além do melhor nível ou se uma cotação permaneceu válida entre as amostras |
| Eventos do livro de ofertas | Mudanças na profundidade exibida e eventos na fila, conforme a cobertura do feed | Liquidez oculta, acesso à venue ou prioridade garantida |
Há outra causa comum: confundir preços médios com preços executáveis. Se a cotação é 99.99 de bid e 100.01 de ask, uma compra no ponto médio de 100.00 fica elegante no relatório. Em geral, uma compra a mercado paga o ask, além de qualquer impacto causado pelo tamanho da ordem. Tratar o ponto médio como preço de execução elimina silenciosamente metade do spread.
Uma ordem limite pode ser executada só porque o mercado tocou seu preço?
Um toque é uma evidência de que houve uma negociação registrada no preço limite. Não prova que sua ordem em repouso teria sido executada. Se havia outras ordens à sua frente, o volume negociado naquele preço pode ter sido pequeno demais para alcançar sua posição na fila. A negociação também pode ter ocorrido em outra venue, enquanto sua ordem estava em repouso em outro lugar.
Suponha que sua ordem limite de compra seja 50.00 e que o mercado negocie 200 ações nesse preço depois que você a envia. Um simulador baseado em toque executa todas as 500 ações. Um modelo mais cauteloso pergunta quanto foi negociado a 50.00 ou melhor depois da chegada da ordem e, então, considera uma estimativa das ordens à frente na fila. Sem dados do livro por ordem, essa fila é uma premissa. Ela deve ficar visível nos resultados, não ser disfarçada como certeza.
Em um sistema de pesquisa pequeno, prefiro explicitar essa premissa e testar uma faixa de valores a fingir que os dados de candles revelam a prioridade na fila. A faixa adequada depende da venue, do tamanho da ordem e da frequência com que a estratégia negocia. Uma ação com pouca movimentação na abertura e um contrato cripto com pouca liquidez às 03:00 UTC apresentam problemas de execução diferentes.
Como escolher um modelo de execução para dados de candles?
Ajuste o modelo aos dados e ao que a estratégia afirma fazer. Um backtest baseado em candles ainda pode ser útil para estratégias lentas, mas as execuções precisam respeitar o que os candles realmente mostram.
- Defina os horários da decisão e da chegada da ordem. Se o sinal usa o fechamento do candle, envie a ordem depois desse fechamento. Modele a execução a partir do próximo intervalo ou da próxima cotação disponível, não da mínima anterior do candle já completo.
- Use o lado correto do spread. Para compras que cruzam o spread, comece pelo ask; para vendas, pelo bid. Se você só tem candles de negociações, estime o spread com uma fonte separada ou informe que o modelo não o considera.
- Limite as execuções a uma liquidez plausível. Aplique um limite de participação ao volume observado e inclua taxas e impacto de mercado. O volume total de um candle não significa que tudo estava disponível no preço escolhido.
- Teste as premissas em cenários adversos. Compare execuções na abertura seguinte com slippage conservador e veja se o resultado resiste a uma execução pior. Não ajuste o modelo de execução até a estratégia sair vencedora.
Essas são escolhas de modelagem, não uma receita para recuperar a única execução verdadeira a partir de dados incompletos. Se a estratégia depende de capturar alguns pontos-base, os dados de candles talvez não sejam evidência suficiente para sustentar essa afirmação.
Como descobrir em que etapa a execução impossível entrou no backtest?
Rastreie uma operação suspeita desde o sinal até o livro-razão. Registre em campos separados o horário da decisão, o horário do envio da ordem, a chegada simulada, a observação de mercado selecionada, o preço de execução, a quantidade executada e a taxa. Depois, verifique nesta ordem:
- O indicador foi calculado com dados de um candle que ainda não tinha terminado no momento da decisão?
- A execução usou a máxima, a mínima ou o fechamento do candle, embora esse preço tenha ocorrido antes da chegada da ordem?
- Uma compra foi cruzada com o bid ou uma venda com o ask?
- A quantidade simulada excedeu o tamanho disponível na cotação ou o limite de participação do modelo?
- O arredondamento de preços, o tick size do contrato e as taxas foram aplicados depois da escolha do preço de execução?
Se não conseguir responder a essas perguntas com base no registro da operação, faltam evidências de execução no backtest. Adicione os campos, reproduza manualmente algumas operações usando os dados brutos e confira se a execução reportada poderia ter ocorrido segundo o modelo pretendido. Uma curva de capital bem comportada não detecta um preço que só existiu dentro do simulador.
← Todos os artigos


