Backtest rynku predykcyjnego może używać tickera, który wygląda właściwie, poprawnej historii cen, a mimo to dotyczyć niewłaściwego kontraktu. Łatwo przeoczyć ten błąd, bo nazwy rynków są krótkie, strony wydarzeń bywają aktualizowane, a udział YES zawsze wygląda jak cena między 0 a 1.
Weźmy hipotetyczny rynek o nazwie „Czy ustawa o czystym transporcie zostanie przyjęta?”. Strategia kupuje YES po 0.42 po otrzymaniu sygnału z wiadomości. Później backtest wycenia pozycję na 1.00. Zanim uznam to za wygraną, chcę dokładnie wiedzieć, co obiecywał kontrakt: o którą ustawę chodziło, co oznaczało „przyjęcie”, jaki był termin i jakie źródło rozstrzygało wynik.
Tytuł: „Czy ustawa o czystym transporcie zostanie przyjęta?”
Tytuł to tekst wyświetlany użytkownikowi, a nie trwały identyfikator instrumentu. Dwa rynki mogą mieć niemal identyczne nazwy, choć dotyczą różnych kadencji parlamentu, zmienionych projektów ustaw lub terminów. Operator może też zmienić tytuł, by doprecyzować rynek, nie zmieniając warunków kontraktu.
Dlatego backtest powinien przypisywać pozycję do niezmiennego identyfikatora rynku lub kontraktu u operatora, a następnie zachowywać pełny tekst zasad i jego wersję. Jeśli dane historyczne zawierają tylko tytuł i ticker, nie da się ustalić, czy seria cen dotyczy kontraktu, którym strategia miała handlować.
| Pole identyfikacyjne | Co określa | Błąd przy pominięciu |
|---|---|---|
| Operator i ID rynku | Konkretny notowany rynek | Łączenie rynków o podobnych tytułach |
| Wersja zasad | Warunki uzgodnione przez uczestników | Późniejsza zmiana stosowana do wcześniejszych transakcji |
| ID tokena wyniku | Handlowane roszczenie YES lub NO | Zamiana lub łączenie cen YES i NO |
| Źródło rozstrzygnięcia | Dowód służący do ustalenia wyniku | Backtest zakłada inne źródło rozstrzygające |
Zasady: co oznacza „przyjęcie”?
Załóżmy, że zasady mówią, iż ustawa musi przejść przez Izbę Reprezentantów i Senat do 30 czerwca, a następnie zostać podpisana przez prezydenta. Backtest uznający za sukces przyjęcie ustawy przez którąkolwiek z izb zmienia zakład. Zmienia go też uznanie ustawy o tej samej nazwie z kolejnej kadencji.
Czytaj kryteria rozstrzygnięcia tak, jakby były warunkami do wykonania. Zapisz termin i strefę czasową, zdarzenie kwalifikujące, ewentualne wyjątki oraz wskazane źródło rozstrzygnięcia. Niejasność również ma znaczenie: jeśli zasady operatora nie rozstrzygają wiarygodnego scenariusza, nie wybieraj po cichu interpretacji pasującej do historycznego wyniku.
Jest w tej pracy jeden wyjątkowo mało widowiskowy, ale ważny element: zapisanie strony z zasadami, zanim wydarzy się coś istotnego. Strona zarchiwizowana dopiero po rozstrzygnięciu może pokazywać końcowe brzmienie zasad, podczas gdy strategia zawarła transakcję na podstawie wcześniejszej wersji.
Oś czasu: kiedy strategia mogła znać informację?
Załóżmy teraz, że zasady są poprawne, a sygnał z wiadomości pojawił się o 14:05 UTC. Dane historyczne wskazują transakcję o 14:05 po cenie 0.42. Sam znacznik czasu nie mówi, czy informacja była dostępna przed transakcją, czy zapisana cena była potem osiągalna ani czy świeca przedstawia kwotowanie, transakcję czy podsumowanie przedziału.
Zapisuj osobno czas dostępności sygnału i czas zdarzenia rynkowego. Następnie składaj zlecenie dopiero wtedy, gdy strategia mogła je obliczyć i wysłać. Na mało płynnym rynku do kolejnej zarejestrowanej transakcji może minąć kilka minut; nie dowodzi to, że twoje zlecenie zostałoby zrealizowane po tej cenie.
Cena: kwotowanie to nie realizacja zlecenia
YES po 0.42 oznacza cenę 42 centów za udział, ale seria cen ostatnich transakcji nie pokazuje spreadu ani dostępnej liczby udziałów. Jeśli najlepsza oferta sprzedaży wynosi 0.45 za 20 udziałów, symulowany zakup 100 udziałów nie zostanie w całości zrealizowany po 0.42. Zlecenie może przejść przez kolejne poziomy arkusza, poczekać albo pozostać niezrealizowane.
Ceny na rynkach predykcyjnych kuszą też, by pójść na skróty w księgowaniu: uznać 0.42 za prawdopodobieństwo 42% i zapomnieć, że to również kwota wydana na wejściu. Pozycja 100 udziałów YES kosztuje $42 przed opłatami. Jeśli rozliczy się po $1, wpływy brutto wyniosą $100; jeśli po $0, będą zerowe. Opłaty, częściowe realizacje i mechanizmy rozliczeń specyficzne dla operatora muszą znaleźć się w rejestrze.
Rozliczenie: co zamyka transakcję?
Backtest często zamyka pozycję po końcowej cenie rynkowej. Jednak kontrakt utrzymywany do rozstrzygnięcia wypłaca środki zgodnie z zasadami, a jego ostatnia kwotowana cena może być nieaktualna, spread szeroki albo cena daleka od ostatecznej wypłaty. Modeluj rozstrzygnięcie jako osobne zdarzenie: wynik, czas rozliczenia i przepływ środków powinny pochodzić z danych kontraktu.
Uwzględnij też rynek rozstrzygnięty jako nieważny lub sporny, jeśli zasady operatora przewidują taki wynik. Może to oznaczać zwrot stawki, inną wypłatę albo opóźnienie. Założenie o wypłacie binarnej nie oddaje każdej możliwej ścieżki rozstrzygnięcia.
Werdykt w sprawie backtestu
W tym przykładzie uznałbym raportowaną wygraną dopiero po dopasowaniu niezmiennego ID rynku, wersji zasad obowiązującej w chwili zawarcia transakcji, tokena YES, czasu dostępności sygnału, osiągalnych cen sprzedaży i wolumenu, opłat oraz zarejestrowanego rozliczenia. Jeśli archiwum cen nie pozwala na takie kontrole, rzetelnym wynikiem jest przedział scenariuszy albo wynik niezweryfikowany.
Może się to wydawać przesadą przy jednej niewielkiej transakcji. Powiel ten sam błąd łączenia danych na tysiącach rynków, a backtest stanie się starannym pomiarem kontraktów, którymi twoja strategia nigdy nie handlowała.
← Wszystkie wpisy


