12 de novembro de 2026 · execução

O seu backtest executou ao fecho oficial. Nunca entrou no leilão.

O seu backtest executou ao fecho oficial. Nunca entrou no leilão.

O fecho oficial num ficheiro de ações parece qualquer outro preço. Timestamp 16:00:00 Eastern, um número, pronto a executar. Os sinais diários marcam-no. Os rebalanceamentos atingem-no. Um agente de investigação trata-o como uma cotação que estava no livro, à sua espera.

O fecho é um leilão, não uma cotação. É o preço de descruzamento de ordens on-close que tinham de ser aceites antes de uma hora limite. Se o backtest executou aí sem se juntar a esse lote, ficou com um print do qual não faria parte.

Executar às 16:00 como se o descruzamento fosse uma ordem de mercado

O atalho habitual é: calcular o sinal no fecho ou imediatamente antes, executar ao fecho oficial, carimbar 16:00. Numa terça-feira calma em AAPL, a mentira são uns cêntimos. Nos dias que dominam um livro de rebalanceamento diário, é a operação inteira.

Às 16:00:00.000 o cruzamento de fecho está a decorrer, ou acabou de decorrer. Uma ordem marketable enviada nessa altura não entra nesse cruzamento. Cai no que restar: quantidade visível residual, um odd lot, horário alargado na ARCA ou na Nasdaq. Esse print pode estar a dois cêntimos do fecho oficial, ou a quarenta pontos base, e é um pool de liquidez diferente. Numa reconstituição Russell, num final de mês, ou numa sexta-feira de triple-witching, o fecho é muitas vezes uma fatia de dois dígitos do volume do dia. Essa era a liquidez. Não estava nela.

3:50hora limite on-close da NYSE (ET)
3:55hora limite do cruzamento de fecho da Nasdaq (ET)
~10%volume típico de large-cap no fecho

Fizemos paper trading disto por acidente. Um ajuste de parâmetro caiu às 15:48. O backtest mesmo assim executou todos os nomes ao fecho oficial. O OMS enviou ordens de mercado comuns às 16:00:03 porque ninguém tinha ligado o MOC. Prints after-hours, um punhado de rejeições, e um desvio de 19 pontos base face ao ficheiro num dia em que o ficheiro dizia que estávamos flat até ao fecho. A estratégia não tinha falhado. A regra de execução é que tinha.

Ainda penso nas 15:49 como um sítio físico. Alguém está a alterar um peso. Outra pessoa está a olhar para o relógio. A hora limite não se importa qual de vocês tem razão.

O MOC é a ordem que realmente pede esse descruzamento, e nem o MOC é uma promessa. Uma suspensão, uma pausa LULD, um leilão cancelado, um nome que nunca abriu: pode estar flat às 16:00 com um on-close ativo que morre. O LOC pode falhar por completo. Se o descruzamento é $40.12 e o seu limite é $40.00, não fica com nada. Muitos backtests mesmo assim registam o fecho.

Pior: alguns ficheiros de fornecedores guardam um fecho composto que nunca teve print em nenhuma plataforma. Não se pode participar num composto. Se a estratégia tivesse enviado um MOC NYSE, a execução que conta é o descruzamento da NYSE, no tamanho que o leilão teria absorvido.

Chamar ao último print da sessão regular o fecho

Algumas pipelines recusam o fecho oficial por princípio e ficam com o último print SIP antes das 16:00, porque esse print pelo menos "aconteceu." Numa mega-cap, o last e o oficial ficam muitas vezes a um ou dois cêntimos e não se dá por isso. Numa mid-cap o último print pode ser 200 ações às 15:59:51, assinado por quem levantou um residual visível. O fecho oficial dois segundos depois é um descruzamento de um milhão de ações a um preço diferente.

O índice, o cabaz de criação do ETF e todos os rebalanceamentos MOC negociaram o descruzamento. O seu backtest negociou o residual. E um último print não vem com o seu tamanho associado. Se esse print é de 400 ações e o seu clip é de 5,000, não obteve esse preço. Obteve um timestamp que por acaso foi o último.

Já vi um ficheiro de mid-cap em que last-print versus fecho oficial se moveu 28 cêntimos numa quinta-feira de rebalanceamento. O backtest que usou o last parecia mais "consciente da microestrutura." Era apenas um mercado diferente, mais fino, e mesmo assim assumia que poderíamos ter sido aquelas 200 ações.

Deslizar a execução para a abertura de amanhã para ser conservador

O terceiro subterfúgio aparece na revisão de código como um comentário: não assumir que conseguimos negociar o fecho, por isso executar a abertura seguinte. Soa a adulto. Constrói outra estratégia.

Um sinal close-to-close executado na abertura seguinte já comeu o gap overnight. Para muitos fatores de ações, esse gap é uma fatia grande do movimento que pensava possuir. Executar a abertura não torna o backtest cuidadoso. Transfere o P&L para uma sessão que não se propôs negociar, e deixa-o num leilão de abertura que também não modelou.

No papel, o estrago é fácil de interpretar mal. O P&L diário do backtest continua alinhado com o sinal. O livro de paper carrega uma noite de gap de índice e uma manhã de slippage do cruzamento de abertura. Depois discute-se implementation shortfall quando a descrição honesta é que os dois sistemas não estão a fazer a mesma operação.

Mas a abertura também é um leilão. Se perdeu a hora limite de ontem, não recebe automaticamente um last limpo das 9:30. Recebe mecânicas MOO/LOO, um imbalance e um gap. Chamar a isso uma execução conservadora ao fecho só esconde um segundo cruzamento não modelado debaixo de um comentário virtuoso.

Execução que registouO que a plataforma realmente exigiaComo se vê o estrago
Fecho oficial, sem tipo de ordemMOC ou LOC aceite antes da hora limite dessa plataformaPrint after-hours, uma rejeição, ou um preço composto que ninguém alojou
Último print SIP antes das 16:00Uma operação de que poderia ter feito parte, no seu tamanhoUm residual de 200 ações tratado como execução de um clip
Abertura seguinte como um fecho "mais seguro"Um modelo de cruzamento de abertura, mais o gap overnightOutra estratégia, ainda um leilão, ainda falhada
Se a conta de paper não consegue enviar MOC ou LOC, o backtest não fica com o fecho oficial. Mude a execução. Não aproxime o descruzamento com uma ordem de mercado às 16:00.

A divisão honesta é pequena. Ou o contrato de investigação diz que estamos no fecho, e nesse caso a ordem é on-close, com timestamp antes das 15:50 na NYSE ou das 15:55 na Nasdaq, dimensionada face ao volume de fecho esperado, e autorizada a expirar sem execução se for um LOC. Ou não estamos no fecho, e nesse caso after-hours ou a abertura seguinte é uma política nomeada com o seu próprio leilão, e a curva de equity deixa de vestir um rótulo das 16:00.

Agora reprovamos um backtest que regista o fecho oficial sem uma ordem on-close dentro da hora limite dessa plataforma. Já matou umas curvas bonitas de sinal diário. Essas curvas nunca foram executáveis ao preço que reivindicavam.

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