BTC234,8k zł0,09%
ETH7,00k zł0,31%
XRP3,74 zł0,12%
LTC164 zł1,39%
BCH767 zł0,10%
DOT2,87 zł1,45%

Trading algorytmiczny — procedura testu i ocena cudzego wyniku

Ten sam zapis reguły, ten sam zbiór notowań, dwie osoby piszące program. Listy zawartych transakcji pokrywają się w 81,8%, a średni wynik na transakcję różni się ponad sześciokrotnie — nie dlatego, że któraś z nich się pomyliła, tylko dlatego, że reguła milczała w ośmiu miejscach naraz, a program milczeć nie może i każde takie miejsce rozstrzyga po swojemu. To jest właściwy przedmiot tego artykułu. Automatyzacja nie dodaje przewagi: wykonuje regułę wierniej i szybciej, więc mnoży to, co reguła i tak daje — razem ze znakiem. Ciężar przenosi się na procedurę sprawdzenia reguły i na kryteria, po których da się ocenić wynik pokazany przez kogoś innego. Poniżej znajduje się ścieżka od zapisu reguły do wyłączenia algorytmu z kryterium przejścia na każdym etapie, katalog pułapek testu z mechanizmem każdej, test wrażliwości na koszt, parametr i okres, karta reprodukowalności oraz lista pytań, na które brak odpowiedzi kończy rozmowę o cudzym wyniku. Wszystkie liczby w tekście to wartości ilustracyjne służące pokazaniu mechanizmu; żaden test nie został przeprowadzony i żadna z tych liczb nie opisuje wyniku jakiejkolwiek reguły.

Trading algorytmiczny na Forex — zapis reguły, wynik symulacji i zapis wykonania jako trzy różne rzeczy, których ocena algorytmu nie może mylić
Co ten artykuł rozstrzyga i gdzie przebiega granica
  • Automatyzacja zmienia wierność i szybkość wykonania, a nie znak wyniku. Na wartościach ilustracyjnych przyjętych w tekście przejście z wykonania ręcznego na automatyczne podnosi liczbę zrealizowanych sygnałów ze 150 do 236 na 240 wygenerowanych. Mnożnik 1,57 działa jednakowo w obie strony: przy wartości oczekiwanej −0,20 pipsa na transakcję zamienia −30 pipsów na −47,2 pipsa, a przy +0,20 pipsa — +30 na +47,2.
  • Nierozstrzygnięta kolejność zdarzeń wewnątrz świecy potrafi odwrócić znak całego testu. W przyjętym przykładzie 46 transakcji na 400, czyli 11,5%, przypada na świece, w których zakres pokrył oba poziomy wyjścia. Wariant optymistyczny daje +3,90 pipsa na transakcję, konserwatywny −1,85 pipsa. Rozpiętość 5,75 pipsa nie wynika z danych, tylko z przyjętej konwencji.
  • Pojedyncze najlepsze ustawienie parametru jest wartością, do której jest najmniej podstaw. W tabeli z sekcji 7 szczyt wariantu A wynosi +1,73 pipsa przy sąsiedztwie +0,40, czyli iloraz 4,33; wariant B ma szczyt +0,51 przy sąsiedztwie +0,47 — dokładniej 0,465 — i iloraz 1,10. Podniesienie kosztu o 0,60 pipsa sprowadza sąsiedztwo obu wariantów poniżej zera.
  • Nie znajdziesz tu ani jednej linii kodu, ani jednej nazwy narzędzia, ani jednej reguły wielkości pozycji. Warsztat techniczny i konfigurację środowiska opisuje dział 12, obiektywizację reguły jako technikę analityczną — artykuł 5.12, wielkość pozycji i miary ryzyka portfela — dział 9, status prawny usług kopiowania transakcji — dział 13. Tutaj jest wyłącznie metodologia: co trzeba zapisać, co trzeba policzyć i czego nie wolno z wyniku wyprowadzić.

1. Co automatyzacja zmienia w wykonaniu, a czego nie zmienia w rachunku

Program handlujący według zapisanych reguł robi dokładnie jedno: zamienia zapis na sekwencję zleceń, bez pominięć i bez odstępstw.

To jest cała jego funkcja i warto ją nazwać wprost, bo od niej zależy, które oczekiwania wobec automatyzacji są uzasadnione, a które nie mają oparcia w niczym.

Rzeczy, które automat wnosi, mieszczą się w jednym słowie: wierność. Warunek jest oceniany w każdym momencie, w którym reguła każe go oceniać, a nie wtedy, gdy ktoś akurat patrzy na wykres. Zlecenie jest składane z parametrami wynikającymi z zapisu, a nie z parametrami zaokrąglonymi w pośpiechu. Poziomy wyjścia trafiają na rynek razem z wejściem, jeżeli tak stanowi reguła. Ewidencja powstaje sama i zawiera to, co program w niej zapisze — łącznie z sygnałami, które nie doprowadziły do transakcji, o ile ktoś przewidział ich odnotowanie.

Wierność ma jednak konsekwencję, którą łatwo pomylić z korzyścią. Reguła wykonywana wiernie generuje więcej transakcji niż ta sama reguła wykonywana ręcznie, bo znika filtr złożony z nieuwagi, nieobecności i wahania. Liczba transakcji mnoży się przez wartość oczekiwaną jednej z nich, a mnożenie nie zmienia znaku.

Rachunek: co się mnoży przy przejściu na wykonanie automatyczne.

Założenia. Reguła oceniana na zamknięciach świec, jeden instrument, okres badany: 240 momentów, w których warunek wejścia został spełniony. Wykonanie ręczne doprowadziło do 150 zawartych transakcji — pozostałe sygnały wypadły, bo ich moment przypadł poza czasem obserwacji albo decyzja nie zapadła. Wykonanie automatyczne doprowadziło do 236 transakcji; cztery zlecenia zostały odrzucone i odnotowane jako sygnały niezrealizowane. Wartość oczekiwana jednej transakcji: dwa warianty, −0,20 i +0,20 pipsa; wielkości przyjęte, a sposób ich liczenia podaje artykuł 8.2. Wszystkie liczby to wartości ilustracyjne; status wyniku: przykład rachunkowy, nie test na danych.

Rachunek. Współczynnik realizacji sygnałów: ręcznie 150 ÷ 240 = 62,5%, automatycznie 236 ÷ 240 = 98,3%. Mnożnik przejścia: 236 ÷ 150 = 1,573.

Wariant ujemny: 150 × (−0,20) = −30,0 pipsa wobec 236 × (−0,20) = −47,2 pipsa.
Wariant dodatni: 150 × (+0,20) = +30,0 pipsa wobec 236 × (+0,20) = +47,2 pipsa.

Moment dostępności i wykonanie. Liczba momentów spełnienia warunku jest znana dopiero po przejściu przez cały okres, więc rachunek jest prowadzony wstecz. Współczynnik realizacji przy wykonaniu ręcznym da się odczytać wyłącznie z ewidencji zawierającej sygnały pominięte; bez tego pola nie ma z czego go policzyć, a pole to wskazuje artykuł 8.1. Cztery odrzucenia po stronie automatu są zdarzeniami wykonawczymi znanymi po fakcie.

Wynik i interpretacja. Mnożnik 1,573 jest identyczny w obu wariantach. Automatyzacja przesuwa wynik dalej od zera w tę stronę, w którą reguła i tak zmierzała. Zastrzeżenia: rachunek zakłada, że wartość oczekiwana pojedynczej transakcji jest w obu trybach taka sama — a to założenie jest fałszywe, jeżeli ręczny wybór sygnałów nie był losowy. Ten przypadek rozstrzyga akapit poniżej.

Dlaczego ewidencja ręczna nie przewiduje wyniku automatu

Zastrzeżenie z końca rachunku jest ważniejsze niż sam rachunek. Dziewięćdziesiąt sygnałów, które w wykonaniu ręcznym nie doprowadziło do transakcji, nie wypadło losowo. Wypadały te, których moment przypadał poza godzinami obserwacji, te, które pojawiły się w sytuacji wyglądającej niekorzystnie, i te, przy których zabrakło pewności. Każda z tych trzech przyczyn jest skorelowana z czymś, co dzieje się na rynku, więc odfiltrowany zbiór ma inny rozkład wyników niż zbiór wykonany.

Wynika stąd rzecz, którą trzeba powiedzieć wprost, bo bywa pomijana przy przechodzeniu z handlu uznaniowego na automatyczny. Ewidencja z wykonania ręcznego nie jest oszacowaniem wartości oczekiwanej reguły. Jest oszacowaniem wartości oczekiwanej reguły przepuszczonej przez człowieka — a to inna wielkość i nic nie gwarantuje, że mniejsza. Kierunek różnicy nie da się ustalić z samej ewidencji, bo brakuje w niej właśnie tego, co zostało odfiltrowane.

Rozstrzyga to wyznaczenie wyniku wszystkich sygnałów, także pominiętych, na danych historycznych — czyli test, o którym mówi cała reszta tego tekstu. Ten sam skutek daje ewidencja prowadzona prospektywnie i odnotowująca również sygnały niezrealizowane, o której mowa w rachunku powyżej; różni ją to, że jej materiał narasta w tempie rynku, którego nie da się przyspieszyć, podczas gdy test korzysta z historii już istniejącej.

Granice tego, co automat wnosi

Lista rzeczy nierobionych jest krótsza niż lista obietnic, ale za to rozstrzygalna.

Nie tworzy wartości oczekiwanej. Znak wartości oczekiwanej wynika z relacji między średnim zyskiem, średnią stratą, odsetkiem transakcji zamkniętych z zyskiem i kosztem obrotu. Żadna z tych czterech wielkości nie zależy od tego, czy zlecenie składa człowiek, czy program. Program wpływa na piątą wielkość — na liczbę transakcji — i wyłącznie na nią.

Nie zmniejsza kosztu obrotu. Spread, prowizja i poślizg wchodzą do rachunku tak samo w obu trybach. Wierność wykonania skraca odstęp między momentem spełnienia warunku a złożeniem zlecenia, co bywa mylone ze zmniejszeniem poślizgu; są to dwie różne rzeczy, bo poślizg powstaje między złożeniem zlecenia a jego wykonaniem, a nie przed złożeniem. Różnicę między ceną sygnału a ceną, po której realistycznie da się zareagować, rozdziela artykuł 8.1.

Nie zwiększa liczby niezależnych obserwacji proporcjonalnie do liczby transakcji. Więcej transakcji to więcej wierszy w ewidencji, ale niekoniecznie więcej informacji: sygnały skupiają się w tych samych oknach, tych samych ruchach i tych samych warunkach. Wielkość tego efektu i sposób jego oszacowania należą do artykułu 8.2; tutaj wystarczy, że przy ocenie wyniku automatu liczba transakcji jest górnym ograniczeniem liczby obserwacji, a nie jej miarą.

Nie usuwa decyzji, tylko przesuwa ją w czasie. Wszystkie rozstrzygnięcia, które przy handlu ręcznym zapadają w trakcie, przy handlu automatycznym muszą zapaść wcześniej — w postaci zapisu. Rozstrzygnięć jest przy tym więcej, nie mniej, bo program wymaga odpowiedzi także na pytania, które człowiek rozwiązuje odruchowo: co zrobić z sygnałem powstałym przy otwartej pozycji, co z brakiem świecy w danych, co z pozycją, która nie osiągnęła żadnego poziomu. Zestaw tych pytań jest tematem sekcji 3.

Z tych czterech punktów wynika sposób czytania całego artykułu. Automat jest wykonawcą; wartość powstaje w regule i w procedurze jej sprawdzenia. Reszta tekstu dotyczy tej procedury, a nie wykonawcy.

2. Cztery formy automatyzacji i pytanie o interes sprzedawcy

Uczestnik detaliczny ma do wyboru kilka układów, które różnią się nie stopniem automatyzacji, lecz czymś istotniejszym: tym, kto zapisał regułę i kto może ją sprawdzić. To rozróżnienie jest ważniejsze od podziału na „ręczne" i „automatyczne", bo od niego zależy, czy w ogóle da się zastosować procedurę z dalszej części tekstu.

UkładKto zapisuje regułęCzy reguła jest znanaCo da się sprawdzić samodzielnieOd czego zależy przychód dostawcy
Własny programUżytkownikTak, w całościWszystko z karty reprodukowalności: reguła, dane, koszty, podział próbyNie ma dostawcy
Półautomat — warunek oceniany przez program, decyzja i zlecenie po stronie użytkownikaUżytkownikTak, w części dotyczącej warunku; reguła decyzji pozostaje niezapisanaListę sygnałów i moment ich powstania; nie da się sprawdzić reguły wyboru między nimiNie ma dostawcy
Kopiowanie transakcji — zlecenia odwzorowują transakcje innego rachunkuOsoba trzeciaNie; znany jest wyłącznie zapis wykonanych transakcjiHistorię transakcji, jeżeli została udostępniona w pełni; nie da się odtworzyć warunku, który je wywołałZwykle od liczby odwzorowujących rachunków i od wolumenu, nie od ich wyniku
Gotowy program albo abonament sygnałowyOsoba trzeciaZależy od umowy; bywa nieujawniana w całościWyłącznie to, co dostawca udostępni; przy nieujawnionej regule odpada odtworzenie testuOd liczby nabywców i długości abonamentu, nie od ich wyniku

Kolumna ostatnia nie jest oskarżeniem i nie opisuje niczyich intencji. Opisuje strukturę: jeżeli przychód dostawcy zależy od liczby nabywców, a nie od ich wyniku, to zachęta do sprawdzenia reguły przed sprzedażą jest słabsza niż zachęta do jej sprzedania. Nabywca musi tę różnicę pokryć własnym sprawdzeniem, a sprawdzenie wymaga dostępu do informacji z sekcji 8. Kiedy tego dostępu nie ma, nie ma też sposobu odróżnienia reguły sprawdzonej od niesprawdzonej — i to jest cała treść ostrzeżenia, bez potrzeby zakładania złej woli.

Drugi mechanizm działa niezależnie od pierwszego i dotyczy samego zestawu ofert. Program, który przestał działać, znika z oferty; program, który jeszcze działa, w niej zostaje. Zestaw widoczny w danym momencie jest więc zbiorem tych, które przetrwały, a nie próbką losową ze zbioru wszystkich powstałych. Ta sama wada dotyka rankingi ułożone według dotychczasowego wyniku i ma nazwę: obciążenie przeżywalności. Jego mechanizm i skutek opisuje sekcja 6, bo dokładnie ten sam efekt powstaje we własnym teście, gdy uniwersum instrumentów zmieniało się w czasie.

Cztery układy automatyzacji dostępne uczestnikowi detalicznemu — od własnego programu przez półautomat po odwzorowanie cudzych transakcji, uszeregowane według tego, ile z reguły pozostaje znane i sprawdzalne
Cztery układy automatyzacji dostępne uczestnikowi detalicznemu — od własnego programu przez półautomat po odwzorowanie cudzych transakcji, uszeregowane według tego, ile z reguły pozostaje znane i sprawdzalne

Własny program i konflikt interesów bez sprzedawcy

Pierwszy wiersz tabeli wygląda na wolny od problemu z kolumny ostatniej, bo nie ma w nim dostawcy. Jeden konflikt jednak pozostaje i bywa dotkliwszy, bo nie ma drugiej strony, która by go nazwała. Autor reguły i osoba ją sprawdzająca to ta sama osoba, a wynik sprawdzenia rozstrzyga o losie pracy, którą ta osoba już wykonała.

Skutek jest konkretny i daje się wskazać w jednym miejscu procedury: liczba sprawdzonych wariantów, o której mówi sekcja 6, jest przy własnym programie znana dokładnie i prawie nigdy nie bywa zapisywana. Nie z niechęci — po prostu w chwili sprawdzania szóstego wariantu nikt nie uważa siebie za osobę przeglądającą warianty. Zapis prowadzony od pierwszego przebiegu kosztuje jedną linijkę i jest najtańszą rzeczą, która ten konflikt ogranicza; odtworzenie tej liczby po fakcie już go nie ogranicza, o czym mówi sekcja 9.

Półautomat i luka, którą zostawia

Układ, w którym program ocenia warunek, a decyzję o zleceniu podejmuje człowiek, bywa przedstawiany jako rozwiązanie łączące zalety obu trybów. Z punktu widzenia oceny wyniku ma jednak własność, którą trzeba nazwać: reguła jest zapisana w połowie. Warunek wejścia jest rozstrzygalny, bo policzył go program. Reguła wyboru między sygnałami — czyli to, dlaczego jeden został wykonany, a drugi nie — nie istnieje w postaci zapisanej.

Konsekwencja jest ta sama co przy ewidencji ręcznej z sekcji 1 i warto ją dopowiedzieć w tym miejscu, bo tu bywa mniej widoczna. Wynik takiego układu nie jest wynikiem reguły zapisanej w programie; jest wynikiem tej reguły złożonej z niezapisaną regułą wyboru. Testowanie pierwszej z nich nie mówi nic o wyniku złożenia. Jeżeli układ ma być oceniany, druga reguła musi zostać zapisana — a kryterium tego zapisu, czyli identyczny odczyt przez dwie osoby, podaje artykuł 8.1.

Nie znaczy to, że układ jest wadliwy. Znaczy, że jego wynik ma status wyniku uznaniowego, a nie wyniku systemu — i tak trzeba go opisywać, także wtedy, gdy warunek liczy program.

Odwzorowanie cudzych transakcji

Przy odwzorowaniu cudzych transakcji widoczny jest wyłącznie ostatni element łańcucha: zawarte transakcje. Reguła, która je wywołała, nie jest widoczna, a więc nie da się jej odtworzyć ani sprawdzić na innym okresie. To rozstrzyga o statusie wyniku: jest to zapis przebiegu, a nie test, i nie da się z niego zbudować żadnej z odpowiedzi wymaganych przez kartę z sekcji 8.

Dochodzi do tego różnica wykonania. Odwzorowanie następuje po sygnale pochodzącym z innego rachunku, więc zlecenie trafia na rynek później niż pierwowzór, a wolumen bywa przeskalowany. Obie różnice wchodzą do wyniku odwzorowującego, a nie do wyniku pierwowzoru — czyli publikowany przebieg opisuje coś innego niż to, co otrzyma odwzorowujący. Skala rozbieżności zależy od charakterystyki reguły: przy celu liczonym w dziesiątkach pipsów bywa nieistotna, przy celu kilkupipsowym potrafi przekroczyć cały zakładany zysk, co pokazuje rachunek kosztu wobec celu z artykułu 8.3.

Kwestie prawne — status usługi, obowiązki podmiotu ją prowadzącego i zakres ochrony klienta — należą do działu 13 i nie są przedmiotem tego tekstu. Tutaj liczy się jedno: przy odwzorowaniu odpada możliwość sprawdzenia reguły, a zostaje wyłącznie możliwość zadania pytań z sekcji 9.

3. Warunek zerowy: czy regułę da się odtworzyć na danych

Zanim padnie pytanie o wynik, trzeba odpowiedzieć na pytanie wcześniejsze: czy dwa niezależne odtworzenia tego samego zapisu na tym samym zbiorze notowań dają tę samą listę transakcji. Jeżeli nie dają, wszystko dalsze traci sens, bo porównywane byłyby wyniki dwóch różnych reguł nazwanych tak samo.

Kryterium jednoznaczności zapisu — dwie osoby, ten sam odczyt — ustanawia artykuł 8.1 i pokazuje tam na osiemnastopunktowym zapisie, jak wygląda reguła, która to kryterium spełnia. Tutaj potrzebna jest jego wersja mocniejsza, właściwa dla testu: nie „dwie osoby odczytają identycznie", lecz „dwa programy napisane niezależnie z tego samego zapisu wygenerują identyczną listę". Różnica między tymi dwoma sformułowaniami jest praktyczna. Człowiek czytający regułę wypełnia luki tym, co uważa za oczywiste, i zwykle wypełnia je tak samo jak autor. Program luk nie wypełnia — wymusza rozstrzygnięcie, a rozstrzygnięcie zapada tam, gdzie siedzi programista, i bywa różne.

Test zgodności dwóch odtworzeń

Procedura jest prosta i nie wymaga niczego poza dwoma wykonaniami. Ta sama reguła, ten sam plik notowań, ten sam okres. Porównuje się nie wyniki zbiorcze, lecz listy: znacznik czasu wejścia, kierunek, cenę wejścia, znacznik czasu wyjścia, cenę wyjścia i podstawę wyjścia. Miarą zgodności jest udział transakcji obecnych na obu listach w sumie transakcji unikatowych.

Rachunek: co znaczy zgodność 81,8%.

Założenia. Ten sam zapis reguły, ten sam zbiór świec, ten sam okres. Odtworzenie A zawarło 62 transakcje, odtworzenie B — 58. Transakcji zgodnych co do znacznika czasu wejścia i kierunku: 54. Wartości ilustracyjne; status wyniku: przykład rachunkowy pokazujący skalę skutku, a nie pomiar rozbieżności między jakimikolwiek dwoma programami.

Rachunek zgodności. Liczba transakcji unikatowych: 62 + 58 − 54 = 66. Zgodność: 54 ÷ 66 = 0,8182 = 81,8%. Rozbieżnych: 12 z 66, czyli 18,2% — osiem obecnych wyłącznie u A i cztery wyłącznie u B.

Rachunek skutku. Przyjmijmy, że 54 transakcje wspólne dają średnio +0,30 pipsa, osiem transakcji obecnych wyłącznie u A daje średnio −1,50 pipsa, a cztery obecne wyłącznie u B — średnio +2,00 pipsa. Wtedy:
odtworzenie A: (54 × 0,30 + 8 × (−1,50)) ÷ 62 = (16,2 − 12,0) ÷ 62 = 4,2 ÷ 62 = +0,068 pipsa na transakcję;
odtworzenie B: (54 × 0,30 + 4 × 2,00) ÷ 58 = (16,2 + 8,0) ÷ 58 = 24,2 ÷ 58 = +0,417 pipsa na transakcję.
Iloraz: 0,417 ÷ 0,068 = 6,16.

Moment dostępności i wykonanie. Porównanie jest wykonywane po zakończeniu obu przebiegów i nie wymaga żadnych danych rynkowych poza tymi, które weszły do testu. Ceny wykonania w obu odtworzeniach pochodzą z tego samego modelu, więc rozbieżność nie ma źródła wykonawczego — ma źródło wyłącznie w odczycie reguły.

Wynik i interpretacja. Osiemnaście procent rozbieżności w liście transakcji wystarczyło, żeby średni wynik różnił się przeszło sześciokrotnie. Wielkość ilorazu zależy oczywiście od przyjętych średnich i przy innych liczbach byłaby inna; niezmienne jest to, że rozbieżność listy przenosi się na wynik nieproporcjonalnie, bo transakcje sporne rzadko są przeciętne. Sporne bywają właśnie te, które powstały w sytuacjach brzegowych, a sytuacje brzegowe mają własny rozkład wyników. Zastrzeżenia: miara zgodności liczona na znaczniku czasu wejścia pomija rozbieżności ceny wykonania i podstawy wyjścia przy transakcjach formalnie wspólnych; pełne porównanie obejmuje wszystkie sześć pól.

Gdzie powstają rozbieżności

Miejsca, w których dwa odtworzenia rozjeżdżają się najczęściej, dają się wyliczyć, bo są to zawsze te same rodzaje pytań. Każde z nich ma rozwiązanie w jednym zdaniu zapisu — i każde bez tego zdania rozstrzyga się samo, w sposób niekontrolowany.

  • Granice okna. Czy oceniana świeca wchodzi do okna, z którego liczony jest poziom odniesienia? Przy oknie dwudziestoświecowym różnica jednej świecy przesuwa poziom o tyle, ile wynosi zakres tej jednej świecy — czyli czasem o zero, a czasem o wielokrotność zakładanego celu.
  • Ostra czy nieostra nierówność. Czy warunek „cena powyżej poziomu" obejmuje przypadek równości? Na danych o skończonej liczbie miejsc po przecinku równość zdarza się częściej, niż sugeruje intuicja, bo ceny są zaokrąglone do punktu notowania.
  • Sygnał przy otwartej pozycji. Czy jest pomijany, czy powiększa pozycję, czy zastępuje poprzednią? Trzy odpowiedzi dają trzy różne listy transakcji z tego samego strumienia sygnałów.
  • Sygnał na tej samej świecy, na której pozycja jest zamykana. Czy pozycja zdążyła się zamknąć przed jego oceną? Odpowiedź zależy od kolejności, której świeca nie zawiera.
  • Braki w danych. Czy warunek jest oceniany, gdy w oknie brakuje świecy? Uzupełnianie braku wartością sąsiednią i pominięcie oceny dają różne listy, a oba bywają wybierane bez świadomości, że to wybór.
  • Identyfikacja świec i zmiana czasu. Czy świece są identyfikowane etykietą czasu źródła, czy czasem uniwersalnym? W dobie zdublowanej po zmianie czasu pierwsza konwencja tworzy dwie świece o tej samej etykiecie, a jedno z odtworzeń przetworzy jedną z nich dwukrotnie.
  • Pozycja bez rozstrzygnięcia. Czy istnieje wyjście po upływie czasu, a jeżeli tak, to czy licznik biegnie w świecach istniejących, czy w godzinach zegarowych? Weekend rozdziela te dwie odpowiedzi na dwie różne daty zamknięcia.
  • Koniec okresu testu. Co dzieje się z pozycją otwartą w ostatniej świecy? Zamknięcie jej po ostatniej cenie, pominięcie całej transakcji i pozostawienie jej jako otwartej dają trzy różne sumy.

Lista nie jest zamknięta i nie da się jej zamknąć, bo każda nowa konstrukcja reguły dokłada własne przypadki brzegowe. Da się natomiast zamknąć procedurę: dopóki dwa niezależne odtworzenia nie dają identycznej listy, rozbieżność jest lokalizowana i uzupełniana zdaniem w zapisie, a nie poprawką w jednym z programów. Poprawka w programie usuwa objaw i zostawia lukę w regule; zdanie w zapisie usuwa lukę.

Warto przy tym oddzielić dwie sprawy, które w praktyce zlewają się w jedną. Obiektywizacja reguły — czyli przełożenie obserwacji wykresu na warunek dający się policzyć — jest techniką analityczną i opisuje ją artykuł 5.12. Sprawdzenie, czy tak zapisana reguła daje się odtworzyć identycznie przez dwa niezależne programy, jest czynnością metodologiczną i należy tutaj. Pierwsza odpowiada na pytanie „czy to da się policzyć", druga na pytanie „czy policzy się zawsze tak samo".

Reguła oceniana na zamknięciu i cena reakcji

Osobne miejsce zajmuje w tym zestawieniu odstęp między momentem, w którym warunek stał się znany, a momentem, w którym zlecenie może zostać wykonane. Reguła oparta na zamknięciu świecy jest znana dopiero po zamknięciu; cena, po której da się zareagować, jest ceną następną, a nie ceną zamknięcia. Rozróżnienie to wprowadza artykuł 8.1 i nie ma powodu powtarzać go tutaj w warstwie pojęciowej.

Ma natomiast powód wersja testowa tego rozróżnienia, bo w symulacji objawia się ono inaczej niż w handlu. Program przetwarzający świece po kolei ma w chwili oceny dostęp do całej świecy, także do jej zamknięcia, a często i do świec następnych. Jeżeli zlecenie zostanie zaksięgowane po cenie zamknięcia ocenianej świecy, to test wykorzystał informację, która w chwili decyzji nie była dostępna. Zjawisko nazywa się użyciem danych z przyszłości, a jego istota jest zawsze taka sama: wielkość wchodząca do decyzji stała się znana później niż moment decyzji.

Wersja najbardziej kosztowna dotyczy nie wejścia, lecz wyjścia i pojawia się przy każdej regule, w której poziom wyjścia zależy od czegoś liczonego z okna obejmującego bieżącą świecę. Jeżeli okno obejmuje świecę, w której pozycja jest zamykana, to poziom zamknięcia zawiera informację o tej świecy — a więc pośrednio o wyniku transakcji. Skutek bywa efektowny i całkowicie fałszywy: reguła wychodzi tuż przed niekorzystnym ruchem, systematycznie i na całej próbie.

Sprawdzenie jest jednym pytaniem zadanym każdej wielkości wchodzącej do decyzji: kiedy ta liczba była znana? Odpowiedź „na zamknięciu świecy, na której podejmowana jest decyzja" jest dopuszczalna wyłącznie wtedy, gdy zlecenie jest księgowane po cenie następującej po tym zamknięciu. Odpowiedź „nie wiem" oznacza, że test nie ma statusu i trzeba go powtórzyć po uzupełnieniu zapisu.

4. Dane, strona ceny i reguła intrabar

Test jest funkcją trzech rzeczy: reguły, danych i modelu kosztów. Poprzednia sekcja dotyczyła pierwszej. Ta dotyczy dwóch pozostałych, a zaczyna się od stwierdzenia, które w materiałach o testowaniu bywa pomijane: dane nie są jedne. Ten sam instrument w tym samym okresie ma tyle zapisów, ile źródeł, a różnice między nimi nie są zaokrągleniem.

Co musi być wiadome o danych

Zbiór notowań opisuje się wielkościami, z których żadnej nie da się wywnioskować z pozostałych.

Źródło i jego wersja. Zapis pochodzi od konkretnego dostawcy i bywa poprawiany po fakcie — braki są uzupełniane, błędne notowania korygowane. Test wykonany przed korektą i po niej to dwa różne testy. Reprodukowalność wymaga zapisania nie tylko nazwy źródła, ale i daty pobrania.

Strona ceny. Zapis może zawierać stronę kupna, stronę sprzedaży, obie albo ich średnią. Rozróżnienie to omawia dział 2; w teście ma skutek arytmetyczny opisany niżej.

Rozdzielczość. Zapis świecowy podaje cztery liczby na jednostkę czasu: otwarcie, maksimum, minimum i zamknięcie. Zapis o rozdzielczości pojedynczych zmian ceny podaje każdą z nich osobno. Pierwszy nie zawiera kolejności zdarzeń wewnątrz jednostki, drugi zawiera — i na tym polega cała różnica między nimi dla testu.

Kompletność. Brakujące jednostki czasu, zdublowane znaczniki i przerwy wynikające z przestojów po stronie źródła zmieniają listę momentów oceny. Sposób postępowania z brakiem musi być zapisany, bo inaczej rozstrzyga go domyślne zachowanie narzędzia.

Zmiany w uniwersum instrumentów. Jeżeli test obejmuje więcej niż jeden instrument, trzeba wiedzieć, czy zbiór instrumentów był w całym okresie taki sam. Instrument, którego notowania zostały wycofane, znika ze zbioru razem ze swoim wynikiem — i to jest ten sam mechanizm, który w sekcji 2 dotyczył zestawu ofert.

Strona ceny: skutek arytmetyczny

Reguła bywa liczona po jednej stronie rynku, a zlecenie wykonywane po drugiej. Pozycja długa otwiera się po cenie sprzedaży oferowanej uczestnikowi, a zamyka po cenie kupna; różnica między nimi jest płacona raz na obrót zamknięty. Jeżeli symulacja wchodzi i wychodzi po tej samej stronie, ta różnica z rachunku wypada w całości.

Nie jest to drobiazg zależny od skali. Pomijany składnik jest stały na transakcję, więc jego suma rośnie liniowo z liczbą transakcji, a jego udział w wyniku rośnie odwrotnie proporcjonalnie do długości celu. Rachunek tej zależności przeprowadza w całości artykuł 8.3 i tam należy szukać jej rozwinięcia; tutaj potrzebna jest wyłącznie liczba, którą trzeba dodać do sumy testu.

Reguła intrabar: przypadek, w którym dane milczą

Świeca podaje maksimum i minimum, ale nie podaje ich kolejności. Dopóki w obrębie jednej świecy zostaje osiągnięty tylko jeden poziom wyjścia, nie ma to znaczenia. Kiedy zakres świecy pokrywa oba poziomy, wynik transakcji zależy wyłącznie od kolejności — a tej w danych nie ma.

Każde możliwe rozstrzygnięcie jest wyborem projektanta testu, a nie ustaleniem wynikającym z danych. Wariant optymistyczny przyjmuje, że pierwszy został osiągnięty poziom celu. Wariant konserwatywny przyjmuje, że pierwszy został osiągnięty poziom obronny. Wariant trzeci polega na sięgnięciu po zapis o wyższej rozdzielczości i jest jedynym, który rozstrzyga sprawę faktami, a nie konwencją. Skala różnicy między dwoma pierwszymi decyduje o tym, czy trzeci jest konieczny.

Rachunek: ile waży konwencja intrabar.

Założenia. Reguła z celem 30 pipsów i wyjściem obronnym 20 pipsów, oba liczone od ceny wykonania. Dane świecowe, jedna strona ceny, okres dający 400 zamkniętych transakcji. W 46 z nich zakres pojedynczej świecy pokrył oba poziomy. Suma wyniku 354 transakcji rozstrzygalnych: +180 pipsów. Spread pominięty w symulacji, bo wejście i wyjście zaksięgowano po tej samej stronie: 0,80 pipsa na transakcję. Wszystkie liczby to wartości ilustracyjne; status wyniku: przykład rachunkowy, nie wynik testu.

Udział przypadków nierozstrzygalnych. 46 ÷ 400 = 11,5%.

Wariant optymistyczny. 180 + 46 × 30 = 180 + 1380 = +1560 pipsów; średnio 1560 ÷ 400 = +3,90 pipsa na transakcję.

Wariant konserwatywny. 180 − 46 × 20 = 180 − 920 = −740 pipsów; średnio −740 ÷ 400 = −1,85 pipsa na transakcję.

Rozpiętość. 46 × (30 + 20) ÷ 400 = 2300 ÷ 400 = 5,75 pipsa na transakcję. Cała ta wielkość pochodzi z konwencji, a nie z danych.

Po dodaniu pominiętego spreadu. Koszt obciąża każdą zamkniętą transakcję, więc dla 354 transakcji rozstrzygalnych wynosi 354 × 0,80 = 283,2 pipsa, a dla wszystkich 400 — 400 × 0,80 = 320 pipsów. Suma transakcji rozstrzygalnych spada z +180 do 180 − 283,2 = −103,2 pipsa. Wariant optymistyczny: 1560 − 320 = +1240 pipsów, czyli +3,10 pipsa na transakcję. Wariant konserwatywny: −740 − 320 = −1060 pipsów, czyli −2,65 pipsa.

Moment dostępności i wykonanie. Podział na transakcje rozstrzygalne i nierozstrzygalne jest wykonywany po teście, przez sprawdzenie dla każdej transakcji, czy zakres którejś ze świec objął oba poziomy. Rozstrzygnięcie faktyczne wymagałoby zapisu o rozdzielczości wyższej niż świecowa i dotyczyłoby wyłącznie tych 46 przypadków; pozostałe 354 są niezależne od konwencji.

Wynik i interpretacja. Jedenaście i pół procenta transakcji odwraca znak wyniku całości. Test, który nie podaje przyjętej konwencji intrabar, nie podaje więc informacji drugorzędnej — nie podaje informacji rozstrzygającej. Zastrzeżenia: przyjęto, że w każdej ze świec spornych oba poziomy były osiągalne w całości, co pomija przypadek, w którym cena dotknęła poziomu bez możliwości realizacji; pominięto też poślizg, który w wariancie konserwatywnym powiększyłby stratę.

Koszt 0,80 pipsa na zamkniętą transakcję odjęty od trzech sum tego samego testu. Suma transakcji rozstrzygalnych zmienia znak z +180 na −103,2 pipsa, a wariant konserwatywny pogłębia się z −740 do −1060 pipsów — wartości ilustracyjne.
Wynik brutto i wynik po doliczeniu kosztu dla trzech sum tego samego testu Wykres słupkowy o trzech grupach po dwa słupki. Oś pionowa jest liniowa i skalibrowana, wyrażona w pipsach jako suma wyniku za cały okres, od minus 1200 do plus 1600, z liniami siatki co 400; wszystkie słupki wyprowadzone są od zera. Oś pozioma jest kategorialna, o równych odstępach. Grupa pierwsza, 354 transakcje rozstrzygalne: brutto plus 180 pipsów, po doliczeniu kosztu 283,2 pipsa wynik wynosi minus 103,2 pipsa. Grupa druga, 400 transakcji w wariancie optymistycznym: brutto plus 1560 pipsów, po doliczeniu kosztu 320 pipsów wynik wynosi plus 1240 pipsów. Grupa trzecia, 400 transakcji w wariancie konserwatywnym: brutto minus 740 pipsów, po doliczeniu kosztu 320 pipsów wynik wynosi minus 1060 pipsów. Koszt wynosi 0,80 pipsa na każdą zamkniętą transakcję. Słupki wyniku brutto mają kreskowanie ukośne granatowe, słupki wyniku po koszcie wypełnienie rdzawe pełne. Wartości ilustracyjne.

Z rachunku wynika procedura, a nie ostrzeżenie. Udział przypadków spornych liczy się zawsze i podaje razem z wynikiem, bo jest on miarą tego, ile w wyniku pochodzi z danych, a ile z konwencji. Przy udziale bliskim zeru wybór konwencji nie ma znaczenia i wystarczy go zapisać. Przy udziale rzędu kilkunastu procent test wykonany na samych świecach nie rozstrzyga niczego i trzeba albo sięgnąć po wyższą rozdzielczość, albo podać obie wersje wyniku jako granice przedziału. Podanie jednej z nich bez wskazania, która to jest, jest natomiast zapisem wyniku, którego nie da się zinterpretować.

Model kosztów w symulacji

Koszt wchodzi do symulacji jako kilka oddzielnych wielkości i każda z nich ma inny status. Spread jest obserwowalny w chwili decyzji i bywa zapisany w danych; jeżeli nie jest, przyjmuje się wartość stałą i zapisuje to jako założenie. Prowizja jest znana z warunków rachunku, ale jest kwotą, nie odległością ceny, więc jej przeliczenie na jednostkę używaną w teście wymaga wartości pipsa dla przyjętego wolumenu — sposób przeliczenia podaje dział 2. Poślizg nie jest obserwowalny przed decyzją i w symulacji jest zawsze wielkością przyjętą, a nie zmierzoną.

Ostatnie zdanie ma konsekwencję, którą warto rozwinąć, bo jest źródłem rozbieżności między testem a wynikiem późniejszym. Symulacja może pominąć poślizg, przyjąć go jako stałą albo losować z zadanego rozkładu. Trzy warianty dają trzy różne wyniki, a żaden z nich nie jest pomiarem. Rozkład rzeczywisty jest przy tym niesymetryczny: po stronie wyjścia obronnego zlecenie uruchamia się wtedy, gdy cena porusza się przeciwko pozycji, więc odchylenia po tej stronie są przeciętnie większe i mają dłuższy ogon. Symulacja z poślizgiem symetrycznym zaniża więc koszt systematycznie, a nie losowo.

Do tego dochodzi rzecz, której model kosztów nie obejmie w ogóle: zlecenie odrzucone i zlecenie zrealizowane częściowo. Pierwsze nie generuje kosztu, ale usuwa transakcję z listy — i usuwa ją nielosowo, bo odrzucenia skupiają się w momentach szybkiego ruchu. Drugie zmienia wolumen, a przy prowizji z kwotą minimalną także koszt wyrażony w pipsach. Oba przypadki symulacja pomija, jeżeli nie zostały jawnie wprowadzone, więc test jest w tym zakresie oszacowaniem od strony korzystnej. Rachunkowe skutki obu przypadków rozwija artykuł 8.3.

Trzy wymienione składniki nie wyczerpują modelu, jeżeli reguła utrzymuje pozycję przez godzinę rolowania. Wtedy do rachunku wchodzi czwarty, narastający z liczbą nocy, a nie z liczbą transakcji, i mający własną konwencję dnia potrójnego naliczenia. Symulacja, która go pomija, zawyża wynik reguł o dłuższym horyzoncie i nie zawyża wyniku reguł zamykających pozycję w ciągu dnia — czyli wprowadza różnicę między nimi, której źródłem jest wyłącznie model kosztów. Rachunek naliczeń dla kilku nocy przeprowadza artykuł 8.5, a dla skali rocznej artykuł 8.6; do testu potrzebne są stamtąd dwie rzeczy — sposób liczenia i informacja, że wartości są parametrem konkretnego pośrednika i konkretnego dnia, więc muszą wejść do symulacji jako założenie z podaną datą, a nie jako stała uniwersalna.

Osobno stoją okna, w których reguła nie powinna działać, a w symulacji działa. Publikacja danych zmienia naraz spread, poślizg i sposób realizacji zleceń oczekujących, więc transakcje z takiego okna mają inny rozkład kosztu niż wszystkie pozostałe; warstwę strategiczną wokół tych okien opisuje artykuł 8.8. Jeżeli reguła zawiera wstrzymanie handlu, symulacja musi je odtworzyć razem z listą wydarzeń i strefą czasową ich godzin — inaczej test obejmuje transakcje, których handel nigdy by nie zawarł. Jeżeli reguła wstrzymania nie zawiera, transakcje z okien publikacji wchodzą do jednej próby z pozostałymi i średnia z tej próby nie opisuje żadnego z dwóch reżimów. Podobnie z godziną zamknięcia dnia handlowego: jest ona wyznaczona czasem serwera, a nie porą lokalną, i reguła zamykająca pozycję przed jej upływem daje w symulacji inną listę transakcji dla każdej przyjętej konwencji — co rozwija artykuł 8.4.

Rachunek na rachunku demonstracyjnym ma tę samą własność i z tego samego powodu: odtwarza spread i prowizję, a poślizgu nie odtwarza w sposób odpowiadający jego rzeczywistemu rozkładowi. Nie jest to więc etap, na którym sprawdza się wynik. Jest to etap, na którym sprawdza się, czy program robi to, co miał robić — a to zupełnie inne pytanie, wracające w sekcji 5.

5. Ścieżka od reguły do wdrożenia z kryterium przejścia

Etapy sprawdzania reguły są opisywane w wielu miejscach, zwykle jako lista czynności. Lista czynności niczego nie rozstrzyga, bo nie mówi, kiedy wolno przejść dalej. Poniżej każdy etap ma przypisane pytanie, na które trzeba odpowiedzieć twierdząco, żeby następny etap miał sens, oraz wskazanie, co robi się przy odpowiedzi przeczącej. Kolejność nie jest umowna: każdy etap zakłada, że poprzedni został zamknięty.

Osiem etapów drogi od zapisu reguły do jej wyłączenia. Przy każdym warunek, którego niespełnienie zatrzymuje przejście dalej.
Osiem etapów sprawdzania reguły z kryterium przejścia Schemat pionowy o ośmiu polach ułożonych jeden pod drugim i połączonych strzałkami w dół. Pola oznaczają kolejno: obiektywizacja zapisu, dane, test na próbie uczącej, walk-forward, forward test, wdrożenie, monitorowanie i wyłączenie. Przy każdym polu po prawej stronie podane jest pytanie rozstrzygające o przejściu do etapu następnego. Kolejno: czy dwa niezależne odtworzenia dają identyczną listę transakcji; czy znane są źródło, wersja, strona ceny, rozdzielczość i sposób obsługi braków; czy udział przypadków o nierozstrzygniętej kolejności wewnątrz świecy jest znany i podany; czy wynik utrzymuje znak w każdym oknie poza próbą uczącą; czy rozkład wykonań odpowiada założeniom testu; czy kryterium wyłączenia zostało zapisane przed pierwszym zleceniem; czy porównywane są te same wielkości co w teście; oraz czy decyzja o wyłączeniu wynika z zapisanego kryterium, a nie z bieżącego wyniku.

Co się dzieje przy odpowiedzi przeczącej

Etap pierwszy. Rozbieżność list oznacza lukę w zapisie, więc uzupełnia się zapis i powtarza oba odtworzenia. Nie wolno wybrać jednego z wyników jako właściwego, bo nie ma kryterium takiego wyboru poza preferencją.

Etap drugi. Brak którejkolwiek z pięciu informacji o danych zatrzymuje test, ponieważ każda z nich wchodzi do wyniku. Uzupełnienie jest czynnością porządkową, nie merytoryczną, i zwykle zajmuje mniej czasu niż spór o to, czy jest potrzebna.

Etap trzeci. Test na próbie, na której reguła powstała, nie jest dowodem i nie miał nim być. Ma jedną funkcję: odsiewa pomysły, które nie działają nawet na danych sprzyjających. Wynik ujemny na tym etapie kończy sprawę; wynik dodatni nie rozstrzyga niczego poza tym, że warto przejść dalej. Sformułowanie „strategia została potwierdzona testem" nie ma na tym etapie żadnego pokrycia. Osobno od samego wyniku stoi warunek przejścia zapisany na schemacie: dopóki udział przypadków o nierozstrzygniętej kolejności wewnątrz świecy nie został policzony i podany razem z wynikiem, nie wiadomo, jaka część tej liczby pochodzi z danych, a jaka z przyjętej konwencji — i etap pozostaje otwarty niezależnie od tego, czy wynik wypadł dodatnio.

Etap czwarty. Procedura przesuwanych okien polega na tym, że parametry są dobierane na oknie wcześniejszym, a wynik odczytywany na oknie następnym, którego przy doborze nie widziano; potem całość przesuwa się o krok i powtarza. Opis procedury i jej wariantów podaje monografia poświęcona ocenie i optymalizacji strategii.[1] Wartość tej konstrukcji polega na tym, że każdy odczyt pochodzi z danych nieużytych do doboru, więc suma odczytów nie jest wynikiem dopasowania. Utrata znaku w części okien nie jest jeszcze rozstrzygnięciem — jest wskazaniem, że wynik zależy od okresu, co bada sekcja 7.

Etap piąty. Sprawdzenie na danych napływających dotyczy czegoś innego niż wszystkie poprzednie: nie jakości reguły, lecz zgodności założeń wykonawczych z tym, co faktycznie się dzieje. Porównuje się rozkład poślizgu przyjęty w symulacji z zaobserwowanym, liczbę zleceń odrzuconych i częściowo zrealizowanych z zerem założonym w teście, a liczbę transakcji na jednostkę czasu z liczbą wynikającą z testu. Rozbieżność w którymkolwiek z tych trzech miejsc oznacza, że test opisywał inny układ.

Etap szósty. Kryterium wyłączenia zapisane po wdrożeniu nie jest kryterium, tylko komentarzem do wyniku. Konstrukcję kryterium i jego własności statystyczne omawia sekcja 10; tutaj wystarczy warunek formalny: musi istnieć, zanim padnie pierwsze zlecenie.

Etap siódmy. Najczęstsza wada monitorowania nie polega na tym, że go nie ma, lecz na tym, że porównuje wielkości nieporównywalne — wynik w walucie rachunku z wynikiem testu w pipsach, wynik po zmianie wolumenu z wynikiem przed nią, wynik z okresu krótszego z wynikiem z okresu dłuższego. Porównanie ma sens wyłącznie w tych samych jednostkach i na tej samej wielkości, czyli zwykle na średnim wyniku transakcji wyrażonym w pipsach.

Etap ósmy. Wyłączenie jest częścią systemu, a nie jego awarią. Reguła bez zapisanego warunku zakończenia nie jest kompletna w tym samym sensie, w jakim niekompletna jest reguła bez wyjścia obronnego — brakuje jej rozstrzygnięcia dla stanu, który na pewno wystąpi. Warunek przejścia dotyczy tu źródła decyzji: wyłączenie podjęte pod wpływem bieżącego wyniku, a nie zapisanego wcześniej progu, cofa do etapu szóstego, bo oznacza, że kryterium albo nie powstało przed pierwszym zleceniem, albo zostało w praktyce zastąpione decyzją uznaniową.

Procedura przesuwanych okien: parametry dobierane na oknie wcześniejszym, wynik odczytywany na oknie następnym, którego przy doborze nie widziano, a następnie przesunięcie całości o jeden krok
Procedura przesuwanych okien: parametry dobierane na oknie wcześniejszym, wynik odczytywany na oknie następnym, którego przy doborze nie widziano, a następnie przesunięcie całości o jeden krok

Ile historii zużywa każdy etap

Ścieżka jest opisana jako sekwencja czynności, ale za każdą z nich stoi zużycie tego samego, skończonego zasobu: dostępnej historii notowań. Warto ten podział zobaczyć w liczbach, bo bywa on jedynym powodem, dla którego cała procedura nie daje się przeprowadzić w zakładanej formie.

Rachunek: co zostaje po podziale historii.

Założenia. Dostępna historia: 60 miesięcy. Procedura przesuwanych okien z oknem doboru parametrów o długości 12 miesięcy i oknem odczytu o długości 3 miesięcy, przesuwanym co 3 miesiące. Reguła generuje średnio 4 zamknięte transakcje miesięcznie. Wszystkie liczby to wartości ilustracyjne; status wyniku: rachunek porządkowy, nie test.

Liczba okien odczytu. Pierwszy odczyt obejmuje miesiące 13–15, ostatni 58–60. Liczba okien: (58 − 13) ÷ 3 + 1 = 16.

Ile historii daje odczyt. 16 × 3 = 48 miesięcy, czyli 48 ÷ 60 = 80,0% całej historii. Pierwsze dwanaście miesięcy nie jest odczytane nigdy, bo służy wyłącznie doborowi parametrów dla okna pierwszego.

Liczba transakcji. Odczytanych: 48 × 4 = 192. W pojedynczym oknie doboru parametrów: 12 × 4 = 48.

Moment dostępności i wykonanie. Podział jest ustalany przed pierwszym przebiegiem i musi być zapisany, bo wchodzi do statusu każdej podanej liczby. Zmiana długości któregokolwiek z okien po zobaczeniu wyników jest kolejnym użyciem okna kontrolnego i podlega uwadze z sekcji 6.

Wynik i interpretacja. Dwie liczby z tego rachunku warto zestawić. Sto dziewięćdziesiąt dwie transakcje odczytane poza próbą uczącą to cały materiał, jakim dysponuje ocena — i to właśnie ta liczba, a nie długość historii w latach, wchodzi do rachunku niepewności z artykułu 8.2 oraz do kryterium wyłączenia z sekcji 10. Czterdzieści osiem transakcji przypadających na jedno okno doboru to natomiast cały materiał, na którym rozstrzyga się wybór między sprawdzanymi wartościami parametru; przy sześciu wartościach jest to wybór jednej z sześciu na podstawie czterdziestu ośmiu obserwacji. Zastrzeżenia: średnia 4 transakcje miesięcznie jest wielkością przyjętą, a w rzeczywistości zmienia się między oknami wraz z warunkami; okna o mniejszej liczbie transakcji dają mniej wiarygodny dobór, a ich udział w sumie jest mimo to taki sam.

Wnioski z tego rachunku dotyczą projektu, a nie wykonania. Wydłużenie okna doboru parametrów poprawia jakość doboru i skraca odczyt; skrócenie działa odwrotnie. Rozstrzygnięcia tego kompromisu nie da się wyprowadzić z danych, bo obie strony mierzy się w innych jednostkach — trzeba go po prostu zapisać razem z uzasadnieniem. Druga rzecz jest twardsza: jeżeli dostępna historia daje po podziale kilkadziesiąt transakcji odczytanych poza próbą uczącą, to procedura została przeprowadzona formalnie, a jej wynik nie ma mocy rozstrzygającej — i lepiej powiedzieć to wprost, niż podać liczbę bez tej informacji.

Cztery statusy wyniku, których nie wolno mieszać

Każda liczba opisująca wynik ma status wynikający z tego, skąd pochodzi, i status ten trzeba podawać razem z liczbą. Wynik z próby, na której regułę zbudowano, mówi o dopasowaniu do tej próby. Wynik z okna, którego przy doborze parametrów nie widziano, mówi o zachowaniu reguły na danych nowych, ale wciąż historycznych. Odczyt z procedury przesuwanych okien należy w tym podziale do tej samej kategorii, bo powstaje w ten sam sposób — na danych historycznych nieużytych do doboru parametrów; odróżnia go wyłącznie to, że dobór powtarza się w każdym oknie zamiast raz na całą próbę, a to zmienia liczbę odczytów, nie ich status. Wynik z danych napływających mówi dodatkowo o wykonaniu, bo dopiero on zawiera rzeczywisty poślizg, rzeczywiste odrzucenia i rzeczywisty rozkład kosztu. Rachunek rzeczywisty jest czwartym statusem i różni się od trzeciego tym, że jego wynik jest już poniesiony.

Mieszanie tych statusów daje zdania pozornie mocne i pozbawione treści: „system wypracował tyle a tyle" bez wskazania, na której z czterech kategorii. Ponieważ różnica między pierwszą a czwartą bywa większa niż różnica między dwiema różnymi regułami, brak statusu unieważnia całą liczbę.

Cztery statusy wyniku i miejsce ścieżki, w którym każdy z nich powstaje. Odczyt z przesuwanych okien należy do statusu drugiego, a nie do osobnej kategorii.
Cztery statusy wyniku i etap ścieżki, na którym każdy powstaje Schemat poziomy o czterech polach ustawionych obok siebie i połączonych strzałkami w prawo. Nad każdym polem podany jest etap ścieżki z sekcji piątej, na którym dana liczba powstaje. Pole pierwsze, etap trzeci: próba ucząca, czyli dane użyte do doboru; mówi o dopasowaniu reguły do tej właśnie próby i nie jest dowodem, bo odsiewa jedynie pomysły, które nie działają nawet na danych sprzyjających. Pole drugie, etap czwarty: poza próbą uczącą, dane wciąż historyczne nieużyte do doboru; mówi o zachowaniu reguły na danych nowych, ale wciąż historycznych, i tu należy również odczyt z przesuwanych okien. Pole trzecie, etap piąty: dane napływające, wynik jeszcze nieponiesiony; mówi dodatkowo o wykonaniu, bo zawiera rzeczywisty poślizg, rzeczywiste odrzucenia i rzeczywisty rozkład kosztu. Pole czwarte, etapy od szóstego do ósmego: rachunek rzeczywisty, wynik już poniesiony; różni się od statusu trzeciego wyłącznie tym, że wynik został już poniesiony. Pod polami dwie uwagi: odczyt z przesuwanych okien ma status drugi, bo powtórzenie doboru parametrów w każdym oknie zmienia liczbę odczytów, a nie ich status; oraz zakaz uśredniania liczb o różnych statusach, ponieważ różnica między statusem pierwszym a czwartym bywa większa niż różnica między dwiema regułami.

6. Katalog pułapek testu

Pułapki testowania wymienia się zwykle z nazwy, co pozwala je rozpoznać w cudzym tekście i nie pozwala rozpoznać we własnym teście. Poniższa tabela podaje dla każdej mechanizm — czyli to, przez co konkretnie wynik zostaje zawyżony — sposób ograniczenia oraz część efektu, która pozostaje mimo zastosowania tego sposobu. Ostatnia kolumna jest najważniejsza, bo żadna z tych pułapek nie daje się usunąć w całości.

PułapkaMechanizm zawyżeniaJak ograniczyćCzego to nie usuwa
Użycie danych z przyszłości Do decyzji wchodzi wielkość, która stała się znana później niż moment decyzji — najczęściej zamknięcie ocenianej świecy albo poziom liczony z okna obejmującego świecę wyjścia Dla każdej wielkości wchodzącej do decyzji zapisać moment, w którym była znana; księgować zlecenie po cenie następującej po tym momencie Przypadków pośrednich: dane skorygowane po fakcie zawierają informację, której w czasie rzeczywistym nie było, a korekta nie jest widoczna w zapisie
Zmiana wartości historycznych Wielkość liczona na bieżąco przyjmuje jedną wartość, a odczytana po czasie — inną; test widzi wersję późniejszą, handel widział wcześniejszą Sprawdzić dla każdej wielkości pochodnej, czy jej wartość na danej świecy zmienia się po pojawieniu się świec następnych Wielkości pochodzących ze źródeł zewnętrznych, które są rewidowane; ich wersja pierwotna bywa niedostępna
Obciążenie przeżywalności Zbiór instrumentów albo zbiór reguł zawiera wyłącznie te, które dotrwały do momentu badania; te, które zniknęły, wypadły razem ze swoim wynikiem Odtworzyć skład uniwersum na każdy moment okresu, a nie na moment badania Zniknięć nieudokumentowanych; przy cudzych zestawieniach — całości efektu, bo skład historyczny nie jest znany odbiorcy
Wybór wariantu po wyniku Reguła powstaje przez przeglądanie wariantów aż do znalezienia dobrego; wynik wybranego jest wtedy maksimum z rozkładu, a nie jego wartością przeciętną Zapisać liczbę sprawdzonych wariantów przed doborem i podać ją razem z wynikiem; ocena istotności musi tę liczbę uwzględniać[2] Wariantów sprawdzonych i zapomnianych oraz tych, które ktoś sprawdził wcześniej i opisał — cudza selekcja jest niepoliczalna
Przeoptymalizowanie Parametry są dobierane tak, by odwzorować szczegóły jednej próby; im więcej swobodnych parametrów i im mniejsza próba, tym większa część wyniku pochodzi z tego odwzorowania Ograniczyć liczbę swobodnych parametrów; odczytywać wynik z okna nieużytego do doboru; wybierać obszar stabilny zamiast pojedynczego maksimum[3] Dopasowania powstałego przez wielokrotne przechodzenie przez ten sam podział próby — po kilku iteracjach okno kontrolne przestaje być kontrolne
Dopasowanie do okresu Okres testu zawiera przewagę jednego rodzaju warunków; reguła zgodna z tymi warunkami wypada dobrze bez związku z jej konstrukcją Podzielić okres na rozłączne podokresy i odczytać wynik w każdym z osobna, łącznie z położeniem najlepszego parametru Ograniczenia długością dostępnej historii; podokresy pozostają fragmentami tego samego, jednego przebiegu
Zależność transakcji Transakcje skupiają się w tych samych oknach, ruchach i instrumentach; liczba wierszy w ewidencji przewyższa liczbę niezależnych obserwacji, więc niepewność jest zaniżona Oszacować wielkość skupień z ewidencji i wprowadzić poprawkę do niepewności albo zastosować podział blokowy; rozkład aktywności w dobie opisuje dział 4 Zależności między instrumentami silnie skorelowanymi, której podział czasowy nie wychwytuje
Niedomodelowany koszt Pominięty spread po właściwej stronie, poślizg przyjęty jako symetryczny, brak zleceń odrzuconych i częściowo zrealizowanych; wszystkie trzy błędy działają w tę samą stronę Wprowadzić koszt jako trzy oddzielne składniki i powtórzyć test przy koszcie podwyższonym, a nie tylko przy przyjętym Ogona rozkładu poślizgu, którego z żadnej symulacji nie da się wyprowadzić — jest on wielkością obserwowaną, nie modelowaną
Konwencja intrabar Wynik świec, w których zakres pokrył oba poziomy wyjścia, zależy od przyjętej kolejności, której dane nie zawierają Policzyć udział takich przypadków i podać obie wersje wyniku; przy dużym udziale sięgnąć po wyższą rozdzielczość Niepewności co do możliwości realizacji przy dotknięciu poziomu — wyższa rozdzielczość podaje kolejność, ale nie wykonanie
Mieszanie statusów wyniku Liczby o różnym pochodzeniu trafiają do jednego zestawienia; wynik z próby uczącej podnosi średnią zestawienia obejmującego też okna kontrolne Przypisać status każdej liczbie i nigdy nie uśredniać liczb o różnych statusach Nieporównywalności okresów o różnej długości i różnej liczbie transakcji, która pozostaje nawet przy poprawnym oznaczeniu

Czwarta pozycja zasługuje na osobne zdanie, bo jej mechanizm bywa mylony z nieuczciwością, a jest zjawiskiem czysto rachunkowym. Jeżeli przegląda się wiele wariantów reguły na tym samym zbiorze danych, to najlepszy z nich wypadnie dobrze także wtedy, gdy żaden nie ma przewagi — maksimum z wielu losowych wielkości jest większe od każdej z nich z osobna. Formalne ujęcie tego problemu i procedurę testu uwzględniającą całą przeglądaną rodzinę reguł podał White.[2] Praktyczna konsekwencja jest prosta: liczba sprawdzonych wariantów jest częścią wyniku i musi być podana razem z nim.

Skala problemu rośnie szybciej, niż podpowiada intuicja. Analiza progów istotności w badaniach finansowych wskazuje, że przy dużej liczbie testowanych zależności zwyczajowe progi przepuszczają znaczną część wyników fałszywie dodatnich, a rozsądny próg musi być wyraźnie wyższy.[4] Praca ta dotyczy badań nad przekrojem stóp zwrotu na rynku akcji, a nie testowania reguł na rynku walutowym, więc nie przenosi się wprost — ilustruje jednak ten sam mechanizm i pokazuje, że korekta nie jest kosmetyczna.

Dlaczego okno kontrolne zużywa się przy powtarzaniu

Jedna z pozycji tabeli wymaga rozwinięcia, bo dotyczy błędu popełnianego w dobrej wierze przez kogoś, kto zna wszystkie pozostałe. Podział próby na część, na której dobiera się parametry, i część, na której odczytuje się wynik, działa dokładnie raz. Przy drugim przejściu — po zmianie reguły podyktowanej słabym wynikiem na oknie kontrolnym — to okno przestaje być kontrolne, bo weszło do procesu doboru. Formalnie pozostaje odrębnym zbiorem danych, praktycznie stało się częścią próby uczącej.

Po kilku takich iteracjach obie części pełnią tę samą funkcję, a wynik odczytany z drugiej z nich jest wynikiem in-sample noszącym etykietę out-of-sample. Zjawisko jest tym silniejsze, im więcej konfiguracji zostało przetestowanych; przy dostatecznie dużej ich liczbie wynik osiągnięty na próbie uczącej przestaje nieść informację o zachowaniu poza nią.[3]

Sposób ograniczenia jest jeden i jest niewygodny: liczba przejść przez okno kontrolne musi być zapisywana, a przy każdym kolejnym przejściu wymagania wobec wyniku muszą rosnąć. Nie ma sposobu, żeby wynik po dziesiątym przejściu miał ten sam status co po pierwszym, i nie ma procedury, która by to naprawiła — jest wyłącznie procedura, która pozwala o tym pamiętać.

Granice zasięgu tej tabeli

Wszystkie pozycje dotyczą zawyżenia wyniku przez konstrukcję testu. Istnieje osobna kategoria rozbieżności, której test nie zawyża, tylko pomija: zmiany po stronie warunków, w jakich reguła miała działać. Ograniczenia dotyczące minimalnego czasu życia pozycji, handlu w oknie publikacji danych albo odległości zleceń oczekujących od bieżącej ceny potrafią wykluczyć regułę niezależnie od jej wyniku w teście — regułą, której nie wolno wykonać, nie ma po co się zajmować. Warunki te sprawdza się przed testem, a nie po nim, i opisuje je dział 11.

Druga rzecz poza zasięgiem tabeli to jakość samego pomysłu. Test odsiewa reguły, które nie działają nawet na danych sprzyjających, i nie potrafi odróżnić reguły opartej na trwałej własności rynku od reguły opartej na zbiegu okoliczności o tej samej sile. Przegląd badań nad zyskownością reguł technicznych wskazuje, że znaczna część wcześniejszych wyników pozytywnych daje się wyjaśnić wielokrotnym testowaniem, doborem próby i pominięciem kosztów, a wyniki uzyskane po uwzględnieniu tych czynników są znacznie słabsze.[5] Wniosek metodologiczny z tego przeglądu jest ostrożniejszy niż jego wniosek merytoryczny: to nie jest ustalenie, że reguły techniczne nie działają, tylko ustalenie, że dowody przedstawiane na ich poparcie były w większości słabsze, niż wyglądały.

Wynik reguły przy kolejnych ustawieniach parametru swobodnego: rozległy obszar stabilny o zbliżonych wartościach wobec pojedynczego izolowanego maksimum, zestawiony osobno dla próby uczącej i dla okna nieużytego do doboru; wartości ilustracyjne
Wynik reguły przy kolejnych ustawieniach parametru swobodnego: rozległy obszar stabilny o zbliżonych wartościach wobec pojedynczego izolowanego maksimum, zestawiony osobno dla próby uczącej i dla okna nieużytego do doboru; wartości ilustracyjne

7. Test wrażliwości: koszt, parametr, okres

Twierdzenie, że reguła ma przewagę, wymaga sprawdzenia, czy wynik przetrwa rozsądną zmianę założeń. Trzy osie są przy tym obowiązkowe, bo trzy rodzaje założeń wchodzą do każdego testu: przyjęty koszt, wartość kluczowego parametru i wybrany okres. Poniżej wszystkie trzy przeprowadzone na jednym zestawie liczb, żeby dało się je porównać między sobą.

Przedmiotem jest reguła z jednym parametrem swobodnym — długością okna, z którego wyznaczany jest poziom odniesienia. Sprawdzone wartości: 10, 15, 20, 25, 30 i 40 świec. Mierzoną wielkością jest średni wynik jednej zamkniętej transakcji w pipsach, po koszcie 0,60 pipsa na transakcję. Rozpatrywane są dwa warianty reguły, oznaczone A i B, różniące się konstrukcją warunku wejścia. Wszystkie liczby w tej sekcji są wartościami ilustracyjnymi; nie pochodzą z żadnego testu i służą wyłącznie pokazaniu, jak odczytuje się taki zestaw.

Moment dostępności i model wykonania dla tego zestawu. Liczby w trzech tabelach poniżej nie pochodzą z przebiegu na danych, więc warstwa wykonawcza jest w nich założona, a nie zmierzona: przyjęto zapis świecowy jednej strony ceny, zlecenie księgowane po cenie następującej po zamknięciu ocenianej świecy oraz konwencję intrabar optymistyczną, przy czym udział przypadków spornych wynosi tu zero, bo żadna z tych wartości nie powstała z przetworzenia notowań. W zestawieniu opartym na rzeczywistym przebiegu wszystkie te informacje trzeba podać razem z tabelą — wymaga tego reguła z sekcji 4, według której udział przypadków spornych liczy się zawsze, oraz pozycja o regule intrabar z karty reprodukowalności.

Oś parametru

Długość oknaWariant A — liczba transakcjiWariant A — średni wynikWariant B — liczba transakcjiWariant B — średni wynik
10 świec320+0,05 pipsa300+0,18 pipsa
15 świec250+0,42 pipsa240+0,44 pipsa
20 świec210+1,73 pipsa200+0,51 pipsa
25 świec180+0,38 pipsa175+0,49 pipsa
30 świec160+0,31 pipsa155+0,46 pipsa
40 świec130+0,22 pipsa125+0,29 pipsa

Oba warianty mają maksimum przy tej samej długości okna, więc odczyt polegający na wskazaniu najlepszej wartości parametru dałby ten sam wynik dla obu i zalecałby wariant A, bo jego maksimum jest ponad trzykrotnie wyższe. Odczyt właściwy prowadzi do wniosku przeciwnego.

Wielkością rozstrzygającą jest relacja maksimum do jego bezpośredniego otoczenia. Dla wariantu A sąsiedzi maksimum wynoszą +0,42 i +0,38 pipsa, czyli średnio +0,40; iloraz maksimum do sąsiedztwa to 1,733 ÷ 0,40 = 4,33. Dla wariantu B sąsiedzi wynoszą +0,44 i +0,49, czyli średnio +0,47 po zaokrągleniu — dokładniej 0,465; iloraz to 0,51 ÷ 0,465 = 1,10.

Wariant A ma maksimum odosobnione: przesunięcie parametru o jeden krok w dowolną stronę zabiera trzy czwarte wyniku. Wariant B ma obszar płaski: cztery kolejne wartości parametru dają wyniki mieszczące się między +0,44 a +0,51 pipsa. Nie ma powodu sądzić, że wartość dwadzieścia jest w wariancie A czymś wyróżnionym, i jest powód sądzić, że jej wynik zawiera składnik pochodzący z tej konkretnej próby. Wielkością, którą wolno przenieść dalej, jest sąsiedztwo, a nie szczyt — czyli +0,40 dla A i +0,465 dla B.

Ten sam parametr, dwa warianty reguły: maksimum odosobnione wobec obszaru płaskiego. Średni wynik jednej transakcji w pipsach po koszcie 0,60 pipsa — wartości ilustracyjne.
Średni wynik transakcji wobec długości okna dla dwóch wariantów reguły Wykres liniowy o dwóch seriach i liniowej, skalibrowanej osi pionowej wyrażonej w pipsach na transakcję, od zera do dwóch. Oś pozioma jest kategorialna, o równych odstępach, i obejmuje sześć długości okna: dziesięć, piętnaście, dwadzieścia, dwadzieścia pięć, trzydzieści i czterdzieści świec. Wariant A przyjmuje kolejno wartości plus 0,05; 0,42; 1,73; 0,38; 0,31 i 0,22 pipsa — jego przebieg tworzy pojedynczy wąski szczyt przy dwudziestu świecach. Wariant B przyjmuje kolejno 0,18; 0,44; 0,51; 0,49; 0,46 i 0,29 pipsa i tworzy płaski obszar między piętnastoma a trzydziestoma świecami. Wartości ilustracyjne.

W takim zestawieniu ginie przy tym rzecz, która zmienia jego wymowę: liczba transakcji spada wraz z długością okna. Przy oknie czterdziestoświecowym jest ich mniej niż połowa tego, co przy dziesięcioświecowym. Znaczy to, że skrajne kolumny są oszacowane z mniejszej próby, a więc obarczone większą niepewnością — i że porównywanie ich z kolumnami środkowymi wymaga tej niepewności. Sposób jej policzenia podaje artykuł 8.2, a nie ten tekst; tutaj wystarczy odnotować, że wiersz z najmniejszą liczbą transakcji nigdy nie powinien być tym, który rozstrzyga o wyborze.

Oś kosztu

Druga oś jest najprostsza rachunkowo i najczęściej pomijana. Koszt wchodzi do wyniku raz na zamkniętą transakcję, więc podniesienie go o ΔK obniża średni wynik transakcji dokładnie o ΔK — pod warunkiem, że koszt nie zmienia listy transakcji, co dla reguły niezawierającej warunku zależnego od kosztu jest spełnione.

Koszt na transakcjęA — szczyt (okno 20)A — sąsiedztwo szczytuB — szczyt (okno 20)B — sąsiedztwo szczytu
0,60 pipsa (przyjęty w teście)+1,73+0,40+0,51+0,465
0,90 pipsa+1,43+0,10+0,21+0,165
1,20 pipsa+1,13−0,20−0,09−0,135

Podniesienie kosztu o 0,60 pipsa — czyli o wielkość mieszczącą się w rozbieżności między symulacją pomijającą poślizg a jego rzeczywistym rozkładem — sprowadza poniżej zera sąsiedztwo obu wariantów oraz szczyt wariantu B. Ponad zerem zostaje wyłącznie szczyt wariantu A, czyli dokładnie ta wartość, którą poprzedni podrozdział wskazał jako najmniej wiarygodną.

Stabilność wzdłuż jednej osi nie mówi nic o stabilności wzdłuż innej: wariant B jest odporny na zmianę parametru i jednocześnie kruchy wobec kosztu, więc odczyt z jednej osi nie zwalnia z odczytu z pozostałych. Idzie za tym rzecz druga, ważniejsza przy ocenie cudzego zestawienia: jeżeli po realistycznym podniesieniu kosztu jedynym dodatnim punktem pozostaje odosobniony szczyt, to zestawienie nie wspiera twierdzenia o przewadze, tylko je podważa.

Oś okresu

Trzecia oś polega na powtórzeniu całego przeglądu parametru osobno w dwóch rozłącznych podokresach.

Interesująca jest przy tym nie tyle wysokość wyniku, ile położenie maksimum: jeżeli najlepszy parametr wypada w każdym podokresie gdzie indziej, to jego położenie jest właściwością próby, a nie reguły.

Długość oknaA — podokres IA — podokres IIB — podokres IB — podokres II
10 świec+0,20 (170 transakcji)−0,12 (150)+0,25 (160)+0,10 (140)
15 świec+0,95 (130)−0,15 (120)+0,52 (125)+0,35 (115)
20 świec+3,20 (110)+0,12 (100)+0,60 (105)+0,41 (95)
25 świec+0,60 (95)+0,13 (85)+0,55 (92)+0,42 (83)
30 świec+0,42 (85)+0,19 (75)+0,50 (82)+0,41 (73)
40 świec+0,15 (70)+0,30 (60)+0,33 (66)+0,24 (59)

Wartości z tabeli pierwszej są średnimi ważonymi liczbą transakcji z obu podokresów. Dla wariantu A przy oknie dwudziestoświecowym: (110 × 3,20 + 100 × 0,12) ÷ 210 = (352 + 12) ÷ 210 = 364 ÷ 210 = +1,733, czyli +1,73 po zaokrągleniu. Dla wariantu B przy tym samym oknie: (105 × 0,60 + 95 × 0,41) ÷ 200 = (63,0 + 38,95) ÷ 200 = 101,95 ÷ 200 = +0,510. Pozostałe wiersze liczy się identycznie.

Odczyt jest jednoznaczny. W wariancie A maksimum przenosi się z okna dwudziestoświecowego w podokresie pierwszym na czterdziestoświeczne w drugim, a wartość szczytu spada z +3,20 do +0,30 pipsa; pięć z sześciu wartości w podokresie drugim mieści się między −0,15 a +0,19. Cała wysokość szczytu w zestawieniu zbiorczym pochodzi z jednego podokresu i ze 110 transakcji. W wariancie B maksimum przesuwa się o jeden krok, z dwudziestu na dwadzieścia pięć świec, a wszystkie sześć wartości w obu podokresach pozostaje dodatnich; różnica między szczytem a jego sąsiadem wynosi w podokresie drugim jedną setną pipsa, czyli mniej, niż można sensownie odczytać.

To jest właśnie różnica między parametrem stabilnym a parametrem dopasowanym, i widać ją dopiero po podziale okresu. W zestawieniu zbiorczym wariant A wygląda ponad trzykrotnie lepiej. Po rozdzieleniu podokresów okazuje się, że jego przewaga zamyka się w jednym oknie czasowym i jednym ustawieniu parametru, a poza nimi znika — co wraz z wynikiem osi kosztu wystarcza do opisania go jako kruchego, a nie jako precyzyjnie dopasowanego.

Co robić z wynikiem testu wrażliwości

Trzy osie dają trzy odczyty i żaden z nich nie jest oceną. Odczyt osi parametru wskazuje, którą wartość wolno przenieść dalej — sąsiedztwo, nie szczyt. Odczyt osi kosztu wskazuje, o ile koszt musiałby wzrosnąć, żeby wynik zmienił znak, i czy ta wielkość mieści się w niepewności samego oszacowania kosztu. Odczyt osi okresu wskazuje, ile z wyniku pochodzi z jednego fragmentu historii.

Kiedy trzy odczyty wskazują w tę samą stronę, wniosek jest prosty. Kiedy wskazują w różne strony — a tak bywa częściej — nie ma reguły rozstrzygającej i nie warto jej udawać. Jest natomiast rzecz, którą wolno powiedzieć bez zastrzeżeń: wynik, który zmienia znak po niewielkiej i realistycznej zmianie jednego założenia, nie jest wynikiem stabilnym, niezależnie od tego, jak wysoko wypada w punkcie wyjściowym.

8. Karta reprodukowalności

Test jest reprodukowalny wtedy, gdy ktoś dysponujący samym opisem odtworzy z niego ten sam wynik. Kryterium jest ostre i nie zna stopni pośrednich: albo opis wystarcza, albo nie. Poniższa karta wylicza pozycje, których brak przerywa odtworzenie, i wskazuje, co konkretnie staje się wtedy nieznane.

PozycjaCo musi zawieraćCo pozostaje nieznane bez niej
RegułaPełny zapis rozstrzygalny wraz z przypadkami brzegowymi z sekcji 3: sygnał przy otwartej pozycji, brak rozstrzygnięcia, braki w danych, koniec okresuLista transakcji — czyli wszystko, bo każda dalsza liczba jest z niej wyprowadzona
Instrument i okresSymbol, data początkowa i końcowa, liczba instrumentów, a przy wielu — skład uniwersum na każdy moment okresuCzy wynik pochodzi z jednego fragmentu historii i czy uniwersum nie zostało ustalone wstecz
Źródło danych i jego wersjaDostawca, data pobrania, informacja o korektach zastosowanych po pobraniuCzy odtworzenie na zbiorze pobranym później dotyczy tych samych notowań
Strona cenyKtóra strona rynku wchodzi do warunku i która do księgowania wykonania, osobno dla wejścia i dla wyjściaCzy do wyniku wszedł spread, czy wypadł z niego w całości
RozdzielczośćZapis świecowy z podaniem jednostki czasu albo zapis o rozdzielczości pojedynczych zmian cenyCzy kolejność zdarzeń wewnątrz jednostki była znana, czy przyjęta
Reguła intrabarKonwencja stosowana, gdy zakres jednej jednostki czasu pokrywa oba poziomy wyjścia, oraz udział takich przypadków w próbieJaka część wyniku pochodzi z danych, a jaka z konwencji — rachunek z sekcji 4
Model kosztówSpread, prowizja przeliczona na jednostkę używaną w teście i poślizg — każde osobno, z podaniem, czy wartość jest stała, odczytana z danych czy losowanaCzy wynik jest brutto, czy netto, i o ile zmieni się po realistycznym podniesieniu kosztu
Obsługa brakówPostępowanie przy brakującej jednostce czasu, zdublowanym znaczniku i przerwie w zapisieCzy lista momentów oceny warunku jest ta sama w obu odtworzeniach
Podział próbyKtóre dane posłużyły do doboru parametrów, które do odczytu wyniku, ile razy okno kontrolne było użyte i ile wariantów sprawdzonoStatus wyniku — bez tej pozycji nie da się odróżnić wyniku z próby uczącej od wyniku spoza niej
Liczba transakcji i ich rozkład w czasieLiczba transakcji ogółem, w podokresach i informacja o skupieniachIle w liczbie transakcji jest niezależnych obserwacji, a więc jaka jest niepewność oszacowania
Procedura albo kodZapis pozwalający powtórzyć przebieg krok po kroku, wraz z wersją użytych narzędziCzy rozbieżność między dwoma odtworzeniami wynika z reguły, czy z jej wykonania
Status wynikuPrzypisanie każdej podanej liczbie jednej z czterech kategorii z sekcji 5Co ta liczba w ogóle znaczy

Żadna pozycja karty nie jest opcjonalna, choć nie wszystkie są jednakowo pracochłonne. Osiem da się wypełnić w kilka minut, bo są to informacje, które testujący i tak posiada. Cztery pozostałe — reguła w postaci rozstrzygalnej, udział przypadków spornych, historia podziału próby i liczba sprawdzonych wariantów — wymagają pracy, i to nie przypadek, że są to dokładnie te cztery, których w cudzych zestawieniach brakuje najczęściej.

Zrzut przebiegu kapitału nie zastępuje żadnej z dwunastu pozycji. Nie zawiera reguły, nie zawiera modelu kosztów, nie zawiera podziału próby i nie zawiera statusu — a bez nich jest wykresem, na którego podstawie nie da się orzec niczego poza tym, że ktoś dysponował danymi. To samo dotyczy zestawień zbiorczych opisujących wynik jedną liczbą: liczba bez tych dwunastu pozycji jest ozdobą.

9. Ocena cudzego wyniku listą pytań

Wynik pokazany przez kogoś innego ocenia się tak samo jak własny, z jedną różnicą: brakujących informacji nie da się uzupełnić samodzielnie, więc pytanie bez odpowiedzi jest końcem oceny, a nie jej etapem.

Podział pracy między dwie listy trzeba postawić przed pierwszym pytaniem, bo bez niego zestawienie rozrasta się do rozmiarów, przy których nikt go nie przechodzi do końca. Osiem pytań o sam wynik — liczba transakcji, okres i instrumenty, koszty, podział danych, liczba sprawdzonych wariantów, największe obsunięcie, udział największych transakcji oraz to, kto ponosi ryzyko — jest własnością sekcji 13 artykułu 8.2, obowiązuje bez żadnej zmiany także wtedy, gdy wynik pochodzi z algorytmu, i nie jest tu powtarzane. Poniższe zestawienie wylicza wyłącznie to, co dochodzi wtedy, gdy liczba pochodzi z testu przeprowadzonego na zapisie notowań, a nie z serii zawartych transakcji. Każda pozycja jest uporządkowana tak samo: pytanie, wymagana treść odpowiedzi i to, co oznacza jej brak.

PytanieCo odpowiedź musi zawieraćCo oznacza jej brak
Z jakich danych i po której stronie ceny?Dostawcę, datę pobrania, stronę rynku dla warunku i dla księgowania wykonaniaNie wiadomo, czy do wyniku wszedł spread — a jego pominięcie jest stałe na transakcję i sumuje się liniowo
Jaka rozdzielczość i jaka reguła intrabar?Jednostkę czasu zapisu, przyjętą konwencję kolejności i udział przypadków, w których rozstrzygałaWynik może pochodzić z konwencji, a nie z danych; skalę tego pokazuje rachunek z sekcji 4
Jak potraktowano braki w zapisie?Postępowanie przy brakującej jednostce czasu, zdublowanym znaczniku i przerwie w notowaniach, wraz z liczbą takich miejsc w okresieNie wiadomo, czy lista momentów oceny warunku jest ta sama w obu odtworzeniach — a różnica w tej liście zmienia listę transakcji, czyli każdą dalszą liczbę
Czym jest w teście każdy składnik kosztu — stałą, odczytem czy losowaniem?Dla spreadu, prowizji i poślizgu osobno: wartość stałą, odczyt z danych albo rozkład, z którego losowano, wraz z jego parametramiRozbicie kosztu na składniki jest pytaniem z listy 8.2; tutaj dochodzi to, że przy każdej z trzech postaci test odtwarza się inaczej, a przy losowaniu bez podanego ziarna — inaczej przy każdym uruchomieniu. Odpada też cała oś kosztu z sekcji 7
Jak transakcje rozłożyły się w czasie?Liczbę w podokresach oraz informację o skupieniach; sama liczba ogółem należy do listy z 8.2Nie da się oszacować efektywnej liczby niezależnych obserwacji, a więc ani niepewności, ani tego, czy wynik nie pochodzi z jednego odcinka historii przy pustych podokresach obok
Ile razy użyto okna kontrolnego?Liczbę odczytów z danych nieużytych do doboru parametrów oraz to, czy po którymkolwiek z nich reguła była zmienianaSam podział danych jest pytaniem z listy 8.2; tutaj dochodzi zużycie okna kontrolnego — po drugim i trzecim odczycie przestaje ono być próbą spoza doboru, a deklaracja „poza próbą" traci treść, choć podział formalnie istnieje
Jak zachowuje się wynik przy zmianie parametru o jeden krok?Wartości sąsiadujące, nie tylko maksimumNie da się odróżnić obszaru stabilnego od pojedynczego dopasowania
Jak zdefiniowano najgorszy przebieg?Definicję operacyjną używanej miary oraz okres i próbę, z której liczba pochodzi; samą wielkość obsunięcia obejmuje pytanie z listy 8.2Dwie różne definicje dają dwie różne liczby dla tego samego przebiegu, więc zestawienie dwóch wyników bez definicji jest zestawieniem dwóch różnych wielkości; miary ryzyka i ich konstrukcję opisuje dział 9
Czy istnieje wynik z danych napływających i jak długi?Datę uruchomienia, liczbę transakcji i informację, czy reguła była w tym czasie zmienianaBrak tej pozycji zostawia wynik wyłącznie historyczny, a więc nieobejmujący warstwy wykonania
Czym test został przeprowadzony?Zapis procedury albo kod pozwalający powtórzyć przebieg krok po kroku, wraz z wersjami użytych narzędziPrzy rozbieżności dwóch odtworzeń nie da się orzec, czy pochodzi ona z reguły, czy z jej wykonania — a są to dwa różne wnioski i prowadzą do dwóch różnych działań
Czy pokazujący wynik uruchamia ten sam zapis na własnych środkach?Wskazanie, czy udostępniana wersja reguły jest tą samą, która pracuje na rachunku pokazującego, oraz od czego zależy jego przychódPytanie o to, kto ponosi ryzyko, stawia lista z 8.2; tutaj dochodzi rozdzielenie wersji, bo algorytm daje się udostępnić w postaci innej niż używana — czego seria transakcji zawartych ręcznie nie umożliwia. Bez tego nie da się ocenić zachęty do sprawdzenia reguły przed jej udostępnieniem — sekcja 2

Pytanie ostatnie bywa uznawane za nietaktowne i jest jedynym, którego odpowiedź nie dotyczy samej procedury testu. Ma jednak funkcję porządkującą: rozstrzyga, czy pozostałe dziesięć pytań kieruje się do kogoś, kto poniósł skutek własnych ustaleń, czy do kogoś, kto poniesie skutek wyłącznie cudzych. To nie jest zarzut wobec żadnej ze stron, tylko informacja o tym, gdzie leży ciężar sprawdzenia.

Jak obie listy działają razem

Kolejność, w jakiej się je przechodzi, ma znaczenie praktyczne. Najpierw idzie osiem pytań z artykułu 8.2, bo są krótsze i częściej kończą sprawę: przy wyniku podanym bez liczby transakcji, bez dat i bez podziału danych pytanie o rozdzielczość zapisu jest bezprzedmiotowe, skoro nie wiadomo nawet, czego ta rozdzielczość miałaby dotyczyć. Dopiero wynik, który tamtą listę przeszedł, wymaga jedenastu pytań powyżej — i dopiero na nich rozstrzyga się, czy podana liczba opisuje regułę, czy procedurę, która ją sprawdzała.

Rozdzielenie to ma jeszcze jeden skutek, mniej oczywisty i wart osobnego zdania. Osiem pytań z listy podstawowej zadaje się jednakowo o wynik z rachunku rzeczywistego i o wynik z testu. Dziesięć pytań powyżej daje się zadać wyłącznie o test — i to jest dokładnie powód, dla którego wynik z danych napływających ma inny status niż wynik historyczny, mimo że jedno i drugie bywa przedstawiane tą samą liczbą. Przy serii transakcji faktycznie zawartych odpowiedź na pytanie o rozdzielczość, konwencję intrabar i obsługę braków nie jest trudna do udzielenia — ona po prostu nie istnieje, bo te transakcje nie powstały z odczytu zapisu notowań, tylko ze zdarzeń na rachunku. Odwrotnie zaś: przy teście nie istnieje odpowiedź o rozkładzie wykonań, bo żadne wykonanie nie miało miejsca — i stąd bierze się piąty etap ścieżki z sekcji 5, który jest jedynym miejscem, gdzie obie warstwy dają się porównać na tych samych wielkościach.

Co bywa podstawiane zamiast odpowiedzi

Zamiast odpowiedzi bywa przedstawiane co innego, a żadna z tych rzeczy odpowiedzi nie zastępuje. Pierwsza to przebieg kapitału, który nie zawiera ani reguły, ani modelu kosztów, ani podziału próby. Druga to długość okresu bez liczby transakcji: dwa lata mogą oznaczać dwadzieścia transakcji albo dwa tysiące, a różnica między tymi przypadkami jest większa niż różnica między dowolnymi dwiema regułami — obie te wielkości należą do listy z artykułu 8.2 i bywają podawane jedna zamiast drugiej. Trzecia to liczba zbiorcza opisująca jakość wyniku jedną wartością — bez próby, okresu, kosztów i podziału danych jest ona funkcją tych brakujących wielkości, a nie funkcją reguły.

Warto też oddzielić dwa pytania, które w rozmowie zlewają się w jedno: „czy ten wynik jest prawdziwy" i „czy z tego wyniku coś wynika". Pierwsze dotyczy rzetelności i zwykle nie da się na nie odpowiedzieć z zewnątrz. Drugie dotyczy metodologii, odpowiedź jest sprawdzalna i to na nie odpowiada powyższa lista. Wynik może być całkowicie prawdziwy i jednocześnie nie znaczyć nic — jeżeli powstał z wyboru najlepszego z wielu wariantów na jednym okresie, przy koszcie oszacowanym od dołu i przy konwencji intrabar dobranej korzystnie.

Ten sam zestaw pytań zastosowany do własnego wyniku

Lista działa w obie strony i tam jest trudniejsza, bo na wszystkie pytania da się odpowiedzieć, więc żadne nie kończy rozmowy. Pomocne jest jedno przestawienie: odpowiedzi zapisuje się przed spojrzeniem na wynik, a nie po. Liczba użyć okna kontrolnego notowana na bieżąco jest liczbą; ta sama liczba odtwarzana po fakcie jest oszacowaniem obciążonym w znanym kierunku, bo odczyty, po których nic nie zmieniono, pamięta się gorzej niż te, które doprowadziły do poprawki reguły. Dokładnie tak samo zachowuje się liczba sprawdzonych wariantów z listy w artykule 8.2 — obie pozycje zapisuje się w trakcie prac albo nie zapisuje wcale.

Podobnie z podziałem próby: zapisanie, które dane zostaną użyte do doboru, a które do odczytu, kosztuje jedno zdanie przed testem i jest niewykonalne po nim. Karta z sekcji 8 wypełniana na bieżąco jest dokumentem; wypełniana po zakończeniu prac jest rekonstrukcją.

10. Monitorowanie i kryterium wyłączenia zapisane z góry

Reguła, która przeszła wszystkie etapy, wcześniej czy później zacznie zachowywać się inaczej niż w teście. Pytanie brzmi, czy to zachowanie mieści się w rozrzucie, którego należało oczekiwać, czy oznacza zmianę warunków. Odpowiedź jest z natury niepewna i żadne kryterium jej nie uściśli — da się natomiast policzyć, jak często konkretne kryterium myli się w każdą ze stron, i to jest właściwa treść tej sekcji.

Kryterium oparte na przekroczeniu najgorszej obserwacji z testu

Najczęściej spotykana konstrukcja brzmi: wyłącz, gdy zdarzy się coś gorszego niż najgorsza rzecz zaobserwowana w teście. Jest intuicyjna i ma własność, którą warto zobaczyć liczbowo, zanim zostanie zapisana.

Rachunek: jak często zadziała kryterium na regule, która się nie zmieniła.

Założenia. Kryterium: wyłącz algorytm, gdy pojedyncza obserwacja okaże się gorsza niż najgorsza obserwacja z okresu testu. Obserwacją jest wynik jednej zamkniętej transakcji. Test obejmował N transakcji, okres po wdrożeniu obejmuje M transakcji. Przyjmujemy, że rozkład wyników nie zmienił się w ogóle, a obserwacje są wymienne — czyli że każda kolejność jest jednakowo prawdopodobna. Zakładamy też, że rozkład jest ciągły, więc dwie obserwacje równe co do wartości nie występują. Wartości ilustracyjne; status: rachunek prawdopodobieństwa przy podanych założeniach, nie wynik testu.

Rachunek. Kryterium zadziała dokładnie wtedy, gdy najgorsza obserwacja z całości N + M wypadnie w części po wdrożeniu. Przy wymienności każda z N + M obserwacji ma jednakową szansę być tą najgorszą, więc prawdopodobieństwo wynosi P = M / (N + M).

Dla N = 200 i M = 100: P = 100 ÷ 300 = 33,3%.
Dla N = 200 i M = 200: P = 200 ÷ 400 = 50,0%.
Dla N = 600 i M = 100: P = 100 ÷ 700 = 14,3%.

Moment dostępności i wykonanie. N jest znane w chwili zapisywania kryterium, M narasta po wdrożeniu. Prawdopodobieństwo zadziałania rośnie więc z każdą kolejną transakcją i nie ma wartości granicznej innej niż jedność: przy dostatecznie długim działaniu kryterium zadziała na pewno, także na regule, w której nic się nie zmieniło.

Wynik i interpretacja. Prawdopodobieństwo fałszywego zadziałania nie zależy od reguły, od instrumentu ani od rynku — zależy wyłącznie od stosunku długości obu okresów. Kryterium oparte na przekroczeniu maksimum z krótkiego testu jest z tego powodu kryterium słabym: nie odróżnia zmiany warunków od zwykłego upływu czasu. Zastrzeżenia: rachunek dotyczy pojedynczej obserwacji skrajnej. Dla miar zależnych od kolejności wyników, w tym dla miar przebiegu opisanych w dziale 9, założenie o wymienności nie daje dokładnego wyniku i podana liczba jest jedynie rzędem wielkości; kierunek zależności pozostaje ten sam. Założenie o niezależności obserwacji jest przy tym samo w sobie uproszczeniem, o czym mówi pozycja o zależności transakcji w sekcji 6.

Prawdopodobieństwo, że kryterium oparte na przekroczeniu najgorszej obserwacji z testu zadziała na regule, w której nic się nie zmieniło. Zależy wyłącznie od stosunku długości obu okresów — wartości ilustracyjne.
Prawdopodobieństwo fałszywego zadziałania kryterium wyłączenia dla trzech par długości okresów Wykres słupkowy o trzech słupkach. Oś pionowa jest liniowa i skalibrowana, wyrażona w procentach od zera do sześćdziesięciu, z liniami siatki co dziesięć punktów procentowych; słupki wyprowadzone są od zera. Oś pozioma jest kategorialna, o równych odstępach, i podaje pary: N, czyli liczba transakcji w teście, oraz M, czyli liczba transakcji po wdrożeniu. Słupek pierwszy, N równe 600 i M równe 100: 14,3 procent. Słupek drugi, N równe 200 i M równe 100: 33,3 procent. Słupek trzeci, N równe 200 i M równe 200: 50,0 procent. Wartości wynikają ze wzoru P równa się M dzielone przez sumę N i M, przy założeniu, że rozkład wyników się nie zmienił, a obserwacje są wymienne. Wartości ilustracyjne.

Rachunek prowadzi do wniosków projektowych. Kryterium tego typu trzeba odnosić do długości okresu, a nie do samego progu: „gorsze niż najgorsze z testu" znaczy co innego po stu transakcjach i co innego po tysiącu. Drugi wniosek dotyczy etapu czwartego ze ścieżki — im dłuższy test, tym kryterium jest mniej czułe na fałszywy alarm, co jest kolejnym powodem, żeby tego etapu nie skracać.

Kryterium oparte na braku transakcji

Druga konstrukcja dotyczy sytuacji odwrotnej: reguła nie generuje sygnałów, choć powinna. Jest to sygnał ostrzegawczy odmiennego rodzaju, bo nie mówi o wyniku, tylko o tym, czy reguła w ogóle spotyka warunki, dla których powstała.

Rachunek: jak długa przerwa jest jeszcze normalna.

Założenia. W teście reguła generowała średnio jedną transakcję na 21 sesji. Przyjmujemy, że momenty powstawania sygnałów są niezależne i rozłożone jednorodnie w czasie — czyli że liczba sygnałów w przedziale ma rozkład Poissona o średniej równej długości przedziału podzielonej przez 21. Wartości ilustracyjne.

Rachunek. Prawdopodobieństwo braku sygnału przez g sesji wynosi e^(−g/21).
Dla g = 40: e^(−1,905) = 14,9%.
Dla g = 60: e^(−2,857) = 5,7%.
Dla g = 90: e^(−4,286) = 1,4%.
Przerwa, której prawdopodobieństwo spada do 5%, wynosi −ln(0,05) × 21 = 2,996 × 21 = 62,9 sesji; do 1% — −ln(0,01) × 21 = 4,605 × 21 = 96,7 sesji.

Moment dostępności i wykonanie. Średnia jedna transakcja na 21 sesji pochodzi z testu, więc jest znana przed wdrożeniem i kryterium da się zapisać z góry. Długość bieżącej przerwy jest znana na bieżąco i nie wymaga żadnej wielkości poobrotowej.

Wynik i interpretacja. Przerwa czterdziestosesyjna zdarza się przy niezmienionej regule mniej więcej raz na siedem obserwowanych przerw i nie jest podstawą do żadnej decyzji. Zastrzeżenia: założenie o jednorodności jest wprost sprzeczne z tym, co ten sam artykuł twierdzi w sekcji 6 o skupianiu się sygnałów. Skupienia oznaczają dłuższe przerwy między nimi, niż wynika z rozkładu Poissona, więc podane odsetki są zaniżone, a rzeczywisty próg jest wyższy niż 62,9 sesji. Rachunek daje więc granicę od dołu, a nie wartość — i tak trzeba go czytać przy zapisywaniu kryterium.

Co ma zawierać zapisane kryterium wyłączenia

Zapis, który da się zastosować, wskazuje wielkość obserwowaną, próg, minimalną liczbę transakcji i postępowanie po zadziałaniu. Pierwszy element to wielkość obserwowana, podana wraz z jednostką i sposobem liczenia — najczęściej średni wynik transakcji w pipsach, bo tylko on jest porównywalny z testem niezależnie od wolumenu. Drugi to próg, wyrażony w tej samej jednostce, wraz z okresem, przez który ma być przekroczony. Trzeci to minimalna liczba transakcji, poniżej której kryterium nie jest w ogóle stosowane; bez niej kryterium zadziała na pierwszej serii, która wypadnie niekorzystnie. Czwarty to postępowanie po zadziałaniu: co dokładnie się dzieje, czy wyłączenie jest ostateczne i co musiałoby zajść, żeby reguła wróciła.

Czwarty element bywa pomijany, a jest tym, który odróżnia kryterium od odruchu. Zapis „wyłączam" bez wskazania, co dalej, prowadzi zwykle do ponownego uruchomienia po poprawie wyniku — czyli do decyzji podjętej na podstawie tego samego rozrzutu, który wywołał wyłączenie. Zapis, który tego unika, wskazuje warunek powrotu w postaci sprawdzalnej: powtórzenie etapu czwartego i piątego ze ścieżki na danych obejmujących okres, w którym kryterium zadziałało.

Dlaczego każde takie kryterium myli się w obie strony

Kryterium czułe wyłącza regułę sprawną — pokazuje to pierwszy z rachunków tej sekcji. Kryterium mało czułe pozostawia w działaniu regułę, której warunki się zmieniły, i pozostawia ją tak długo, ile trwa zebranie próby wystarczającej do rozstrzygnięcia. Obie strony tego kompromisu wynikają z jednej i tej samej rzeczy: pojedyncza seria wyników jest zgodna z wieloma różnymi rozkładami, a rozstrzygnięcie między nimi wymaga liczby obserwacji, której narastanie zajmuje tyle czasu, ile zajmuje. Wielkość próby potrzebnej do wykrycia różnicy o zadanej skali jest przedmiotem artykułu 8.2.

Nie ma z tego wyjścia i nie warto go szukać. Jest natomiast różnica między kryterium złym a kryterium zapisanym z góry wraz z jego wadą: pierwsze udaje rozstrzygnięcie, drugie jest jawnym wyborem między dwoma rodzajami pomyłki. Wybór ten należy do projektanta reguły i powinien być zapisany razem z uzasadnieniem, żeby dało się do niego wrócić — bo wraca się do niego zawsze w najgorszym możliwym momencie.

11. Czego ten artykuł nie rozstrzyga

Procedura opisana wyżej jest narzędziem o określonym zasięgu i ten zasięg warto obrysować, bo każde z poniższych ograniczeń zmienia to, co wolno z niej wyprowadzić.

Przejście całej ścieżki nie ustanawia przewagi

Reguła, która przeszła osiem etapów, przetrwała test wrażliwości i ma wypełnioną kartę reprodukowalności, jest regułą dobrze sprawdzoną. To znaczy dokładnie tyle, że nie wykryto w niej wad wymienionych w sekcji 6 — nie znaczy, że wad nie ma, ani że wynik utrzyma się dalej. Test odsiewa pomysły; nie potwierdza trwałej przewagi i nie ma procedury, która by to robiła.

Rozróżnienie jest praktyczne, nie filozoficzne. Zdanie „reguła przeszła procedurę" jest sprawdzalne i wolno je wypowiedzieć. Zdanie „reguła ma przewagę" wymaga dodatkowo oszacowania wartości oczekiwanej po pełnych kosztach wraz z niepewnością, na próbie spoza danych, na których reguła powstała — a to jest przedmiot artykułu 8.2, nie tego tekstu.

Wszystkie liczby w tym artykule są przyjęte

Żaden test nie został wykonany. Wartości w rachunkach — 240 sygnałów, 400 transakcji, 46 przypadków spornych, sześć wartości parametru w dwóch wariantach, 21 sesji między sygnałami — służą wyłącznie pokazaniu, jak liczy się daną wielkość i jaki ma rząd. Podstawienie własnych liczb zmieni wszystkie wyniki, a niektóre zmieni co do znaku. Jeżeli którakolwiek z tych liczb zostanie z tego artykułu przeniesiona jako oszacowanie, to będzie to użycie sprzeczne z jej statusem.

Skąd wziąć regułę wartą sprawdzania

Wszystkie sekcje powyżej odpowiadają na pytanie, czy zbiór reguł da się sprawdzić i czego z wyniku nie wolno wyprowadzić. Żadna nie odpowiada na pytanie, skąd wziąć regułę wartą sprawdzania. Konstruowanie warunków wejścia i wyjścia należy do działu 5, a rozróżnienie rodzin logiki i konsekwencji każdej z nich dla rozkładu wyników — do artykułu 8.7. Procedura testowa zastosowana do przypadkowego pomysłu odrzuci go szybciej; nie zwiększy szansy, że kolejny będzie lepszy.

Warstwa wykonania jest tu wielkością wejściową, nie tematem

Poślizg, odrzucenia i realizacje częściowe wchodzą do modelu kosztów jako liczby, które trzeba skądś wziąć. Skąd — to pytanie o warunki handlu i ich porównywanie, czyli o dział 11. Środowisko, w którym program działa, jego konfiguracja i wymagania techniczne to dział 12. Żadne z tych zagadnień nie zostało tu opisane i nie da się ich wyprowadzić z niczego, co jest powyżej.

Wielkość pozycji i miary ryzyka portfela pozostają poza rachunkiem

Wszystkie wyniki podano w pipsach na transakcję. Przeliczenie na walutę rachunku wymaga wartości pipsa, a więc wolumenu, i jest osobnym zagadnieniem. Zmiana wolumenu nie zmienia ani jednej liczby w tym artykule — zmienia natomiast wszystko w rachunku, którego ten tekst nie prowadzi. Reguły ustalania wielkości pozycji, miary przebiegu kapitału i zarządzanie zestawem kilku reguł naraz należą do działu 9.

Zachowanie po wyłączeniu jako temat innego działu

Kryterium wyłączenia zostało omówione jako konstrukcja o dających się policzyć własnościach. To, co dzieje się z osobą, która musi je zastosować w chwili, gdy wynik jest niekorzystny, jest zagadnieniem z działu 10 i nie zostało tutaj podjęte. Warto jedynie odnotować, że zapisanie kryterium przed wdrożeniem jest jedynym momentem, w którym decyzja o nim zapada bez presji wyniku — i to jest cały argument za takim zapisem, bez potrzeby odwoływania się do czegokolwiek poza porządkiem czasowym.

12. Zadanie samokontrolne i przejście dalej

Sprawdzian tego artykułu polega na przeprowadzeniu trzech jego rachunków na liczbach innych niż w treści oraz na wskazaniu braków w opisie cudzego wyniku. Poniżej zestaw danych i rozwiązanie wzorcowe.

Zadanie.

Część pierwsza — konwencja intrabar. Test obejmuje 300 zamkniętych transakcji. Reguła ma cel 25 pipsów i wyjście obronne 25 pipsów, oba liczone od ceny wykonania. W 39 transakcjach zakres pojedynczej świecy pokrył oba poziomy. Suma wyniku 261 transakcji rozstrzygalnych wynosi −60 pipsów. Symulacja księgowała wejście i wyjście po tej samej stronie ceny, a pomijany spread wynosi 0,50 pipsa. Wartości ilustracyjne.

  1. Policz udział przypadków nierozstrzygalnych.
  2. Policz sumę i średnią na transakcję w wariancie optymistycznym i konserwatywnym.
  3. Policz rozpiętość między wariantami w przeliczeniu na transakcję.
  4. Popraw oba warianty o pominięty spread.

Część druga — wrażliwość. Przegląd jednego parametru dał maksimum +1,10 pipsa na transakcję, a jego bezpośredni sąsiedzi wynoszą +0,24 i +0,16 pipsa.

  1. Policz iloraz maksimum do średniej z sąsiadów i rozstrzygnij, czy to obszar stabilny.
  2. Sprawdź, co stanie się z maksimum i z sąsiedztwem po podniesieniu kosztu o 0,45 pipsa.

Część trzecia — kryterium wyłączenia. Test obejmował 150 transakcji. Kryterium brzmi: wyłącz, gdy pojedyncza transakcja wypadnie gorzej niż najgorsza z testu.

  1. Policz prawdopodobieństwo zadziałania kryterium po 150 transakcjach od wdrożenia, przy założeniu, że rozkład się nie zmienił.
  2. Policz, jak zmieni się ta wartość, gdyby test obejmował 450 transakcji zamiast 150.

Część czwarta — cudzy wynik. Ktoś podaje: „System na jednej parze walutowej, dwa lata danych godzinowych, wynik dodatni, sprawdzony poza próbą". Wskaż, których pozycji karty reprodukowalności ten opis nie zawiera.

Rozwiązanie wzorcowe.

1. Udział przypadków nierozstrzygalnych. 39 ÷ 300 = 0,130 = 13,0%.

2. Dwa warianty. Optymistyczny: −60 + 39 × 25 = −60 + 975 = +915 pipsów, czyli 915 ÷ 300 = +3,05 pipsa na transakcję. Konserwatywny: −60 − 39 × 25 = −60 − 975 = −1035 pipsów, czyli −1035 ÷ 300 = −3,45 pipsa.

3. Rozpiętość. 39 × (25 + 25) ÷ 300 = 1950 ÷ 300 = 6,50 pipsa na transakcję. Sprawdzenie: 3,05 − (−3,45) = 6,50. Znak wyniku zależy wyłącznie od konwencji, a nie od danych — trzynaście procent transakcji rozstrzyga o całości.

4. Poprawka o spread. Dla całej próby 300 × 0,50 = 150 pipsów, a dla 261 transakcji rozstrzygalnych 261 × 0,50 = 130,5 pipsa. Optymistyczny: 915 − 150 = 765 pipsów, czyli +2,55 pipsa. Konserwatywny: −1035 − 150 = −1185 pipsów, czyli −3,95 pipsa. Suma transakcji rozstrzygalnych spada z −60 do −190,5 pipsa, więc bez przypadków spornych reguła jest stratna w obu wariantach założeń.

5. Iloraz. Średnia z sąsiadów: (0,24 + 0,16) ÷ 2 = 0,20 pipsa. Iloraz: 1,10 ÷ 0,20 = 5,50. To nie jest obszar stabilny — maksimum jest ponad pięciokrotnie wyższe od bezpośredniego otoczenia. Przesunięcie parametru o jeden krok zabiera (1,10 − 0,24) ÷ 1,10 = 78,2% wyniku w jedną stronę i (1,10 − 0,16) ÷ 1,10 = 85,5% w drugą. Wielkością, którą wolno przenieść dalej, jest +0,20 pipsa, a nie +1,10.

6. Po podniesieniu kosztu. Maksimum: 1,10 − 0,45 = +0,65 pipsa. Sąsiedztwo: 0,20 − 0,45 = −0,25 pipsa. Sąsiedztwo zmienia znak, a dodatni pozostaje wyłącznie punkt, do którego jest najmniej podstaw. Reguła jest krucha na obu osiach naraz.

7. Prawdopodobieństwo zadziałania. P = M ÷ (N + M) = 150 ÷ (150 + 150) = 150 ÷ 300 = 50,0%. Kryterium zadziała na co drugiej niezmienionej regule, zanim liczba transakcji po wdrożeniu zrówna się z liczbą z testu.

8. Przy dłuższym teście. P = 150 ÷ (450 + 150) = 150 ÷ 600 = 25,0%. Trzykrotne wydłużenie testu obniżyło prawdopodobieństwo fałszywego zadziałania o połowę, nie zmieniając ani reguły, ani kryterium.

9. Braki w cudzym opisie. Opis dotyka trzech pozycji karty i wypełnia jedną. Pozycja o instrumencie i okresie jest podana w postaci szczątkowej: bez symbolu i bez dat, a „dwa lata" nie zastępuje przedziału. Rozdzielczość jest podana i to jedyna pozycja kompletna. Status wyniku jest zadeklarowany słowami „sprawdzony poza próbą", ale bez pozycji o podziale próby deklaracja ta nie jest sprawdzalna, więc pozycji nie wypełnia.

Brakuje dziewięciu pozostałych: pełnego zapisu reguły, źródła danych wraz z jego wersją, strony ceny, konwencji intrabar wraz z udziałem przypadków spornych, modelu kosztów rozbitego na składniki, sposobu obsługi braków, podziału próby wraz z liczbą użyć okna kontrolnego i liczbą sprawdzonych wariantów, liczby transakcji i ich rozkładu w czasie oraz procedury pozwalającej powtórzyć przebieg. Przy danych godzinowych i regule z dwoma poziomami wyjścia sam brak konwencji intrabar wystarcza, żeby wyniku nie dało się zinterpretować — pokazuje to rachunek z punktu trzeciego, w którym znak zależał wyłącznie od tej konwencji.

Kontrola. Wariant konserwatywny jest w obu punktach niższy od optymistycznego. Rozpiętość policzona dwoma sposobami daje tę samą wartość. Prawdopodobieństwo maleje przy wydłużeniu testu. Wszystkie wielkości podano w pipsach na transakcję; przejścia na walutę rachunku nie wykonano i wymagałoby ono wartości pipsa.

Co zrobić z tą procedurą dalej

Kolejność stosowania jest odwrotna do kolejności wykładu. Najpierw wypełnia się kartę z sekcji 8 dla reguły, którą już się ma — bo to zajmuje godzinę i zwykle unieruchamia całą resztę, wskazując dwie albo trzy pozycje, których po prostu nie ma. Potem przeprowadza się test zgodności dwóch odtworzeń, bo bez niego wszystkie liczby dotyczą nieustalonego przedmiotu. Dopiero potem ma sens cokolwiek liczyć.

Trzy wielkości z tego artykułu warto policzyć przy każdym teście, bo są tanie i rozstrzygają najwięcej: udział przypadków o nierozstrzygniętej kolejności wewnątrz świecy, iloraz maksimum do sąsiedztwa oraz zmianę wyniku po podniesieniu kosztu o wielkość odpowiadającą niepewności jego oszacowania. Żadna z nich nie wymaga nowych danych — wszystkie liczy się z tego samego przebiegu, który już został wykonany.

Osobno stoi pytanie, na które ten artykuł nie odpowiada, a które w praktyce rozstrzyga najwcześniej: czy dany sposób pracy jest w ogóle wykonalny przy dostępnych godzinach i przy dostępnym trybie życia. Automatyzacja zmienia w tej sprawie mniej, niż się wydaje — przenosi ciężar z obserwacji rynku na budowę i nadzór, ale go nie usuwa, a monitorowanie z sekcji 10 jest zajęciem regularnym. Eliminację sposobów pracy niewykonalnych przy własnych ograniczeniach przeprowadza artykuł 8.10, którym dział się kończy.

FAQ — najczęściej zadawane pytania

Czy automatyzacja poprawia wynik?

Zmienia wierność i szybkość wykonania, a nie znak wyniku. Rachunek z sekcji 1 pokazuje mechanizm: przy przejściu ze 150 na 236 zrealizowanych sygnałów wynik mnoży się przez 1,573 niezależnie od tego, czy wartość oczekiwana jednej transakcji jest dodatnia, czy ujemna. Poprawa dotyczy wyłącznie tych wielkości, na które wpływa pominięcie sygnału albo błąd w parametrach zlecenia. Wszystkie składniki wartości oczekiwanej — średni zysk, średnia strata, odsetek transakcji zamkniętych z zyskiem i koszt obrotu — pozostają takie same.

Czy wynik testu na danych historycznych dowodzi, że reguła działa?

Nie. Test odsiewa pomysły, które nie działają nawet na danych sprzyjających, i to jest cała jego funkcja. Wynik zależy dodatkowo od kompletności danych, strony ceny, rozdzielczości, konwencji przy nierozstrzygniętej kolejności wewnątrz świecy, modelu kosztów, liczby sprawdzonych wariantów i sposobu podziału próby. Zmiana każdej z tych rzeczy zmienia wynik, a niektóre zmieniają jego znak — rachunek w sekcji 4 pokazuje przypadek, w którym rozstrzyga o tym 11,5% transakcji.

Jak sprawdzić, czy parametry nie zostały dopasowane do historii?

Przez porównanie maksimum z jego bezpośrednim otoczeniem oraz przez powtórzenie przeglądu w rozłącznych podokresach. Iloraz maksimum do średniej z sąsiadów rzędu jedności oznacza obszar płaski; iloraz kilkukrotny oznacza pojedyncze dopasowanie. Drugie sprawdzenie dotyczy położenia maksimum: jeżeli w każdym podokresie wypada ono przy innej wartości parametru, to jego położenie jest właściwością próby, a nie reguły. Oba rachunki są w sekcji 7.

O co zapytać, zanim skorzysta się z cudzego algorytmu albo z odwzorowania cudzych transakcji?

O dwie rzeczy naraz, bo listy są dwie. Osiem pytań o sam wynik — liczbę transakcji, okres i instrumenty, koszty, podział danych, liczbę sprawdzonych wariantów, obsunięcie, udział największych transakcji i to, kto ponosi ryzyko — zestawia sekcja 13 artykułu 8.2 i obowiązują one tak samo przy algorytmie, jak przy decyzjach ręcznych. Jedenaście pytań o samą procedurę testu dokłada sekcja 9: źródło danych i stronę ceny, rozdzielczość i konwencję intrabar, obsługę braków w zapisie, postać każdego składnika kosztu, rozkład transakcji w czasie, liczbę użyć okna kontrolnego, zachowanie wyniku przy zmianie parametru o krok, definicję najgorszego przebiegu, długość wyniku z danych napływających, zapis procedury wraz z wersjami narzędzi oraz to, czy pokazujący uruchamia ten sam zapis na własnych środkach. Przy odwzorowaniu cudzych transakcji odpada możliwość odtworzenia reguły, bo reguła nie jest widoczna — zostaje wyłącznie zapis przebiegu, który nie jest testem.

Kiedy wyłączyć algorytm?

Wtedy, gdy zajdzie warunek zapisany przed wdrożeniem. Sam zapis musi zawierać obserwowaną wielkość wraz z jednostką, próg, minimalną liczbę transakcji, poniżej której kryterium nie działa, oraz postępowanie po zadziałaniu. Warto przy tym policzyć, jak często kryterium zadziała na regule, w której nic się nie zmieniło: dla kryterium opartego na przekroczeniu najgorszej obserwacji z testu prawdopodobieństwo to wynosi M / (N + M), czyli 33,3% przy teście o 200 transakcjach i 100 transakcjach po wdrożeniu. Rachunek i jego założenia są w sekcji 10.

Dlaczego dwa programy napisane z tego samego opisu dają różne wyniki?

Bo opis milczy w miejscach, w których program milczeć nie może. Osiem najczęstszych miejsc wylicza sekcja 3: granice okna, ostrość nierówności, sygnał przy otwartej pozycji, sygnał na świecy zamknięcia, braki w danych, identyfikacja świec przy zmianie czasu, pozycja bez rozstrzygnięcia i koniec okresu testu. Skutek bywa nieproporcjonalny do skali rozbieżności, bo transakcje sporne powstają w sytuacjach brzegowych i mają własny rozkład wyników: w przykładzie z tej sekcji rozbieżność 18,2% listy przekłada się na ponad sześciokrotną różnicę średniego wyniku. Naprawia się to uzupełnieniem zapisu, a nie poprawką w jednym z programów.

Źródła i bibliografia

  1. Pardo, R., The Evaluation and Optimization of Trading Strategies, John Wiley & Sons, wyd. 2, 2008 — procedura przesuwanych okien: dobór parametrów na oknie wcześniejszym i odczyt wyniku na oknie następnym, nieużytym do doboru, z przesunięciem całości i powtórzeniem. Przywołane w sekcji 5 wyłącznie dla wskazania konstrukcji tej procedury; monografia nie dokumentuje żadnej z liczb podanych w tym artykule.
  2. White, H., „A Reality Check for Data Snooping", Econometrica, Vol. 68, No. 5, 2000, s. 1097–1126 — formalne ujęcie problemu wielokrotnego testowania: przy przeglądaniu wielu reguł na tym samym zbiorze danych wynik najlepszej z nich nie stanowi dowodu, a ocena istotności musi uwzględniać całą przeglądaną rodzinę. Przywołane w sekcji 6 i w sekcji 9 przy pytaniu o liczbę sprawdzonych wariantów.
  3. Bailey, D.H., Borwein, J.M., López de Prado, M., Zhu, Q.J., „The Probability of Backtest Overfitting", Journal of Computational Finance, Vol. 20, No. 4, s. 39–69, 2017 — im więcej konfiguracji sprawdzono na tej samej próbie, tym słabszy związek między wynikiem na próbie uczącej a zachowaniem poza nią. Przywołane w sekcji 6 przy przeoptymalizowaniu i przy zużywaniu się okna kontrolnego.
  4. Harvey, C.R., Liu, Y., Zhu, H., „…and the Cross-Section of Expected Returns", The Review of Financial Studies, Vol. 29, No. 1, 2016, s. 5–68 — przy dużej liczbie testowanych zależności zwyczajowe progi istotności przepuszczają znaczną część wyników fałszywie dodatnich, a rozsądny próg musi być wyraźnie wyższy. Praca dotyczy przekroju stóp zwrotu na rynku akcji i nie przenosi się wprost na testowanie reguł na rynku walutowym; przywołana w sekcji 6 jako ilustracja skali tego samego mechanizmu.
  5. Park, C.-H., Irwin, S.H., „What Do We Know About the Profitability of Technical Analysis?", Journal of Economic Surveys, Vol. 21, No. 4, 2007, s. 786–826 — przegląd badań nad zyskownością reguł technicznych; znaczna część wcześniejszych wyników pozytywnych daje się wyjaśnić wielokrotnym testowaniem, doborem próby i pominięciem kosztów. Przywołane w sekcji 6 wyłącznie dla wskazania, że dowody bywały słabsze, niż wyglądały; przegląd nie rozstrzyga o skuteczności jakiejkolwiek konkretnej reguły.

Jarosław Wasiński LinkedIn

Redaktor naczelny MyBank.pl • Analityk finansowy i rynkowy

mgr Jarosław Wasiński — niezależny analityk i praktyk z ponad 20-letnim doświadczeniem w sektorze finansowym. Twórca i redaktor naczelny portalu MyBank.pl, dostarczającego rzetelną wiedzę o finansach osobistych, bankowości i inwestycjach od 2004 roku.

  • Bankowość i produkty finansowe: porównania kont osobistych i firmowych, analiza taryf opłat, testy aplikacji mobilnych, recenzje kredytów, lokat i kart kredytowych — z naciskiem na realne koszty i ukryte opłaty.
  • Rynki finansowe i makroekonomia: analiza fundamentalna rynków walutowych (Forex) i makroekonomicznych od 2007 roku, zarządzanie ryzykiem kapitału, struktura rynków OTC.
  • Kryptowaluty: analiza rynku kryptowalut, mechanizmów blockchain i tokenizacji aktywów w kontekście portfela inwestycyjnego.

Autor setek komentarzy rynkowych, analiz porównawczych produktów bankowych i materiałów edukacyjnych. Zwolennik transparentności — każdy ranking i recenzja na MyBank.pl opiera się na jawnej metodologii i zweryfikowanych źródłach (taryfy banków, regulaminy promocji, dane NBP).

Treści mają charakter edukacyjny i informacyjny — nie stanowią porady inwestycyjnej, rekomendacji ani oferty. Decyzje finansowe podejmuj na podstawie własnej analizy i konsultacji z doradcą.