Leia o sinal e a distribuição do indicador, evite dois erros de leitura comuns e leve-o para uma estratégia.
Depois de uma queda forte, o histórico de liquidações mostra uma barra negativa funda. Muitos comprados foram liquidados, ou o valor desta moeda costuma ficar abaixo de 0? O indicador só lê a Binance, e 0 não é ponto de equilíbrio; esses dois fatos decidem como ler essa barra. Se você está olhando liquidações por nível de preço, isso é outra estimativa de modelo: veja Como ler o mapa de liquidações.
O indicador de liquidação é um valor escalado que mostra se vendidos ou comprados foram mais liquidados num período, calculado só com o feed público de liquidações da Binance. Uma liquidação é o fechamento forçado de uma posição alavancada pela corretora: um comprado liquidado vira uma ordem de venda, um vendido liquidado, uma de compra. A cada 5 minutos a Blave soma a quantidade liquidada de cada lado (em moedas) por símbolo e calcula o indicador em três etapas:
| Etapa | O que calcula |
|---|---|
| 1. Liquidação líquida | A cada 5 minutos, liquidações de vendidos menos liquidações de comprados, em moedas e não em USD. Um intervalo de 5 minutos sem registro de liquidação conta como 0. |
| 2. Soma móvel | Somada dentro do timeframe escolhido (24h por padrão). |
| 3. Escala | Dividida pelo desvio padrão móvel de 30 dias dessa soma. A média não é subtraída, então não é um z-score padrão. |
O valor não tem limites. O sinal indica qual lado foi mais liquidado:
| Valor | Significado |
|---|---|
| > 0 | No timeframe, mais vendidos que comprados foram liquidados (em moedas) |
| < 0 | Mais comprados que vendidos foram liquidados |
| ≈ 0 | Os dois lados se compensaram, não houve registro de liquidação ou o feed estava fora do ar; não significa que comprados e vendidos da moeda estão equilibrados |
A distribuição é assimétrica: a cauda inferior (liquidações de comprados) é mais profunda que a superior. Estes quantis são um cálculo próprio da Blave a partir do feed da Binance, com candles de 1h e timeframe 24h, de 2024-09-15 a 2026-09-14, um valor por hora (n = 17,520):
| Moeda | p1 | p50 | p99 | Tempo acima de 0 |
|---|---|---|---|---|
| BTC | −3.76 | −0.01 | +3.31 | 48.8% |
| ETH | −4.07 | −0.08 | +2.79 | 43.1% |
| SOL | −4.01 | −0.17 | +2.87 | 37.6% |
| DOGE | −4.07 | −0.23 | +2.97 | 31.1% |
A visão geral, o histórico e as barras de 24h da página do mapa usam só o feed de liquidações da Binance. A Binance envia no máximo uma liquidação por símbolo por segundo e descarta o resto daquele segundo, então é uma amostra que subestima nos movimentos grandes.
As unidades são moedas, então as quantidades brutas não se comparam entre moedas; para isso, use o valor escalado. Enquanto o feed está fora do ar, o valor parece o de um período sem liquidações, e a lacuna não é sinalizada.
Acima de 0, mais vendidos que comprados foram liquidados; abaixo de 0, mais comprados. Mas a escala não subtrai a média, então uma moeda em que os comprados costumam ser mais liquidados fica sistematicamente negativa, e 0 não é o nível normal dela.
A tabela acima mostra a parcela do tempo acima de 0 nesse período medido (candles de 1h, timeframe 24h). O mesmo 0 fica perto da mediana no BTC, mas no DOGE já pende para liquidações de vendidos mais do que na maior parte do tempo.
Hoje nenhuma estratégia oficial usa dados de liquidação, então os três usos abaixo são esboços sem backtest. Os limiares do código pegam emprestados os quantis medidos acima como ponto de partida; não vieram de uma varredura de parâmetros, então faça seu próprio backtest antes de usar.
O caminho mais direto é marcar os períodos em que o valor cai em uma das caudas. Como a cauda inferior é mais profunda, não use o mesmo valor absoluto para os dois lados. No BTC, p1 fica perto de −3.8 e p99 perto de +3.3.
LONG_FLUSH_TH = -3.8 # esboço: perto do p1 do BTC em 1h × 24h SHORT_FLUSH_TH = 3.3 # esboço: perto do p99 do BTC em 1h × 24h liq = fetch_liquidation(SYMBOL, INTERVAL, START, END, hdrs, timeframe='24h') df['LIQ'] = liq['alpha'] long_flush = df['LIQ'] <= LONG_FLUSH_TH # liquidações concentradas de comprados short_flush = df['LIQ'] >= SHORT_FLUSH_TH # liquidações concentradas de vendidos
Como operar essas marcas é pesquisa sua: a Blave não verificou se o preço reverte ou continua depois de liquidações concentradas. Os quantis também variam por moeda; ETH, SOL e DOGE têm p1 mais profundo que o BTC, então recalcule ao trocar de moeda.
Como 0 não é ponto de equilíbrio, uma regra do tipo "acima de 0, os vendidos estão sendo liquidados" falha em moedas como o DOGE, que passam longos períodos no negativo. Use os quantis da própria moeda numa janela passada, menos afetados por esse viés de longo prazo:
# esboço: quantis dos últimos 180 dias; tamanho da janela não varrido
lo = df['LIQ'].rolling('180D').quantile(0.01)
hi = df['LIQ'].rolling('180D').quantile(0.99)
extreme = (df['LIQ'] <= lo) | (df['LIQ'] >= hi)
Com uma janela curta demais, os limiares acompanham o preço recente. Também não deixe a janela entrar no período de aquecimento, cerca de 30 dias a partir do início dos dados da moeda (antes de 2023-01-31 no BTC e no ETH), quando o desvio padrão tinha poucas amostras e gera extremos falsos.
Um uso mais conservador é somá-lo à regra de entrada de uma estratégia existente: não abrir posições novas enquanto o valor estiver em uma das caudas. Reaproveite os dois limiares do uso 1 e troque compute_entry pela condição de entrada da sua estratégia:
# esboço: sem entrada enquanto o valor estiver em uma das caudas flush = (df['LIQ'] <= LONG_FLUSH_TH) | (df['LIQ'] >= SHORT_FLUSH_TH) entry = compute_entry(df) & ~flush
Essa combinação não tem backtest, e a Blave não verificou se evitar liquidações concentradas melhora o desempenho. Ela só trata "acabou de haver uma onda de liquidações" como motivo para pausar entradas novas.
O indicador tem duas configurações. O timeframe é a janela em que a liquidação líquida é somada: 15min, 1h, 4h, 8h, 24h ou 3d, com 24h como padrão. O intervalo dos candles (period) define com que frequência um valor é lido: 5min, 15min, 1h, 4h, 8h ou 1d. O valor é sempre calculado primeiro na grade de 5 minutos, e cada candle pega o último. Mudar o timeframe muda a distribuição; este é o mesmo período medido com timeframe 1h em candles de 1h:
| Moeda | p1 | p50 | p99 | Tempo acima de 0 |
|---|---|---|---|---|
| BTC | −2.62 | 0.00 | +2.12 | 52.5% |
| ETH | −2.84 | 0.00 | +2.17 | 48.8% |
| SOL | −3.07 | 0.00 | +2.21 | 45.5% |
| DOGE | −3.50 | 0.00 | +2.09 | 40.3% |
Comparado com 24h, 1h tem caudas mais estreitas, mediana 0.00 em todas as moedas e uma fatia acima de 0 mais próxima da metade. Recalcule os limiares sempre que mudar o timeframe; um conjunto de números não vale para outro. 15min, 4h, 8h e 3d não foram medidos aqui.
| Página | O que mostra | Acesso |
|---|---|---|
| Visão geral de liquidações | Mapa de blocos com um menu para alternar os rankings de liquidações de vendidos e de comprados, 30 moedas em cada. O tamanho do bloco é o valor absoluto (em relação aos últimos 30 dias da moeda), não um valor em dólar; a cor é a variação de preço no timeframe. | Com login |
| Histórico de liquidações | Barras do indicador de liquidação de uma moeda sobre o preço, com opções de timeframe e intervalo dos candles e os campos de stat. | Sem Pro, os últimos 7 dias chegam com atraso |
São ideias de combinação, não resultados verificados:
| Combinação | Uso |
|---|---|
| Liquidações + Caçador de baleias | Use o Caçador de baleias para achar movimentos incomuns do open interest e veja em qual cauda o indicador de liquidação estava no mesmo período, para saber se o movimento veio com liquidações concentradas. |
| Liquidações + Intensidade taker | O indicador de liquidação só vê o lado que foi forçado a sair. Use a Intensidade taker para ver a compra e venda agressiva do mesmo período e cobrir a metade voluntária. |
O endpoint do indicador é GET /liquidation/get_alpha, com symbol, period, timeframe (24h por padrão) e um intervalo de datas (start_date, end_date); no Blave Agent corresponde a fetch_liquidation. Retorna só candles fechados, com timestamp, alpha e stat, e intervalos de mais de 1 ano são cortados. Os dados começam em 2023-01-01 nos símbolos mais antigos (BTC, ETH) e, antes disso, o valor é 0; outras moedas podem começar depois. O desvio padrão de 30 dias precisa de aquecimento, então valores com sentido começam cerca de 30 dias após o início dos dados da moeda (por volta de 2023-01-31 no BTC e no ETH).
O objeto stat de get_alpha descreve a leitura mais recente, e seus nomes não correspondem exatamente ao que calculam:
| Campo | O que calcula de fato |
|---|---|
up_prob | Uma regressão logística treinada com os últimos 365 dias usa o indicador de liquidação para prever se o preço vai subir ou cair 24h depois e retorna a probabilidade de alta. Os dados de treino incluem o período atual, então é uma estimativa dentro da amostra, não uma taxa de acerto fora da amostra. |
avg_up_return /avg_down_return | Retorno médio em 24h de todos os resultados de alta ou de baixa nos últimos 365 dias, sem distinguir o nível do indicador. |
exp_value | up_prob × avg_up_return + (1 − up_prob) × avg_down_return, em decimal, não em porcentagem. |
is_data_sufficient | Se os dados da moeda começam há mais de 365 dias, não se este nível de leitura tem amostras suficientes. |
Para os endpoints e campos do mapa de liquidações, da variação do mapa e da página por corretora, veja Como ler o mapa de liquidações.
stat é uma estimativa dentro da amostra. Verifique qualquer limiar com seu próprio backtest.