Dados On-Chain como Sinais de Trading: Funding Rates, OI e Zonas de Liquidação

Dados On-Chain como Sinais de Trading: Funding Rates, OI e Zonas de Liquidação

Como construir sinais quantitativos a partir de dados de futuros perpétuos — funding rates, open interest e cascatas de liquidação. Metodologia, implementação e por que ainda não temos resultados de backtest.

on-chainfunding-rateopen-interestcrypto

Os Dados que Ninguém Usa Sistematicamente

Futuros perpétuos de crypto geram dados de posicionamento que mercados tradicionais não fornecem — ou fornecem semanalmente com atraso (relatórios COT). Funding rates mostram quem está pagando quem. Open interest mostra quanto dinheiro está no jogo. Níveis de liquidação mostram onde está a venda forçada.

A maioria dos traders dá uma olhada nisso num dashboard. Nós estamos construindo sinais sistemáticos a partir desses dados.

Sinal 1: Extremos de Funding Rate

Futuros perpétuos usam funding rates para ancorar o preço do perp ao spot. Funding positivo = longs pagam shorts (mercado net long). Negativo = shorts pagam longs.

A hipótese: funding rates extremos tendem a reverter. Quando todo mundo está posicionado do mesmo lado, o mercado tende a se mover contra a multidão.

def funding_rate_signal(funding_history, lookback_hours=168, z_threshold=2.0):
    df = funding_history.copy()
    intervals = lookback_hours // 8  # 8-hour funding intervals
    df['cum_funding'] = df['funding_rate'].rolling(intervals).sum()
    df['funding_z'] = (
        (df['cum_funding'] - df['cum_funding'].rolling(intervals * 4).mean())
        / df['cum_funding'].rolling(intervals * 4).std()
    )
    df['signal'] = 0
    df.loc[df['funding_z'] > z_threshold, 'signal'] = -1   # fade longs
    df.loc[df['funding_z'] < -z_threshold, 'signal'] = 1   # fade shorts
    return df

O Que Sabemos Pelos Dados (Não Por Backtests)

Preenchemos retroativamente 90 dias de histórico de funding para 14 moedas da Hyperliquid (30,240 registros). Os perfis de distribuição mostram:

  • A maioria das moedas se concentra perto de zero. O funding mediano é essencialmente 0 para BTC, ETH, SOL.
  • Thresholds extremos variam drasticamente por moeda. BTC extreme_short = -0.0025%. POL extreme_short = -0.0107%. Usar um threshold único para todas as moedas está errado.
  • Extremos positivos são notavelmente uniformes. Quase toda moeda atinge extreme_long em ~0.0013%. A assimetria entre extremos de long e short é em si um sinal — shorts pagam mais para manter durante estresse.

Ainda não fizemos backtest disso como sinal de trading. Os perfis de distribuição são o Passo 1 — entender os dados antes de confiar em qualquer threshold.

Sinal 2: Divergência de Open Interest

Divergência OI-preço: quando dinheiro novo entra (OI subindo) enquanto o preço se move contra essas novas posições.

def trapped_traders(df, oi_lookback=24, price_lookback=24):
    df['oi_change'] = df['open_interest'].pct_change(oi_lookback) * 100
    df['price_change'] = df['close'].pct_change(price_lookback) * 100

    # OI up + price down + positive funding = longs trapped
    df['trapped_longs'] = (
        (df['oi_change'] > 5) &
        (df['price_change'] < -1) &
        (df['funding_rate'] > 0.01)
    )
    # OI up + price up + negative funding = shorts trapped
    df['trapped_shorts'] = (
        (df['oi_change'] > 5) &
        (df['price_change'] > 1) &
        (df['funding_rate'] < -0.01)
    )
    return df

A lógica é sólida — traders presos eventualmente capitulam, e essa capitulação é o catalisador de movimentos violentos. Mas estamos coletando dados, não operando. Nosso coletor on-chain roda a cada 30 minutos em 6 moedas. Precisamos de meses de snapshots limpos antes de validar se divergência de OI prevê algo.

Sinal 3: Detecção de Cascata de Liquidação

O sinal mais acionável — e o mais difícil de calibrar. Nosso monitor de liquidações observa 14 moedas via WebSocket e computa um panic score em tempo real:

# Panic score components (centered at 50 = normal):
# - volume_score: log2-based spike detection vs 1h rolling baseline
# - price_velocity_score: absolute rate of price change
# - oi_change_score: sudden OI drops (positions liquidating)
# - funding_score: per-coin calibrated from distribution profiles
# - book_imbalance_score: bid/ask depth ratio via numpy

Quando o panic score composto cruza 60, o sistema dispara um alerta de cascata com call direcional (long squeeze ou short squeeze) e direção recomendada para operar contra.

Resultados Iniciais: Falsos Positivos na Maioria

Dois alertas até agora, ambos falsos positivos:

  1. BTC panic 68.5 — artefato de cold-start. O baseline de volume estava vazio após reinício, então um tick de volume normal registrou como pico massivo. Corrigido com amortecimento de warmup de 15 minutos.
  2. XRP panic 62.8 — mesmo problema. Score de volume travado em 100 enquanto todo o resto estava próximo do baseline. O baseline de 1 hora precisa de 4-6 horas de dados para normalizar.

Não estamos operando com esses sinais. Estamos coletando dados e observando a calibração estabilizar.

A Vantagem Fundamental

Dados on-chain de crypto têm dois edges sobre dados de posicionamento tradicionais:

  1. Tempo real. Funding atualiza a cada 8 horas. OI atualiza continuamente. Compare com relatórios COT semanais.
  2. Sem permissão. Sem terminal Bloomberg, sem contratos de fornecedor. Os dados são gratuitos e abertos.

Traders de crypto retail têm acesso a dados de posicionamento melhores do que a maioria dos traders institucionais de equities consegue. A questão é se você consegue processá-los sistematicamente enquanto a maioria dos participantes dá só uma olhada.

Achamos que sim. Mas ainda não provamos.

Próximos Passos

  1. Acumular 1+ semana de panic scores calibrados para validar taxa de falsos positivos
  2. Fazer backtest de reversão à média de funding rate nos dados históricos de 90 dias
  3. Construir detector de divergência de OI a partir do histórico de snapshots
  4. Forward-test na testnet da Hyperliquid antes de tocar em dinheiro real

Publicaremos resultados quando tivermos.


Esses dados alimentam nosso Agente de Trading LLM. Para a abordagem mais ampla, veja Mercados São Linguagens, Não Física.