Okładka książki „Deep Reinforcement Learning Hands-On” Maxima Lapana, trzecie wydanie, Packt Publishing

Recenzja książki

Deep Reinforcement Learning Hands-On

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

To nie jest książka o giełdzie, tylko o tym, jak nauczyć program podejmować decyzje przez próby i błędy. Trzymamy ją w warsztacie, bo uczenie ze wzmocnieniem (reinforcement learning, RL) to jedna z dróg dla tych, którzy chcą sprawdzić, czy system może wspierać decyzje o wielkości pozycji i momencie wyjścia, a nie tylko sygnalizować wejście. Lapan robi rzecz rzadką: prowadzi od wzoru z artykułu naukowego do działającego kodu w PyTorchu, algorytm po algorytmie, od DQN po RLHF i MuZero. Ma osobny rozdział o handlu akcjami, i ten czytamy u nas najuważniej, bo to tam autor jest najszczerszy co do tego, jak daleko od działającej strategii jest działający model.

Od papieru do działającego kodu

Największa wartość tej książki jest w przejściu, którego w literaturze RL brakuje najbardziej: od matematyki w artykule do kodu, który się uruchamia i zbiega. Lapan sam nazywa tę lukę wprost we wstępie, pisząc, że nie zawsze wiadomo, jak zrobić krok od abstrakcyjnej metody opisanej ciężkim wzorem do implementacji rozwiązującej realny problem. Cała reszta książki jest próbą wypełnienia tej dziury własnym repozytorium.

Zanim jednak przejdzie do kodu, autor cofa się do samej mechaniki uczenia ze wzmocnieniem i powtarza ją uparcie:

The learning process is driven only by the reward value and observations obtained from the environment.

Maxim Lapan, Przedmowa

Tu kryje się cała obietnica i cały kłopot. Obietnica: nie musisz mieć etykiet „dobrego ruchu”, jak w klasycznym uczeniu nadzorowanym, wystarczy nagroda i obserwacja. Kłopot: jeśli to nagroda steruje całą nauką, to każdy błąd w jej zaprojektowaniu agent posłusznie zoptymalizuje, łącznie z błędem. Dla nas, którzy myślimy o handlu w kategoriach jednostek R (jednostka ryzyka w pojedynczej transakcji) i kosztów, to nie jest neutralna ciekawostka, tylko ostrzeżenie, które wraca w rozdziale o giełdzie.

Sztych: otwarta księga równań przechodząca w mechaniczną głowę z trybami: od wzoru naukowego do działającego kodu uczenia ze wzmocnieniem.
Od wzoru w artykule do działającego agenta: w tym przejściu leży największa wartość książki. Sztych Bractwa Rynku.

Rozdział o handlu

Rozdział 10 to pierwszy duży projekt w książce i jednocześnie miejsce, w którym autor najmocniej studzi zapał czytelnika. Otwiera go zdaniem, które powinno wisieć nad każdym kursem „AI w tradingu”:

I can’t promise that the code will make you super rich on the stock market or Forex, because my goal is much less ambitious: to demonstrate how to go beyond the Atari games and apply RL to a different practical domain.

Maxim Lapan, Rozdział 10

To jest dokładnie ton, którego u nas szukamy: warsztat, nie wieszczenie. Lapan buduje własne środowisko zgodne z API Gym, daje agentowi trzy akcje (czekaj, kup jedną akcję, zamknij pozycję) i trenuje na nim DQN z rozszerzeniami. Świadomie upraszcza: jedna akcja naraz, brak krótkiej sprzedaży, brak skalowania pozycji. Sam zaznacza, że to decyzja celowa, żeby przykład został czytelny, i dobrze, bo dzięki temu widać sam szkielet mechanizmu. Problem w tym, że ten szkielet jest tak daleki od realnej mechaniki rynku, że wnioski o zyskowności trzeba czytać z dużą ostrożnością, do czego sam autor uczciwie wraca pod koniec rozdziału, bo to opis metody badawczej, nie rekomendacja transakcyjna.

Nagroda to cała gra

Najcenniejsza lekcja tego rozdziału leży gdzie indziej niż w sieci czy treningu: w projektowaniu nagrody. W grach Atari nagroda jest dana z góry: to wynik na ekranie. Przy własnym środowisku handlowym nikt jej nie podaje, trzeba ją skonstruować, a to znaczy zaszyć w niej własne założenia o tym, co jest dobre.

The reward system is also not given as a strict set of rules; rather, it will be guided by our feelings and knowledge of the domain, which gives us lots of flexibility.

Maxim Lapan, Rozdział 10

„Flexibility” brzmi zachęcająco, ale to miecz obosieczny. Cała wiedza o rynku i wszystkie błędy poznawcze konstruktora trafiają właśnie tutaj, w definicję nagrody. Lapan pokazuje to namacalnie: rozbicie nagrody na każdy słupek czasu albo wypłata całości dopiero przy zamknięciu pozycji wygląda na to samo, a w praktyce daje dramatycznie różne zachowanie agenta. To jest moment, w którym książka przestaje być kursem PyTorcha, a zaczyna mówić coś prawdziwego o rynku: w RL na danych finansowych przewaga albo katastrofa siedzi w kształcie nagrody, a architektura sieci jest przy tym wtórna.

Sztych: dłoń z wagą kształtująca mechaniczną figurę, obraz tego, jak projekt nagrody steruje zachowaniem agenta uczenia ze wzmocnieniem.
To kształt nagrody, a nie architektura sieci, decyduje o zachowaniu agenta, łącznie z jego błędami. Sztych Bractwa Rynku.

Spowiedź z przeuczenia

Rozdział kończy się czymś, co rzadko spotyka się w książkach sprzedających „AI na giełdzie”: uczciwym rachunkiem strat. Model na danych treningowych pokazuje 150 procent zysku w rok, a na danych walidacyjnych wynik jest znacznie gorszy. Lapan nie zamiata tego pod dywan, przeciwnie, łapie się na pokusie, której ulega większość amatorów:

But, of course, taking the best model based on validation data is cheating — by using validation results for model’s selection, we are ruining the idea of validation.

Maxim Lapan, Rozdział 10

To zdanie warte jest połowy niejednego kursu tradingu: wybieranie najlepszego modelu po wyniku na zbiorze walidacyjnym to przeciek z przyszłości, który niszczy sens walidacji, i autor mówi to wprost, zamiast pochwalić się ładnym wykresem. Druga szczerość dotyczy symulacji wykonania:

Our order simulation is very primitive and doesn’t take into account real-life situations, such as price spread and a slip in order execution.

Maxim Lapan, Rozdział 10

Dla nas to zdanie domyka sprawę. Spread i poślizg często decydują o tym, czy backtest przeżyje kontakt z rachunkiem. Agent, który nie płaci realnego spreadu ani nie dostaje gorszej ceny przy wejściu, żyje w świecie, w którym handel jest darmowy. Lapan to wie i pisze to czarno na białym, a my czytamy to jako potwierdzenie własnej tezy: koszty i mikrostruktura nie są dodatkiem do strategii, tylko jej częścią.

Sztych: krzywa zysku treningowego pnąca się w górę, jej odbicie w pękniętym lustrze pokazuje znacznie uboższy wynik na danych walidacyjnych.
Iluzja zysku: 150 procent na treningu, znacznie mniej na walidacji. Sztych Bractwa Rynku.

Jak tego używamy

U nas ta książka ma funkcję roboczą, jest podręcznikiem pod konkretny etap. Rdzeń systemu R&D na MES (kontrakt Micro E-mini S&P 500, na którym pracujemy) to dziś pomiary, koszty i logika setupów. RL ma później wspierać warstwę decyzyjną: testowanie decyzji o wielkości pozycji, momencie wyjścia i zarządzaniu ryzykiem w czasie. Kiedy do tego dojdziemy, potrzebny będzie działający kod metod wartościowych i gradientu polityki, i to Lapan daje w komplecie: DQN i jego rozszerzenia, A2C i A3C, rodzinę metod gradientu polityki, w tym TRPO i PPO, w końcu RLHF.

Dwie rzeczy bierzemy stąd od razu, jeszcze przed implementacją. Pierwsza to dyscyplina podziału danych: skoro nawet autor podręcznika łapie się na przecieku z walidacji, to znaczy, że trzymanie zbioru testowego nietkniętego aż do końca jest u nas twardym warunkiem. Druga to traktowanie projektu nagrody jako decyzji pierwszego rzędu, ważniejszej niż dobór architektury sieci. W naszych jednostkach R znaczy to, że nagroda agenta musi być policzona po kosztach, ze spreadem i poślizgiem, bo inaczej zoptymalizujemy wynik z symulacji, którego na rachunku nie zobaczymy. Książka nie liczy tego za nas, ale daje środowisko i kod, w którym da się to dopisać, i nazywa po imieniu miejsca, gdzie najłatwiej skłamać samemu sobie.

Czego tu nie ma

Najuczciwiej o dobrej książce mówi się, wskazując, gdzie pęka. Pierwsze pęknięcie: to nie jest pozycja o finansach. Handel jest jednym z wielu poligonów obok gier, robotyki, nawigacji po stronach i kostki Rubika, a rozdział o giełdzie to przykład dydaktyczny; po gotowy fundament strategii trzeba sięgnąć gdzie indziej. Kto liczy na przepis na system transakcyjny, odłoży książkę rozczarowany. Sam Lapan ostrzega, że zbudowanie kompletnej i zyskownej strategii w RL to projekt na miesiące wytężonej pracy, a rozdział 10 jest dopiero początkiem.

Drugie pęknięcie: to książka o kodzie, a kod się starzeje szybciej niż idea. Migracja z biblioteki Gym do Gymnasium, wersje PyTorcha, zależności, to wszystko będzie wymagało aktualizacji, i część przykładów już dziś trzeba doprowadzać do biegu ręcznie. Same algorytmy, wartość, polityka, aktor-krytyk, są trwałe, a otoczka, w której je tu podano, już nie.

Trzecie: próg wejścia jest wysoki i autor go nie ukrywa. Książka zakłada Pythona, rachunek różniczkowy i znajomość uczenia maszynowego. Kto tego nie ma, utonie w pierwszych rozdziałach, zanim dojdzie do handlu. To nie jest wada, to uczciwa deklaracja adresata, ale trzeba ją znać, zanim się tę cegłę otworzy.

Werdykt

Praktyczność 7, głębia 6, aktualność 6. Praktyczność wysoko, bo to rzadki gatunek: książka z kompletnymi, konkretnymi implementacjami całego kanonu metod RL, od DQN po RLHF, choć część przykładów wymaga dziś ręcznego odświeżenia zależności. Ujmuję jej dwa punkty względem najlepszych w naszym zbiorze, bo droga od tego kodu do działającej strategii na MES jest długa, a książka świadomie jej nie skraca, pokazuje narzędzie, nie gotowy warsztat handlowy.

Głębię stawiam pośrodku, bo to solidna, szeroka kompilacja implementacyjna, a nie autorska teoria. Lapan świetnie tłumaczy, jak metody działają i jak je zakodować, ale teoria, na której stoją, jest cudza, a sam rozdział o handlu zostaje na poziomie przykładu, bez pogłębionej analizy rynku. Aktualność też pośrodku, i to celowo: treść jest z 2024 roku i pojęcia się nie zestarzeją, ale to książka o kodzie, a kod żyje krócej niż zasada. Migracja z Gym do Gymnasium i zmiany wersji PyTorcha już dziś wymuszają ręczne poprawki w części przykładów, więc kolejne wydania będą konieczne. Dla porównania klasyka, która daje samą zasadę bez kodu, broni się dłużej, choć uczy wolniej.

Komu polecić? Praktykowi, który zna już Pythona i podstawy uczenia maszynowego i chce zejść z poziomu artykułów na poziom działającego agenta. Kto szuka gotowej strategii na giełdę, niech szuka gdzie indziej, bo tej tu nie ma i autor pierwszy to przyznaje. U nas książka czeka na swój moment: nie na dziś, kiedy mierzymy koszty i logikę setupów, lecz na etap, w którym system będzie wspierać decyzje o tym, ile i kiedy. Wtedy będzie pod ręką, z kodem i z uczciwym spisem miejsc, w których łatwo oszukać samego siebie.