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.
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:
- 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.
- 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:
- Tempo real. Funding atualiza a cada 8 horas. OI atualiza continuamente. Compare com relatórios COT semanais.
- 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
- Acumular 1+ semana de panic scores calibrados para validar taxa de falsos positivos
- Fazer backtest de reversão à média de funding rate nos dados históricos de 90 dias
- Construir detector de divergência de OI a partir do histórico de snapshots
- 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.