Lumaktaw papunta sa nilalaman

Tingnan ang orihinal

BtcSpotDualTimeframeMomentumConfluenceLong

Mga Hypothesis

BTC Spot Dual-Timeframe Momentum Confluence, LONG-ONLY 1x (BTCUSDT.BINANCE_SPOT, 4H Primary + 1D Confirm, Long Only Kapag BOTH Timeframes Nakaturo sa UP, FLAT to Cash Kung Hindi, ATR-Trailing + Daily-Regime-Break Exit, Napanatili ang Source-Optimised Parameters)

Mga Hypothesis

Isang LONG-ONLY, 1x, CASH-account port ng pinakamahusay na performing na promoted strategy ng factory (BtcDualTimeframeMomentumConfluenceLS, Sharpe 1.99, 458 trades, +$4,774 sa loob ng 29 araw ng paper) papunta sa BTCUSDT.BINANCE_SPOT, nilikha partikular bilang ang FIRST LIVE-TRADING CANDIDATE dahil spot-only ang live venue. Hindi nagbago ang mekanismo, pure-OHLCV, single-instrument: FAST leg = sign ng trailing 18-bar return sa 4-HOUR bars; SLOW leg = sign ng trailing 15-bar return sa DAILY bars (binabasa sa pamamagitan ng on_extra_bar bilang context leg, hindi kailanman sync barrier). Kailangang parehong AGREE. Ang tanging structural change na ipinipilit ng CASH account ay ang pagbagsak ng {LONG/FLAT/SHORT} papunta sa {LONG/FLAT}: kung saan ang futures parent ay pumupunta sa SHORT sa joint-down confluence, ang spot version ay humahawak ng 100% USDT. Nananatiling eksakto ang lahat ng iba pa: ATR(14) trailing stop sa 3.033x ATR mula sa running extreme, daily-regime-break exit, vol-scaled capital-relative sizing (risk_pct 1.011% / 3.033xATR stop distance), 49.7% max-notional cap, at ang eksaktong parameter vector na pinili ng source optimisation (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Tatlong tunables, walang supplementary data, walang shorts, walang leverage. Spot-specific code changes: BINANCE_SPOT CASH venue (walang leverage multiplier sa position_size), size_precision 5 / price_precision 2, min_notional $10, ang sells ay sized lamang sa held base quantity. Naberipika na naroroon ang data: BTCUSDT.BINANCE_SPOT 4-HOUR at 1-DAY bars na tumatakbo nang tuloy-tuloy mula 2017-08-17 (~9 taon, ~19,800 4H bars).

Mga Hypothesis

Direktang port ng promoted futures parent na BtcDualTimeframeMomentumConfluenceLS papunta sa spot venue, dahil spot-only ang intended live venue. Napanatili ang mekanismo nang eksakto: ang parehong dalawang momentum legs, ang parehong AGREE-or-flat gate, ang parehong ATR(14) 3.033x trailing stop mula sa running extreme, ang parehong daily-regime-break exit, ang parehong vol-scaled risk_pct / stop-distance sizing na may 49.7% notional cap, at ang eksaktong parameter vector na pinili ng source optimisation (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Ang CASH account ay pumipilit ng eksaktong isang structural change, tulad ng sinasaad ng hypothesis: {LONG,FLAT,SHORT} ay bumabagsak sa {LONG,FLAT} — ang should_enter ay nagbabalik ng BUY lamang sa joint-up at None kung hindi, kaya ang joint-down ay 100% USDT sa halip na short. Mga spot-specific edits: venue BINANCE_SPOT na may leverage 1.0 at walang leverage term sa position_size, size_precision 5 / price_precision 2 (BTCUSDT spot), min_notional tinaasan sa $10, at lahat ng exits ay dinadaan sa reduce-only close_position ng base template kaya ang SELL ay puwede lamang magbawas ng held base quantity (imposible sa disenyo ang naked spot short, at hindi kailanman na-trigger ang _would_open_spot_short guard ng base). Ang calculate_signal ay nagbabalik ng continuous 18-bar 4H return sa bawat bar (nagbabago ito bar-to-bar); ang discrete confluence gate ay nasa should_enter, ayon sa kinakailangan. Ang per-bar cost ay O(1): gumagamit ang ATR ng fixed 15-bar window at ang fast return ay isang single indexed lookup, kaya walang history-scaling work. Isang tapat na caveat para sa Analyst: ang spot round-trip cost ay ~0.20% kumpara sa ~0.10% sa futures parent, kaya kailangang malampasan ng per-trade edge ang doble ng friction — ang trend-following exit structure (trail + regime break, walang fixed take-profit) ang dahilan kung bakit maaaring sapat kahaba ang average hold para dito, pero ito ang metric na dapat unang bantayan.

Implementasyon

LONG-ONLY 1x BTCUSDT spot (BINANCE_SPOT, CASH) dual-timeframe momentum confluence. FAST leg = sign ng trailing 18-bar return sa 4-HOUR bars (primary); SLOW leg = sign ng trailing 15-bar return sa 1-DAY bars, kinokonsumo sa pamamagitan ng on_extra_bar bilang slower-timeframe context leg (ibang timeframe, kaya hindi kailanman ipagpaliban ng cross-leg alignment barrier ng base template ang 4H signal). Kailangang parehong nakaturo sa UP ang dalawang legs para humawak ng BTC; ang joint-down (kung saan nag-short ang futures parent) at disagreement ay parehong nangangahulugan ng paghawak ng 100% USDT. Mga exit: ATR(14) trailing stop sa 3.033x ATR sa ibaba ng running peak ng posisyon, OR kapag bumaliktad pababa ang daily leg sa ilalim ng long (higher-timeframe regime break). Vol-scaled at capital-relative ang sizing: equity * 1.011% / (3.033 * ATR), naka-cap sa 49.7% ng USDT balance sa notional, na may NO leverage multiplier (hindi makakahiram ang CASH account), quantized sa size_precision 5 at itinatanggi kapag mas mababa sa $10 spot min notional. Tatlong tunables, pure OHLCV, walang supplementary data, walang shorts.

Mga Resulta ng Beripikasyon

Alinman gamitin ang self._atr (kasalukuyan) sa trail comparison ng should_exit para tumugma nang eksakto sa parent, o sabihin nang malinaw sa description na ang trail ay naka-angkla sa entry-bar ATR para hindi maiugnay ng analyst ang pagkakaiba mula sa parent sa venue change.

Mga Resulta ng Beripikasyon

Ang trailing-stop ATR ay FROZEN sa entry (self._entry_atr, nakuha sa should_enter / sa position adoption) at hindi kailanman ni-refresh, kaya ang trail distance ay 3.033 x ATR-at-entry sa halip na 3.033 x kasalukuyang ATR(14). Ang promoted futures parent (BtcDualTimeframeMomentumConfluenceLS4H) ay nagra-ratchet ng trail nito gamit ang CURRENT ATR sa bawat bar. Natutugunan ang wording ng hypothesis ('ATR(14) trailing stop sa 3.033x ATR mula sa running extreme') sa alinmang paraan, at dahil monotone ang _extreme, patuloy lang tumataas ang stop level, kaya hindi ito correctness defect — pero sa vol expansion pagkatapos ng entry, mas mahigpit ang effective stop kumpara sa parent, na isang tunay na behavioural difference mula sa strategy na inaangking ito ay 'verbatim' na port.

Mga Resulta ng Beripikasyon

Itakda ang trade state mula sa fill (on_order_filled / unang bar na may bukas na posisyon) sa halip na sa loob ng should_enter, o i-reset ito nang defensively sa itaas ng calculate_signal bago ang position lookup.

Mga Resulta ng Beripikasyon

Binabago ng should_enter() ang trade state (_in_long = True, _extreme, _entry_atr) BEFORE sinukat na ng base template ang order at ipinatupad ang min-notional gate. Kung ang position_size() ay nagbabalik ng 0 o ni-drop ng $10 min-notional check ang entry, naiiwan ang strategy na naka-flag bilang in-long na may armed trail habang flat. Sa praktika, ito ay self-heals sa susunod na bar (calculate_signal ay nakikita na None ang position at nire-reset ang flags, at hindi kailanman naaabot ang should_exit habang flat), kaya walang observable behavioural bug — pero fragile ang invariant kung babaguhin kailanman ang exit path.

Mga Resulta ng Beripikasyon

Walang kailangang ayusin para sa correctness. Kung nais ng eksaktong same-bar consumption, kalkulahin nang lazily ang _slow_dir mula sa self._extra_bars[...] sa loob ng calculate_signal sa halip na i-cache ito sa on_extra_bar.

Mga Resulta ng Beripikasyon

One-bar latency sa daily leg: ang DAILY bar at ang huling 4H bar ng araw ay may parehong close timestamp. Kung inihatid muna ng engine ang primary 4H bar, tatakbo ang _maybe_process_primary() at mata-tatak ang _last_processed_ts, at ang _slow_dir update ng daily bar (na dumarating sa parehong ts) ay makokonsumo lamang mula sa NEXT 4H bar. Konserbatibo ito (maaari lang nitong maantala ang signal, hindi kailanman mag-leak ng future data), pero ibig sabihin nito ay maaaring mag-fire ang daily-regime-break exit hanggang 4 oras pagkatapos ng daily close sa halos kalahati ng mga kaso, at ang backtest/paper parity ay depende sa katatagan ng delivery order.

Mga Resulta ng Beripikasyon

Tapat na implementasyon, pero may tatlong bagay na dapat timbangin ng analyst sa buong kasaysayan: (1) ang spot round-trip ay ~0.20% kumpara sa ~0.10% ng futures parent, kaya ang parehong gross edge ay kumikita ng halos kalahati na lang — ipinapakita na ng sandbox na ang commission ay 10.03% ng gross; (2) ang parameter vector (fast 18 / slow 15 / trail 3.033) ay pinili sa pamamagitan ng optimisation run sa isang DIFFERENT venue, timeframe mix, at direction set (LONG/SHORT futures), kaya ito ay out-of-sample transfer, hindi optimised config — ang sandbox Sharpe ay 0.527 na may sharpe_ci_low -0.233 at information_ratio -0.760 kumpara sa benchmark, ibig sabihin isang long-only BTC book na mas mababa ang performance kaysa sa paghawak ng BTC sa smoke window; (3) ang pag-alis sa short leg ay nag-aalis ng halos kalahati ng trade population ng parent (250 trades, lahat long, 43.6% exposure), kaya dapat asahan na ang realised Sharpe ay mas mababa nang malaki kaysa sa 1.99 ng parent kaysa malapit dito. Unang bagay na dapat suriin sa aktwal na backtest: avg_trade_return_pct laban sa 0.25% spot floor (ipinapakita ng sandbox ang 0.82%, pero ang window na ito ay hindi kasama ang 2017 at 2401 araw lang) at kung ang 'normal' vol tercile (-8.77% sa sandbox) ay nananatiling negatibo sa buong kasaysayan.

Pagsusuri ng Backtest

314 sarado nang trades sa loob ng 3146 araw (2017-08 → 2026-03), metrics_reliable=true, entry_diag 314/314 na entries ang isinumite kung saan 0 ang na-drop.

Pagsusuri ng Backtest

Ipinatutupad ng mga trade ang hypothesis: lahat 314 LONG / 0 short (tamang CASH collapse ng LONG/FLAT/SHORT ng parent), max notional/equity 0.50 kumpara sa 0.497 cap, avg hold 4d8h at 43.6% exposure na muling ginagawa ang futures parent.

Pagsusuri ng Backtest

avg_trade_return_pct 1.20% kumpara sa ~0.20% BINANCE_SPOT round trip; commissions ay 8.97% lang ng gross, impact 4.33% — hindi fee-marginal.

Pagsusuri ng Backtest

max_drawdown 10.3% (sa ilalim ng 15% spot default), PF 1.41, payoff 2.07 sa 40.4% hit rate (tamang trend shape), stressed vol tercile +28.0%.

Pagsusuri ng Backtest

Matinding konsentrasyon: top 10 ng 314 trades = 93.8% ng kabuuang per-trade return, top 20 = 141% (trades 21–314 net negative).

Pagsusuri ng Backtest

6/10 kalendaryong taon lang ang positibo — eksakto sa hard floor — at parehong pinakabagong taon ay negatibo (2025 −10.5%, 2026 −9.9%).

Pagsusuri ng Backtest

Sharpe 0.664 na may sharpe_ci_low 0.0042 at PSR 0.924 (<0.95): marginal na bago pa man ang ~225-trial selection bar.

Pagsusuri ng Backtest

Bahagyang napatunayan ang alalahanin ni QA: nananatiling negatibo ang 'normal' vol tercile (−7.70%, 16.1% DD), information_ratio −0.757, alpha na +2.4%/taon lang — mas mababa ito kaysa sa paghawak ng BTC, at benchmark_meaningful=true kaya totoo ang pagkukulang na iyon.

Pagsusuri ng Backtest

Ang mga parameter ay out-of-sample transfer mula sa ibang venue/direction set — hindi na-tune sa halip na overfit, pero hindi rin nasubukan dito.
Ulat ng estratehiya

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.