Quantopian – sprawdź się na amerykańskiej giełdzie!

W dwóch artykułach, które opublikowałem jakiś czas temu, pokazałem jak dobrać się w domowym zaciszu do danych OHLCV z Giełdy Papierów Wartościowych (Co tam na giełdzie słychać? GPW-ML #1 i Czy mamy tu jakieś wrony? GPW-ML #2 – TA-Lib). Teraz przyszła pora na coś podobnego, ale inaczej. Chciałbym omówić usługę, a w zasadzie cały serwis, który nazywa się Quantopian.

Quantopian

Quantopian to serwis, który istnieje od 2011 i jego celem jest zarabianie pieniędzy poprzez wykorzystywanie najlepszych algorytmów inwestycyjnych dostarczonych przez przypadkowych ludzi (crowdsourcing). Ich model biznesowy stwarza ofertę dla dwóch rodzajów klientów.

Pierwszy rodzaj klientów to zwykli ludzie, którzy umieszczają swoje skrypty w ich systemie konkursowym. Ich system ocenia efektywność tych skryptów i na tej podstawie typowani są najlepsi. Ci najlepsi dostają ofertę licencjonowania ich skryptu poprzez Quantopian klientom zewnętrznym.

Drugim rodzajem klientów są wspomniani klienci zewnętrzni, którzy inwestują, korzystając z licencjonowanych algorytmów. Proste, nie?

Od czasu do czasu klikam coś sobie w ich systemie, sprawdzając, jak wygląda ich oferta dla zwykłego szaraczka. Przyjrzyjmy się więc, co dostajemy, wchodząc tam „z ulicy”.

Środowisko

Pierwszą funkcjonalnością, z której od razu możemy korzystać to notebooki Jupyter. Jest to środowisko podobne do tego oferowanego przez Kaggle, jak i przez Google. Nie znam jego dokładnych parametrów, ale raczej nie odbiega znacząco od powyższych. Kilka kliknięć i już możemy kodować nas super algorytm, który rzuci świat na kolana.

API

Drugim elementem oferowanego przez nich systemu to API dające dostęp do ichniego backendu inwestycyjnego. Brzmi to trochę dziwnie, ale tak naprawdę chodzi o to, że żeby jak najbardziej ułatwić pracę, przygotowali oni całą masę kodu, który usprawnia obliczenia, inwestowanie, ocenę inwestycji, zarządzanie portfelem i inne elementy, z których nawet sobie nie zdaję sprawy. Dzięki łatwemu dostępowi do tego wszystkiego przez API nie musimy kodować całej otoczki, która sprawdzi, czy to, co w ogóle robimy, ma sens.

Źródła danych

Skoro już jesteśmy przy API, to zdecydowanie warto wspomnieć, że daje nam ono dostęp do całkiem sporej palety darmowych (są też płatne) źródeł danych. Jeśli jakieś z oferowanych przez nich źródło danych nam pasuje, to nie musimy się w ogóle głowić nad tym, jak go użyć. Po prostu wpinamy je w nasz skrypt.

Backtesting

Jak już będziemy zadowoleni z naszego modelu, to możemy przenieść go z notebooka do pełnego IDE, które zawiera opcję backtesting. Na czym polega backtesting? Bierzemy nasz algorytm i przygotowujemy go tak, jakby był uruchomiony na produkcji. Ale uruchamiamy go na dacie w przeszłości i obserwujemy, jak sobie będzie radził w inwestycjach. Po przejściu przez backtest uzyskamy podobny wykres:

Backtest
Backtest

Dowiemy się z niego, ile byśmy zarobili i ile wytycznych spełnilibyśmy. Bardzo fajna sprawa. Nie uchroni nas oczywiście przed bankructwem, ale przynajmniej ostudzi hurra optymizm.

Konkurs

Tak jak wspomniałem, Quantopian chce nam pozwolić zarobić. Jeżeli stworzymy dochodowy algorytm to, będą się ubiegać o licencję na jego używanie. A skąd będą wiedzieć, że mamy fajny algorytm? Zobaczą na tabelkę liderów konkursu.

Załóżmy, że mamy fajny algorytm i implementację. Backtesty wyszły dobrze. Spełniamy kryteria. Zgłosiliśmy się do konkursu. Mogą zadziać się dwie rzeczy. Pierwsza to taka, że jeżeli załapiemy się w top 10 danego dnia, to dostaniemy nagrodę pieniężną. Pierwsze miejsce dostaje 50 USD, kolejne 45 USD i tak aż do 5 USD. Druga sytuacja to taka, że nasz algorytm hula już kilka miesięcy na platformie i wciąż spełnia wszystkie wspomniane kryteria. Wtedy Quantopian sprawdzi strukturę naszego portfela i jeśli będzie im pasować, to do nas zagadają. Jeśli będziemy chętni i będziemy w stanie wytłumaczyć nasz algorytm, to wykupią od nas licencję na jego używanie. Nie wczytywałem się dokładnie w warunki, ale będzie to pewnie całkiem ciekawa okazja. Także nie walczymy tutaj tylko „o rację”. Parę USD też może wpaść.

Open Source

Może też się zdarzyć, że nie ufamy tej firmie. Nie chcemy umieszczać naszej magii na ich serwerze w obawie, że ktoś nam ją ukradnie. I tutaj też mam dobrą wiadomość. Quantopian dość mocno opiera się na rozwiązaniach Open Source (Python, Jupyter i cała reszta). I z tej racji postanowili odwdzięczyć się społeczności i opublikowali swoje trzy moduły Pythonowe do dowolnego użytku! Mamy tu więc Zipline, które pozwala projektować swoją strategię inwestycyjną. Pyfolio, które pozwala zarządzać i analizować portfel. Oraz Alphalens, które umożliwia łatwe wyliczanie metryk i wskaźników.

Przy odrobinie samozaparcia i wysiłku możemy więc zbudować podobny do ichniego system w domowym zaciszu. Nikt nam wtedy tego nie ukradnie i będziemy mogli „potajemnie” inwestować na giełdzie :-).

Samouczki

Ostatnim elementem systemu Quantopian są samouczki. Podzielone są one na całościowe lekcje i na mniej lub bardziej połączone ze sobą. Wszystkie te samouczki są zaprojektowane w kontekście ich systemu i inwestowania algorytmicznego, ale zawierają też całą masę wiedzy ogólnej. Myślę więc, że warto tam zaglądnąć.

Podsumowanie

Jak widać, nie potrzebujesz 10M USD na koncie, żeby zacząć zajmować się inwestowaniem algorytmicznym. Fakt, przy pomocy takiej platformy nie uda Ci się symulować wpływu Twoich decyzji na rynek. No bo gdyby np. Marcin Iwiński sprzedał z dnia na dzień wszystkie swoje udziały spółki CDPROJEKT, to sądzę, że ostro by to zmieniło jej wycenę. Pomijam całkiem, prawne możliwości takiego działania. A Twój algorytm może przecież podjąć podobne decyzje. I wcale nie musi to wyjść na testach :-].

Jeśli ufasz Quantopian, to może uda Ci się podpisać całkiem lukratywną umowę z nimi na wykorzystanie Twoich osiągnięć. A jeśli nie, to możesz sobie zbudować domowe laboratorium, które wykorzystasz na własną rękę. Żeby tylko doba była dłuższa…

Jeśli interesuje Cię jakiś temat – nie musi być związany z tym artykułem – to zostaw mi sygnał tutaj. Dzięki!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *