10 listopada 2026 · dane

Twój backtest potrzebuje dziennika zmian danych, a nie tylko migawki danych

Twój backtest potrzebuje dziennika zmian danych, a nie tylko migawki danych

Zamrożona migawka danych rynkowych nie wystarczy, by backtestowi można było zaufać. Może dawać za każdym razem ten sam wynik, a jednocześnie ukrywać, że dostawca zmienił dane wejściowe, które do niego doprowadziły.

Zachowaj migawkę. Prowadź też dziennik zmian, który pokaże, co się zmieniło, kiedy do tego doszło i czy miało to znaczenie dla strategii. Jest to szczególnie ważne, gdy badania wykorzystują skorygowane transakcje, zrewidowane dane fundamentalne, odtworzone stawki fundingowe lub historię po cichu odświeżaną przez dostawcę.

Dlaczego odtwarzalny backtest wciąż może wprowadzać w błąd?

Załóżmy, że w poniedziałek pobierasz pięć lat godzinowych świec i uruchamiasz strategię. W piątek dostawca naprawił błędną transakcję, skorygował zdarzenie korporacyjne albo uzupełnił lukę. Twój zapisany plik nadal daje dokładnie poniedziałkowy wynik. To jest odtwarzalność. Jeśli jednak ponownie pobierzesz aktualną historię od dostawcy, możesz uzyskać inny wynik i nie mieć żadnego zapisu wyjaśniającego dlaczego.

Problem nie ogranicza się do dużych korekt. Jedna zmieniona wartość maksimum może uruchomić stop, a zrewidowana cena zamknięcia może przesunąć wskaźnik ponad jego próg. W szerokim uniwersum zmiana historii jednego instrumentu może zmienić jego pozycję w rankingu i wypchnąć inny składnik z portfela. Końcowy Sharpe może się zmienić, nawet jeśli kod strategii i konfiguracja są identyczne.

Suma kontrolna pliku informuje, że dwa pliki się różnią. Nie mówi jednak, czy korekta uwzględniająca split zmieniła ceny z 40 lat, dostawca skorygował trzy transakcje, czy parser zamienił puste pole na zero.

Co powinien zawierać dziennik zmian danych rynkowych?

Zapisuj zmiany na najmniejszym użytecznym poziomie szczegółowości, wraz z kontekstem wystarczającym do odtworzenia badań, których dotyczą. W przypadku strumienia świec zwykle oznacza to instrument, interwał, czas zdarzenia, poprzednie i nowe wartości, źródło oraz czas zaobserwowania aktualizacji. Zachowaj oryginalny ładunek danych, jeśli dostawca go udostępnia.

ZapiszDlaczego wartoPrzykład
Wersja źródła lub czas pobraniaOkreśla stan danych dostawcy, z którego korzystanoMigawka pobrana 2026-11-02 08:15 UTC
Zmienione pole oraz poprzednia i nowa wartośćPokazuje, co faktycznie się zmieniłoETHUSDT 1h maksimum: 3,412.10 → 3,418.60
Klasyfikacja zmianyPozwala odróżnić naprawy od przekształceńPóźna korekta transakcji, korekta uwzględniająca split, uzupełnienie danych
Wersja potoku i schematuPozwala odróżnić zmiany źródłowe od zmian wprowadzonych przez własne przetwarzanieNormalizer v7, schemat skorygowanych świec v3

W przypadku dużych zbiorów danych przechowuj niezmienne migawki oraz zwięzły manifest z ich sumami kontrolnymi, wersjami źródeł i czasami pobrania. Dodawaj różnice na poziomie wierszy dla zmienionych partycji. To praktyczny kompromis: pełne odtworzenie pozostaje możliwe bez zapisywania każdego niezmienionego wiersza w osobnej tabeli audytowej.

Jak ocenić, czy korekta ma znaczenie?

Nie poprzestawaj na policzeniu zmienionych wierszy. Uruchom ponownie badaną strategię na starych i nowych danych, używając tego samego kodu, parametrów, opłat i założeń dotyczących realizacji zleceń. Porównaj decyzje oraz przebieg prowadzący do wyniku.

  1. Na podstawie różnic wskaż instrumenty i czasy zdarzeń, których dotyczą zmiany.
  2. Sprawdź, które cechy, sygnały, zlecenia lub wagi portfela korzystają z tych rekordów.
  3. Odtwórz najmniejsze poprawne okno, uwzględniając okres lookback i stan otwartych pozycji.
  4. Porównaj zlecenia, realizacje, ekspozycję, obrót, obsunięcie i końcowe wyniki.

Na przykład korekta dostawcy, która zmienia maksimum z interwału 1-minute o $0.02, może dotyczyć miliona wierszy i nie mieć żadnego wpływu na strategię momentum na interwale dziennym. Znaczenie może mieć jedna skorygowana świeca na poziomie stopu. Mierz wpływ na decyzje; liczba zmienionych rekordów jest kiepskim wskaźnikiem.

Rozdziel dwa pytania: „Czy mogę odtworzyć wynik na podstawie zapisanych danych?” oraz „Czy ta wersja danych byłaby wtedy dostępna dla strategii?”. Dziennik zmian pomaga odpowiedzieć na oba, ale drugie pytanie wymaga również zapisów o dostępności danych w danym momencie.

Ile to kosztuje i kiedy warto to robić?

Śledzenie zmian wymaga dodatkowej przestrzeni, pracy przy pobieraniu danych i decyzji operacyjnych. Dostawcy mogą nie udostępniać stabilnych wersji, a niektóre historyczne strumienie danych bywają okresowo przebudowywane bez jasnego powiadomienia o korektach. Nie zapiszesz zmiany, której nie zaobserwujesz.

Zacznij od danych, których rewizje mogą zmienić wnioski z badań: świec używanych przez logikę stopów, akcji skorygowanych o zdarzenia korporacyjne, danych fundamentalnych z dostępnością w danym momencie oraz szeregów fundingowych lub open interest, które są odtwarzane. W przypadku szerokich, stabilnych zbiorów może wystarczyć dzienny manifest i sumy kontrolne partycji. Dodaj różnice na poziomie pól tam, gdzie aktualizacje są częste lub decyzje transakcyjne zależą od pojedynczych rekordów.

Krytycy słusznie zauważają, że kompletne, bezterminowe archiwum każdej odpowiedzi dostawcy może być kosztowne, a mimo to nie uchwycić tego, co źródło wiedziało w danym momencie. Rozwiązaniem jest ograniczenie audytu do istotnych danych i decyzji oraz udokumentowanie luk. Migawka pozwala ponownie uruchomić eksperyment. Dziennik zmian pozwala wyjaśnić, dlaczego zmienił się jego wynik.

inżynieria danychbacktestingodtwarzalnośćbadania ilościowe
← Wszystkie wpisy