Pular para o conteúdo
Todas as estratégias

Estratégias

Spread de momentum da razão ETH-BTC na Hyperliquid (4H, pares long-short, tendência transversal)

Resultado: Abandonada

HyperliquidEthBtcRatioMomentumPair

Resumo do resultado

HyperliquidEthBtcRatioMomentumPair era uma operação de pares neutra ao mercado, diferenciada e bem implementada na Hyperliquid, em barras de 4H, comprando/vendendo ETH contra BTC com momentum do logaritmo da razão e apenas três parâmetros de sinal para limitar o sobreajuste. Apesar da implementação correta — 243 entradas pareadas neutras em dólares, sem descartes de tamanho, nocional ou caixa — perdeu dinheiro em cada um dos três anos, terminando com retorno total de -69.8%, Sharpe de -1.22 e fator de lucro de 0.888. O analista a abandonou na etapa de revisão do backtest anterior à otimização, após a iteração 4, concluindo que a própria premissa estava errada, e não que houvesse um ponto de inflexão ajustável. A conclusão: o spread de ETH/BTC reverte à média em torno de sua tendência, então entradas por momentum são sistematicamente pegas em reversões bruscas; a expressão correta de qualquer vantagem desse tipo seria reversão à média, uma hipótese totalmente separada.

Hipótese

Operação de pares por momentum transversal neutra ao mercado nos perpétuos da Hyperliquid, que busca capturar a tendência persistente de ETH e BTC alternarem a liderança do mercado cripto. A estratégia opera a razão ETH/BTC RATIO (não os preços absolutos), comprando ETHUSD.HYPERLIQUID e vendendo BTCUSD.HYPERLIQUID quando a razão está em tendência de alta, e o inverso quando está em tendência de baixa. É uma operação clássica de fator de força relativa, presente em ações (spread entre momentum alto e baixo), e……Mostrar maisMostrar menos

Operação de pares por momentum transversal neutra ao mercado nos perpétuos da Hyperliquid, que busca capturar a tendência persistente de ETH e BTC alternarem a liderança do mercado cripto. A estratégia opera a razão ETH/BTC RATIO (não os preços absolutos), comprando ETHUSD.HYPERLIQUID e vendendo BTCUSD.HYPERLIQUID quando a razão está em tendência de alta, e o inverso quando está em tendência de baixa. É uma operação clássica de fator de força relativa, presente em ações (spread entre momentum alto e baixo), e funciona em cripto porque: (a) a dominância de BTC alterna entre ~38–58% ao longo de meses, (b) narrativas do ecossistema ETH (verões de DeFi, lançamentos de L2, especulação de ETF) geram desempenho superior relativo de ETH por várias semanas, (c) eventos macro de redução de risco geram desempenho superior relativo de BTC (BTC = reserva de valor digital dentro do universo cripto). A estratégia opera exclusivamente na Hyperliquid (ambas as pernas em HL), visando a cota da plataforma menos representada (HYPERLIQUID em 4.1% ante a meta de 20%). É long-short (execuções de 9.3% ante a meta de ~45%), tem escopo de pares (execuções de 13.9%) e usa barras seguras de 4H em BTC+ETH — o histórico mais longo em HL. O mecanismo difere fundamentalmente da tendência de preço absoluto (que falha por causa do ruído), pois o spread entre dois ativos altamente correlacionados tende muito mais a reverter à média em torno de sua tendência de momentum do que cada ativo isoladamente. NOT um padrão clássico de gráfico (evita as falhas de padrões 8+), NOT uma arbitragem de base entre plataformas (já no pipeline como BtcInverseLinearBasisArbitrage e CrossVenueEthBasisArbitrage), NOT uma estratégia direcional de ativo único. São apenas três parâmetros (lookback, limite, exit_band) para minimizar o risco de sobreajuste após falhas recorrentes de sinal congelado/sobreajuste.

Correção da iteração 4 para a falha da Layer-2: `HyperliquidEthBtcRatioMomentumPair._ts() takes 1 positional argument but 2 were given`. Causa raiz: o proxy de verificação da Layer-2 reconstrói a estratégia copiando cada função para um wrapper simples com `types.MethodType(val.__func__ if hasattr(val,'__func__') else val, wrapper)`; um `@staticmethod` (que não possui `__func__`) é vinculado como se fosse um método de instância, injetando um `self` fantasma, de modo que um `self._ts(bar)` subsequente passa 2……Mostrar maisMostrar menos

Correção da iteração 4 para a falha da Layer-2: `HyperliquidEthBtcRatioMomentumPair._ts() takes 1 positional argument but 2 were given`. Causa raiz: o proxy de verificação da Layer-2 reconstrói a estratégia copiando cada função para um wrapper simples com `types.MethodType(val.__func__ if hasattr(val,'__func__') else val, wrapper)`; um `@staticmethod` (que não possui `__func__`) é vinculado como se fosse um método de instância, injetando um `self` fantasma, de modo que um `self._ts(bar)` subsequente passa 2 argumentos a uma função de 1 argumentos. A correção SMALLEST que remove permanentemente esse modo de falha é mover o auxiliar de timestamp de barra OUT da classe para uma função no nível do módulo `_bar_ts_ns(bar)` — resolvida a partir dos globais do módulo, sem nunca ficar sujeita à reassociação de métodos do proxy. Os dois antigos locais de chamada de `self._ts(bar)` (em `on_extra_bar` e `calculate_signal`) agora chamam `_bar_ts_ns(bar)`. Nenhuma outra lógica mudou: o sinal contínuo de momentum do logaritmo da razão, a execução pareada neutra em dólares (`_submit_entry`/`_submit_exit`), o dimensionamento ajustado à alavancagem e todos os limites são idênticos aos da versão anterior — preservando tudo que já passou na Layer 1. Verificado localmente: Layer 1 (estática) passa e todos os 6 cenários sintéticos de Layer-2 (steady_uptrend, steady_downtrend, flat_ranging, volatility_spike, zero_volume, price_gap) passam sem exceção.

Abandono antes da otimização: o par baseado na razão ETH/BTC–MOMENTUM não tem vantagem e perde de forma persistente após taxas e impacto da Hyperliquid — Sharpe -1.22, Sortino -2.06, total_return -69.8%, CAGR -45.5%, profit_factor 0.888 e NEGATIVE em todos os anos (2024 -14.8%, 2025 -43.7%, 2026 -48.4%), com Sharpe móvel negativo em quase todo o período. A implementação está correta (243 entradas pareadas limpas, ambas as pernas HL, neutras em dólares, sem descartes), portanto não é um bug de conexão ou sinal……Mostrar maisMostrar menos

Abandono antes da otimização: o par baseado na razão ETH/BTC–MOMENTUM não tem vantagem e perde de forma persistente após taxas e impacto da Hyperliquid — Sharpe -1.22, Sortino -2.06, total_return -69.8%, CAGR -45.5%, profit_factor 0.888 e NEGATIVE em todos os anos (2024 -14.8%, 2025 -43.7%, 2026 -48.4%), com Sharpe móvel negativo em quase todo o período. A implementação está correta (243 entradas pareadas limpas, ambas as pernas HL, neutras em dólares, sem descartes), portanto não é um bug de conexão ou sinal congelado: a premissa está errada. Como a própria hipótese admite, o spread de ETH/BTC reverte à média em torno de sua tendência de momentum, então uma entrada por MOMENTUM é sistematicamente pega em reversões bruscas (win_rate 44.6%, expectativa de -$154.8/operação). Um Sharpe de -1.22, negativo nos três anos, não é um efeito de queda abrupta ou janela que possa ser corrigido ajustando os parâmetros de momentum 3 (lookback/limite/exit_band); inverter para um sinal de reversão à média seria uma nova hipótese, não um ajuste de parâmetros — portanto, não justifica 2 horas de otimização. FAILURE PATTERN: momentum transversal de MOMENTUM no logaritmo da razão de ETH/BTC não tem vantagem negociável em perpétuos de 4H HL — o spread entre ativos principais altamente correlacionados reverte à média em vez de seguir uma tendência, então entradas por momentum perdem de forma persistente em todos os regimes, apesar de uma implementação neutra ao mercado limpa e diferenciada; qualquer vantagem na razão de ETH/BTC deveria ser expressa por reversão à média, uma hipótese separada.

Implementação

Operação de pares por momentum transversal neutra ao mercado nos perpétuos da Hyperliquid. A variável de decisão é o momentum do logaritmo da razão de ETH/BTC (log(ETH/BTC)[agora] - log(ETH/BTC)[há lookback]), calculado continuamente a cada barra de 4H por meio de um SyncedBuffer sincronizado por timestamp para as duas pernas. Quando a razão sobe além do limite positivo, a estratégia fica comprada em ETHUSD e vendida em BTCUSD; quando cai além do limite negativo, faz o inverso. As pernas são dimensionadas para terem o mesmo nocional em USD (neutro em dólares, neutro a delta em relação a BTC), usando patrimônio da conta x capital_fraction x alavancagem. As posições são encerradas quando o momentum volta para dentro do exit_band neutro, e as duas pernas são sempre abertas e fechadas juntas, sem exposição descoberta a um único ativo.

Resultados da verificação

Verificação falhou (Camada 2 — cenários sintéticos): Parâmetros usados: ['lookback', 'exit_band', 'threshold', 'min_notional', 'capital_fraction'] Confira se __init__ define todos os atributos a partir de self.parameters.get(). - steady_uptrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000) - steady_downtrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram……Mostrar maisMostrar menos

Verificação falhou (Camada 2 — cenários sintéticos): Parâmetros usados: ['lookback', 'exit_band', 'threshold', 'min_notional', 'capital_fraction'] Confira se __init__ define todos os atributos a partir de self.parameters.get(). - steady_uptrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000) - steady_downtrend: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000) - flat_ranging: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000) - volatility_spike: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000) - zero_volume: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000) - price_gap: TypeError: HyperliquidEthBtcRatioMomentumPair._ts() recebe 1 argumento(s) posicional(is), mas foram fornecidos 2 (timestamp do candle: 1735689600000)

Revisão do Backtest

Sharpe
-1,22
Retorno Total
-69,83%
Drawdown Máximo
72,92%
Total de Operações
486
Taxa de Acerto
44,7%
Fator de lucro
0,89

Par neutro ao mercado, limpo e corretamente conectado: 243 entradas pareadas, ambas as pernas HL, sem descartes de tamanho/nocional/caixa, dimensionamento neutro em dólares

Plataforma e escopo realmente diferenciados (par long-short na Hyperliquid) e sinal mínimo de 3 parâmetros para limitar o sobreajuste

Sharpe -1.22 e Sortino -2.06 — retorno ajustado ao risco profundamente negativo em uma estratégia cujo benchmark não é significativo; portanto, as métricas absolutas determinam a avaliação

Perde dinheiro de forma direta e persistente: total_return -69.8%, CAGR -45.5%, profit_factor 0.888, negativo em cada um dos três anos ALL (2024/2025/2026)

A premissa de momentum sobre a razão parece direcionalmente errada: o spread de ETH/BTC reverte à média em torno de sua tendência (segundo a própria hipótese), então entradas por momentum são sistematicamente pegas em reversões bruscas

Meses positivos são picos com caudas pesadas (curtose 71, assimetria 5.9; valor atípico em maio de +32.5%-2025), não uma vantagem repetível; probabilistic_sharpe 0.053

Custos de taxas e impacto (comissão de $38k + impacto de $25k) agravam um sinal sem vantagem bruta

Análise

Não envie NOT para otimização: a base perde nos três anos, com Sharpe -1.22, e não há região positiva que a varredura possa encontrar. O mecanismo está codificado corretamente, mas o SIGN está invertido. Sua própria hipótese diz que o spread ETH/BTC reverte à média; ainda assim, should_enter() opera como momentum (compra ETH/vende BTC quando o momentum do logaritmo da razão > +limite, isto é, AFTER a razão já subiu). Um par neutro ao mercado que perde um Sharpe simétrico de -1.22 em todos os regimes é o sinal……Mostrar maisMostrar menos

Não envie NOT para otimização: a base perde nos três anos, com Sharpe -1.22, e não há região positiva que a varredura possa encontrar. O mecanismo está codificado corretamente, mas o SIGN está invertido. Sua própria hipótese diz que o spread ETH/BTC reverte à média; ainda assim, should_enter() opera como momentum (compra ETH/vende BTC quando o momentum do logaritmo da razão > +limite, isto é, AFTER a razão já subiu). Um par neutro ao mercado que perde um Sharpe simétrico de -1.22 em todos os regimes é o sinal clássico de entrada invertida. Duas mudanças específicas: (1) FLIP para reversão à média — entre comprado em ETH/vendido em BTC quando a razão estiver esticada para DOWNSIDE (momentum < -limite ou z-score abaixo de uma banda), esperando a reversão, e faça o inverso quando estiver esticada para cima; saia conforme reverte à média. De forma equivalente, inverta o mapeamento atual de BUY/SELL e ajuste novamente exit_band. (2) reduza bastante CUT a frequência de operações — o giro atual é 306x, com cerca de $63k em taxas e impacto combinados; aumente o limite de entrada e/ou adicione um período mínimo de manutenção para que os custos de ida e volta das duas pernas não consumam a vantagem de reversão à média. Faça o backtest novamente; se a variante invertida/de menor frequência ainda apresentar vantagem negativa ou abaixo dos custos, abandone essa premissa (ou encaminhe para revise_hypothesis).

Histórico de Iterações

Verificação falhou (leverage_set_but_unused): a configuração define alavancagem=3.0, mas a estratégia nunca usa a alavancagem no dimensionamento. Dimensione as posições com ela — nocional = patrimônio * fração * alavancagem / preço (leia self.config.leverage) — ou defina alavancagem=1.0. Como está, a alavancagem não tem efeito e o backtest é idêntico a 1x.

Resumo do resultado

O logaritmo da razão de ETH/BTC entre dois ativos principais altamente correlacionados reverte à média em torno de sua tendência, então uma entrada por momentum é sistematicamente pega em reversões bruscas — qualquer vantagem nesse spread exigiria uma expressão de reversão à média, uma nova hipótese, não um ajuste de parâmetros.

O analista emitiu o veredito “abandonar” na etapa de revisão do backtest anterior à otimização: a implementação estava limpa (243 entradas pareadas neutras em dólares e corretamente conectadas, sem descartes), então a perda foi atribuída a uma premissa errada, não a um bug; os limites de Sharpe, Sortino, retorno total e fator de lucro falharam. As etapas de otimização, revisão final do analista e revisão de risco não foram alcançadas.

Uma operação de pares neutra ao mercado na Hyperliquid que comprou ETH / vendeu BTC (ou o inverso) com base no momentum do log-ratio do spread de ETH/BTC, apostando que os ciclos de dominância de BTC e de narrativas de ETH fariam o spread seguir uma tendência mais clara do que cada ativo isoladamente.

Ao longo de 695 dias, perdeu de forma persistente: retorno total -69.8%, CAGR -45.5%, Sharpe -1.22, Sortino -2.06, fator de lucro 0.888, taxa de acerto 44.6% em 486 operações (243 compradas / 243 vendidas), com perda máxima acumulada de 72.9%. Teve resultado negativo em todos os anos (2024 -14.8%, 2025 -43.7%, 2026 -48.4%), com comissão de $38k e impacto de $25k agravando um sinal que já não tinha vantagem.

Stratmill é uma ferramenta de pesquisa e paper trading, não uma consultoria financeira ou corretora. Resultados de backtest e paper trading são hipotéticos. Negociar envolve risco de perda.