Okładka książki „Szeregi czasowe. Praktyczna analiza i predykcja z wykorzystaniem statystyki i uczenia maszynowego” Aileen Nielsen, polskie wydanie Helion 2020

Recenzja książki

Szeregi czasowe. Praktyczna analiza i predykcja z wykorzystaniem statystyki i uczenia maszynowego

  • Praktyka 7/10 ile da się wdrożyć
  • Głębia 6/10 siła argumentu
  • Aktualność 6/10 czy nie zestarzała się

Aileen Nielsen napisała książkę o przewidywaniu, która najwięcej miejsca poświęca temu, jak przewidywanie potrafi nas oszukać. To poradnik praktyczny, z kodem w R i Pythonie, prowadzący przez cały potok pracy z danymi czasowymi, od ich pozyskania po sieci neuronowe. Trzymamy ją w bibliotece nie dla przepisów na ARIMA, choć są, lecz dla jej uporu w nazywaniu pułapek, które na danych uporządkowanych w czasie wyglądają niewinnie, a po cichu psują każdy model. Dla nas, którzy liczą wszystko w jednostkach R i po kosztach, taka dyscyplina jest warta więcej niż katalog metod.

Sztych: wielka klepsydra, z której sypiący się piasek układa się w rząd punktów danych biegnących wzdłuż poziomej osi czasu i wznoszących się w poszarpany wykres świecowy.
Czas i dane uporządkowane wzdłuż jednej osi: to surowiec, którym zajmuje się cała ta książka. Sztych Bractwa Rynku.

Mapa, nie monografia

Najpierw uczciwie o zakresie. To szeroki przegląd, świadomie postawiony na rozmach kosztem głębi. Nielsen sama tłumaczy we wstępie, że napisała tę książkę, bo brakowało jednego scentralizowanego źródła wiążącego klasyczną statystykę szeregów czasowych z nowoczesną analizą danych i uczeniem maszynowym. Stąd zakres: siedemnaście rozdziałów prowadzi od pozyskiwania i czyszczenia danych, przez modele statystyczne i modele zmiennych stanu, po uczenie maszynowe i sieci głębokie, a na końcu pokazuje zastosowania w medycynie, administracji państwowej i finansach. Finanse zajmują tu jeden rozdział z wielu, obok medycyny i danych rządowych.

Kod jest w dwóch językach, R i Pythonie, czasem ten sam pomysł raz tu, raz tam. Dla czytelnika budującego stos pythonowy to bywa kłopotliwe, bo połowa przykładów wymaga przekładu. Dlaczego więc bierzemy tę pozycję do warsztatu, w którym pracujemy na jednym instrumencie i jednym interwale? Bo zanim policzymy cokolwiek na minutowych świecach z MES, mamy do czynienia z tym samym surowcem, którym zajmuje się cała ta książka: wartościami uporządkowanymi wzdłuż osi czasu. Autokorelacja, niestacjonarność, wyciek informacji i pułapka lookahead nie znają się na klasie aktywów. Ta książka jest u nas mapą terenu pod warstwę danych, a gotowych strategii szukamy osobno.

Lookahead, czyli błąd, który widać w pracach naukowych

Jeśli książka ma jeden nerw ciągnący się przez wszystkie rozdziały, to jest nim lookahead: wpuszczenie do modelu informacji z przyszłości, której w chwili predykcji nie mógł mieć. Nielsen wraca do tego raz po raz, bo to grzech, który najłatwiej popełnić i najtrudniej wykryć. Najmocniej brzmi w rozdziale o pomiarach błędów:

Jest to niebezpieczny przykład zjawiska lookahead, który jest tak podstępny, że wciąż pojawia się w artykułach naukowych.

Aileen Nielsen, Rozdział 11, „Pomiary błędów”

To nie przesada. Autorka pokazuje konkretny mechanizm. Zwykłe wygładzanie wykładnicze, rutynowy krok przetwarzania wstępnego, potrafi przeciekać informacją ze zbioru uczącego do testowego, bo każda wygładzona wartość niesie w sobie średnią z przeszłych obserwacji i tym samym zmniejsza to, co model musi naprawdę przewidzieć. Im mocniej wygładzasz, tym „lepsze” stają się prognozy, i tym głębiej okłamujesz sam siebie. Nielsen spina to z drugim wątkiem: lookahead i nadmierne dopasowanie chodzą parą, a w szeregach czasowych to drugie jest poważnym problemem właśnie dlatego, że pierwsze tak trudno zauważyć.

Dla nas przekłada się to wprost na inżynierię cech na danych minutowych. Każdy wskaźnik liczony na oknie, każda normalizacja, każde przesunięcie, które przypadkiem zagląda do świecy jeszcze nieistniejącej, zawyża backtest i znika na żywo. Zbiór testowy trzymamy nietknięty do końca, a cechy liczymy tak, jakby przyszłości nie było, bo w momencie decyzji jej nie ma.

Sztych: jasna pionowa linia teraźniejszości dzieli wykres na narysowaną przeszłość i jeszcze nienarysowaną przyszłość, a mechaniczna dłoń sięga przez tę linię i wyrywa świecący punkt z przyszłej połowy krzywej.
Lookahead: wpuszczenie do modelu informacji z przyszłości, której w chwili predykcji nie mógł mieć. Sztych Bractwa Rynku.

Stacjonarność to nie wykres, to liczba

Drugi filar tej dyscypliny to stacjonarność. Większość klasycznych modeli, od autoregresji po ARIMA, zakłada, że statystyczne własności szeregu, czyli średnia i wariancja, nie zmieniają się w czasie. Łatwo to zbyć rzutem oka na wykres. Nielsen nie pozwala:

stacjonarność nie jest po prostu cechą wizualną, lecz raczej matematyczną i możliwą do przeliczenia koncepcją powiązaną z charakterystyką każdego modelu statystycznego

Aileen Nielsen, Rozdział 6, „Modele statystyczne”

To zdanie mogłoby wisieć nad naszym warsztatem, bo jest dokładnie tą zasadą, którą powtarzamy przy każdej liczbie: nie „wygląda OK”, tylko „czy to policzone”. Autorka wyprowadza warunki stacjonarności dla procesu AR(1) krok po kroku i pokazuje, że stoi za nią konkretna nierówność do sprawdzenia.

Stawka jest czysto praktyczna. Gdy dopuścisz do modelu dane niestacjonarne, dostajesz fałszywy sukces:

W takim przypadku nierozpoznany trend, będący w rzeczywistości czymś, co powinniśmy byli wyeliminować na wcześniejszych etapach pracy, fałszywie zawyża wydajność modelu.

Aileen Nielsen, Rozdział 6, „Modele statystyczne”

Ceny na MES są niestacjonarne z natury. Dryfują, zmieniają reżimy zmienności, mają trendy. Model dopasowany do poziomu cen zamiast do zwrotów łapie trend, którego nie powinno tam być, i raportuje wydajność, której na rachunku nie zobaczysz. Różnicowanie, praca na zwrotach i świadomość zmian reżimu to u nas twardy warunek, żeby metryka w ogóle coś znaczyła.

Sztych: falująca linia ceny mierzona cyrklem i suwmiarką, odczytana wartość odbita na szalce wagi, obok odłożone szkło powiększające.
Stacjonarność to nie wrażenie z wykresu, lecz liczba, którą trzeba policzyć. Sztych Bractwa Rynku.

Rynek jako błądzenie losowe

Kiedy Nielsen w końcu dochodzi do rynków, zaczyna od modelu, który dla wielu brzmi jak kapitulacja, a jest pokorą:

W rzeczywistości zmiany cen akcji są często nazywane kwintesencją naturalnie występujących procesów błądzenia losowego.

Aileen Nielsen, Rozdział 14, „Zastosowania w obszarze finansów”

Konsekwencja jest twarda i u nas codzienna. Skoro zmiany cen najlepiej w pierwszym przybliżeniu opisuje błądzenie losowe, to model zerowy, do którego porównujemy wszystko inne, brzmi prosto: jutrzejsza cena równa się dzisiejszej. Każdy bardziej skomplikowany model musi najpierw pobić tę naiwną prognozę, i to nie na wykresie, lecz po odjęciu kosztów. Nielsen dorzuca przy okazji ostrzeżenie, że wiele rzekomych zmian reżimu to po prostu naturalne kształty, jakie błądzenie losowe produkuje samo z siebie. Dopatrywanie się w nich sygnału to klasyczne mylenie szumu z informacją, a to samo ostrzeżenie wisi nad każdym setupem, który „widać” na wykresie, a którego nie da się obronić liczbą.

Sztych: postać z zawiązanymi oczami zostawia kręty ślad stóp na siatce współrzędnych, nad każdym krokiem moneta zastygła w locie, a ślad układa się w kształt wykresu rynku.
Zmiany cen jako błądzenie losowe: model zerowy brzmi prosto, jutro jak dziś. Sztych Bractwa Rynku.

Finanse to najtwardszy grunt

Najcenniejsze jest to, że Nielsen nie udaje, iż finanse są jak każda inna dziedzina. Mówi wprost:

finansowe szeregi czasowe są niezwykle trudne do zrozumienia i modelowania. Mimo że branża finansowa nadal stanowi podstawę zachodniej gospodarki, eksperci są zgodni co do tego, że bardzo trudno jest prognozować jej losy.

Aileen Nielsen, Rozdział 14, „Zastosowania w obszarze finansów”

I dowodzi tego własnym przykładem. Gdy buduje rekurencyjną sieć neuronową do prognozy zwrotów na realnych danych S&P 500, wynik jest na tyle słaby, że sama przyznaje: skala prognoz tak odbiega od rzeczywistych wartości, że model trudno w ogóle ocenić, a otrzymane wykresy wyszły, jak pisze, nie aż tak satysfakcjonujące. To rzadka uczciwość w książce o uczeniu maszynowym, gdzie pokusa pokazania tylko ładnych wyników jest ogromna. Dla praktyka to najważniejsza lekcja całego rozdziału: na rynku nawet poprawnie zbudowany model częściej przegrywa z prostą bazą, niż ją bije, i trzeba to zobaczyć, zanim zaryzykuje się kapitał.

Sztych: po lewej skomplikowana maszyna prognozująca z trybów i dźwigni sypie iskrami, bezskutecznie tłukąc się o poszarpany skalisty teren cen; po prawej prosty pion wisi nieruchomo i równo.
Na rynku nawet poprawnie zbudowany model częściej przegrywa z prostą bazą, niż ją bije. Sztych Bractwa Rynku.

Jak tego używamy

U nas ta pozycja pełni rolę fundamentu pod warstwę danych. Strategii szukamy gdzie indziej. Anatomia danych i metryki, czyli to, na czym stoi cały system R&D na MES, zaczynają się od pytań, które Nielsen zadaje na każdej stronie: skąd wiesz, że twoja cecha nie zagląda w przyszłość, że twój szereg jest stacjonarny, że twój model bije naiwną bazę.

Bierzemy stąd trzy nawyki. Lookahead traktujemy jak grzech główny inżynierii cech: zbiór testowy zostaje nietknięty, a każda cecha liczona jest tak, by nie sięgała poza moment decyzji. Stacjonarność sprawdzamy liczbą, zanim dopuścimy szereg do modelu, bo inaczej metryka kłamie. I każdy model najpierw mierzymy z naiwną bazą po kosztach, bo dopóki nie pobije „jutro jak dziś” netto, jest opowieścią, nie przewagą. Książka nie da nam gotowego setupu i nie udaje, że da. Daje za to siatkę pojęć, dzięki której łatwiej złapać się na własnym oszustwie, zanim zrobi to rynek.

Gdzie pęka

Najuczciwiej o książce mówi się tam, gdzie ustępuje.

Po pierwsze, szerokość kosztuje głębię. Siedemnaście rozdziałów przez kilkanaście dziedzin oznacza, że żaden temat nie schodzi tak głęboko jak monografia poświęcona jednemu zagadnieniu. Kto chce naprawdę zrozumieć, dlaczego ARIMA działa albo kiedy GARCH się rozjeżdża, po teorię i tak sięgnie gdzie indziej. To świetna mapa, ale nie atlas.

Po drugie, podwójny język. Przykłady krążą między R a Pythonem, a część najciekawszych funkcji autorka pokazuje akurat w R. Dla czytelnika budującego czysto pythonowy stos to stały podatek od tłumaczenia.

Po trzecie, data ważności kodu. To rok 2020. Część bibliotek i cały rozdział o uczeniu głębokim osadzone są w realiach sprzed kilku generacji narzędzi, a w uczeniu maszynowym to długo. Idee przetrwają, konkretne wywołania funkcji raczej nie.

Po czwarte, to książka o prognozie, czyli o przewidywaniu wartości, a nie o decyzji. Handel to wielkość pozycji, ryzyko i wyjście, a tego w niej prawie nie ma. Prognoza punktowa jest dopiero surowcem dla decyzji, i o tej drugiej, trudniejszej połowie trzeba poszukać u kogoś innego.

Sztych: szeroka rozwinięta mapa rozległego terytorium z wieloma ledwie naszkicowanymi regionami, a obok jeden gruby zamknięty tom atlasu.
Świetna mapa całego potoku danych, ale nie atlas jednego zagadnienia. Sztych Bractwa Rynku.

Werdykt

Praktyka 7, głębia 6, aktualność 6.

Praktykę stawiam najwyżej, bo kodu i gotowych przepisów na cały potok danych czasowych jest tu dużo i nadają się jako wzorzec pracy. Nie daję więcej, bo są rozsiane na dwa języki i kilkanaście dziedzin, więc do warsztatu na MES trzeba je samodzielnie wybrać i przepisać, a nie wziąć w całości.

Głębię stawiam pośrodku, spójnie z tym, co napisałem o krytyce. Książka ma realny kręgosłup pojęciowy, dyscyplinę lookaheadu, stacjonarności i baz porównawczych, więc to więcej niż suchy katalog metod. Ale to z założenia przegląd, który sam rezygnuje z głębi na rzecz szerokości, więc dziewiątki tu nie ma.

Aktualność również pośrodku. Rdzeń statystyczny, czyli autokorelacja, stacjonarność i błądzenie losowe, jest ponadczasowy. Ale kod i rozdział o uczeniu głębokim noszą datę 2020 i to po nich poznać starzenie najszybciej, więc trzymam ją na sześć, nie wyżej.

Komu polecić? Praktykowi, który pracuje z danymi w czasie i chce mieć jedną mapę całego potoku, od czyszczenia po model, z naciskiem na pułapki psujące wynik po cichu. Kto szuka gotowej strategii rynkowej albo głębokiej teorii jednego modelu, trafi pod zły adres, a Nielsen pierwsza mu to powie. U nas książka robi dokładnie to, czego od niej oczekujemy: pilnuje, żebyśmy policzyli to, co trzeba, zanim uwierzymy własnemu backtestowi.