Hyperliquid SOL Perp Funding-Extreme Contrarian — Long-Short, Single-Name: FADE Crowded Positioning Kapag Tinamaan ng Rolling Funding Z-Score ang Extreme (Napakapositibong Funding = Over-Leveraged Longs → SHORT; Napakanegatibong Funding = Nag-capitulate na Shorts → LONG), Kumpirmado ng Price Non-Confirmation, Lalabas sa Funding Reversion / ATR Stop / Time Stop (SOLUSDT.HYPERLIQUID, 4H, 3-Parameter)
Resulta: Inabandona
HyperliquidSolFundingExtremeContrarian
Malinis na na-trigger ang mekanismo at nakagawa ng sapat na sample (201 trades sa loob ng 953 araw) na walang timeout — gumagana ang O(log n) funding implementation ayon sa nilalayon
Isang LONG-SHORT, single-instrument, POSITIONING-driven na contrarian strategy sa Hyperliquid SOL perpetual, na binuo sa paligid ng isang NON-OHLCV mechanical signal — perpetual FUNDING — na gumamit ng OPPOSITE na daan patungo sa dead cash-and-carry family ng factory. Ito ay NOT isang delta-neutral carry (na namatay dahil masyadong maliit ang funding P&L kumpara sa basis noise) at NOT price momentum (ang HL momentum baskets ay 0/84). Sa halip, ginagamit ang funding bilang isang crowding/positioning gauge para……Magpakita ng higit paMagpakita ng mas kaunti
Isang LONG-SHORT, single-instrument, POSITIONING-driven na contrarian strategy sa Hyperliquid SOL perpetual, na binuo sa paligid ng isang NON-OHLCV mechanical signal — perpetual FUNDING — na gumamit ng OPPOSITE na daan patungo sa dead cash-and-carry family ng factory. Ito ay NOT isang delta-neutral carry (na namatay dahil masyadong maliit ang funding P&L kumpara sa basis noise) at NOT price momentum (ang HL momentum baskets ay 0/84). Sa halip, ginagamit ang funding bilang isang crowding/positioning gauge para mag-time ng isang DIRECTIONAL fade: ang mahusay na dokumentadong resulta na kapag ang perp funding ay sobrang positibo, ang longs ay over-leveraged at nagbabayad para hawakan — isang estado na sa kasaysayan ay nauuna sa LOWER forward perp returns (squeeze/washout risk), at simetrikong ang extreme-negative funding ay nagmamarka ng mga capitulated shorts na nauuna sa mga bounce. Pinili para punan ang tatlong under-represented buckets nang sabay-sabay: HYPERLIQUID (6.8% kumpara sa 20% target), long_short (14.2%), at isang data-safe na non-OHLCV edge na wala sa OHLCV overfit graveyard. Sadyang single-name at 3-parameter, upang panatilihin itong implementable (ang multi-instrument HL baskets ay namatay sa mga coding timeout) at para labanan ang overfitting. IMPLEMENTATION NOTE: panatilihin ang funding baseline bilang isang rolling deque na na-update nang incremental (O(1) kada update) — NEVER i-rescan ang buong funding series sa loob ng on_bar (ang pattern na iyon ang nagdulot ng paulit-ulit na 300s sandbox timeouts).
Inaayos ng Iteration 2 ang nag-iisang Layer-2 failure (`FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given`, lahat ng anim na scenario). Ang Layer-2 `_StrategyProxy` ay muling nagbibind ng bawat callable attribute ng strategy sa isang plain wrapper sa pamamagitan ng `types.MethodType`, na nagko-convert sa one-argument `_bar_ts` staticmethod ng base class patungo sa bound method — kaya't dumarating ang `self._bar_ts(bar)` na may dalawang argument. Ang minimal fix ay pinapalitan ang isang tawag……Magpakita ng higit paMagpakita ng mas kaunti
Inaayos ng Iteration 2 ang nag-iisang Layer-2 failure (`FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given`, lahat ng anim na scenario). Ang Layer-2 `_StrategyProxy` ay muling nagbibind ng bawat callable attribute ng strategy sa isang plain wrapper sa pamamagitan ng `types.MethodType`, na nagko-convert sa one-argument `_bar_ts` staticmethod ng base class patungo sa bound method — kaya't dumarating ang `self._bar_ts(bar)` na may dalawang argument. Ang minimal fix ay pinapalitan ang isang tawag na iyon ng module-level `_bar_timestamp_ns(bar)` helper na direktang nagbabasa ng `bar.ts_event` (bumabalik sa `ts_init` kung wala) — magkatulad sa pag-uugali, immune sa rebinding ng proxy. Walang ibang nagbago: imports, class structure, funding parsing, signal logic, entries, exits at sizing ay byte-identical sa previous_code na pumasa sa Layer 1, kaya walang naunang check na maaaring mag-regress. Tandaan na tinatawag pa rin ang `_bar_interval_ns` mula sa `__init__`, na tumatakbo sa real instance bago i-rebind ng proxy ang anumang bagay, kaya hindi ito apektado. Ang Leverage 2.0 ay ginagamit sa `position_size` sa pamamagitan ng `self.config.leverage` sa gross-notional cap.
Negative-expectancy na single-name funding-extreme contrarian fade — walang edge na dapat i-optimize. PF 0.60, total_return -33.7%, Sharpe -0.42, expectancy na -$156/trade, at avg_trade_return_pct -0.37% (negatibo, mas mababa sa 0.15% Hyperliquid fee floor, L22). Talo sa bawat taon (2024 -14.8%, 2025 -13.8%, 2026 -6.5%) kung saan pareho ang long at short legs ay sub-43% ang win rate at avg_loss > avg_win — ang contrarian fade ay sistematikong nasa maling panig ng move, at ang tanging positibong buwan ay isang solong +10.77% outlier day (kurtosis 9.8). Maayos ang pagkaka-implement ng mekanismo (walang timeout, kredito ang funding) pero nasa dalawang zero-survivor families ito: single-name mean-reversion/fade (L55) at single-perp supplementary(funding)-gated directional (L73). Hindi nagdagdag ng tunay na edge ang price-non-confirmation gate. Negatibo ang sign ng per-trade edge, na hindi mababaligtad ng anumang parameter tuning. Hindi karapat-dapat sa 2 oras ng optimization. Failure pattern: fee_edge/no_edge single-perp funding-gated contrarian fade.
Implementasyon
Long-short single-name contrarian sa Hyperliquid SOL perp (4H bars). Ginagamit ang funding bilang crowding gauge: ang rolling z-score ng hl_funding_rates print laban sa sarili nitong trailing distribution ay ibinabalik bawat bar bilang continuous signal. Ang extreme positive z (crowded, over-paying longs) ay pina-fade gamit ang SHORT; ang extreme negative z (capitulated shorts) ay pina-fade gamit ang LONG, pero kapag lamang hindi nagkumpirma ang presyo sa crowd (close na hindi gumagawa ng bagong confirm_bars-bar high/low). Lumalabas sa funding reversion (|z| <= exit_z), isang ATR stop na na-snapshot sa entry, o isang calendar time stop na sinusukat mula sa position.ts_opened. Ang sizing ay risk-first: ang ATR stop ay nagkakahalaga ng ~risk_frac ng equity, na may independiyenteng gross-notional cap.
Mga Resulta ng Beripikasyon
CLEAN RESTART 2026-09-04 — ang kasaysayan ng verdict at mga talaan ng pagkatuto ng run na ito ay tinanggal at ito ay ni-restart mula sa verification. Ang naunang pag-abandona nito ay nanggaling sa pipeline, hindi sa merkado: ang Layer-2 harness ay mali ang pagbind sa @staticmethod helpers (naayos na), QA ay naglabas ng terminal performance verdicts sa isang unoptimized smoke test (tinanggal na — QA ngayon ay humuhusga lamang sa correctness), at ang sandbox timeouts ay nanggaling sa backtest-slot starvation (naayos na). Ang hypothesis at ang strategy code ay hindi nagbago. I-verify ang code batay sa sariling merito nito; ang performance ay pagpapasyahan mamaya ng buong backtest at optimizer.
Paliitin ang _param_bounds sa 3 headline tunables (entry_z, exit_z, funding_lookback_prints); i-lock ang risk/plumbing params bilang constants.
Ibinebenta ng hypothesis ang isang '3-parameter na sadya, para labanan ang overfitting' na disenyo, pero inilalantad ng _param_bounds ang 11 optimizable params. Tama ang mekanismo, pero ang 11-dim na walk-forward search ay kontra sa nakasaad na anti-overfit rationale at nagtataas ng PBO risk. Hindi blocking.
Walang kinakailangan; naitala para sa analyst.
Lahat ng Layer-2 synthetic signals ay frozen sa 0.0 (walang na-inject na funding), kaya ang trading path ay na-ehersisyo lamang ng sandbox (na nag-trade ng 65 beses gamit ang totoong funding). Hindi fatal.
Pagsusuri ng Backtest
Sharpe
-0.42
Kabuuang Return
-33.71%
Max Drawdown
40.24%
Kabuuang Trade
201
Win Rate
42.3%
Profit Factor
0.60
Malinis na na-trigger ang mekanismo at nakagawa ng sapat na sample (201 trades sa loob ng 953 araw) na walang timeout — gumagana ang O(log n) funding implementation ayon sa nilalayon
Single-instrument, single supplementary feed (hl_funding_rates), walang data/verification pathology; kredito ang funding sa PnL
Negatibong expectancy: profit_factor 0.60, total_return -33.7%, expectancy na -$156/trade
avg_trade_return_pct -0.37% — negatibo at malayong mas mababa sa 0.15% Hyperliquid fee floor (L22)
Talo sa lahat ng tatlong taon (2024 -14.8%, 2025 -13.8%, 2026 -6.5%) — isang persistent na walang-edge, hindi isang decayed
Parehong nawawalan ang legs (long win 42%, short win 42%) kung saan avg_loss > avg_win — ang funding-extreme fade ay nasa maling panig ng move
Ang tanging positibong buwan ay isang solong +10.77% outlier day (kurtosis 9.8); ang underlying tape ay uniformly negatibo
Nabigo ang verification (Layer 2 — synthetic scenarios): Mga ginamit na parameter: ['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'] Tiyakin na itinatakda ng __init__ ang lahat ng attributes mula sa self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000) - steady_downtrend:……Magpakita ng higit paMagpakita ng mas kaunti
Nabigo ang verification (Layer 2 — synthetic scenarios):
Mga ginamit na parameter: ['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']
Tiyakin na itinatakda ng __init__ ang lahat ng attributes mula sa self.parameters.get().
- steady_uptrend: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000)
- steady_downtrend: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000)
- flat_ranging: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000)
- volatility_spike: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000)
- zero_volume: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000)
- price_gap: TypeError: FactoryStrategy._bar_ts() takes 1 positional argument but 2 were given (bar timestamp: 1735690500000)
Ang Stratmill ay isang tool para sa pananaliksik at paper trading, hindi payo sa pananalapi o isang broker. Ang mga resulta ng backtest at paper trading ay hypothetical. May panganib ng pagkalugi ang pangangalakal.