Spring til indhold
Alle strategier

Strategier

BTC Cross-Session Momentum Carryover — Long-Short, Single-Instrument OHLCV: Retningen på ASIA-sessionens bevægelse forudsiger US-sessionens bevægelse; handl US-sessionen i den retning ONLY, når Asien-bevægelsen er stor, flad position natten over (BINANCE BTCUSDT USD-M, 1H-bars, intradag, 2-parameter)

Resultat: Opgivet

BtcAsiaToUsSessionCarryoverLS

Vel-målt: 594 handler over fuld 2020-2026 1H historik, balanceret long/short (293/301), ren eksekvering (594 signaleret, 594 indsendt, ingen frafald)

Hypotese

En LONG-SHORT, SINGLE-INSTRUMENT, ren-OHLCV INTRADAY-strategi på BTCUSDT.BINANCE USD-M perpetual i en genuint anderledes familie fra alt ventende eller dødt her — den er NOT en trend/breakout (dual-TF momentum, SuperTrend, Donchian, ORB), NOT en mean-reversion/fade (begge døde), og NOT et supplerende-feed-signal (alle netto-tabere). Den udnytter et intradag SESSION LEAD-LAG: den retningsbestemte tone, der sættes under den lavt-participerende ASIA-session (00:00-08:00 UTC), tenderer mod at PERSIST ind i den……Vis mereVis mindre

En LONG-SHORT, SINGLE-INSTRUMENT, ren-OHLCV INTRADAY-strategi på BTCUSDT.BINANCE USD-M perpetual i en genuint anderledes familie fra alt ventende eller dødt her — den er NOT en trend/breakout (dual-TF momentum, SuperTrend, Donchian, ORB), NOT en mean-reversion/fade (begge døde), og NOT et supplerende-feed-signal (alle netto-tabere). Den udnytter et intradag SESSION LEAD-LAG: den retningsbestemte tone, der sættes under den lavt-participerende ASIA-session (00:00-08:00 UTC), tenderer mod at PERSIST ind i den højere-likviditets US-session (13:00-21:00 UTC), da US/institutionelt flow fortsætter bevægelsen frem for at vende den. Hver UTC-dag måles tegnet og størrelsen af Asia-sessionens afkast; når Asia-bevægelsen er LARGE (et reelt retningsbestemt signal, ikke støj), går strategien ind i US-sessionen i SAME-retningen og holder kun for den session, idet den går FLAT overnight (ingen funding-eksponering, ingen overnight-gap, ingen multi-dags trend-risiko). Dette adskiller sig fra den ventende BTC åbnings-interval-breakout (som handler et interval på BREAKOUT af de første timer) — her er der ingen breakout; det er en retningsbestemt CARRYOVER af en allerede-etableret session-bevægelse ind i en senere, separat session. Den bevarer de overlevelsesdygtige invarianter (enkelt-instrument, ren OHLCV med fuld 2020-2026 1H-historik, long-short, intet supplerende feed ifølge netto-taber-lektionen, intet andet ben ifølge L69) og er bygget til de statistiske porte: en næsten-daglig kadence giver et LARGE handelsantal (>100/år), der rydder målbarheds-tripwire og strammer det deflaterede Sharpe-estimat, og kun 2 FREE parametre (Asia-bevægelses indgangstærskel, ATR stop-multipel) minimerer best-of-225-forsøgs deflationsstraffen. Den udfylder også den underrepræsenterede korte-horisont-spand (8.6% vs 10%).

Iteration 2 retter Layer-2-fejlen ordret: alle seks syntetiske scenarier rejste 'TypeError: _day_of() takes 1 positional argument but 2 were given'. Layer-2-testmiljøet genbinder enhver kaldbar attribut på proxyen som en BOUND metode, så @staticmethod-hjælperne _day_of/_hour_of modtog instansen som deres første argument og barren som det andet. Rettelse: begge er nu almindelige instansmetoder (self, bar) — kaldestederne brugte allerede self._day_of(bar)/self._hour_of(bar), så intet andet blev ændret, og adfærden……Vis mereVis mindre

Iteration 2 retter Layer-2-fejlen ordret: alle seks syntetiske scenarier rejste 'TypeError: _day_of() takes 1 positional argument but 2 were given'. Layer-2-testmiljøet genbinder enhver kaldbar attribut på proxyen som en BOUND metode, så @staticmethod-hjælperne _day_of/_hour_of modtog instansen som deres første argument og barren som det andet. Rettelse: begge er nu almindelige instansmetoder (self, bar) — kaldestederne brugte allerede self._day_of(bar)/self._hour_of(bar), så intet andet blev ændret, og adfærden under motoren er identisk. Dernæst en defensiv ændring i samme hjælpersti: testmiljøets rapporterede tidsstempel (1735690980000) er i MILLISECONDS, mens motoren leverer nanosekunder; den gamle kode dividerede ubetinget med 1e9, hvilket under testmiljøet ville sammenfatte hver syntetisk bar til samme time/dag og fastfryse sessionslogikken (en latent anden Layer-2-fejl, når TypeError var ryddet). Den nye _epoch_secs() normaliserer efter størrelsesorden (ns/us/ms/s) og er en no-op for ægte nanosekund-bars, så Layer-3 og den reelle backtest ikke påvirkes. Signalform, ind-/udgangsregler, ATR, position sizing, imports og klassestruktur er ellers uændrede fra den kode, der allerede bestod Layer 1.

Negativ-forventningspræmis på et vel-målt fuldt-historik-udsnit. Over 594 handler på tværs af 2020-2026 taber Asia->US session-overførslen penge: profit_factor 0.937 (<1), total_return -9.81%, forventning -$17.34/handel, Sharpe -0.15 med CI [-0.760, 0.458] der krydser nul, information_ratio -0.76. Det eneste positive år er 2020 (+15.3%); hvert år siden er negativt eller fladt (2021 -8.1, 2022 -5.8, 2025 -10.8) med rullende Sharpe tenderende mod -8.3 ved 2026 — 'stor Asia-bevægelse forudsiger US-bevægelsen'-hypotesen er simpelthen ikke understøttet. Den er også gebyr-marginal: avg_trade_return_pct 0.110% er under 0.15% Binance USD-M-gulvet (L22). Med kun 2 frie parametre og en netto-negativ retningsbestemt kant kan tuning ikke vende tegnet på en kant, der ikke eksisterer. Dette er fee_edge/no_edge netto-taber-signaturen — ikke 2 timers optimering værd.

Implementering

BTCUSDT.BINANCE USD-M evig, 1H-barer, long-short intradag-session lead-lag. Hver UTC dag akkumuleres afkastet for Asien-sessionen (00:00-08:00 UTC fra åbning til lukning) trinvist og normaliseres med standardafvigelsen for de seneste 30 Asien-afkast (ATR-baseret spredningsfallback, mens historikken opbygges), hvilket giver en kontinuerlig, skala-invariant z-score, der returneres for hver bar. Ved åbningstidspunktet for US-sessionen (13:00 UTC) går strategien ind i SAME-retningen i forhold til Asien-bevægelsen, når |z| >= entry_z, højst én indgang pr. kalenderdag. Den lukker ved lukketidspunktet for US-sessionen (20:00 UTC), så positionen er FLAT natten over (ingen finansiering, ingen gap-risiko), eller tidligere ved et ATR-baseret stop (stop_atr_mult x ATR, med minimum min_stop_pct). Positionsstørrelsen risikerer risk_frac af egenkapitalen over stop-afstanden, begrænset til max_notional_frac x egenkapitalen brutto. Al tilstand (ATR, sessionsafkast, spredningsdeque) er O(1) pr. bar; dagskiftet er forankret i barens eget tidsstempel, ikke i en bartæller.

Verifikationsresultater

CLEAN RESTART 2026-09-04 — denne kørsels vurderingshistorik og læringsregistre blev fjernet, og den blev genstartet fra verifikation. Den tidligere opgivelse skyldtes pipelinen, ikke markedet: Layer-2-testmiljøet bandt @staticmethod-hjælpere forkert (rettet), QA udstedte endelige præstationsvurderinger på en uoptimeret smoke-test (fjernet — QA vurderer nu kun korrekthed), og sandbox-timeouts skyldtes mangel på backtest-slots (rettet). Hypotesen og strategikoden er uændrede. Verificér koden ud fra dens egne meritter; præstationen afgøres senere af den fulde backtest og optimizeren.

Tilføj _param_bounds = {entry_z: [...], stop_atr_mult: [...]} svarende til kodebegrænsningerne; hold alle sessionstids-, ATR- og risikokonstanter udenfor.

Config erklærer NO _param_bounds på trods af at hypotesen hviler på 'kun 2 FREE parametre' for at minimere best-of-225-forsøgs deflationsstraffen. Uden den har optimeringsværktøjet ingen eksplicit overflade, der binder det til {entry_z, stop_atr_mult}, hvilket undergraver 2-parameter-disciplinen. Ikke en korrekthedsdefekt.

Sæt us_exit_hour=21 for hele vinduet, eller dokumentér 20:00 som tilsigtet.

Hypotesen navngiver US-sessionens 13:00-21:00 UTC, men us_exit_hour er 20, hvilket tvinger til flad position en time tidligt. Mindre detalje, der ikke ændrer mekanismen eller invarianten om flad position natten over.

Backtest-gennemgang

Sharpe
-0,15
Samlet afkast
-9,81%
Maks. drawdown
23,40%
Handler i alt
594
Gevinstrate
44,8%
Profit factor
0,94

Vel-målt: 594 handler over fuld 2020-2026 1H historik, balanceret long/short (293/301), ren eksekvering (594 signaleret, 594 indsendt, ingen frafald)

Genuint særskilt intradag-session lead-lag-familie; flad position natten over, lav benchmarkkorrelation (0.025), ingen afhængighed af supplerende feed

Nettotaber: profit_factor 0.937 (<1), total_return -9.81%, forventning -$17.34/handel, Sharpe -0.15 (CI omkring nul), information_ratio -0.76

avg_trade_return_pct 0.110% er under 0.15% Binance USD-M-gebyrgulv — gebyr-marginal selv hvis den negative forventning ignoreres

Kun 2020 (+15.3%) er meningsfuldt positivt; hvert efterfølgende år er negativt eller fladt (2025 -10.8%), rullende Sharpe bevæger sig mod -8.3 ved 2026 — præmissen om sessions-overførsel har ingen vedvarende fordel

return_kurtosis 78.6 — klumpet tape (f.eks. en -6.07%-dag på 2023-08-29) frem for en jævn kant

Iterationshistorik

Verifikation mislykkedes (Layer 2 — syntetiske scenarier): Anvendte parametre: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] Kontrollér, at __init__ sætter alle attributter fra self.parameters.get(). - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel:……Vis mereVis mindre

Verifikation mislykkedes (Layer 2 — syntetiske scenarier): Anvendte parametre: ['entry_z', 'min_bars', 'risk_frac', 'atr_period', 'min_notional', 'min_stop_pct', 'min_vol_days', 'us_exit_hour', 'asia_end_hour', 'stop_atr_mult', 'us_entry_hour', 'asia_start_hour', 'max_notional_frac', 'vol_lookback_days'] Kontrollér, at __init__ sætter alle attributter fra self.parameters.get(). - steady_uptrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel: 1735690980000) - steady_downtrend: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel: 1735690980000) - flat_ranging: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel: 1735690980000) - volatility_spike: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel: 1735690980000) - zero_volume: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel: 1735690980000) - price_gap: TypeError: BtcAsiaToUsSessionCarryoverLS._day_of() takes 1 positional argument but 2 were given (bartidsstempel: 1735690980000)

Stratmill er et research- og papirhandelsværktøj, ikke finansiel rådgivning eller en mægler. Backtest- og papirresultater er hypotetiske. Handel indebærer risiko for tab.