BtcSpotDualTimeframeMomentumConfluenceLong
Hypotézy
BTC Spotová konfluence momenta ve dvou časových rámcích, LONG-ONLY 1x (BTCUSDT.BINANCE_SPOT, 4H primární + 1D potvrzení, long pouze když BOTH časové rámce ukazují UP, jinak FLAT do hotovosti, výstup s trailingem ATR a při porušení denního režimu, parametry optimalizované zdrojem zachovány)
Hypotézy
Port nejvýkonnější strategie z továrny na strategie, která postoupila do další fáze (BtcDualTimeframeMomentumConfluenceLS, Sharpeho poměr 1.99, 458 obchodů, +$4,774 za 29 dní simulovaného obchodování), s charakteristikami LONG-ONLY, 1x a účtem CASH na BTCUSDT.BINANCE_SPOT, vytvořený konkrétně jako FIRST LIVE-TRADING CANDIDATE, protože platforma pro živé obchodování podporuje pouze spot. Mechanismus beze změny, čistě OHLCV, jediný instrument: složka FAST = znaménko výnosu za posledních 18 svíček na svíčkách 4-HOUR; složka SLOW = znaménko výnosu za posledních 15 svíček na svíčkách DAILY (načítáno přes on_extra_bar jako kontextová složka, nikdy jako synchronizační bariéra). Obě musí splňovat AGREE. Jedinou strukturální změnou, kterou si účet CASH vynucuje, je redukce {LONG/FLAT/SHORT} na {LONG/FLAT}: tam, kde výchozí futures strategie při souběhu klesajících signálů přechází do SHORT, spotová verze drží 100% USDT. Vše ostatní je zachováno beze změny: posuvný stop ATR(14) ve vzdálenosti 3.033x ATR od průběžného extrému, výstup při narušení denního režimu, určování velikosti pozice vzhledem ke kapitálu a podle volatility (risk_pct 1.011% / vzdálenost stopu 3.033xATR), maximální limit nominální hodnoty 49.7% a přesný vektor parametrů vybraný původní optimalizací (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Tři laditelné parametry, žádná doplňková data, žádné krátké pozice, žádná páka. Změny kódu specifické pro spot: platforma BINANCE_SPOT CASH (bez pákového násobitele v position_size), size_precision 5 / price_precision 2, min_notional $10, velikost prodejů omezena pouze na držené množství základního aktiva. Dostupnost dat ověřena: svíčky BTCUSDT.BINANCE_SPOT 4-HOUR a 1-DAY jsou souvisle k dispozici od 2017-08-17 (~9 let, ~19,800 svíček časového rámce 4H).
Hypotézy
Přímý port výchozí futures strategie BtcDualTimeframeMomentumConfluenceLS, která postoupila do další fáze, na spotovou obchodní platformu, protože zamýšlená platforma pro živé obchodování podporuje pouze spot. Mechanismus zachován beze změny: stejné dvě momentové složky, stejná vstupní podmínka AGREE-nebo-bez-pozice, stejný posuvný stop ATR(14) 3.033x od průběžného extrému, stejný výstup při narušení denního režimu, stejné určování velikosti pozice podle volatility jako risk_pct / vzdálenost stopu s limitem nominální hodnoty 49.7% a přesný vektor parametrů vybraný původní optimalizací (fast_lookback 18, slow_lookback 15, trail_atr_mult 3.033). Účet CASH si vynucuje právě jednu strukturální změnu, jak stanoví hypotéza: {LONG,FLAT,SHORT} se redukuje na {LONG,FLAT} — should_enter vrací BUY pouze při společném růstovém signálu a jinak None, takže společný pokles znamená 100% USDT místo krátké pozice. Úpravy specifické pro spot: platforma BINANCE_SPOT s pákou 1.0 a bez členu pro páku v position_size, size_precision 5 / price_precision 2 (BTCUSDT spot), min_notional zvýšeno na $10 a všechny výstupy směrovány přes close_position základní šablony v režimu pouze pro snížení pozice, takže SELL může vždy pouze snížit držené množství základního aktiva (nekrytá krátká spotová pozice je z principu konstrukce nemožná a ochranná podmínka _would_open_spot_short v základní šabloně se nikdy neaktivuje). calculate_signal vrací na každé svíčce spojitý výnos 18 svíček časového rámce 4H (mění se svíčku od svíčky); diskrétní podmínka souběhu signálů je podle požadavku umístěna v should_enter. Výpočetní náročnost na svíčku je O(1): ATR používá pevné okno o 15 svíčkách a rychlý výnos se získává jediným indexovaným přístupem, takže žádný výpočet neroste s délkou historie. Jedna otevřeně přiznaná výhrada pro analytika: náklady na otevření a uzavření spotového obchodu jsou ~0.20% oproti ~0.10% u výchozí futures strategie, takže výhoda na obchod musí překonat dvojnásobné transakční náklady — struktura výstupů sledující trend (posuvný stop + narušení režimu, bez pevného výběru zisku) prodlužuje průměrnou dobu držení natolik, aby to bylo věrohodné, ale právě tuto metriku je třeba sledovat jako první.
Implementace
LONG-ONLY 1x BTCUSDT spotová (BINANCE_SPOT, CASH) konfluence momenta ve dvou časových rámcích. Větev FAST = znaménko klouzavého výnosu za posledních 18 barů na 4–HOUR barech (primární); větev SLOW = znaménko klouzavého výnosu za posledních 15 barů na 1–DAY barech, spotřebovávané přes on_extra_bar jako kontextová větev pomalejšího časového rámce (jiný časový rámec, takže bariéra zarovnání větví základní šablony nikdy neodkládá signál 4H). Obě větve musí ukazovat UP, aby se drželo BTC; společný pokles (kdy futures rodič otevírá short) i nesoulad znamenají držet 100% USDT. Výstupy: trailing stop ATR(14) ve vzdálenosti 3.033x ATR pod průběžným maximem pozice, OR denní větev překlopí dolů pod long (porušení režimu vyššího časového rámce). Dimenzování je škálované volatilitou a relativní ke kapitálu: equity * 1.011% / (3.033 * ATR), omezené na 49.7% USDT zůstatku účtu v nominální hodnotě, s pákovým násobitelem NO (CASH účet si nemůže půjčovat), kvantizované na size_precision 5 a odmítnuté pod minimální spotovou nominální hodnotou $10. Tři laditelné parametry, čistě OHLCV, žádná doplňková data, žádné shorty.
Výsledky ověření
Buď použijte self._atr (aktuální) v porovnání trailu should_exit, aby přesně odpovídalo rodiči, nebo v popisu výslovně uveďte, že trail je ukotven k ATR vstupního baru, aby analytik nepřisuzoval odchylku od rodiče změně trhu.
Výsledky ověření
Trailing-stop ATR je při vstupu FROZEN (self._entry_atr, zachycený v should_enter / při převzetí pozice) a nikdy se neobnovuje, takže vzdálenost trailu je 3.033 x ATR-při-vstupu namísto 3.033 x aktuálního ATR(14). Propagovaný futures rodič (BtcDualTimeframeMomentumConfluenceLS4H) každý bar posouvá trail pomocí CURRENT ATR. Formulace hypotézy („trailing stop ATR(14) ve vzdálenosti 3.033x ATR od průběžného extrému“) je v obou případech splněna a protože _extreme je monotónní, úroveň stopu se stále pouze posouvá nahoru, nejde tedy o chybu správnosti — při rozšíření volatility po vstupu je však efektivní stop těsnější než u rodiče, což je skutečný behaviorální rozdíl oproti strategii, o níž se tvrdí, že je přenesena „doslova“.
Výsledky ověření
Nastavte stav obchodu z fillu (on_order_filled / první bar s otevřenou pozicí), nikoli uvnitř should_enter, nebo jej preventivně resetujte na začátku calculate_signal před vyhledáním pozice.
Výsledky ověření
should_enter() mění stav obchodu (_in_long = True, _extreme, _entry_atr) BEFORE poté, co základní šablona nadimenzovala příkaz a aplikovala kontrolu minimální nominální hodnoty. Pokud position_size() vrátí 0 nebo kontrola minimální nominální hodnoty $10 vstup zahodí, strategie zůstane označena jako in-long s aktivovaným trailem, přestože je flat. V praxi se to samo opraví na dalším baru (calculate_signal zjistí, že pozice je None, a resetuje příznaky, přičemž should_exit se při flat stavu nikdy nedosáhne), takže nejde o pozorovatelnou behaviorální chybu — invariant je však křehký, pokud se někdy změní výstupní cesta.
Výsledky ověření
Pro správnost není nutná žádná oprava. Pokud je požadována přesná spotřeba ve stejném baru, přepočítejte _slow_dir líně ze self._extra_bars[...] uvnitř calculate_signal namísto ukládání do mezipaměti v on_extra_bar.
Výsledky ověření
Jednobarové zpoždění na denní větvi: bar DAILY a poslední 4H bar dne sdílejí stejný čas uzavření. Pokud engine nejprve doručí primární 4H bar, spustí se _maybe_process_primary() a označí _last_processed_ts, zatímco aktualizace _slow_dir denního baru (přicházející se stejným ts) se spotřebuje až z NEXT 4H baru. Je to konzervativní (může pouze zpozdit signál, nikdy nepropustit budoucí data), ale znamená to, že výstup při porušení denního režimu může v přibližně polovině případů nastat až 4 hodin po denním uzavření a shoda backtestu s paper obchodováním závisí na stabilním pořadí doručení.
Výsledky ověření
Věrná implementace, ale analytik by měl na celé historii zvážit tři věci: (1) náklady na otevření a uzavření spotového obchodu jsou ~0.20% oproti ~0.10% u výchozí futures strategie, takže stejná hrubá výhoda přináší v čistém přibližně polovinu — sandbox již vykazuje provize ve výši 10.03% hrubého zisku; (2) vektor parametrů (rychlý 18 / pomalý 15 / posuvný stop 3.033) byl vybrán optimalizačním během pro obchodní platformu DIFFERENT, kombinaci časových rámců a sadu směrů (LONG/SHORT futures), takže jde o přenos mimo optimalizační vzorek, nikoli o optimalizovanou konfiguraci — Sharpeho poměr v sandboxu je 0.527 s sharpe_ci_low -0.233 a information_ratio -0.760 oproti benchmarku, tj. portfolio BTC pouze s dlouhými pozicemi, které v okně základního ověřovacího testu zaostává za držením BTC; (3) vypuštění krátké složky odstraňuje přibližně polovinu souboru obchodů výchozí strategie (250 obchodů, všechny dlouhé, expozice 43.6%), takže realizovaný Sharpeho poměr lze očekávat výrazně pod hodnotou 1.99 výchozí strategie, spíše než blízko ní. V reálném backtestu je třeba nejprve zkontrolovat: avg_trade_return_pct vůči spotové spodní hranici 0.25% (sandbox vykazuje 0.82%, ale toto okno nezahrnuje 2017 a má pouze 2401 dní) a zda tercil „normální“ volatility (-8.77% v sandboxu) zůstává záporný v celé historii.
Kontrola backtestu
314 uzavřených obchodů během 3146 dní (2017-08 → 2026-03), metrics_reliable=true, odesláno entry_diag 314/314 vstupů, z nichž 0 bylo zahozeno.
Kontrola backtestu
Obchody implementují hypotézu: všechny 314 LONG / 0 short (správné sloučení CASH rodičových LONG/FLAT/SHORT), maximální nominální hodnota/kapitál 0.50 oproti limitu 0.497, průměrná doba držení 4d8h a expozice 43.6%, což reprodukuje futures rodiče.
Kontrola backtestu
avg_trade_return_pct 1.20% oproti ~0.20% BINANCE_SPOT za otevření a uzavření obchodu; provize pouze 8.97% hrubého zisku, tržní dopad 4.33% — ziskovost není kvůli poplatkům na hraně.
Kontrola backtestu
max_drawdown 10.3% (při výchozím spotovém nastavení 15%), PF 1.41, výnos 2.07 při úspěšnosti 40.4% (správný tvar trendu), stresovaný tercil volatility +28.0%.
Kontrola backtestu
Extrémní koncentrace: nejlepších 10 z 314 obchodů = 93.8% součtu výnosů jednotlivých obchodů, nejlepších 20 = 141% (obchody 21–314 jsou v čistém součtu ztrátové).
Kontrola backtestu
Pouze 6/10 kalendářních let v plusu — přesně na nepřekročitelné spodní hranici — a oba poslední roky v minusu (2025 −10.5%, 2026 −9.9%).
Kontrola backtestu
Sharpeho poměr 0.664 s sharpe_ci_low 0.0042 a PSR 0.924 (<0.95): již hraniční před uplatněním výběrového prahu zohledňujícího ~225 pokusů.
Kontrola backtestu
Obava QA se částečně potvrdila: „normální“ tercil volatility zůstává záporný (−7.70%, 16.1% DD), information_ratio −0.757, alfa jen +2.4%/rok — zaostává za držením BTC a benchmark_meaningful=true, takže tento deficit je skutečný.
Kontrola backtestu
Parametry jsou přeneseny mimo optimalizační vzorek z jiné obchodní platformy / sady směrů — jsou spíše nedoladěné než přeučené, ale zde také neotestované.
Stratmill je nástroj pro výzkum a paper trading, nikoli finanční poradenství ani broker. Výsledky backtestů a paper tradingu jsou hypotetické. Obchodování je spojeno s rizikem ztráty.