Hyperliquid SOL Perp Contrarian em Financiamento Extremo — Long-Short, Nome Único: FADE Posicionamento Congestionado Quando o Z-Score do Financiamento Móvel Atinge um Extremo (Financiamento Muito Positivo = Longs Excessivamente Alavancados → SHORT; Muito Negativo = Shorts Capitulados → LONG), Confirmado por Não Confirmação de Preço, Saída na Reversão do Financiamento / Stop ATR / Stop Temporal (SOLUSDT.HYPERLIQUID, 4H, 3-Parâmetro)
Resultado: Abandonado
HyperliquidSolFundingExtremeContrarian
O mecanismo dispara de forma limpa e produz uma amostra adequada (201 operações ao longo de 953 dias) sem timeout — a implementação do financiamento O(log n) funciona conforme pretendido
Uma estratégia contrária LONG-SHORT, de instrumento único, impulsionada por POSITIONING no perpétuo SOL da Hyperliquid, construída em torno de um sinal mecânico NON-OHLCV — financiamento FUNDING do perpétuo — utilizou a via OPPOSITE para a família morta de cash-and-carry da fábrica. Esta não é NOT um carry delta-neutro (que morreu porque o P&L do financiamento era demasiado pequeno face ao ruído da base) nem NOT momentum de preço (os baskets de momentum HL são 0/84). Em vez disso, o financiamento é usado como……Mostrar maisMostrar menos
Uma estratégia contrária LONG-SHORT, de instrumento único, impulsionada por POSITIONING no perpétuo SOL da Hyperliquid, construída em torno de um sinal mecânico NON-OHLCV — financiamento FUNDING do perpétuo — utilizou a via OPPOSITE para a família morta de cash-and-carry da fábrica. Esta não é NOT um carry delta-neutro (que morreu porque o P&L do financiamento era demasiado pequeno face ao ruído da base) nem NOT momentum de preço (os baskets de momentum HL são 0/84). Em vez disso, o financiamento é usado como medidor de congestionamento/posicionamento para temporizar um fade DIRECTIONAL: o resultado bem documentado de que quando o financiamento do perp é extremamente positivo, os longs estão excessivamente alavancados e a pagar para manter — um estado que historicamente precede retornos forward LOWER do perp (risco de squeeze/washout), e simetricamente o financiamento extremamente negativo marca shorts capitulados que precedem repiques. Escolhida para preencher três categorias sub-representadas em simultâneo: HYPERLIQUID (6.8% vs alvo 20%), long_short (14.2%), e uma edge não-OHLCV segura para os dados que não está no cemitério de sobreajuste OHLCV. Nome único e 3-parâmetros deliberadamente, para a manter implementável (os baskets multi-instrumento HL morreram em timeouts de codificação) e para resistir ao sobreajuste. IMPLEMENTATION NOTE: manter a baseline de financiamento como um deque em rolamento atualizado de forma incremental (O(1) por atualização) — NEVER reexaminar a série completa de financiamento dentro de on_bar (esse padrão causou os timeouts repetidos de 300s na sandbox).
A iteração 2 corrige a falha única da Layer-2 (`FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given`, todos os seis cenários). O `_StrategyProxy` da Layer-2 reassocia cada atributo chamável da estratégia a um wrapper simples via `types.MethodType`, que converte o staticmethod de um argumento `_bar_ts` da classe base num método vinculado — pelo que `self._bar_ts(bar)` chega com dois argumentos. A correção mínima substitui essa chamada por um helper `_bar_timestamp_ns(bar)` a nível de módulo que……Mostrar maisMostrar menos
A iteração 2 corrige a falha única da Layer-2 (`FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given`, todos os seis cenários). O `_StrategyProxy` da Layer-2 reassocia cada atributo chamável da estratégia a um wrapper simples via `types.MethodType`, que converte o staticmethod de um argumento `_bar_ts` da classe base num método vinculado — pelo que `self._bar_ts(bar)` chega com dois argumentos. A correção mínima substitui essa chamada por um helper `_bar_timestamp_ns(bar)` a nível de módulo que lê `bar.ts_event` (recorrendo a `ts_init`) diretamente — comportamentalmente idêntico, imune à reassociação do proxy. Nada mais mudou: imports, estrutura da classe, parsing do financiamento, lógica de sinal, entradas, saídas e dimensionamento são byte-idênticos ao previous_code que passou a Layer 1, pelo que nenhuma verificação anterior pode regredir. Note-se que `_bar_interval_ns` ainda é chamado a partir de `__init__`, que corre na instância real antes de o proxy reassociasse algo, pelo que não é afetado. A alavancagem 2.0 é consumida em `position_size` via `self.config.leverage` no limite de nocional bruto.
Fade contrário em financiamento extremo de nome único com expetativa negativa — nenhuma edge a otimizar. PF 0.60, total_return -33.7%, Sharpe -0.42, expetativa -$156/operação, e avg_trade_return_pct -0.37% (negativo, abaixo do 0.15% piso de taxas da Hyperliquid, L22). A perder em todos os anos (2024 -14.8%, 2025 -13.8%, 2026 -6.5%) com ambas as pernas long e short com taxa de acerto sub-43% e avg_loss > avg_win — o fade contrário está sistematicamente do lado errado do movimento, e o único mês positivo é um único dia outlier +10.77% (curtose 9.8). O mecanismo está bem implementado (sem timeout, financiamento creditado), mas insere-se em duas famílias sem sobreviventes: reversão à média/fade de nome único (L55) e direção gated por dado suplementar (financiamento) de perp único (L73). O filtro de não confirmação de preço não adicionou uma edge real. O sinal da edge por operação é negativo, o que nenhuma afinação de parâmetros pode inverter. Não vale 2 horas de otimização. Padrão de falha: fee_edge/no_edge fade contrário gated por financiamento de perp único.
Implementação
Contrário long-short de nome único no perp SOL da Hyperliquid (barras de 4H). O financiamento é usado como medidor de congestionamento: um z-score móvel do registo hl_funding_rates face à sua própria distribuição passada é devolvido a cada barra como sinal contínuo. z positivo extremo (longs congestionados, a pagar em excesso) é desfeito com um SHORT; z negativo extremo (shorts capitulados) é desfeito com um LONG, mas apenas quando o preço falha em confirmar a multidão (fecho não atinge novo máximo/mínimo de confirm_bars barras). Saídas na reversão do financiamento (|z| <= exit_z), um stop ATR registado na entrada, ou um stop temporal de calendário medido a partir de position.ts_opened. O dimensionamento é risk-first: o stop ATR custa ~risk_frac do capital, com um limite independente de nocional bruto.
Resultados da Verificação
CLEAN RESTART 2026-09-04 — o historial de veredictos e os registos de aprendizagem desta execução foram removidos e foi reiniciada a partir da verificação. O abandono anterior proveio da pipeline, não do mercado: a harness da Layer-2 associou incorretamente os helpers @staticmethod (corrigido), QA emitiu veredictos definitivos de desempenho sobre um teste de fumo não otimizado (removido — QA agora avalia apenas correção), e os timeouts da sandbox resultaram de falta de slots de backtest (corrigido). A hipótese e o código da estratégia permanecem inalterados. Verifique o código pelos seus méritos; o desempenho será decidido mais tarde pelo backtest completo e pelo otimizador.
Restringir _param_bounds aos tunáveis de cabeçalho 3 (entry_z, exit_z, funding_lookback_prints); bloquear os parâmetros de risco/plumbing como constantes.
A hipótese vende um design '3-parâmetros deliberadamente, para resistir ao sobreajuste', mas _param_bounds expõe 11 parâmetros otimizáveis. O mecanismo está correto, mas uma pesquisa walk-forward 11-dimensional contradiz a justificação anti-sobreajuste declarada e aumenta o risco de PBO. Não bloqueante.
Nenhum necessário; registado para o analista.
Sinais sintéticos da Layer-2 todos congelados em 0.0 (sem financiamento injetado), pelo que o caminho de negociação foi exercitado apenas pela sandbox (que negociou 65 vezes com financiamento real). Não fatal.
Revisão do Backtest
Sharpe
-0,42
Retorno Total
-33,71%
Drawdown Máximo
40,24%
Total de Operações
201
Taxa de Acerto
42,3%
Fator de Lucro
0,60
O mecanismo dispara de forma limpa e produz uma amostra adequada (201 operações ao longo de 953 dias) sem timeout — a implementação do financiamento O(log n) funciona conforme pretendido
Instrumento único, feed suplementar único (hl_funding_rates), sem patologia de dados/verificação; financiamento creditado no PnL
avg_trade_return_pct -0.37% — negativo e muito abaixo do 0.15% piso de taxas da Hyperliquid (L22)
A perder nos três anos (2024 -14.8%, 2025 -13.8%, 2026 -6.5%) — uma ausência de edge persistente, não uma deteriorada
Ambas as pernas perdem (win de long 42%, win de short 42%) com avg_loss > avg_win — o fade em financiamento extremo está do lado errado do movimento
O único mês positivo é um único dia outlier +10.77% (curtose 9.8); a tape subjacente é uniformemente negativa
Fade direcional gated por financiamento de nome único — classes sem sobreviventes de reversão à média (0/174) e direção gated por suplementar de perp único (L73)
Histórico de Iterações
Falha na verificação (Layer 2 — cenários sintéticos): Parâmetros utilizados: ['exit_z', 'entry_z', 'atr_bars', 'risk_frac', 'min_prints', 'confirm_bars', '_param_bounds', 'atr_stop_mult', 'max_hold_bars', 'max_lag_seconds', 'max_notional_frac', 'funding_lookback_prints'] Verificar que __init__ define todos os atributos a partir de self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000) -……Mostrar maisMostrar menos
Falha na verificação (Layer 2 — cenários sintéticos):
Parâmetros utilizados: ['exit_z', 'entry_z', 'atr_bars', 'risk_frac', 'min_prints', 'confirm_bars', '_param_bounds', 'atr_stop_mult', 'max_hold_bars', 'max_lag_seconds', 'max_notional_frac', 'funding_lookback_prints']
Verificar que __init__ define todos os atributos a partir de self.parameters.get().
- steady_uptrend: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000)
- steady_downtrend: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000)
- flat_ranging: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000)
- volatility_spike: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000)
- zero_volume: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000)
- price_gap: TypeError: FactoryStrategy._bar_ts() recebe 1 argumento(s) posicional(ais) mas foram fornecidos 2 (timestamp da barra: 1735690500000)
O Stratmill é uma ferramenta de investigação e paper trading, não constitui aconselhamento financeiro nem é uma corretora. Os resultados de backtest e paper trading são hipotéticos. Negociar envolve risco de perda.