Strategier
ETH Gjennomsnittstilbakevending i perp-basis mellom børser (Hyperliquid mot Binance, 4t, long-short)
Utfall: Forlatt
EthCrossVenuePerpBasisMeanReversionLS4H
Utfallssammendrag
Denne strategien var ment å dekke de underrepresenterte kategoriene Hyperliquid, handel på tvers av børser og long-short med en markedsnøytral ETH-basishandel mellom Hyperliquid og Binance, der z-score-avvik bredere enn 2.0 ble dempet i påvente av konvergens. Mekanisk fungerte den feilfritt – 446 rene, markedsnøytrale handler, nær null beta, ingen feil – men den tapte penger alle måneder unntatt én og alle tre årene, med Sharpe -9.85 og totalavkastning -24.9%, mens provisjonen spiste 10.1% av brutto. Analytikerens gjennomgang av backtesten vurderte tapet som iboende: en rundtur på to børser med fire fyllinger koster 0.2–0.4%, mer enn basisen på noen få bps mellom ETH går tilbake med. En høyere inngangsterskel kutter derfor bare antall handler uten å skape edge. Strategien ble droppet ved porten før optimalisering etter 5 iterasjoner, fordi mekanismen strukturelt domineres av gebyrer og ikke er verdt å optimalisere.
Hypotese
Iterasjon-5-retting (leverage_set_but_unused). Porten skanner den lagrede strategikoden etter en referanse til giring (config.leverage / self._lev / .leverage) og avviser når giring>1 er angitt, men mangler i koden. Jeg koblet giring entydig til posisjonsstørrelsen: position_size() leser nå `leverage = float(self.config.leverage)` direkte og beregner `notional = equity * exposure_frac * leverage`, og det speilede Hyperliquid-beinet bruker samme giringsjusterte nominelle verdi – dermed dobler 2x giring den nominelle verdien på begge bein (reell margineffekt, ikke passiv). Dette er den minste endringen som tilfredsstiller porten og samtidig bevarer all signal-logikk som tidligere besto (spread-z-score, inngang/utgang, samlet håndtering av to bein) og importene. Giring 2.0 passer her fordi posisjonen er markedsnøytral (long og short med lik nominell verdi), så 2x per bein holder retningsrisikoen nær null samtidig som basis-edge-en får økonomisk betydning.
Implementasjon
Markedsnøytral gjennomsnittstilbakevending i basis på tvers av børser for ETH-perpetuals mellom ETHUSDT.BINANCE (primær) og ETHUSD.HYPERLIQUID (ekstra bein), 4t-barer. Prosentvis spread (HL-BIN)/BIN får z-score over et rullerende vindu på 60 barer; når |z|>2.0 går strategien long på den billigste børsen og short på den dyreste med lik nominell verdi, og lukker begge bein når spreadet konvergerer igjen (|z|<0.3) eller ved en tidsstopp på 4 barer (16t). Nominell verdi per bein = egenkapital * exposure_frac * giring, så den konfigurerte giringen på 2x dobler faktisk den samlede bruttoeksponeringen.
Verifiseringsresultater
Verifisering mislyktes (leverage_set_but_unused): konfigurasjonen setter giring=2.0, men strategien bruker aldri giring i posisjonsstørrelsen. Beregn posisjonsstørrelsen med den – nominell verdi = egenkapital * andel * giring / pris (les self.config.leverage) – eller sett giring=1.0. Slik den står, er giringen passiv, og backtesten er identisk med 1x.
Backtest-gjennomgang
- Sharpe
- -9,85
- Total avkastning
- -24,94%
- Maks nedgang
- 27,95%
- Totalt antall handler
- 446
- Andel vinnende handler
- 48,4%
- Profittfaktor
- 0,91
Strategien er mekanisk solid og kjører uten problemer: 446 markedsnøytrale handler, tidsjustert SyncedBuffer, genuint lav beta (0.002) og korrelasjon med referanseindeksen (0.03), ingen likvidering eller feil
Retter seg som planlagt mot de underrepresenterte kategoriene Hyperliquid, handel på tvers av børser og long-short
Jevnt strukturelt tap: Sharpe -9.85, Sortino -13.8, profit_factor 0.908, omega 0.097, forventet verdi -$103/handel, total_return -24.9% – negative resultater hver måned bortsett fra én, og alle tre årene negative
Gebyrdominert: en rundtur for basis på tvers av børser betaler 4 taker-fyllinger (åpning + lukking på både Binance- og HL-beina); provisjonen er 10.1% av brutto ($45.9k provisjon + $23.4k markedspåvirkning), og basisen på noen få bps mellom ETH HL og Binance kan ikke dekke kostnadsgulvet
Utvalg av de største spreadene feiler allerede: ved entry_z>2 er treffprosenten 48.4% med avg_win ~ avg_loss – de største avvikene konvergerer ikke pålitelig med gevinst, så en høyere terskel kan ikke skape edge
Ingen kodefeil og ingen promotert søsterstrategi på tvers av børser – den negative edge-en ligger i mekanismen og skyldes ikke en feil som kan rettes i implementasjonen
Analyse
Iterasjonshistorikk
Verifisering mislyktes (lag 2 – syntetiske scenarioer): Parametere brukt: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars'] Kontroller at __init__ setter alle attributter fra self.parameters.get(). - steady_uptrend: TypeError: FactoryStrategy._bar_ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - steady_downtrend: TypeError: FactoryStrategy._bar_ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - flat_ranging: TypeError: FactoryStrategy._bar_ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - volatility_spike: TypeError: FactoryStrategy._bar_ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - zero_volume: TypeError: FactoryStrategy._bar_ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - price_gap: TypeError: FactoryStrategy._bar_ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000)
Verifisering mislyktes (lag 2 – syntetiske scenarioer): Parametere brukt: ['exit_z', 'entry_z', 'lookback', 'min_notional', 'exposure_frac', 'time_stop_bars'] Kontroller at __init__ setter alle attributter fra self.parameters.get(). - steady_uptrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - steady_downtrend: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - flat_ranging: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - volatility_spike: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - zero_volume: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000) - price_gap: TypeError: EthCrossVenuePerpBasisMeanReversionLS4H._ts() tar 1 posisjonsargument, men fikk 2 (bar-tidsstempel: 1735689600000)
Utfallssammendrag
Mean-reversion i perp-basis på tvers av børser for en likvid stor kryptovaluta har et kostnadsgulv satt av gebyrene: En rundtur med fire ordreutførelser på to børser koster mer enn spreaden på noen få basispunkter som reverserer, og en høyere z-terskel kan ikke skape et fortrinn mekanismen strukturelt mangler.
Analytikerens gjennomgang av backtesten før optimalisering ga dommen «dropp», fordi den negative edge-en ble vurdert som strukturell og ikke som en kodefeil – en rundtur på to børser betaler fire taker-fyllinger, med et kostnadsgulv på ~0.2–0.4% som overstiger spreadet på noen få bps mellom ETH. Strategien ble derfor droppet før optimaliseringen i 3 faser.
En markedsnøytral long-short-basisarbitrasje som beregnet z-score for ETH-perp-prisspreadet mellom Hyperliquid og Binance USD-M, og som, når |z| > 2.0, gikk long på den billigste børsen og short på den dyreste i forventning om at avviket på 0.2–0.8% skulle konvergere igjen i løpet av 1–3 firetimersbarer.
Den kjørte uten problemer og markedsnøytralt (beta 0.002, korrelasjon med referanseindeks 0.03) gjennom 446 handler, men tapte jevnt: totalavkastning -24.9%, Sharpe -9.85, Sortino -13.8, profittfaktor 0.908, forventet verdi -$103/handel, treffprosent 48.4% med avg_win ≈ avg_loss, og provisjon på 10.1% av brutto ($45.9k i gebyrer + $23.4k i markedspåvirkning).
Stratmill er et forsknings- og papirhandelsverktøy, ikke finansiell rådgivning eller en megler. Backtest- og papirresultater er hypotetiske. Handel innebærer risiko for tap.