12 de Novembro de 2026 · execução

Seu backtest executou no fechamento oficial. Você nunca entrou no leilão.

Seu backtest executou no fechamento oficial. Você nunca entrou no leilão.

O fechamento oficial em um arquivo de ações parece qualquer outro preço. Timestamp 16:00:00 Eastern, um número, pronto para executar. Sinais diários marcam esse preço. Rebalanceamentos batem nele. Um agente de pesquisa vai tratar isso como uma cotação que estava parada no book, esperando por você.

O fechamento é um leilão, não uma cotação. É o preço de descruzamento das ordens on-close que precisavam ser aceitas antes de um horário de corte. Se o backtest executou ali sem entrar nesse lote, ele tomou um print do qual você não teria feito parte.

Executar as 16:00 como se o descruzamento fosse uma ordem a mercado

O atalho usual é: calcular o sinal no fechamento ou logo antes, executar no fechamento oficial, carimbar 16:00. Numa terça-feira calma em AAPL, a mentira são alguns cents. Nos dias que dominam um book de rebalanceamento diário, é a operação inteira.

Às 16:00:00.000 o closing cross está rodando, ou acabou de rodar. Uma ordem agressiva que você envia nesse instante não entra nesse cruzamento. Ela cai no que sobrou: tamanho residual em display, um odd lot, after-hours na ARCA ou na Nasdaq. Esse print pode estar a dois cents do fechamento oficial, ou a quarenta pontos-base, e é um pool de liquidez diferente. Numa reconstituição do Russell, num fim de mês ou numa sexta de triple witching, o fechamento costuma ser uma fatia de dois dígitos do volume do dia. Aquela era a liquidez. Você não estava nela.

3:50Horário de corte on-close da NYSE (ET)
3:55Horário de corte do closing cross da Nasdaq (ET)
~10%volume típico de large cap no fechamento

Fizemos paper trade disso por acidente. Um ajuste de parâmetro caiu às 15:48. O backtest ainda executou todos os papéis no fechamento oficial. O OMS enviou ordens a mercado comuns às 16:00:03 porque ninguém tinha habilitado o MOC. Prints after-hours, um punhado de rejeições e um shortfall de 19 pontos-base contra o arquivo num dia em que o arquivo dizia que estávamos flat até o fechamento. A estratégia não tinha quebrado. A regra de fill tinha.

Eu ainda penso em 15:49 como um lugar físico. Alguém está mudando um peso. Outra pessoa está olhando o relógio. O horário de corte não se importa com quem de vocês está certo.

MOC é a ordem que de fato pede esse descruzamento, e mesmo o MOC não é uma promessa. Um halt, uma pausa LULD, um leilão cancelado, um papel que nunca abriu: você pode estar flat às 16:00 com uma on-close ainda ativa que morre. O LOC pode perder a execução por completo. Se o descruzamento é $40.12 e o seu limite é $40.00, você não fica com nada. Muitos backtests ainda lançam o fechamento.

Pior: alguns arquivos de vendor guardam um fechamento composto que nunca printou em nenhuma praça. Você não entra num composto. Se a estratégia teria enviado MOC na NYSE, o fill que importa é o descruzamento da NYSE, no tamanho que o leilão teria absorvido.

Chamar o último print do horário regular de fechamento

Alguns pipelines recusam o fechamento oficial por princípio e pegam o último print SIP antes das 16:00, porque aquele print pelo menos "aconteceu." Numa mega cap, o último e o oficial muitas vezes ficam a um ou dois cents de distância e você não percebe. Numa mid cap o último print pode ser 200 ações às 15:59:51, assinado por quem tomou um display residual. O fechamento oficial dois segundos depois é um descruzamento de um milhão de ações a um preço diferente.

O índice, a cesta de criação do ETF e todo rebalanceamento MOC operaram o descruzamento. O seu backtest operou o residual. E um último print não vem com o seu tamanho colado. Se esse print é de 400 ações e o seu clip é 5,000, você não levou esse preço. Você levou um timestamp que por acaso foi o último.

Eu já vi um arquivo de mid cap em que last-print versus fechamento oficial andou 28 cents numa quinta de rebalanceamento. O backtest que usou o last parecia mais "consciente da microestrutura." Era só um mercado diferente, mais fino, e ainda assumia que poderíamos ter sido aquelas 200 ações.

Deslocar o fill para a abertura de amanhã para ser conservador

O terceiro desvio aparece no code review como um comentário: não assuma que conseguimos operar o fechamento, então execute na próxima abertura. Soa adulto. Constrói outra estratégia.

Um sinal close-to-close executado na próxima abertura já comeu o gap overnight. Para muitos fatores de ações, esse gap é um pedaço grande do movimento que você achava que era seu. Executar na abertura não deixa o backtest cuidadoso. Ele realoca o P&L para uma sessão que você não se propôs a operar, e te joga num leilão de abertura que você também não modelou.

No papel, o estrago é fácil de ler errado. O P&L diário do backtest ainda se alinha com o sinal. O book de paper carrega uma noite de gap de índice e uma manhã de slippage do opening cross. Aí as pessoas discutem implementation shortfall quando a descrição honesta é que os dois sistemas não estão fazendo a mesma operação.

Mas a abertura também é um leilão. Se você perdeu o horário de corte de ontem, você não ganha automaticamente um last limpo das 9:30. Você leva a mecânica de MOO/LOO, um imbalance e um gap. Chamar isso de um fill conservador de fechamento só esconde um segundo cruzamento não modelado debaixo de um comentário virtuoso.

Fill que você lançouO que a praça realmente precisavaComo o estrago aparece
Fechamento oficial, sem tipo de ordemMOC ou LOC aceitos antes do horário de corte daquela praçaPrint after-hours, uma rejeição, ou um preço composto que ninguém hospedou
Último print SIP antes das 16:00Uma operação da qual você poderia ter participado, no seu tamanhoUm residual de 200 ações tratado como fill de clip
Próxima abertura como um fechamento "mais seguro"Um modelo de opening cross, mais o gap overnightOutra estratégia, ainda um leilão, ainda perdido
Se a conta paper não consegue enviar MOC ou LOC, o backtest não leva o fechamento oficial. Mude o fill. Não aproxime o descruzamento com uma ordem a mercado às 16:00.

A divisão honesta é pequena. Ou o contrato de pesquisa diz que estamos no fechamento, e nesse caso a ordem é on-close, com timestamp antes das 15:50 na NYSE ou das 15:55 na Nasdaq, dimensionada contra o volume esperado do fechamento, e autorizada a expirar sem fill se for um LOC. Ou não estamos no fechamento, e nesse caso after-hours ou a próxima abertura é uma política explícita com o seu próprio leilão, e a curva de equity para de vestir um rótulo de 16:00.

Agora reprovamos um backtest que lança o fechamento oficial sem uma ordem on-close sentada dentro do horário de corte daquela praça. Isso já matou umas curvas bonitas de sinal diário. Essas curvas nunca foram executáveis no preço que alegavam.

backtestingmicroestrutura de mercadoaçõesleilão de fechamentoexecução
← Todos os artigos