Mariusz Prowaźnik

o programowaniu w Javie, Scali i Clojure.


460 mln dolarów strat z powodu błędu przy wdrożeniu. Przypadek Knight Capital

Rok 2012 był bardzo pechowy dla Knight Capital, amerykańskiej firmy robiącej algorytmiczny trading. Błędne wdrożenie nowej wersji jednego z ich systemów spowodowało 460 mln USD strat i zakończyło żywot firmy w dotychczasowej formie.

W Polsce może mało kto słyszał o Knight Capital, ale to nie była jakaś firma-krzak, bo w USA generowała 10% całego handlu na rynku akcji. To bardzo dużo, około 20 mld USD dziennie - ponad 100 razy więcej niż cały dzienny obrót na GPW...

No dobra, ale co tam właściwie się przydarzyło?

Wdrażali nową wersję systemu SMARS, czyli automatycznego rutera do zleceń. Jego przeznaczenie było podobne do tego, co opisałem w poprzednim poście. Wysyłane były do niego zlecenia od klientów, a system rozbijał je na mniejsze kawałki i wysyłał na różne giełdy, tak, żeby uzyskać jak najlepszą cenę.

Zawierał on stary i zapomniany kod, nie używaną od 8 lat funkcjonalność PowerPeg, która była wyłączona konfiguracyjnie. Oczywiście przez te 8 lat wiele w używanym kodzie się zmieniło, między innymi logika sprawdzająca, czy ruter wysłał na rynek wystarczająco dużo zleceń, żeby wykonać zlecenie od klienta. Nikt nie testował, czy stara nieużywana funkcjonalność działa dobrze po tych zmianach. Na krótko przed katastrofą, została wprowadzona nowa funkcjonalność RLP, starą wyrzucono, ale do włączenia nowej, użyto tej samej flagi w konfiguracji! System działał na ośmiu serwerach. Na siedem z nich nowa wersja została wdrożona poprawnie, ale na ósmym pozostał stary kod z nową konfiguracją, która włączyła PowerPeg. Ósmy serwer zaczął produkować ogromną ilość zleceń i wysyłać je na rynek. Gdy ktoś zorientował się, że coś jest nie tak, zrobiono rollback - przywrócono starą wersję kodu na wszystkich serwerach, ale z nową konfiguracją, co sprawiło, że niepotrzebne zlecenia szły na rynek 8 razy szybciej. Wszystko to trwało 45 minut.

Przez te 45 minut SMARS kupił akcje za 3,5 mld USD, oraz otworzył krótkie pozycje na kolejne 3,5 mld USD. Dla porównania przychody Polski z tytułu podatku od osób fizycznych w pierwszej połowie 2015 wyniosły ok 9 mld USD. Zmiany kursów akcji sprawiły, że Knight Capital stracił na tych pozycjach 460 mln USD. Potem jeszcze dostali 12 mln USD kary od SEC (amerykańska agencja rządowa nadzorująca rynki akcji), między innymi za to, że Knight Capital nie miał "bezpieczników", które automatycznie wyłączały systemy po osiągnięciu określonego limitu otwartych pozycji. To znaczy mieli, ale akurat nie w tym miejscu...

Źródło:



Jak software pomaga zarabiać bankom na rynkach finansowych. Na przykładzie systemu THOR.

Już prawie dwa lata programuję systemy do "algorithmic trading" dla finansowej korporacji i zdobyłem nieco wglądu w rynki kapitałowe od strony technologicznej. Długo kusiło mnie, żeby coś na ten temat napisać, ale jako zwykły programista bez wykształcenia ekonomicznego czy finansowego, bałem się, że mogę wprowadzić kogoś w błąd. Niemniej, niektóre komputerowe "maszyny do pieniędzy" oparte są na całkiem prostej do zrozumienia idei i jedną z nich opiszę. Będzie to THOR, który powstał w Royal Bank of Canada.

THOR wysyłał zlecenia kupna, bądź sprzedaży instrumentów finansowych, dodając sztuczne opóźnienia w taki sposób, aby zlecenia docierały na różne rynki w tym samym momencie.

Już tłumaczę, dlaczego jest to ważne. Kupienie dużej ilości akcji, to nie taka prosta sprawa. I to nie jest tylko problem jakichś bardzo bogatych inwestorów, ale też wielu firm z tzw. buy side, które zarządzają kapitałem w jakiś sposób powierzonym im przez ich klientów. Są to np. fundusze inwestycyjne, fundusze emerytalne, ubezpieczyciele... Oni próbują ten kapitał jakoś sensownie ulokować i zbudować portfolio instrumentów finansowych, które w przyszłości może będą warte więcej niż teraz. Wyobraź sobie teraz, że jesteś takim menedżerem funduszu, właśnie skończyłeś grać w Wiedźmina 3 i zdecydowałeś dołożyć do portfela inwestycyjnego akcje CD Projekt za 500 tyś złotych. No ale na giełdzie do kupienia jest:

Ilość   Cena    Wartość
-----------------------
   150  22.40     3360
   300  22.45     6735
  1000  23.10    34100
 15000  24.00   360000
         ...
(dane zmyślone)

Gdyby kupić dużą ilość akcji na jeden raz, cena może dużo podskoczyć. Z pomocą przychodzą brokerzy i dealerzy dla klientów instytucjonalnych. Dealer powie np. "kupię sobie te akcje z rynku, a potem odsprzedam tobie za 23.20 za sztukę". Broker powie np. "kupię je w twoim imieniu najtaniej jak umiem, ale biorę 0.1 % prowizji". Taki dealer lub broker po przyjęciu zlecenia, najprawdopodobniej podzieli je na dużo mniejsze i będzie je wykonywał przez jakiś dłuższy czas, przy okazji kombinując i robiąc zmyłki, żeby inni gracze na rynku nie zorientowali się, że jest ktoś zainteresowany kupnem dużej ilości akcji. Taka informacja jest bardzo cenna. Istnieją brokerzy na zagranicznych rynkach, którzy oferują swoje algorytmy do rozbijania zleceń jako usługę, np Fidelity.

Sprawę komplikuje fakt, że w USA jest kilka giełd, gdzie można handlować akcjami (np. NYSE, BATS, IEX ...) oraz kilka innych wynalazków nie będących giełdami (np. różnego typu ECN, dark pools). Dlatego taki automatyczny system musi jeszcze w jakiś w miarę niegłupi sposób wybrać gdzie jakie zlecenia wysłać. Stąd OR (Order Routing) w nazwie THOR.

Przesyłanie zleceń elektronicznie na różne giełdy zrodziło kolejne komplikacje dla brokerów i dealerów. Powstawały bowiem okazje do arbitrażu, dostępne dla High Frequency Traders, którzy dysponowali szybszą technologią.

Załóżmy, że klient dealera chce akcje XXX za 1 mln USD. Tak się składa, że na rynkach jest tyle do kupienia:

Giełda   Cena     Ilość
-----------------------
A        100.00    100K
B        100.00    300K
C        100.00    200K
D        100.00    500K
(dane zmyślone)

Dealer wysyła zlecenia "po każdej cenie", ale okazuje się, że zrealizowały się nie za 100 USD tylko np. 101 USD. Co się stało?

Jeśli na jedną z giełd zlecenie docierało wcześniej niż na inne, to ktoś inny, dysponujący szybką technologią, mógł zauważyć, że jest zaintresowanie XXX i wykupić je na pozostałych giełdach, zanim dotrą zlecenia od dealera.

THOR był na to odporny, bo wprowadzał sztuczne opóźnienia, które sprawiały, że zlecenia przychodziły na wszystkie giełdy w mniej więcej tym samym momencie. Mała zmiana w działaniu systemu, a duża różnica w efektach.

Źródła

  • "Flash Boys" - Michael Lewis
  • "The Complete Guide to Capital Markets for Quantitative Professionals" - Alex Kuznetsov

Deep Learning - maszyny takie dobre, że aż strach je uczyć

Deep Learning to takie bardzo obiecujące algorytmy sztucznej inteligencji, użyte między innymi w samojeżdżącym Google Car. Polecam prelekcję na ten temat, wygłoszoną na TedX:

Jeremy Howard twierdzi, że możemy spodziewać się w niedalekiej przyszłości rewolucji dzięki Machine Learning i to dużo gwałtowniejszej niż rewolucja przemysłowa. Oznaczałoby to, że wiele zawodów wykonywanych obecnie przez człowieka zostałoby zastąpionych przez inteligentne programy. W tym głównie takich zawodów, które jak dotąd wymagały wielu lat nauki i twórczego myślenia.

Gdyby tak rzeczywiście się stało, miałoby to ogromne konsekwencje społeczne. Z jednej strony, dużo ludzi straciłoby pracę, a z drugiej, może to jakieś światełko w tunelu, jeśli chodzi o naszą sytuację demograficzną ... W końcu za 30 lat młodych, pracujących ludzi w Polsce będzie dużo mniej niż teraz. Do utrzymania systemu w kupie, potrzebny byłby mocny wzrost wydajności pracy - np. dzięki postępowi technologicznemu ... Co o tym wszystkim sądzicie?


Quantitative Trading - recenzja książki

Quantitative Trading to krótki i łatwy w odbiorze poradnik. Nie trzeba być bardzo skoncentrowanym, żeby go czytać, bo nie ma tam skomplikowanej matmy, ani trudnych modeli finansowych. Z drugiej strony, zawiera też stosunkowo mało przykładów algorytmicznych strategii. To taka książka do czytania w metrze przez kogoś mało rozeznanego w temacie rynków finansowych (czyli mnie na przykład). Można w niej przeczytać między innymi o:

  • Sharpe Ratio - określającym relację zysku do ryzyka ze strategii
  • "Kelly Formula" - które ma pomóc określić jak rozdzielić pieniądze pomiędzy różne strategie
  • "Fama French Three-Factor Model"
  • "survivorship bias" - błąd w testowaniu strategii, wynikający z testowania na danych nie zawierających notowań spółek, które upadły. Był na to dobry przykład: strategia "inwestuj 10 najtańszych akcji na rynku" testowana na danych obecnie istniejących spółek daje świetne rezultaty, ale nie w praktyce, bo 8 na 10 takich spółek upadnie.
Autor książki, Ernest Chan, opowiada też o swojej karierze, najpierw w hedge fundzie, potem jako niezależny trader. Jest to ciekawe, ale spodziewałem się więcej na temat budowania własnego zautomatyzowanego systemu "od śrubki do bomby" i innych technicznych spraw. A zawarta w książce lista darmowych i tanich źródeł danych jest już nieaktualna.

Podsumowując, dla mnie ta książka była ciekawa, ale czy była dobra, czy taka sobie, nie umiem określić. Wstrzymam się z taką oceną, dopóki nie wypróbuję rad z książki w praktyce.