BtcSpotDualTimeframeMomentumConfluenceLong
Hypoteser
BTC Spot dual-tidsramme-momentumkonfluens, LONG-ONLY 1x (BTCUSDT.BINANCE_SPOT, 4H primær + 1D bekræftelse, kun long når BOTH tidsrammer peger UP, ellers FLAT til kontanter, ATR-trailing + exit ved dagligt regimeskift, kildeoptimerede parametre bevaret)
Hypoteser
En portering med LONG-ONLY, 1x og en CASH-konto af fabrikkens bedst præsterende forfremmede strategi (BtcDualTimeframeMomentumConfluenceLS, Sharpe 1.99, 458 handler, +$4,774 over 29 dages papirhandel) til BTCUSDT.BINANCE_SPOT, oprettet specifikt som FIRST LIVE-TRADING CANDIDATE, fordi handelspladsen til livehandel kun understøtter spot. Uændret mekanisme, ren OHLCV, ét instrument: FAST-ben = fortegnet på afkastet over de seneste 18 barer på 4-HOUR-barer; SLOW-ben = fortegnet på afkastet over de seneste 15 barer på DAILY-barer (læst via on_extra_bar som et kontekstben, aldrig som en synkroniseringsbarriere). Begge skal AGREE. Den eneste strukturelle ændring, som CASH-kontoen fremtvinger, er at slå {LONG/FLAT/SHORT} sammen til {LONG/FLAT}: hvor den oprindelige futuresstrategi går SHORT, når begge signaler peger nedad, holder spotversionen 100% USDT. Alt andet er bevaret ordret: ATR(14) efterfølgende stop ved 3.033x ATR fra det løbende ekstremum, exit ved brud på dagsregimet, volatilitetsskaleret positionsstørrelse relativt til kapitalen (risk_pct 1.011% / 3.033xATR-stopafstand), 49.7% loft over nominel eksponering og præcis den parametervektor, som kildeoptimeringen valgte (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Tre justerbare parametre, ingen supplerende data, ingen shortpositioner, ingen gearing. Spotspecifikke kodeændringer: BINANCE_SPOT CASH-handelsplads (ingen gearingsmultiplikator i position_size), size_precision 5 / price_precision 2, min_notional $10, salgsstørrelser begrænset til den beholdte mængde af basisaktivet. Data verificeret som tilgængelige: BTCUSDT.BINANCE_SPOT 4-HOUR- og 1-DAY-barer løber kontinuerligt fra 2017-08-17 (~9 år, ~19,800 4H-barer).
Hypoteser
Direkte portering af den promoverede futures-forælder BtcDualTimeframeMomentumConfluenceLS til spotmarkedet, fordi det tilsigtede live-marked kun er spot. Mekanismen er bevaret ordret: de samme to momentum-ben, den samme AGREE-eller-flat-gate, det samme ATR(14) 3.033x trailing stop fra det løbende ekstremum, det samme exit ved dagligt regimeskift, den samme vol-skalerede risk_pct / stopafstandsstørrelse med et notional-loft på 49.7%, samt den præcise parametervektor, som kildeoptimeringen valgte (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). CASH-kontoen tvinger præcis én strukturel ændring igennem, som hypotesen specificerer: {LONG,FLAT,SHORT} kollapser til {LONG,FLAT} — should_enter returnerer BUY kun ved joint-up og None ellers, så joint-down er 100% USDT i stedet for en short. Spot-specifikke ændringer: marked BINANCE_SPOT med gearing 1.0 og intet gearingsled i position_size, size_precision 5 / price_precision 2 (BTCUSDT spot), min_notional hævet til $10, og alle exits føres gennem basistemplatets reduce-only close_position, så en SELL kun kan reducere den beholdte basismængde (en nøgen spot-short er umulig af konstruktion, og basens _would_open_spot_short-vagt udløses aldrig). calculate_signal returnerer det kontinuerlige afkast for 18 barer 4H for hver bar (det varierer fra bar til bar); den diskrete konfluensgate ligger i should_enter, som krævet. Omkostningen pr. bar er O(1): ATR bruger et fast vindue på 15 barer, og det hurtige afkast er et enkelt indekseret opslag, så der er intet historikskalerende arbejde. Én ærlig bemærkning til analytikeren: spot round-trip-omkostningen er ~0.20% mod ~0.10% hos futures-forælderen, så afkastet pr. handel skal overstige den dobbelte friktion — trendfølge-exitstrukturen (trail + regimeskift, intet fast take-profit) gør den gennemsnitlige holdetid lang nok til, at det er plausibelt, men det er den første måling, der bør overvåges.
Implementering
LONG-ONLY 1x BTCUSDT spot (BINANCE_SPOT, CASH) dual-tidsramme-momentumkonfluens. FAST-ben = fortegnet for det efterfølgende 18-bars afkast på 4-HOUR barer (primært); SLOW-ben = fortegnet for det efterfølgende 15-bars afkast på 1-DAY barer, forbrugt via on_extra_bar som et langsommere tidsramme-kontekstben (anden tidsramme, så basistemplatets tværbenede justeringsbarriere aldrig forsinker 4H-signalet). Begge ben skal pege UP for at holde BTC; joint-down (hvor futures-forælderen går short) og uenighed betyder begge, at der holdes 100% USDT. Exits: ATR(14) trailing stop ved 3.033x ATR under positionens løbende top, OR det daglige ben vender ned under long-positionen (regimeskift på højere tidsramme). Størrelsesfastsættelsen er vol-skaleret og kapitalrelativ: equity * 1.011% / (3.033 * ATR), begrænset til 49.7% af USDT-saldoen i notional, med NO gearingsmultiplikator (CASH-kontoen kan ikke låne), kvantiseret til size_precision 5 og afvist under spotminimumsnotional på $10. Tre tunbare parametre, ren OHLCV, ingen supplerende data, ingen shorts.
Verifikationsresultater
Brug enten self._atr (aktuelt) i should_exits trail-sammenligning for at matche forælderen præcist, eller angiv eksplicit i beskrivelsen, at trailen er forankret til entry-barens ATR, så analytikeren ikke tilskriver afvigelse fra forælderen til markedsændringen.
Verifikationsresultater
Trailing-stop-ATR er FROZEN ved entry (self._entry_atr, registreret i should_enter / ved positionsadoption) og opdateres aldrig, så trail-afstanden er 3.033 x ATR-ved-entry i stedet for 3.033 x aktuelle ATR(14). Den promoverede futures-forælder (BtcDualTimeframeMomentumConfluenceLS4H) hæver sin trail med CURRENT ATR hver bar. Hypotesens formulering ('ATR(14) trailing stop ved 3.033x ATR fra det løbende ekstremum') er opfyldt på begge måder, og eftersom _extreme er monoton, hæves stopniveauet stadig kun, så dette er ikke en korrekthedsfejl — men ved volatilitetsudvidelse efter entry er det effektive stop strammere end forælderens, hvilket er en reel adfærdsmæssig forskel fra den strategi, som hævdes porteret 'ordret'.
Verifikationsresultater
Sæt handelstilstanden ud fra fill'et (on_order_filled / første bar med en åben position) i stedet for inde i should_enter, eller nulstil den defensivt øverst i calculate_signal før positionsopslaget.
Verifikationsresultater
should_enter() ændrer handelstilstanden (_in_long = True, _extreme, _entry_atr) BEFORE basisskabelonen har fastsat ordrestørrelsen og anvendt minimumskravet til nominel værdi. Hvis position_size() returnerer 0, eller kontrollen af minimumsværdien på $10 afviser indgangen, efterlades strategien markeret som værende i en longposition med et aktiveret efterfølgende stop, selv om den er uden position. I praksis retter dette sig selv på næste bar (calculate_signal ser, at position er None, og nulstiller flagene, og should_exit nås aldrig, når der ikke er nogen position), så der er ingen observerbar adfærdsfejl — men invarianten er skrøbelig, hvis exitforløbet nogensinde ændres.
Verifikationsresultater
Ingen rettelse er nødvendig af hensyn til korrektheden. Hvis forbrug på præcis samme bar ønskes, beregnes _slow_dir dovent ud fra self._extra_bars[...] inde i calculate_signal i stedet for at cache den i on_extra_bar.
Verifikationsresultater
Én bars latenstid på det daglige ben: DAILY-baren og dagens sidste 4H-bar deler samme sluttidspunkt. Hvis motoren leverer den primære 4H-bar først, kører _maybe_process_primary(), som sætter _last_processed_ts, og den daglige bars _slow_dir-opdatering (der ankommer ved samme ts) bruges først fra den NEXT 4H-bar. Dette er konservativt (det kan kun forsinke et signal, aldrig lække fremtidige data), men det betyder, at exittet ved dagligt regimeskift kan udløses op til 4 timer efter den daglige lukning i omtrent halvdelen af tilfældene, og backtest/paper-paritet afhænger af, at leveringsrækkefølgen er stabil.
Verifikationsresultater
Trofast implementering, men tre ting analytikeren bør vurdere på hele historikken: (1) spot round-trip er ~0.20% mod futures-forælderens ~0.10%, så den samme bruttofordel giver omtrent halvt netto — sandkassen viser allerede kommission på 10.03% af bruttoen; (2) parametervektoren (hurtig 18 / langsom 15 / trail 3.033) blev valgt af en optimeringskørsel på en DIFFERENT børs, tidsrammeblanding og retningssæt (LONG/SHORT futures), så dette er en out-of-sample-overførsel, ikke en optimeret konfiguration — sandkassens Sharpe er 0.527 med sharpe_ci_low -0.233 og information_ratio -0.760 mod benchmarken, dvs. en long-only BTC-bog, der underpræsterer ved at holde BTC i smoke-vinduet; (3) fjernelsen af short-benene eliminerer omtrent halvdelen af forælderens handelspopulation (250 handler, alle long, 43.6% eksponering), så realiseret Sharpe bør forventes at ligge væsentligt under forælderens 1.99 frem for tæt på den. Det første, der skal kontrolleres i den reelle backtest: avg_trade_return_pct mod 0.25% spot-bunden (sandkassen viser 0.82%, men det vindue udelader 2017 og er kun 2401 dage) samt om den 'normale' vol-tercil (-8.77% i sandkassen) forbliver negativ over hele historikken.
Backtest-gennemgang
314 lukkede handler over 3146 dage (2017-08 → 2026-03), metrics_reliable=true, entry_diag 314/314 indgange indsendt, hvoraf 0 blev droppet.
Backtest-gennemgang
Handlerne implementerer hypotesen: alle 314 LONG / 0 short (korrekt CASH-sammenfoldning af forælderens LONG/FLAT/SHORT), maksimalt notional/equity 0.50 mod 0.497-loftet, gennemsnitlig holdetid 4d8h og 43.6% eksponering, der gengiver futures-forælderen.
Backtest-gennemgang
avg_trade_return_pct 1.20% mod en ~0.20% BINANCE_SPOT round trip; kommissioner udgør kun 8.97% af bruttoen, påvirkning 4.33% — ikke gebyrmarginal.
Backtest-gennemgang
max_drawdown 10.3% (under 15% spot-standardindstillingen), PF 1.41, payoff 2.07 ved en træfsikkerhed på 40.4% (korrekt trendform), stresset vol-tercil +28.0%.
Backtest-gennemgang
Ekstrem koncentration: de bedste 10 af 314 handler = 93.8% af det summerede afkast pr. handel, de bedste 20 = 141% (handlerne 21–314 er netto negative).
Backtest-gennemgang
Kun 6/10 kalenderår positive — præcis ved den hårde bund — og begge de seneste år negative (2025 −10.5%, 2026 −9.9%).
Backtest-gennemgang
Sharpe 0.664 med sharpe_ci_low 0.0042 og PSR 0.924 (<0.95): allerede marginal før udvælgelsestærsklen for ~225 forsøg.
Backtest-gennemgang
Bekymringen hos QA er delvist bekræftet: den 'normale' volatilitetstertil forbliver negativ (−7.70%, 16.1% DD), information_ratio −0.757, alfa kun +2.4%/år — den klarer sig dårligere end at holde BTC, og benchmark_meaningful=true, så dette mindreafkast er reelt.
Backtest-gennemgang
Parametrene er overført out-of-sample fra en anden kombination af handelsplads og handelsretning — ikke finjusterede snarere end overtilpassede, men heller ikke testet her.
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.