Dinisenyo ang strategy para malampasan ang lahat ng dating pagkabigo ng funding-strategy — walang ikalawang leg o cross-venue basis, signal lang ang funding, at hiwalay ang sizing sa bawat pangalan para maiwasan ang accounting bug sa pag-ikot — at nagtagumpay ito sa lahat ng iyon: maayos ang daloy ng backtest, 348 trade, makatwiran ang panganib, at halos zero ang beta. Pero nang alisin ang mga artifact ng implementasyon, walang edge ang mismong contrarian fade: Sharpe -1.995, profit factor 0.846, negatibong expectancy, lugi sa halos bawat buwan, 16.8% ng gross ang kinain ng bayarin sa churn na 1H, at 0.03 ang probabilistic Sharpe. Iniwan ito ng analyst sa yugto ng pagsusuri sa backtest matapos ang 5 iteration, at sinabing tunay na negatibo ang edge, hindi bug na maaayos, at napakaikli rin ng kasaysayang ~181 araw ng Hyperliquid para mapatunayan ito. Hindi ito umabot sa optimization o pinal na pasya ng analyst.
Isang LONG-SHORT, SINGLE-VENUE, MULTI-INSTRUMENT mean-reversion strategy sa maliit at diversified na basket ng likidong Hyperliquid majors (BTCUSD, ETHUSD, SOLUSD) na nagfa-fade sa EXTREME perpetual funding — ginagamit bilang proxy ng siksikang posisyon — kapag kinukumpirma lang ng galaw ng presyo sa 1H na ubos na ang galaw. Nagpopondo ang Hyperliquid sa HOURLY, kaya mas mabilis at mas malinaw umabot sa extreme ang funding kaysa sa mga venue na 8h. Pangunahing pinagmumulan ng PnL ang PRICE pagbalik ng galaw ng……Magpakita ng higit paMagpakita ng mas kaunti
Isang LONG-SHORT, SINGLE-VENUE, MULTI-INSTRUMENT mean-reversion strategy sa maliit at diversified na basket ng likidong Hyperliquid majors (BTCUSD, ETHUSD, SOLUSD) na nagfa-fade sa EXTREME perpetual funding — ginagamit bilang proxy ng siksikang posisyon — kapag kinukumpirma lang ng galaw ng presyo sa 1H na ubos na ang galaw. Nagpopondo ang Hyperliquid sa HOURLY, kaya mas mabilis at mas malinaw umabot sa extreme ang funding kaysa sa mga venue na 8h. Pangunahing pinagmumulan ng PnL ang PRICE pagbalik ng galaw ng perp na sobra ang leverage o siksik ang posisyon, NOT carry: ang funding ay SIGNAL ONLY (ang serye ng funding/predicted-funding na ibinibigay ng HL), kaya ligtas ito sa mga pagkabigo dahil sa pag-ipon/pagkredito ng funding at pangingibabaw ng bayarin sa cross-venue na pumatay sa lahat ng naunang hedged funding-CARRY at cross-venue funding-SPREAD na pagsubok — walang ikalawang leg, inter-venue basis, o dobleng round-trip. Hiwalay na tine-trade ang bawat instrumento (INDEPENDENTLY ang sarili nitong entry/exit/sizing), at sadyang NOT iisang umiikot na posisyon, para maiwasan ang accounting bug ng engine sa pag-ikot ng multi-instrument na iisang posisyon na itinuro ng analyst. Ibinabawas ng basket (3 majors na walang ugnayan sa isa't isa kapag may shock) ang panganib ng puwang sa presyo dahil sa intraday na balita ng iisang alt na nagpabagsak sa daily book na XRP. ORTHOGONAL ito sa mga kapatid nitong trend/impulse/momentum na na-promote ng factory: contrarian ito, nagti-trigger sa anumang rehimen (may crowding extremes sa bull at bear), at madalas mag-trade — kaya mas madaling patunayan ito sa istatistika kaysa directional trend sa maikling kasaysayan (~6mo) ng Hyperliquid, kung saan hindi nag-generalize ang mga trend strategy sa kamakailang rehimen.
Pag-aayos sa Iteration-5 para sa wall-clock timeout ng Layer-3 (“trabahong bawat bar na lumalaki kasabay ng history”). Sanhi: muling kinukuwenta ng _compute_funding_z ang window.mean()/window.std() sa hanggang funding_lookback funding observation sa bawat EVERY bar para sa EVERY leg (O(lookback) bawat bar bawat leg). Paunang kinukuwenta ng pag-aayos ang serye ng rolling funding z-score na ENTIRE ONCE bawat leg sa on_start gamit ang vectorized cumsum pass (O(n), minsanan), kaya ang landas bawat bar ay O(log n) na……Magpakita ng higit paMagpakita ng mas kaunti
Pag-aayos sa Iteration-5 para sa wall-clock timeout ng Layer-3 (“trabahong bawat bar na lumalaki kasabay ng history”). Sanhi: muling kinukuwenta ng _compute_funding_z ang window.mean()/window.std() sa hanggang funding_lookback funding observation sa bawat EVERY bar para sa EVERY leg (O(lookback) bawat bar bawat leg). Paunang kinukuwenta ng pag-aayos ang serye ng rolling funding z-score na ENTIRE ONCE bawat leg sa on_start gamit ang vectorized cumsum pass (O(n), minsanan), kaya ang landas bawat bar ay O(log n) na searchsorted lang at isang O(1) array index — eksaktong lunas na hinihingi ng diagnostic: “minsan lang paunang kalkulahin ang mga nakaayos na array, O(log n) bawat bar.” Eksaktong kapareho ng orihinal na semantika ng window ang rolling-z computation, byte-for-byte (parehong pagbuo ng array na walang dedup kaya binibilang pa rin ang mga entry ng funding_lookback; parehong population std; pareho ang min_funding_obs, lookback, at mga staleness guard), kaya hindi nagbabago ang signal at walang naunang pumasa na layer ang bumabalik sa bagsak. Hindi ginalaw ang mga import (malinis ang Layer 1); pinanatili ang entry/exit/sizing logic, ang z memo, at ang helper na umiiwas sa staticmethod (malinis ang Layer 2). Naka-pin ang funding_lookback sa isang limitadong 168 sa config para manatiling mabilis kahit ang minsanang paunang pagkalkula.
Contrarian fade na lugi sa net at walang napatunayang edge sa makukuhang datos: Sharpe -1.995 (CI -4.02..+0.34), profit_factor 0.846, omega 0.674, negatibong expectancy (-$23.8/trade), total_return -8.82%, at probabilistic_sharpe 0.0345 (~0 tsansa na positibo ang tunay na Sharpe). Lugi ito sa halos bawat buwan at nauubos sa komisyon ang 16.81% ng gross mula sa 1H fade churn. Hindi ito NOT bug sa code (naka-load ang funding data, tama ang pag-trigger ng 87 entries, maayos ang sizing/exposure sa 48%), kaya walang……Magpakita ng higit paMagpakita ng mas kaunti
Contrarian fade na lugi sa net at walang napatunayang edge sa makukuhang datos: Sharpe -1.995 (CI -4.02..+0.34), profit_factor 0.846, omega 0.674, negatibong expectancy (-$23.8/trade), total_return -8.82%, at probabilistic_sharpe 0.0345 (~0 tsansa na positibo ang tunay na Sharpe). Lugi ito sa halos bawat buwan at nauubos sa komisyon ang 16.81% ng gross mula sa 1H fade churn. Hindi ito NOT bug sa code (naka-load ang funding data, tama ang pag-trigger ng 87 entries, maayos ang sizing/exposure sa 48%), kaya walang maitutulong ang iterate; at walang pag-tune sa threshold/RSI/stop na makapagpapabago sa fade na may negatibong expectancy at Sharpe na -2.0, kasama ng drag ng bayaring ito, para maging edge na puwedeng i-promote — curve-fit lang sa sample na 181 araw ang magiging bunga ng optimization. Dagdag pa rito, napakaikli ng kasaysayang ~6 buwan ng Hyperliquid para mapatunayan ang anuman sa walk-forward/holdout, at kabilang ito sa paulit-ulit na pamilya ng pagkabigo na HL: maikling kasaysayan at contrarian fade na hindi nagge-generalize, gaya ng binalaan mismo ng hypothesis. Masasayang lang ang ~2 oras sa optimization.
Implementasyon
Long-short, iisang venue, maraming instrumento (BTCUSD/ETHUSD/SOLUSD Hyperliquid perps, 1H bars) na contrarian mean-reversion na nagfa-fade sa EXTREME perpetual funding bilang proxy ng siksikang posisyon, na may 1H kumpirmasyon ng pagkaubos ng RSI. Ang funding ay SIGNAL ONLY (funding z-score laban sa sariling nakaraang window ng leg); price reversion ng galaw na sobrang siksik ang pinagmumulan ng PnL, kaya walang ikalawang leg, basis, o naipong carry. Hiwalay na tine-trade ang bawat instrumento na may sariling entry/exit/sizing (karaniwang book na maraming posisyon). Extreme ang positibong funding → siksik ang long → fade short kapag mataas pa rin ang RSI; extreme ang negatibong funding → siksik ang short → fade long kapag mababa pa rin ang RSI. Lalabas sa stop (4%), take-profit (3%), pag-normalize ng funding-z (|z|<=0.5), o kapag umabot sa max hold na 48h. Kinakalkula ang laki batay sa kapital at ginagamit ang 2x leverage sa notional.
Mga Resulta ng Beripikasyon
Bigo ang verification (Layer 3 — sandbox backtest): lumampas sa limit na 300s ang smoke test. Halos palaging nangangahulugan ito ng trabahong ginagawa sa bawat bar na lumalaki kasabay ng kasaysayan — halimbawa, muling pag-scan sa buong serye ng funding/supplementary, o muling pagbuo ng listahan at pagtawag sa min()/sorted() sa loob ng calculate_signal()/on_bar() sa bawat bar. Paunang kalkulahin ang mga nakaayos na timestamp array na ONCE sa __init__ at gumamit ng bisect, o mag-cache ng mga lookup batay sa timestamp, para O(log n) sa halip na O(n) ang gastos sa bawat bar.
Pagsusuri ng Backtest
Sharpe
-2.00
Kabuuang Return
-8.82%
Max Drawdown
13.00%
Kabuuang Trade
348
Win Rate
47.4%
Profit Factor
0.85
Naipatupad nang tama ang mekanismo: naglo-load ang hl_funding_rates (3327 funding events), naisumite ang 87 pangunahing entry na na-signal, nakapag-trade ang mga dagdag na sleeve — walang bug sa datos na nagdudulot ng zero trade at walang artifact ng pag-ikot/pagsasalansan ng leg sa pagkakataong ito.
Makatuwirang antas ng panganib: exposure_pct 48%, avg_position_pct 24.7%, max_drawdown ay 13% lamang — tunay na diversified at halos market-neutral ang book (beta 0.047).
Nagbibigay ng tunay na sukatan ng edge ang madalas na mga trade (348), hindi resulta ng tsambang maliit ang sample.
Negatibo ang edge sa buong sample: Sharpe -1.995, Sortino -2.21, profit_factor 0.846, omega 0.674, expectancy -$23.8/trade, total_return -8.82%, cagr -13.6%.
probabilistic_sharpe 0.0345 — halos walang tsansa na positibo ang tunay na Sharpe.
Lugi sa halos bawat buwan (unang bahagyang buwan lang ang kumita); avg_win $276 < avg_loss $294.
commission_pct_of_gross 16.81% — mabigat ang epekto ng bayarin sa madalas na churn ng fade sa 1H; haharap pa rin sa gastos na ito kahit tama ang polarity.
181 araw lang ang kasaysayan ng Hyperliquid — napakaikli para mapatunayan sa walk-forward/holdout; kabilang ito sa paulit-ulit na pamilya ng pagkabigo na HL: maikling kasaysayan at contrarian fade na hindi nagge-generalize.
negatibo
<1, lugi
negatibong expectancy
~0 tsansa na tunay na Sharpe>0
mabigat na epekto ng bayarin sa 1H fades
Pagsusuri
Huwag pang i-optimize ang NOT — hindi ipinapatupad ng kasalukuyang backtest ang hypothesis, at lugi ang config (-2.26, PF 0.83, -15%). Ayusin muna ang mga ito bago muling mag-backtest: 1. IMPLEMENT THE EXHAUSTION GATE (kritikal). Ginagawang walang epekto at parang paghagis lang ng barya ng rsi_ob=rsi_os=50.0 ang “pagkumpirma ng pagkaubos ng galaw ng presyo sa 1H” — ang pangunahing palagay. Magtakda ng tunay na mga threshold para sa overbought/oversold upang sa pagkaubos lang ng galaw ng presyo mag-trigger ang……Magpakita ng higit paMagpakita ng mas kaunti
Huwag pang i-optimize ang NOT — hindi ipinapatupad ng kasalukuyang backtest ang hypothesis, at lugi ang config (-2.26, PF 0.83, -15%). Ayusin muna ang mga ito bago muling mag-backtest:
1. IMPLEMENT THE EXHAUSTION GATE (kritikal). Ginagawang walang epekto at parang paghagis lang ng barya ng rsi_ob=rsi_os=50.0 ang “pagkumpirma ng pagkaubos ng galaw ng presyo sa 1H” — ang pangunahing palagay. Magtakda ng tunay na mga threshold para sa overbought/oversold upang sa pagkaubos lang ng galaw ng presyo mag-trigger ang fade, hal. rsi_ob=68, rsi_os=32 (gawing default ang mga ito, hindi ang 50/50). Ito ang pinakamahalagang pagbabago; kasalukuyang nagfa-fade ang strategy sa mga sukdulan ng funding nang halos walang kumpirmasyon mula sa presyo, kaya natatalo ito nang malaki.
2. VERIFY POLARITY EMPIRICALLY. Kapag may tunay nang gate, suriin kung talagang REVERT o CONTINUE ang mga sukdulan ng funding sa HL 1H sa susunod na 24-48h. Babala ang tuloy-tuloy na pagkalugi (PF 0.83, pula ang bawat buwan sa loob ng 2026 buwan): maaaring baligtad ang direksyon ng fade — ibig sabihin, nagpapatuloy ang mga sukdulan ng funding (momentum) sa halip na bumabalik. Kung lugi pa rin ang fade na may wastong gate, mali ang direksyon ng kontraryong palagay at ang susunod na hatol ay talikuran/revise_hypothesis.
3. BALANCE THE BOOK. Nangangahulugan ang 290 long kumpara sa 58 short na nangingibabaw ang isang polarity; hindi talaga magkabilang direksyon ang “sari-saring basket na LS.” Tiyaking simetriko ang mga trigger para sa negatibong funding (fade-long) at positibong funding (fade-short), at magkapareho ang paglalapat ng threshold na entry_z sa magkabilang panig.
4. TIGHTEN ENTRY SELECTIVITY. Dahil entry_z=1.5 at naka-disable ang gate, napakaraming katamtamang signal ang pumapasok (17% ng gross ang nauubos sa komisyon sa 6mo). Isaalang-alang ang mas mataas na entry_z (2.0-2.5) upang mga tunay na sukdulan lang ng pagsisiksikan ng mga posisyon ang ma-trade.
Patakbuhin muli ang backtest pagkatapos ng mga pag-aayos na ito. Magpatuloy lang sa optimization kung nagpapakita ng tunay na positibong edge ang bersyong may gate at napatunayan ang polarity (Sharpe > 0.5, PF > 1.1).
Kasaysayan ng Iterasyon
Bigo ang verification (Layer 2 — synthetic scenarios): Mga ginamit na parameter: ['exit_z', 'rsi_ob', 'rsi_os', 'entry_z', 'rsi_period', 'min_notional', 'stop_loss_pct', 'target_weight', 'max_hold_hours', 'min_funding_obs', 'take_profit_pct', 'funding_lookback', 'max_funding_lag_s'] Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get(). - steady_uptrend: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar:……Magpakita ng higit paMagpakita ng mas kaunti
Bigo ang verification (Layer 2 — synthetic scenarios):
Mga ginamit na parameter: ['exit_z', 'rsi_ob', 'rsi_os', 'entry_z', 'rsi_period', 'min_notional', 'stop_loss_pct', 'target_weight', 'max_hold_hours', 'min_funding_obs', 'take_profit_pct', 'funding_lookback', 'max_funding_lag_s']
Tiyaking itinatakda ng __init__ ang lahat ng attribute mula sa self.parameters.get().
- steady_uptrend: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735690740000)
- steady_downtrend: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735690740000)
- flat_ranging: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735690740000)
- volatility_spike: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735690740000)
- zero_volume: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735690740000)
- price_gap: TypeError: Tumatanggap ang FactoryStrategy._bar_ts() ng 1 positional argument pero 2 ang ibinigay (timestamp ng bar: 1735690740000)
Buod ng Resulta
Maaari pa ring magkaroon ng tunay na negatibong edge ang maayos ang implementasyon, diversified, at halos market-neutral na strategy — nalugi ang contrarian fade sa extreme funding ng Hyperliquid majors matapos ibawas ang mabibigat na bayarin sa 1H churn, at napakaikli ng kasaysayang ~6 buwan para mapatunayan ang anuman; kaya dapat iwasan ang paulit-ulit na pamilyang contrarian fade sa maikling kasaysayan.
Nagbalik ng “abandon” ang pagsusuri sa backtest: hindi ito bug sa code (di tulad ng mga naunang kapatid nito) kundi tunay na contrarian fade na lugi sa net, may ~0 tsansa lang ng positibong tunay na Sharpe, lugi sa halos bawat buwan, at walang pag-tune sa threshold/RSI/stop na makapagpapabago sa -2.0 Sharpe na fade na kinain ng bayarin — pinalala pa ng kasaysayang ~181 araw lang ng Hyperliquid, na napakaikli para sa walk-forward validation.
Long-short na mean-reversion sa iisang venue at maraming instrumento sa Hyperliquid majors (BTC/ETH/SOL 1H perps), na nag-fade sa extreme perpetual funding bilang proxy ng siksikang posisyon — signal lang ang funding, hindi carry — may kumpirmasyon ng pagkaubos ng presyo, at hiwalay ang trade sa bawat pangalan para makuha ang pagbalik ng galaw ng sobrang siksik na mga posisyon.
Sa wakas ay tumakbo nang maayos ang iteration na ito — naka-load ang funding data (3,327 events), nag-trigger ang 87 pangunahing entries, maayos ang sizing at exposure (48% exposure, max drawdown 13%, beta na halos zero 0.047) at may totoong sample na 348 trade — pero malinaw na negatibo ang edge: Sharpe -1.995, profit factor 0.846, expectancy -$23.8/trade, kabuuang return -8.82%, probabilistic Sharpe 0.0345, at kinain ng komisyon ang 16.81% ng gross mula sa 1H fade churn.
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.