Praleisti ir pereiti prie turinio

Peržiūrėti originalą

BtcSpotDualTimeframeMomentumConfluenceLong

Hipotezės

BTC Spot dviejų laikotarpių Momentum sutapimas, LONG-ONLY 1x (BTCUSDT.BINANCE_SPOT, 4H pirminis + 1D patvirtinimas, ilgoji pozicija tik kai BOTH laikotarpiai rodo UP, kitu atveju FLAT į grynuosius, ATR-Trailing + dienos režimo lūžio išėjimas, išsaugoti šaltinio optimizuoti parametrai)

Hipotezės

LONG-ONLY, 1x, CASH sąskaitos perkėlimas geriausiai veikiančios paaukštintos gamyklos strategijos (BtcDualTimeframeMomentumConfluenceLS, Sharpe 1.99, 458 sandorių, +$4,774 per 29 popierinės prekybos dienų) į BTCUSDT.BINANCE_SPOT, sukurtas specialiai kaip FIRST LIVE-TRADING CANDIDATE, nes gyva platforma yra tik spot. Mechanizmas nepakitęs, grynai OHLCV, vieno instrumento: FAST koja = bėgančios 18-baro grąžos ženklas 4-HOUR baruose; SLOW koja = bėgančios 15-baro grąžos ženklas DAILY baruose (nuskaitoma per on_extra_bar kaip konteksto koja, niekada kaip sinchronizavimo barjeras). Abi turi AGREE. Vienintelis struktūrinis pakeitimas, kurį priverčia CASH sąskaita, yra {LONG/FLAT/SHORT} susitraukimas į {LONG/FLAT}: kur ateities sandorių tėvinė strategija esant bendram kritimo sutapimui atlieka SHORT, spot versija laiko 100% USDT. Visa kita išsaugota pažodžiui: ATR(14) trailing stop ties 3.033x ATR nuo bėgančio ekstremumo, dienos režimo lūžio išėjimas, svyravimais koreguotas kapitalui proporcingas dydžio nustatymas (risk_pct 1.011% / 3.033xATR stop atstumas), 49.7% maksimalios nominalios sumos riba, ir tikslus parametrų vektorius, kurį pasirinko šaltinio optimizacija (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Trys derinami parametrai, jokių papildomų duomenų, jokių trumpųjų pozicijų, jokio sverto. Spot specifiniai kodo pakeitimai: BINANCE_SPOT CASH platforma (be sverto daugiklio position_size), size_precision 5 / price_precision 2, min_notional $10, pardavimai dydžio pritaikyti tik pagal turimą bazinį kiekį. Patvirtinta, kad duomenys yra: BTCUSDT.BINANCE_SPOT 4-HOUR ir 1-DAY barai veikia nepertraukiamai nuo 2017-08-17 (~9 metų, ~19,800 4H barų).

Hipotezės

Tiesioginis paaukštintos ateities sandorių tėvinės strategijos BtcDualTimeframeMomentumConfluenceLS perkėlimas į spot platformą, nes numatoma gyva platforma yra tik spot. Mechanizmas išsaugotas pažodžiui: tos pačios dvi momentum kojos, ta pati AGREE-arba-plokščias vartų sąlyga, tas pats ATR(14) 3.033x trailing stop nuo bėgančio ekstremumo, tas pats dienos režimo lūžio išėjimas, tas pats svyravimais koreguotas risk_pct / stop atstumo dydžio nustatymas su 49.7% nominalios sumos riba, ir tikslus parametrų vektorius, kurį pasirinko šaltinio optimizacija (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). CASH sąskaita priverčia atlikti lygiai vieną struktūrinį pakeitimą, kaip nurodo hipotezė: {LONG,FLAT,SHORT} susitraukia į {LONG,FLAT} — should_enter grąžina BUY tik esant bendram kilimui, o kitais atvejais None, todėl bendras kritimas reiškia 100% USDT, o ne trumpąją poziciją. Spot specifiniai pakeitimai: platforma BINANCE_SPOT su svertu 1.0 ir be sverto nario position_size, size_precision 5 / price_precision 2 (BTCUSDT spot), min_notional padidintas iki $10, o visi išėjimai nukreipiami per bazinio šablono reduce-only close_position, todėl SELL gali tik sumažinti turimą bazinį kiekį (nepadengta spot trumpoji pozicija dėl konstrukcijos yra neįmanoma, o bazinės strategijos _would_open_spot_short apsauga niekada nesuveikia). calculate_signal kiekvieną baro momentą grąžina tolydžią 18-baro 4H grąžą (ji kinta nuo baro iki baro); diskreti sutapimo vartų sąlyga yra should_enter, kaip reikalaujama. Sąnaudos vienam barui yra O(1): ATR naudoja fiksuoto dydžio 15 baro langą, o greitoji grąža yra vienas indeksuotas paieškos veiksmas, todėl darbo apimtis nedidėja su istorijos ilgiu. Vienas sąžiningas įspėjimas Analitikui: spot apsisukimo kaina yra ~0.20%, palyginti su ~0.10% ateities sandorių tėvinėje strategijoje, todėl pranašumas vienam sandoriui turi padengti dvigubai didesnę trintį — tendencijos sekimo išėjimo struktūra (trailing + režimo lūžis, be fiksuoto pelno fiksavimo) yra tai, kas leidžia vidutinei laikymo trukmei būti pakankamai ilgai, kad tai būtų tikėtina, tačiau tai yra pirmasis rodiklis, kurį reikia stebėti.

Įgyvendinimas

LONG-ONLY 1x BTCUSDT spot (BINANCE_SPOT, CASH) dviejų laikotarpių momentum sutapimas. FAST koja = bėgančios 18-baro grąžos ženklas 4-HOUR baruose (pirminė); SLOW koja = bėgančios 15-baro grąžos ženklas 1-DAY baruose, panaudojama per on_extra_bar kaip lėtesnio laikotarpio konteksto koja (kitoks laikotarpis, todėl bazinio šablono kojų suderinimo barjeras niekada neatideda 4H signalo). Abi kojos turi rodyti UP, kad būtų laikoma BTC; tiek bendras kritimas (kur tėvinė strategija atlieka trumpąją poziciją), tiek nesutapimas reiškia laikyti 100% USDT. Išėjimai: ATR(14) trailing stop ties 3.033x ATR žemiau pozicijos bėgančios viršūnės, OR dienos kojai apsivertus žemyn ilgosios pozicijos metu (aukštesnio laikotarpio režimo lūžis). Dydžio nustatymas yra svyravimais koreguotas ir proporcingas kapitalui: equity * 1.011% / (3.033 * ATR), ribojamas iki 49.7% nuo USDT balanso nominalia verte, su NO sverto daugikliu (CASH sąskaita negali skolintis), kvantuojama pagal size_precision 5 ir atmetama, jei žemiau $10 spot minimalios nominalios sumos. Trys derinami parametrai, grynai OHLCV, jokių papildomų duomenų, jokių trumpųjų pozicijų.

Patikros rezultatai

Arba naudokite self._atr (dabartinį) should_exit trailing palyginime, kad tiksliai atitiktų tėvinę strategiją, arba aprašyme aiškiai nurodykite, kad trailing yra pririštas prie įėjimo baro ATR, kad analitikas nepriskirtų nukrypimo nuo tėvinės strategijos platformos pakeitimui.

Patikros rezultatai

Trailing stop ATR yra FROZEN įėjimo metu (self._entry_atr, užfiksuotas should_enter / pozicijos perėmimo metu) ir niekada neatnaujinamas, todėl trailing atstumas yra 3.033 x ATR-įėjimo-metu, o ne 3.033 x dabartinis ATR(14). Paaukštinta ateities sandorių tėvinė strategija (BtcDualTimeframeMomentumConfluenceLS4H) kiekvieną barą pakoreguoja savo trailing pagal CURRENT ATR. Hipotezės formuluotė ('ATR(14) trailing stop ties 3.033x ATR nuo bėgančio ekstremumo') yra tenkinama abiem atvejais, o kadangi _extreme yra monotoniška, stop lygis vis tiek gali tik kilti, todėl tai nėra teisingumo trūkumas — tačiau esant svyravimų padidėjimui po įėjimo, faktinis stop lygis yra griežtesnis nei tėvinės strategijos, o tai yra realus elgsenos skirtumas nuo strategijos, kuri tvirtinama esanti perkelta 'pažodžiui'.

Patikros rezultatai

Sandorio būseną nustatykite pagal įvykdymą (fill) (on_order_filled / pirmas baras su atidaryta pozicija), o ne should_enter viduje, arba apsauginiu būdu ją atstatykite calculate_signal pradžioje, prieš pozicijos paiešką.

Patikros rezultatai

should_enter() pakeičia sandorio būseną (_in_long = True, _extreme, _entry_atr) BEFORE bazinis šablonas nustato užsakymo dydį ir pritaiko minimalios nominalios sumos vartus. Jei position_size() grąžina 0 arba $10 minimalios nominalios sumos patikra atmeta įėjimą, strategija lieka pažymėta kaip esanti ilgojoje pozicijoje su įjungtu trailing, nors iš tikrųjų pozicijos nėra. Praktiškai tai savaime išsitaiso kitame bare (calculate_signal pamato, kad pozicija yra None, ir atstato žymas, o should_exit niekada nepasiekiamas neturint pozicijos), todėl stebimo elgsenos trūkumo nėra — tačiau šis invariantas yra trapus, jei kada nors bus pakeistas išėjimo kelias.

Patikros rezultatai

Taisymas dėl teisingumo nereikalingas. Jei norima tikslaus to paties baro panaudojimo, perskaičiuokite _slow_dir vėluojamai (lazily) iš self._extra_bars[...] calculate_signal viduje, o ne talpinkite jį on_extra_bar.

Patikros rezultatai

Vieno baro delsa dienos kojoje: DAILY baras ir paskutinis dienos 4H baras turi tą pačią uždarymo laiko žymą. Jei variklis pirmiausia pateikia pirminį 4H barą, _maybe_process_primary() įvykdomas ir pažymi _last_processed_ts, o dienos baro _slow_dir atnaujinimas (atkeliaujantis su ta pačia laiko žyma) yra panaudojamas tik iš NEXT 4H baro. Tai yra konservatyvu (tai gali tik atidėti signalą, bet niekada nepraleisti ateities duomenų), tačiau tai reiškia, kad dienos režimo lūžio išėjimas gali suveikti iki 4 valandų po dienos uždarymo maždaug pusėje atvejų, o backtest / popierinės prekybos atitikimas priklauso nuo to, ar pateikimo tvarka yra stabili.

Patikros rezultatai

Ištikimas įgyvendinimas, tačiau analitikas turėtų įvertinti tris dalykus visos istorijos kontekste: (1) spot rinkos apsisukimo kaina yra ~0.20%, palyginti su ateities sandorių tėvinės strategijos ~0.10%, todėl toks pat bendrasis pranašumas grynai duoda maždaug perpus mažiau — smėlio dėžės (sandbox) rezultatai jau rodo, kad komisiniai sudaro 10.03% bendrosios sumos; (2) parametrų vektorius (greitas 18 / lėtas 15 / trailingas 3.033) buvo pasirinktas optimizacijos, atliktos kitoje DIFFERENT platformoje, su kitokiu laikotarpių deriniu ir krypčių rinkiniu (LONG/SHORT ateities sandoriai), todėl tai yra perkėlimas už imties ribų, o ne optimizuota konfigūracija — smėlio dėžės Sharpe rodiklis yra 0.527 su sharpe_ci_low -0.233 ir information_ratio -0.760, lyginant su lyginamuoju indeksu, t. y. tik ilgųjų pozicijų BTC portfelis, kuris per smoke lango laikotarpį atsilieka nuo paprasto BTC laikymo; (3) atsisakius trumposios pozicijos kojos, prarandama maždaug pusė tėvinės strategijos sandorių populiacijos (250 sandorių, visi ilgieji, 43.6% pozicija), todėl realizuotas Sharpe rodiklis turėtų būti gerokai žemesnis už tėvinės strategijos 1.99, o ne artimas jam. Pirmas dalykas, kurį reikia patikrinti realiame backtest'e: avg_trade_return_pct palyginti su 0.25% spot rinkos riba (smėlio dėžėje rodoma 0.82%, tačiau šis langas neapima 2017 ir apima tik 2401 dienas), taip pat ar 'normalus' svyravimų tercilis (-8.77% smėlio dėžėje) išlieka neigiamas per visą istoriją.

Istorinio testo peržiūra

314 uždarytų sandorių per 3146 dienų (2017-08 → 2026-03), metrics_reliable=true, pateikta entry_diag 314/314 įėjimų, iš kurių 0 atmesta.

Istorinio testo peržiūra

Sandoriai atitinka hipotezę: visi 314 LONG / 0 trumpieji (teisingas CASH tėvinės strategijos LONG/FLAT/SHORT susitraukimas), maksimali nominali suma / nuosavas kapitalas 0.50, palyginti su 0.497 riba, vidutinė laikymo trukmė 4d8h ir 43.6% pozicija, atkartojanti ateities sandorių tėvinę strategiją.

Istorinio testo peržiūra

avg_trade_return_pct 1.20%, palyginti su ~0.20% BINANCE_SPOT apsisukimu; komisiniai sudaro tik 8.97% bendrosios sumos, poveikis 4.33% — nėra ribinis dėl mokesčių.

Istorinio testo peržiūra

max_drawdown 10.3% (pagal 15% spot numatytąjį nustatymą), PF 1.41, išmoka 2.07 esant 40.4% pataikymo dažniui (teisinga tendencijos forma), įtemptas svyravimų tercilis +28.0%.

Istorinio testo peržiūra

Ekstremali koncentracija: geriausi 10 iš 314 sandorių = 93.8% sumuotos vieno sandorio grąžos, geriausi 20 = 141% (sandoriai 21–314 grynai neigiami).

Istorinio testo peržiūra

Tik 6/10 kalendoriniai metai teigiami — lygiai ties griežta riba — o abu paskutiniai metai neigiami (2025 −10.5%, 2026 −9.9%).

Istorinio testo peržiūra

Sharpe 0.664 su sharpe_ci_low 0.0042 ir PSR 0.924 (<0.95): jau ribinis dar prieš ~225 bandymų atrankos ribą.

Istorinio testo peržiūra

QA susirūpinimas iš dalies patvirtintas: 'normalus' svyravimų tercilis lieka neigiamas (−7.70%, 16.1% DD), information_ratio −0.757, alfa tik +2.4%/m. — jis atsilieka nuo laikymo BTC, o benchmark_meaningful=true, taigi šis trūkumas yra realus.

Istorinio testo peržiūra

Parametrai yra perkelti už imties ribų iš kitos platformos / krypčių rinkinio — jie nesuderinti, o ne pertaikyti (overfit), tačiau čia taip pat neišbandyti.
Strategijos ataskaita

„Stratmill“ yra tyrimų ir popierinės prekybos įrankis, o ne finansų konsultantas ar brokeris. Testavimo ir popierinės prekybos rezultatai yra hipotetiniai. Prekyba susijusi su nuostolio rizika.