Czy trader na żywo robi to, co backtest? Nasze codzienne porównanie prod vs backtest

· Framework

Bitcoin testowany w laboratoryjnej prasie

Wszystko, o czym decydujemy w naszej strategii BTC, opiera się na backtestach: które scenariusze zostają, jak duża jest pozycja, gdzie stoi stop. Backtest jest jednak coś wart tylko wtedy, gdy trader na żywo robi tego samego dnia to samo. Dlatego zaczęliśmy to sprawdzać — codziennie, automatycznie, krok po kroku.

W pierwszym tygodniu porównanie znalazło dwie realne różnice między handlem na żywo a backtestem. Żadna nie była błędem w strategii i żadnej nie zobaczylibyśmy na wykresie zysków.

1. Jak działa codzienne porównanie

Co noc, po północy UTC, dataset backtestu dostaje dzień, który właśnie się skończył: minutowe świece z Binance i wszystkie wskaźniki policzone dla każdego 10-minutowego kroku kodem samego tradera. Zaraz potem raport porównuje ten dzień na trzy sposoby:

2. Odkrycie pierwsze: trader na żywo patrzył na rynek w złej minucie

Pierwszy raport pokazał coś dziwnego: wskaźnik price momentum — czy wygładzona cena wzrosła w ostatnich 10 minutach — zgadzał się z backtestem tylko w 48% kroków. To rzut monetą. Kilka scenariuszy używa go jako warunku wejścia.

Logika była po obu stronach identyczna. Różnica tkwiła w tym, kiedy się liczyła. Backtest liczy każdy krok w 5. minucie 10-minutowego okna. Trader na żywo zaczynał cykl 600 sekund po poprzednim, więc jego moment przesuwał się w obrębie okna — jednego dnia patrzył na rynek około 1. minuty, innego około 5., a każdy restart ustawiał to od nowa. Dla wolnego wskaźnika to bez znaczenia. Dla 10-minutowej zmiany ceny decyduje o wszystkim: typowa zmiana w 10 minut wynosiła około 57 USD, a próbkowanie kilka minut obok przesuwało cenę średnio o 24 USD, a czasem o 200 USD.

Jeden dzień miał oba rodzaje cykli, więc łatwo było zmierzyć efekt:

WskaźnikCykle w minucie 5–7Cykle w innych minutach
Momentum trendu (godzinowe)98%25%
CCI (godzinowe)100%51%
%B Bollingera (godzinowe)92%45%
Price momentum92%77%
Cena rynkowa98%69%
ATR100%88%

Naprawa to jedna zmiana w harmonogramie: cykle na żywo startują teraz według zegara, w 5. minucie każdego 10-minutowego okna (00:05, 00:15, …) — dokładnie wtedy, gdy backtest liczy swoje kroki. Sama strategia się nie zmieniła; trader na żywo patrzy teraz na rynek w momencie, który zakłada backtest.

Ekrany handlu na żywo

3. Odkrycie drugie: „świeższe” dane on-chain to inne dane

Większość wartości on-chain zgadzała się z backtestem w 94–100% kroków. Jedna nie zgodziła się ani razu: exchange netflow.

Dostawca danych uzupełnia dzisiejszy rekord w ciągu dnia. Trader na żywo czyta najnowszy dostępny rekord, więc rano widzi netflow rzędu, powiedzmy, 66 BTC, który rośnie przez cały dzień. Backtest ma tylko końcowe wartości dzienne, więc używa pełnej sumy z wczoraj — tego samego dnia było to 5 692 BTC. To nie jest ta sama liczba widziana wcześniej, tylko inna wielkość. Próg dobrany na pełnych sumach dziennych znaczy coś innego, gdy przykłada się go do częściowej sumy o 9 rano.

Czy szybsze dane są lepsze? Nie wiadomo, bo nikt tego nie przetestował: historia przechowuje tylko końcowe wartości dzienne, a użycie w backteście dzisiejszej wartości końcowej oznaczałoby znajomość przyszłości. Dlatego zostawiliśmy tradera na żywo bez zmian i zaczęliśmy co 10 minut zapisywać dokładnie to, co widzi. Za kilka miesięcy te zapisy pozwolą uczciwie przetestować szybsze dane — i zdecydować na podstawie liczb, a nie intuicji.

4. Mierzyć właściwą rzecz

Porównanie ma sens tylko wtedy, gdy zestawia to samo z tym samym. Dwie wczesne „niezgodności” były błędami raportu, a nie tradera:

5. Transakcje: ta sama decyzja, trochę później

Sparowane transakcje mówią najwięcej. Na przykład dwa konta z tą samą konfiguracją otworzyły long ze scenariusza Puella dwie i pół godziny po backteście — ta sama decyzja, w trochę innym momencie i po trochę innej cenie. Niesparowane transakcje mają na razie proste wyjaśnienia: pozycja otwarta ręcznie albo transakcja, która zaczęła się przed 30-dniowym oknem backtestu.

Podsumowanie

Backtest odpowiada na pytanie „co zrobiłaby strategia”. Nie odpowiada na pytanie „co faktycznie robi nasz system na żywo”. Codzienne porównanie zamyka tę lukę:

Zasada jest ta sama co w naszych testach: ufaj wynikowi dopiero, gdy sprawdzisz go w warunkach, w których naprawdę ma działać.