Strategie
BTC 4H: długa pozycja po wybiciu górnego pasma Bollingera, z kontynuacją momentum i filtrem dziennego rynku byka
Wynik: Porzucona
BtcFourHourBollingerUpperBandMomentumContinuationLong
Podsumowanie wyniku
Ta strategia odwróciła nieudaną strategię długą opartą na powrocie do średniej przy dolnym paśmie BB, tworząc strategię długą opartą na kontynuacji momentum przy górnym paśmie BB na kontraktach BTC 4H, z filtrem dziennego rynku byka. Założenie było takie, że wybicia pasma o 2 odchyleń standardowych odzwierciedlają zdarzenia zmiany reżimu, które utrzymują się od godzin do dni. Strategię poprawnie zaimplementowano, z 485 wejściami, i osiągnęła nawet dodatnią stopę zwrotu +12.7%, ale wskaźnik zysku do straty wyniósł zaledwie 1.016, Sharpe -0.10, a średnia stopa zwrotu z transakcji była bliska $11 (~0.01%) — znacznie poniżej poziomu opłacalności. Prowizje (22% wyniku brutto) i wpływ na cenę (77%) pochłonęły całą przewagę, ograniczając pojemność do zaledwie $168k. Analityk porzucił strategię na etapie przeglądu backtestu, podczas drugiej iteracji, uznając wynik za rzeczywiste ustalenie ekonomiczne, a nie błąd kodu. Stwierdził, że żadna optymalizacja nie podniesie zerowej przewagi przed kosztami ponad próg kosztów; dlatego strategia nie przeszła do optymalizacji ani przeglądu ryzyka.
Hipoteza
Poprawka w iteracji 2 po niepowodzeniu „zamrożony sygnał” w warstwie 2. Poprzednia wersja uzależniała calculate_signal od `if not self._bull_regime: return 0.0`. Ponieważ syntetyczne scenariusze warstwy 2 nie dostarczają dodatkowych świec dziennych sterujących flagą reżimu, _bull_regime pozostawał False, a każdy sygnał sprowadzał się do 0.0 (479 identycznych sygnałów na steady_downtrend). Najmniejsza poprawna zmiana: calculate_signal zwraca teraz ciągły wynik z-score odległości BB na każdej świecy (zmienia się z jednej świecy na drugą), a filtr rynku byka przeniesiono do should_enter (`signal >= entry_std AND self._bull_regime`). Zachowanie podczas live trading pozostaje bez zmian — wejścia nadal wymagają potwierdzonego reżimu rynku byka — ale sygnał nie jest już zamrożony, co spełnia wymagania weryfikatora syntetycznego. Zachowano wszystkie importy, strukturę klasy, sposób ustalania wielkości pozycji, użycie dźwigni i logikę wyjścia z poprzedniego kodu (warstwa -1/wcześniejsza wersja, która przeszła weryfikację).
Implementacja
Long-only strategia momentum-continuation oparta na wybiciu górnego pasma Bollingera na BTC z interwałem 4H na kontraktach perpetual Binance USD-M, z dziennym filtrem hossy (dzienny close > dzienny SMA50). Otwiera pozycję długą, gdy close z interwału 4H przekracza średnią z 20 okresów o >= entry_std odchyleń standardowych, przy trwającej hossie, zakładając kontynuację wzrostów przez około 4-24h. Zamyka pozycję po osiągnięciu take-profit, stop-loss, powrocie close poniżej środkowej linii BB lub po upływie maksymalnego czasu utrzymania. Stosuje dźwignię 2x i wielkość pozycji zależną od kapitału (wartość nominalna około 1.2x kapitału własnego).
Wyniki weryfikacji
Weryfikacja nie powiodła się (warstwa 2 — scenariusze syntetyczne): Użyte parametry: ['bb_period', 'entry_std', 'min_notional', 'position_pct', 'max_hold_bars', 'regime_period', 'stop_loss_pct', 'take_profit_pct'] Sprawdź, czy __init__ ustawia wszystkie atrybuty z self.parameters.get(). - steady_downtrend: Zamrożony sygnał: wszystkie 479 sygnałów są identyczne (wartość=0.0). Prawdopodobnie w calculate_signal() jest błąd — sygnał nigdy się nie zmienia.
Przegląd backtestu
- Sharpe
- -0,10
- Łączna stopa zwrotu
- 12,71%
- Maksymalne obsunięcie
- 33,60%
- Łączna liczba transakcji
- 485
- Trafność
- 44,5%
- Współczynnik zysku
- 1,02
Poprawna implementacja zgodna z założeniem: 485 długich pozycji po wybiciu górnego pasma BB przy potwierdzonym dziennym reżimie rynku byka, bez zamrożonego sygnału, metrics_reliable=true, bez artefaktu kapitalizacji składanej.
Przemyślane ujęcie ekonomiczne (symetryczne odwrócenie nieudanej strategii powrotu do średniej przy dolnym paśmie BB) i odpowiednio duża próba (485 transakcji) pozwalają na jasną ocenę.
Ryzyko ograniczone w porównaniu z pokrewnymi strategiami (bez gwałtownego wzrostu strat z powodu dźwigni; max_drawdown 33.6%).
Brak przewagi po kosztach: profit_factor 1.016, Sharpe -0.10, sortino -0.17, win_rate 44.5%, +12.7% łącznego wyniku w ciągu ~6 lat (alfa ~0).
avg_trade_return ~0.01% (≈$11/transakcję) — dziesięciokrotnie mniej niż próg opłacalności kontraktów futures 0.15%.
Koszty dominują: prowizja 22.0% wyniku brutto + impact_cost_pct 77.1%; pojemność to zaledwie $168k — przewaga występuje tylko przy symbolicznej wielkości pozycji.
Założenie o symetrycznym odwróceniu zostało obalone: wybicia powyżej BB w reżimie rynku byka nie kontynuują wzrostów z zyskiem po kosztach; żadna zmiana parametrów nie podniesie przewagi brutto bliskiej 0% ponad próg kosztów.
Drobna kwestia: avg_position_pct 135% wobec podanej wartości 1.2x sugeruje ten sam brakujący warunek sprawdzający otwartą pozycję co w pokrewnych strategiach, ale nie jest przyczyną niepowodzenia.
Podsumowanie wyniku
Wiarygodne mechanistycznie założenie można poprawnie zaimplementować, a mimo to uzyskać przewagę brutto praktycznie równą zeru po kosztach. Przy ~0.01% na transakcję i dominacji prowizji oraz wpływu na cenę sygnał kontynuacji powyżej BB nie miał wykorzystywalnej alfy. Odwrócenie nieudanej strategii powrotu do średniej nie gwarantuje zyskownego odpowiednika opartego na momentum.
Analityk przeglądający backtest wydał werdykt „porzucić”: implementacja była wierna założeniu, ale koszty pochłonęły praktycznie całą przewagę brutto (prowizja 22.0% wyniku brutto oraz koszt wpływu na cenę 77.1%, pojemność zaledwie $168k). Tym samym założenie o symetrycznym odwróceniu zostało obalone — wybicia górnego pasma w reżimie rynku byka nie kontynuują wzrostów z zyskiem po opłatach i żadna zmiana parametrów nie podniesie przewagi brutto bliskiej zeru ponad próg kosztów.
Strategia kontynuacji momentum oparta na pasmach Bollingera, zajmująca wyłącznie pozycje długie, na kontraktach futures Binance BTCUSDT 4H (dźwignia 2.0x) — symetryczne odwrócenie nieudanej strategii zajmującej wyłącznie pozycje długie, opartej na powrocie do średniej przy dolnym paśmie BB. Wejście następuje, gdy zamknięcie świecy 4H przekracza górne pasmo oddalone o 2 odchyleń standardowych podczas potwierdzonego dziennego reżimu hossy; strategia handlu algorytmicznego zakłada, że sygnały oparte na odległości BB wskazują zdarzenia zmiany reżimu, po których następuje kontynuacja ruchu, a nie powrót do średniej.
W 485 transakcjach w ciągu ~6 lat strategia osiągnęła +12.7% łącznego wyniku, ale nie miała rzeczywistej przewagi: wskaźnik zysku do straty 1.016, Sharpe -0.10, Sortino -0.17, odsetek zyskownych transakcji 44.5% i średnia stopa zwrotu z transakcji zaledwie ~$11 (~0.01%). To dziesięciokrotnie mniej niż próg opłacalności kontraktów futures 0.15%, przy maksymalnym drawdownie 33.6%.
Stratmill to narzędzie do badań i handlu na papierze (paper trading), a nie doradztwo finansowe ani broker. Wyniki backtestów i paper tradingu mają charakter hipotetyczny. Handel wiąże się z ryzykiem straty.