Caça aos stops nas máximas e mínimas do dia anterior
Cada número da nota, e de onde ele veio: método suficiente para conferir a aritmética à mão ou para reconstruir um estudo equivalente a partir dos arquivos públicos da Binance e da OKX. Os trechos ilustram a lógica em vez de reproduzir o código de produção.
Dados
Os dados da Binance vêm de data.binance.vision/data/futures/um/, que é público e não exige credenciais:
- klines de 1 minuto por contrato, a única série de preços que o estudo lê;
- eventos de funding nos seus horários reais de liquidação, com o intervalo publicado por evento;
- arquivos diários de aggTrades, usados duas vezes: para o spread medido de cada contrato-mês e para resolver a ordem dos negócios dentro de minutos ambíguos;
- klines de 1 minuto do mark price para os dez contratos mais negociados em cada mês.
Os dados da OKX vêm do arquivo público da corretora em static.okx.com/cdn/okex/traderecords/:
- arquivos mensais de candles de 1 minuto para swaps USDT, desde setembro de 2021, incluindo contratos depois deslistados;
- arquivos diários de negócios, usados para resolver minutos ambíguos.
As duas séries da OKX vêm em meses e dias UTC+8. Os arquivos são concatenados e deduplicados pelo horário de abertura do candle, e cada arquivo de negócios é mapeado para o dia UTC+8 que ele cobre.
Os preços da Binance são guardados como floats de 32 bits, então todo toque compara valores guardados dos dois lados, e os níveis de número redondo, os únicos não tirados de uma barra guardada, são convertidos para a mesma precisão antes da comparação, enquanto os preços da OKX são lidos e comparados como floats de 64 bits.
Universo
No primeiro dia de cada mês, todo perpétuo da Binance margeado em USDT com pelo menos 45 dias de histórico é ordenado pelo volume diário mediano em dólares dos 30 dias anteriores àquele dia, e os 50 maiores formam o universo do mês, deixando de fora os perpétuos de índice BTCDOMUSDT, DEFIUSDT, FOOTBALLUSDT e BLUEBIRDUSDT. Perpétuos USDT ligados a commodities e a ações permanecem sempre que se classificam: 25 contratos-mês, em sua maioria PAXG e ouro.
A ordenação roda sobre o histórico completo de listagens do arquivo, não sobre a lista atual de contratos da corretora, de modo que contratos que depois morreram contam nas datas em que foram negociados. Menos de 50 contratos se qualificam antes de novembro de 2020 (2 em fevereiro de 2020, 8 em março, entre 21 e 40 até outubro). O resultado são 3,751 contratos-mês sobre 308 contratos, de fevereiro de 2020 a setembro de 2026.
Para a OKX o universo é o swap da OKX sobre o mesmo ativo de cada membro da Binance, encontrado removendo prefixos multiplicadores como 1000 e mapeando para BASE-USDT-SWAP, onde quer que a OKX tenha dados. Isso dá 2,697 contratos-mês sobre 201 swaps, de outubro de 2021 a setembro de 2026, com os tercis de liquidez tirados da ordenação da Binance.
Níveis
As barras diárias são construídas a partir de barras de 1 minuto em dias UTC, e um dia está completo com pelo menos 1,380 barras. A escala de volatilidade A do dia D é o true range médio dos dias D−14 a D−1, e todos esses 14 precisam estar completos; todo nível ativado no dia D usa o A daquele dia.
TR[d] = max(H[d], C[d-1]) - min(L[d], C[d-1]) # H - L when day d-1 has no bars A[D] = mean(TR[D-14 : D]) # requires all 14 days complete
| Nível | Definição | Janela ativa |
|---|---|---|
| Visível (V) | máxima e mínima do dia UTC D−1 | D 00:00 a D+1 00:00 |
| I10, I13 | máxima e mínima da janela de 24 h que termina às 10:00 ou 13:00 UTC no dia D | 24 h a partir da âncora |
| Semanal visível | máxima e mínima da semana ISO anterior | a semana inteira |
| Controle semanal | janela de 7 dias que termina na quinta-feira às 10:00 UTC | os 7 dias seguintes |
| Número redondo | múltiplo de g = 10^(floor(log10 C[D−1]) − 1) mais próximo acima e abaixo do fechamento anterior, a pelo menos 0.1·A de distância | dia D |
| Controle de número redondo | a mesma regra na grade (k + 0.37)·g | dia D |
Um nível só é elegível se a primeira abertura da sua janela ativa estiver a pelo menos 0.1·A do lado próximo. Dois níveis coincidem quando estão do mesmo lado, ambos ativos na barra de toque e a menos de 0.1·A um do outro. O teste usa apenas níveis ativos na própria barra de toque do evento, de modo que não lê nada do que vem depois do toque.
Os dois controles
Controle registrado. Ele agrupa I10 e I13; todo evento visível que coincide com um nível I10 ou I13 é descartado, assim como um evento de controle que coincide com um nível visível diário ou semanal. Quando um nível I10 e um I13 coincidem, o registro I10 é mantido.
Controle limpo. É o subconjunto dos níveis I10 e I13 cujo extremo foi fixado no dia D−1. O minuto do extremo é o primeiro minuto da janela que atinge o extremo, e um nível é limpo quando esse minuto cai antes das 00:00 UTC do seu dia de ativação:
clean = kind.isin([I10, I13]) & (extreme_minute < activation_day * 1440)
Uma janela que termina às 10:00 UTC contém as dez primeiras horas do dia UTC corrente, e um extremo fixado nessas horas é a máxima ou mínima corrente de hoje, que um candle diário desenha. Em toda a amostra da Binance, 57.7% dos toques resolvidos do controle registrado são desse tipo: 29,387 contra 21,578 limpos. Eles são reportados como grupo próprio.
O colchete de desfecho
Na primeira barra de 1 minuto dentro da janela ativa que negocia através do nível, um colchete simétrico de h = 0.1·A registra a primeira passagem. Barreira superior U = L + h e barreira inferior D = L − h, descritas aqui para uma mínima, com as máximas espelhadas, num horizonte de 1,440 barras.
# touch bar b0 if low[b0] <= D: outcome = AMBIG_A1 if close[b0] >= U else CONT # A2 flag if high[b0] >= U elif close[b0] >= U: outcome = REV else: continue to later bars # A3 flag if high[b0] >= U # later bars: both barriers in one bar -> AMBIG_A4; else the first barrier hit decides
Eventos são descartados quando uma sequência de cinco ou mais minutos faltantes aparece antes da resolução ou quando o horizonte termina sem resolução, o que deixa a fração não resolvida abaixo de 0.01% nos dois braços.
Resolução a tick
As marcas A1 a A4 assinalam minutos cuja ordem interna importa, o que cobre 11.0% dos toques visíveis e 12.7% dos toques de controle registrado na Binance. O controle limpo na Binance fica em 14.8%, e a OKX em 10.2% nos visíveis e 13.3% nos limpos.
Como a fração está acima do gatilho registrado de 3% em todos os casos, uma amostra aleatória estratificada de até 400 eventos marcados por braço é resolvida negócio a negócio. O arquivo do dia de cada evento é baixado e recortado para os minutos necessários:
- o primeiro negócio no nível ou através dele é o toque;
- a barreira que os negócios alcançam primeiro depois disso decide o desfecho;
- a comparação do toque admite uma tolerância relativa de 1e-6 por causa do armazenamento em 32 bits dos extremos das barras.
Cada evento marcado assume então a taxa da sua célula de braço e marca. Uma célula com menos de 10 eventos a tick é agrupada com a outra marca de duas barreiras (A1 com A4) dentro do seu braço, regra que só se aplica às estimativas de controle limpo.
| Amostra | Eventos resolvidos | Semente |
|---|---|---|
| Teste registrado, Binance | 799 de 799 | 7 |
| Controle limpo, Binance (eventos visíveis como acima; 200 eventos limpos da mesma amostra mais outros 201) | 800 de 800 | 17 para o sorteio adicional |
| Controle limpo, OKX | 802 de 802 | 7 |
Estratos e pesos
A diferença é Δ = Σ ws (pV,s − pC,s) / Σ ws, onde ws é o número de eventos visíveis resolvidos no estrato s. Um estrato com menos de 10 eventos em qualquer um dos braços é descartado, e todo ponto de corte de tercil vem da amostra visível e de controle agrupada daquela praça.
| Estimador | Dimensões | Estratos | Eventos descartados |
|---|---|---|---|
| Registrado | lado × bloco de 4 horas do toque × época × liquidez × distância × velocidade (tercis) | 972 | 49% |
| Controle limpo, principal | lado × época × liquidez × distância × velocidade × tempo decorrido (tercis) | 486 | 3.9% Binance, 7.6% OKX |
O bloco de hora do relógio quase separa os braços, porque os níveis visíveis ativam às 00:00 e os controles às 10:00 ou 13:00, e é por isso que metade da amostra registrada fica em estratos onde falta um dos braços. O estimador de controle limpo troca a hora do relógio pelo tempo decorrido entre a ativação e o toque. A velocidade de aproximação é |log(abertura no toque / abertura 60 barras antes)| dividida por A / C[D−1].
Inferência
Os intervalos no teste registrado vêm de um bootstrap por clusters sobre semanas de calendário ISO, com todos os contratos de uma semana juntos, com 10,000 réplicas e semente 20261008. O intervalo de dois estágios também re-sorteia os eventos resolvidos a tick dentro de cada célula de braço e marca em cada réplica, e então recalcula as taxas antes de Δ:
for b in range(10_000):
w = np.bincount(rng.integers(0, W, W), minlength=W) # weeks
rates = {cell: rng.choice(x, len(x)).mean() for cell, x in tick.items()}
draws[b] = delta(w, rates)Na amostra registrada isso reproduz exatamente a estimativa pontual registrada, −0.019865, e alarga o intervalo de [−0.0366, −0.0053] para [−0.0399, −0.0026], com 53.2% dos sorteios em −0.02 ou abaixo. Os testes de controle limpo o usam como seu intervalo principal (semente 20261009). Os p-valores bicaudais são o dobro da menor fração de cauda dos sorteios.
Testes de método
| Teste | Exigência | Binance | OKX |
|---|---|---|---|
| Nulo por embaralhamento, 20 sementes | Δ médio dentro de ±0.005 | registrado +0.0015 (DP 0.0060); limpo −0.0011 | limpo −0.0005 |
| Teste de poluição, 200 eventos | nível, A, elegibilidade, coincidência, estratos e minuto do extremo idênticos bit a bit | 200/200 (os dois desenhos) | 200/200 |
| Nível vazado (a própria máxima ou mínima do dia D) | |Δ| > 0.1 | +0.506 | n/d |
| Placebo de âncora de relógio (I10 contra I13) | o intervalo contém 0, ou |Δ| < 0.01 | registrado +0.011 [−0.015, +0.037]; limpo +0.008 [−0.021, +0.038] | limpo −0.013 [−0.054, +0.027] |
| Kernel compilado contra referência em Python puro | 0 divergência | 0 de 30,000 (ETH, BTC, 1000PEPE) | mesmo código |
O embaralhamento permuta barras inteiras de 1 minuto como formas relativas (da abertura para máxima, mínima e fechamento) dentro de cada mês civil, e depois as encadeia a partir da primeira abertura da série, de modo que cada barra abra no fechamento embaralhado anterior; níveis, A, estratos e desfechos são recalculados com o código inalterado.
O poder é baixo para o placebo de âncora: sua meia-largura de cerca de 2.6 pontos excede o efeito registrado, então ele só consegue descartar efeitos de âncora de relógio maiores que cerca de 3.7 pontos.
Resultados por teste
| Teste | Δ | Intervalo de 95% | Eventos visíveis que entram / resolvidos | Rótulo |
|---|---|---|---|---|
| Registrado, corrigido a tick | −0.0199 | −0.0366 a −0.0053 | 18,689 / 37,355 | registrado: "real mas imaterial" |
| Registrado, intervalo de dois estágios | −0.0199 | −0.0399 a −0.0026 | idem | n/d |
| Registrado, 1 minuto | −0.0190 | −0.0371 a −0.0034 | 18,511 | n/d |
| Controle limpo, Binance | −0.0511 | −0.0673 a −0.0362 | 35,707 / 37,551 | continuação material |
| Controle limpo, OKX | −0.0436 | −0.0625 a −0.0267 | 22,717 / 24,841 | continuação material |
Os rótulos do controle limpo seguem a tabela baseada em intervalos do adendo: material significa que o intervalo fica abaixo de zero e que a estimativa pontual chega a −0.02 ou passa disso.
| Variante | Binance | OKX |
|---|---|---|
| Estratos registrados | −0.041 (−0.061 a −0.022) | −0.034 (−0.059 a −0.012) |
| Estratos principais mais a idade do nível | −0.031 (−0.048 a −0.017) | −0.037 (−0.055 a −0.022) |
| Sem estratos de tempo | −0.046 (−0.060 a −0.032) | −0.035 (−0.052 a −0.020) |
| Não estratificado | −0.046 (−0.059 a −0.032) | −0.034 (−0.050 a −0.020) |
| Eventos visíveis que coincidem com níveis semanais descartados | −0.048 (−0.064 a −0.034) | −0.041 (−0.059 a −0.025) |
| Somente I10 limpo | −0.045 (−0.062 a −0.029) | −0.035 (−0.055 a −0.016) |
| Somente I13 limpo | −0.077 (−0.102 a −0.054) | −0.064 (−0.096 a −0.035) |
| O extremo corrente de hoje como controle | +0.001 (−0.013 a +0.013) | −0.009 (−0.026 a +0.007) |
| Desenho registrado aplicado à OKX | n/d | −0.028 (−0.051 a −0.007) |
Variantes do controle limpo, Δ com seu intervalo de 95%.
Exploratório, depois dos resultados do controle limpo. Níveis de controle limpo tocados no dia da sua ativação, dentro da faixa do dia anterior, dão −0.049 (−0.065 a −0.035) na Binance e −0.052 (−0.074 a −0.034) na OKX. Tocados no dia seguinte, como rompimento do extremo do dia anterior, os mesmos níveis dão −0.004 (−0.024 a +0.015) e −0.015 (−0.038 a +0.009).
Testes secundários.
- Perfil de deslocamento (1 minuto, controle registrado). −0.019 no nível, −0.027 a 0.05 ATR, −0.020 a 0.1 ATR, −0.002 a 0.2, +0.005 a 0.3 e −0.010 a 0.5. Deslocamentos de 0.75 e 1.0 ATR não são reportados, porque menos de 2,000 eventos visíveis entram nessas estimativas.
- Níveis semanais. −0.039 (−0.060 a −0.019).
- Números redondos. −0.029 (−0.034 a −0.024) sobre 80,987 toques redondos e 82,121 de controle; a grade de controle reverte a 0.517. Tanto o resultado semanal quanto o de números redondos rejeitam sob Holm.
- Heterogeneidade. Toda época, lado, tercil de liquidez e bloco de hora de toque é negativo, de −0.002 a −0.028.
Regras de trading, custos e funding
Duas regras rodam em cada toque da amostra principal, um trade por nível por regra:
- Fade de sweep. Dentro de 60 barras após o toque, a primeira barra que fecha de volta para dentro enquanto a excursão mais profunda permanece dentro de 0.3·A. A entrada é na abertura seguinte, o stop fica 0.05·A além da excursão e o alvo no dobro do risco.
- Rompimento. O primeiro fechamento a pelo menos 0.1·A através do nível dentro de 60 barras, com entrada na abertura seguinte, stop em L + 0.05·A e alvo no dobro do risco.
As saídas leem o OHLC completo de 1 minuto, com o stop sendo considerado quando stop e alvo caem na mesma barra, um gap através de qualquer um deles executando na abertura e uma saída por tempo 1,440 minutos após a entrada. A variante walk-forward escolhe entre nove configurações em 12 meses e testa os 3 seguintes, avançando um trimestre por vez desde o 1T de 2021; o treino usa o horário de entrada sem purga, o que deixa 729 de 1,059,975 trades saindo dentro do trimestre de teste seguinte.
gross = direction * (exit / entry - 1) fee = 2 * 5e-4 # taker, both fills slip = 2 * 0.75 * spread_month # half spread plus half again, per fill fund = -direction * sum(rate_k for settlement k in (entry, exit]) net = gross + fund - fee - slip
O spread é o repique mediano entre negócios nas trocas de agressor, medido nos dias 8 e 22 de cada contrato-mês com até três recuos para a frente. Dos 3,751 contratos-mês, 2,123 foram medidos para este estudo e 4 não têm arquivo de negócios, enquanto o restante vem de uma medição anterior com o mesmo estimador, validada contra o bookTicker em BTCUSDT para 15 de julho de 2023 em 0.0330 bp.
Os quatro testes em níveis visíveis formam uma única família Benjamini-Hochberg, todos os quatro com p unilateral = 1.0, e o Sharpe deflacionado das carteiras walk-forward com 9 tentativas é efetivamente zero.
Os planos lacrados
Três documentos foram lacrados por SHA-256. Eles estão disponíveis mediante solicitação em daniel@daru.finance.
| Documento | SHA-256 | Lacrado (UTC) |
|---|---|---|
| Pré-registro (PREREG.md) | 51a8744e512bb0423f9d7f39f013d6c03186049fcab506b2427c795dc99dcc2f | 2026-10-08 21:03:57 |
| Revisão registrando cada desvio em relação a ele (PREREG-v2.md) | 3694a506513d74a900a5f2b354ccae96b54fd70d2820fb520f6a93222d04889a | 2026-10-09 02:37:03 |
| Plano do controle limpo, da OKX e do teste prospectivo (ADDENDUM-A.md) | d5f046bb6f53183e583448a20aa6d1c48613e290101681016109476af0f726b1 | 2026-10-09 02:39:06 |
sha256sum PREREG.md PREREG-v2.md ADDENDUM-A.md
O pré-registro foi lacrado antes de qualquer desfecho ser calculado, ao passo que a revisão foi escrita depois de os resultados registrados existirem e diz isso na sua primeira linha. O teste de controle limpo na Binance foi registrado depois dos resultados da v1; a replicação na OKX foi registrada antes de qualquer nível ou desfecho da OKX ser calculado.
Veredito registrado, na íntegra: "Real mas imaterial." O modelo de resposta registrado que o acompanha, "Mensurável, pequeno demais para mover um stop", é retirado na revisão porque o intervalo se estende até −0.037, além do limiar de materialidade de 0.02.
Linha de resposta produzida pela regra lacrada do adendo: "Não: eles rompem com mais frequência, em cerca de 4 pontos". Todas as suas condições se verificam: todo intervalo está abaixo de zero e os dois testes de controle limpo são materiais, com N sendo o piso da menor estimativa, 4.36.
Linha de resposta exibida com a nota: "Não: eles rompem pelo menos com a mesma frequência que outros níveis". Ela afirma só o que toda especificação sustenta, já que o recorte exploratório mostra que o tamanho de 4 pontos se mantém contra níveis não desenhados dentro da faixa do dia anterior e em boa medida desaparece contra níveis não desenhados cujo toque também rompe um extremo recente.
Desvios em relação ao pré-registro
A revisão registra cada um deles com o seu hash.
- Construção do embaralhamento. O texto lacrado reencadeia cada mês a partir da primeira abertura original daquele mês, o que coloca um salto de preço às 00:00 UTC no primeiro dia de todo mês, porque um mês embaralhado nunca termina exatamente onde o mês real seguinte começa. Níveis ainda ativos do dia anterior são tocados por essa barra de salto, 54,391 vezes ao longo de 20 sementes, com reversão em 2% a 3% dos casos, de modo que o teste de embaralhamento tal como lacrado devolveu +0.0323 e falhou, e sob a letra do texto lacrado o teste registrado fica "não creditado: método". Encadear o caminho embaralhado de forma contínua entre os meses remove o salto, e depois disso o teste devolve +0.0015; todo resultado da nota usa a construção contínua.
- Precisão dos números redondos. Os níveis redondos e de controle foram primeiro comparados em precisão de 64 bits contra extremos de barra de 32 bits, o que descarta alguns negócios exatamente no nível. Em precisão de 32 bits a estimativa passa de −0.0331 para −0.0292, e a decisão de Holm não muda.
- A regra da amostra pequena demais. Exigindo 20,000 eventos visíveis resolvidos, a regra é aplicada aos eventos resolvidos antes do filtro de estratos: 37,355 visíveis e 50,662 de controle. Contados depois do filtro, 18,689 eventos visíveis entram na estimativa, e sob essa leitura o teste registrado seria "pequeno demais para julgar".
- Leituras de implementação. A lista de índices, o primeiro true range, os pontos de corte, a época, a tolerância a tick, a coincidência para níveis semanais e redondos, o escopo da correção a tick e a barra de entrada das regras de trading estão escritos na revisão. Alguns foram registrados depois da rodada, com horários tirados dos timestamps dos arquivos.
- Momento da verificação do kernel. A comparação do kernel compilado com uma referência em Python puro rodou depois da rodada completa, e não antes como planejado, com 0 divergência.
- Acréscimos e retiradas no relato. O intervalo de dois estágios é acrescentado. O recorte por mark price, lido como stops contra liquidações, é retirado porque toques vistos apenas no último preço são pavios rasos por construção, de modo que o recorte mede profundidade de penetração. Deslocamentos além de 0.5 ATR não são reportados.
- Uma análise exploratória. O recorte do controle limpo por dia de toque rodou depois dos resultados do controle limpo e vem rotulado como exploratório onde quer que apareça.
Teste prospectivo
Definido no adendo e ainda não rodado. Ele cobre níveis da Binance e da OKX ativados em 19 de setembro de 2026 ou depois, com o estimador de controle limpo, a praça acrescentada como estrato e a mesma tabela de decisão.
Ele roda no primeiro fim de mês com pelo menos 30,000 eventos visíveis resolvidos somados entre as praças. Acumulam-se cerca de 10,700 por ano, de modo que isso é esperado por volta de 2029; caso o limiar não seja atingido até 31 de dezembro de 2029, o teste roda nessa data rotulado como de baixo poder.
Limitações
- Extremos de faixa. Visibilidade e condição de extremo de faixa não são separadas por este desenho.
- Fronteiras de dia. 00:00 UTC é também um horário de funding na Binance, e os candles padrão da OKX usam UTC+8.
- A OKX não é um histórico independente. Seus preços se movem junto com os da Binance sobre os mesmos ativos, de modo que a replicação não é um histórico de preços independente.
- Ordens não observadas. Stops e liquidações nunca são observados.
- Universo. Ele tem menos de 50 contratos em 2020 e inclui 25 contratos-mês não cripto.
- Coincidência nas bordas do universo. Níveis no primeiro ou no último dia da passagem de um contrato pelo universo são checados apenas contra níveis construídos para dias de universo, o que afeta menos de 2% dos eventos.
- Células de tick ralas. As células de tick A1 e A4 se apoiam em 5 a 17 eventos cada.
Solicitar o pipeline completo
As figuras da nota são desenhadas a partir da tabela de resultados publicada do estudo. Os registros trade a trade, as tabelas de eventos e o pipeline completo não são distribuídos a partir desta página; para solicitá-los, escreva para daniel@daru.finance.

