Conteúdo do artigo
- Evidências e escopo
- Ilustração
- Processo
- Um instantâneo e uma sequência de mudanças
- Conclua a janela de variáveis antes de definir seu alvo
- Reconstruir o livro de ordens faz parte do método
- Cálculos sintéticos e resultados executáveis
- A latência e a escolha da ordem determinam a viabilidade econômica.
- Não transforme a regressão contemporânea em alfa alegado.
- Erros comuns
- Lista prática de verificação
- Perguntas frequentes
- Fontes de pesquisa
Evidências e escopo
Cont, Kukanov e Stoikov estudam OFI e impacto no preço de 50 ações dos EUA. As camadas de previsão e execução propostas abaixo são experimentos separados, não resultados relatados nesse artigo.
Fluxo de trabalho prático
- Reconstrua o livro de ordensAplique as regras de snapshot e delta da plataforma.
- Calcule OBI e eMantenha o estado exibido separado do fluxo de cotações.
- Conclua a janela das variáveisUtilize apenas as observações recebidas antes da decisão.
- Simule a chegada da ordemAplique hipóteses de atraso, spread e posição na fila.
- Avalie os retornos líquidos futurosSeparar a previsão da explicação na mesma janela.
Um instantâneo e uma sequência de mudanças
OBI=(B−A)/(B+A), onde B e A são os tamanhos de melhor oferta de compra e melhor oferta de venda simultâneos. Uma versão multinível pode usar um número fixo de níveis ou uma distância de preço fixa, mas deve especificar qual deles. Um OBI próximo de +1 significa uma profundidade de bid exibida relativamente maior; não contabiliza compradores, não revela intenção nem garante que o bid permanecerá quando uma ordem chegar.
OFI mede as mudanças nos tamanhos das filas e nos preços das cotações. O estudo principal examina o impacto do preço em intervalos curtos e o papel da profundidade [1]. Essa relação explicativa é diferente de uma estratégia que prevê e captura um movimento futuro após receber as observações.
O delta de negociação contabiliza execuções agressivas. O OFI também reflete adições de cotações, cancelamentos e alterações de preço. O OFI pode se tornar positivo quando as ordens de venda são canceladas sem nenhuma compra agressiva. Um instantâneo positivo do OBI pode coexistir com um OFI rapidamente negativo, à medida que a grande fila de ordens de compra desaparece.
Conclua a janela de variáveis antes de definir seu alvo
Para uma atualização de n−1 para n, sejam b e a os melhores preços de compra e venda, respectivamente, e qb e qa seus respectivos tamanhos. O código utiliza a definição de nível um OFI do estudo [1]. Com preços inalterados, a operação se reduz à variação da quantidade bid menos a variação da quantidade ask. Quando os preços de cotação mudam, as contribuições devem utilizar as filas antigas ou novas apropriadas, em vez de apenas subtrair os tamanhos.
Soma e ao longo de uma janela W completa. As normalizações possíveis incluem a profundidade média precedente ou um escore z estimado usando dados de treinamento. Não padronize com o período de teste futuro completo. Os termos OBI do final da janela, OFI dentro da janela e o spread permanecem como características separadas. Se B+A=0 ou qualquer um dos lados estiver ausente, marque a observação como inválida.
Um dos candidatos propostos requer zOFI>1.5, OBI>0.3 e spread≤2 ticks e dados atualizados. Seu alvo começa em uma cotação executável após os atrasos de observação e ordem e termina H=2 segundos depois. Esses limites e horizonte são propostas de pesquisa, não uma configuração lucrativa estabelecida pelo artigo.
Mantenha dois registros de data e hora: quando o evento na bolsa ocorreu e quando a característica completa foi recebida localmente. Uma simulação preditiva que inicia sua posição no registro de data e hora mais antigo pressupõe conhecimento que o sistema de negociação ainda não possuía. O retorno dentro da janela da característica pertence a um teste explicativo, não a um lucro futuro de negociação.
e = I(b>=b_prev)*qb - I(b<=b_prev)*qb_prev
- I(a<=a_prev)*qa + I(a>=a_prev)*qa_prev
OFI_window = sum(e for quote events in completed_window)
OBI = (qb-qa)/(qb+qa)
features_known_at = local_receive_time_of_last_required_event
order_arrival = features_known_at + compute_delay + network_delay
label = executable_exit_price_after(order_arrival,H) - executable_entry_price
# A price move inside the feature window is not future trading profit.
Reconstruir o livro de ordens faz parte do método
A documentação da Bybit determina substituir o livro quando chega um novo snapshot e excluir um nível quando chega um delta de quantidade zero [2]. Implemente o esquema realmente usado: o primeiro nível pode enviar apenas snapshots, enquanto feeds mais profundos usam deltas. Um parser genérico que trate toda mensagem como incremental pode criar um livro incorreto.
Valide os IDs de atualização, a sequência cruzada e os relógios de acordo com as garantias do local. Não assuma que cada identificador incrementa exatamente em um, a menos que isso esteja documentado. Após a ressincronização, não compare um novo snapshot com um livro descontínuo desatualizado e considere a diferença como enorme (OFI). Reinicie a janela de recursos.
As cotações publicadas representam o subconjunto observável, e não todas as ordens pendentes. A amostragem ou o processamento em lote podem omitir sequências de cancelamento/adição entre as mensagens. Rotule o resultado observado como OFI na frequência do feed. Ao compará-lo com o delta de negociação, utilize a semântica de agressor e carimbo de data/hora do canal de negociação separado, [3].
Registre também o truncamento da profundidade. Um livro de ofertas Top-K pode perder níveis quando os preços se movem, mesmo sem que a estratégia observe cancelamentos individuais. Evite interpretar mudanças além do limite conhecido como eventos de ordem exatos. Cotações ausentes não são filas zeradas.
Cálculos sintéticos e resultados executáveis
Suponha melhor bid em 100.00 com quantidade 80 e melhor ask em 100.01 com quantidade 20. Temos OBI=0.60. A quantidade no ask cai de 20 para 5, enquanto o bid e os preços permanecem iguais, resultando em e=+15. Se foi um cancelamento, o delta de negócios é zero. Em seguida, a quantidade no bid cai de 80 para 70, sem mudança no ask: e=−10. O OFI dos dois eventos é +5, enquanto o valor final é OBI=65/75, aproximadamente 0.867.
Uma variável com valor positivo ainda não representa lucro. Para uma trajetória sintética vencedora separada, compre ao preço ask executável 100.01 e venda ao preço bid 100.04 após o horizonte escolhido. O lucro bruto é de 0.03 por unidade. Se as taxas de ida e volta e o slippage totalizarem 0.01, o lucro líquido será de 0.02. O preço médio 100.005 não é automaticamente um preço de compra disponível.
Em um cenário de falha, a grande oferta de compra desaparece antes de a ordem chegar e as cotações se movem para 99.96/99.98. Uma ordem de compra é executada em 99.98, seguida por uma saída na oferta de compra 99.94, resultando em uma perda bruta de 0.04. Uma ordem limite passiva em 100.00 poderia, em vez disso, ser executada precisamente quando o preço começasse a cair. O modelo não consegue rotular toques adversos como "sem execução", enquanto garante a execução de toques favoráveis.
A latência e a escolha da ordem determinam a viabilidade econômica.
Escolha entre execução agressiva ou passiva antes de testar. Ordens agressivas pagam o spread e podem consumir vários níveis de profundidade em tamanhos maiores. Ordens passivas exigem suposições sobre fila, cancelamento e seleção adversa. O conjunto de dados agregado L2 sem IDs de ordem geralmente não revela a prioridade exata da fila, portanto, relate cenários ou limites de preenchimento conservadores.
Stops definidos em ticks, saídas após um horizonte fixo e saídas quando a variável inverte o sinal são políticas distintas. Mudanças rápidas nas variáveis podem gerar giro excessivo de posições. Exigir um intervalo de espera ou persistência do sinal pode reduzi-lo, mas também introduz atraso; meça os dois efeitos.
Se o feed estiver desatualizado, o livro estiver cruzado —bid acima do ask— fora das regras esperadas do mercado, ou houver ressincronização, pare de abrir posições. As posições existentes exigem uma resposta de risco previamente definida. Dados ausentes não significam que o preço parou de se mover.
Execute uma análise de sensibilidade ao tamanho da posição, bem como uma análise de sensibilidade à latência. Uma variável pode prever uma pequena variação no preço médio, mas não conseguir suportar a quantidade de unidades que se pretende negociar. O resultado relevante é o retorno ponderado pela execução para o tamanho da posição em estudo, e não um número ilimitado de negociações à melhor cotação exibida.
Não transforme a regressão contemporânea em alfa alegado.
Separe três tarefas: explicar a variação do preço médio durante W, prever a variação após W e medir P&L após uma latência realista. Um R² elevado na primeira tarefa não garante a validade da terceira. O preço pode já ter reagido antes mesmo dos dados chegarem ao sistema.
Divida por dia de negociação e elimine os horizontes-alvo que se sobrepõem aos limites de validação. Compare com modelos que usam retornos defasados, spread e profundidade sem OFI. Isso verifica se OFI adiciona informações ou apenas repete o movimento de preço que acabou de ocorrer.
Reporte qualidade preditiva, giro, proporção de ordens executadas, P&L líquido, perdas extremas e sensibilidade ao atraso e ao tamanho. Avalie separadamente os regimes de liquidez e as plataformas. A evidência do artigo sobre ações não se transfere para perpétuos de criptomoedas mantendo o mesmo limiar e presumindo custos idênticos.
Erros comuns
Executar todas as ordens no ponto médio entre bid e ask
Isso elimina o spread e superestima os retornos disponíveis.
Supor que uma parede de ordens visível comprova demanda firme
As cotações podem ser retiradas; a intenção dos participantes não é observável.
Chamar o ajuste simultâneo de previsão
Os objetivos devem começar depois que o recurso completo estiver disponível.
Lista de verificação antes de usar este método
Marque cada item após verificá-lo nos seus dados. O progresso fica salvo neste navegador; isso não certifica que a estratégia seja lucrativa.
Perguntas frequentes
OBI pode ser positivo enquanto o preço cai?
Sim. A profundidade exibida é temporária; novos fluxos, cancelamentos e outras plataformas de negociação podem mudar o mercado imediatamente.
O padrão OHLCV consegue reconstruir o OFI?
Não. É necessário, no mínimo, uma sequência dos melhores preços de compra e venda e seus respectivos tamanhos. O volume de negociação não revela eventos de cotação.
Fontes de pesquisa
Cada fonte sustenta a definição ou evidência descrita ao lado. O pseudocódigo, os exemplos sintéticos e os parâmetros propostos exigem validação separada.
- The price impact of order book eventsCont, Kukanov and Stoikov. Leia o resumo e a definição de OFI; 50 ações dos EUA, não um backtest desta estratégia. Verificado em: .
- OrderbookBybit. Leia as limitações de snapshot/delta, relógios e feeds públicos. Verificado em: .
- Public TradeBybit. Leia os campos do canal de negociação para distinguir execuções agressivas de alterações de cotação. Verificado em: .
Métodos relacionados
Nota de risco
Este conteúdo apoia a educação e o planejamento de pesquisas, não constitui aconselhamento financeiro. O Backtest é uma simulação histórica, não garante desempenho futuro e não executa operações reais. Os métodos desta biblioteca não são necessariamente recursos disponíveis no aplicativo. Consulte a metodologia e a central de aprendizado.
Valide as regras antes de arriscar capital real
Verifique o suporte do aplicativo, os dados e cada operação simulada; detectores avançados podem exigir uma implementação própria.
Baixe o Backtest na App Store