MARGO

Aktualności

Podręcznik: instalacja środowiska pracy do rozwoju strategii tradingu i dostosowanie go do rynku kryptowalut

Autor: Eric Fokou Data Scientist @fokou_eric

15/06/2018

Wstęp

W naszych czasach technologia stała się niezbędnym elementem sektora finansów. Zapewnia mu innowacyjność, szybkość oraz konkurencyjność. Konieczność przeprowadzania transakcji finansowych o wysokiej częstotliwości w połączeniu z przetwarzaniem dużych ilości danych sprawiły, że technologia stała się jednym z głównych sił napędowych świata finansów.

W ostatnich latach byliśmy również świadkami narodzenia dwóch zjawisk: sztucznej inteligencji oraz kryptowalut.

Sztuczna inteligencja odgrywa obecnie szczególnie ważną rolę w przedsiębiorstwach zarządzających aktywami. Oprogramowanie ze sztuczną inteligencją używane jest w celu skutecznego określenia najlepszych okresów w tradingu (kupno lub sprzedaż), aktywów, które należy uwzględnić, a także odpowiedniej ilości kupowanych lub sprzedawanych aktywów.

W tym samym czasie stwierdzono, że duża liczba osób posiada kryptowaluty (Bitcoin, Ethereum, Ripple…). Strategią większości z tych osób jest oczekiwanie w nadziei, że ich aktywa zyskają na wartości rynkowej. Tymczasem opierając się na kursie Bitcoina z początku 2018 roku (rysunek 1), dowiadujemy się, że owa strategia nie należy do najbardziej skutecznych.

W efekcie obserwujemy rzeczywisty wzrost cen pod koniec 2017 roku i ich gwałtowny spadek od początku 2018 roku. W chwili obecnej kurs Bitcoina jest coraz bardziej niepewny. Jak zatem przedstawia się prawidłowa strategia wobec reakcji rynku?

Rozwój strategii tradingu przechodzi przez wiele etapów. W szczególności chodzi o etap, podczas którego powinniśmy określić zdarzenia mogące spowodować generowanie sygnału. Następnie należy przeprowadzić wstępne testy (Backtesting) na komputerze w celu zoptymalizowania naszej strategii oraz oceny wydajności i jej solidności. W głównej mierze wszystko oczywiście opiera się na teorii lub ukrytym przekonaniu, iż każda strategia, która z powodzeniem funkcjonowała w przeszłości sprawdzi się również w przyszłości, i że każda strategia, która źle funkcjonowała w przeszłości nie sprawdzi się w przyszłości .

To wszystko może w szybkim tempie powodować ograniczenia. W każdym przypadku kluczowym jest posiadanie stabilnego środowiska pracy, które zapewni nam skupienie się na rozwoju strategii.

Proponujemy zatem wdrożenie rozwiązania w zakresie tworzenia solidnego środowiska pracy umożliwiającego skuteczne eksplorowanie (Backtester) strategii tradingowych. Wspomniane środowisko może być użytkowane przez wszystkie osoby zainteresowane rozwojem algorytmów w obszarze tradingu. W tym celu proponujemy w niniejszym poradniku przedstawienie niezbędnej konfiguracji umożliwiającej instalację lokalnego środowiska tradingu na naszym stanowisku. Środowisko to umożliwi tym samym testowanie strategii (przedstawimy kilka z nich w kolejnych artykułach) w wykorzystaniem aktywów dostępnych na tradycyjnych rynkach (NYSE, NASDAQ…). Następnie pokażemy w jaki sposób przeprowadzić integrację danych poszczególnych kryptowalut w naszym środowisku tradingowym.

Przestrzegamy czytelników niniejszego artykułu, iż rozwój strategii wymaga wiedzy w wielu dziedzinach takich jak matematyka, statystyka, tworzenie oprogramowania, mikrostruktura rynków a nawet psychologia. W tym artykule nie poruszymy tych tematów, gdyż nie proponujemy żadnej skutecznej strategii umożliwiającej zarabianie na rynkach. Z drugiej strony proponujemy wsparcie w tworzeniu skutecznego środowiska umożliwiającego analizę i szybką eksplorację pojęć, które możesz poznać w celu zyskania większego zaufania w zakresie działań podejmowanych w przyszłości.

 

Nie należy zapominać zwłaszcza o jednej rzeczy: inwestuj tylko tę część pieniędzy, którą jesteś gotów stracić.

 

Tworzenie środowiska Backtesting

Rozwój środowiska Backtesting może napotykać poważne ograniczenia i należy być ostrożnym, ponieważ łatwo jest popełnić błędy podczas implementacji tego narzędzia.

W skład narzędzia do Backtesting wchodzą głównie następujące elementy:

Administrator danych (DataHandler) : jest to interfejs odpowiadający za zarządzanie danymi z rynków.

Strategia (Strategy): jest to interfejs pozyskujący dane z rynku i generujący Sygnały. Sygnał określa kierunek (DŁUGI lub KRÓTKI) na aktywie (symbol).

Portfel (Portofolio): jest to interfejs umożliwiający zarządzanie zamówieniami w stosunku do naszej aktualnej pozycji dla danej strategii.

Administrator ryzyka (RiskManagement): zapewnia zarządzanie ryzykiem w obrębie portfela, w tym rozmiar pozycji, które chcemy przyjąć.

Administrator wykonania (ExecutionHandler): wysyła zlecenia do maklera (brokera) i odbiera sygnał wskazujący, czy zapas został kupiony czy sprzedany. Moduł ten umożliwia zarządzanie kosztami transakcji, w szczególności kosztami związanymi z samym zleceniem, prowizją brokera i opóźnieniem wykonania (poślizg cenowy), jeśli istnieje konieczności jego przedstawienia.

Oprócz tych elementów możemy dodać do naszego Backtestera wiele innych, w zależności od ich złożoności.

Ponadto Backtester powinien dostarczyć szeroką gamę wydajnych środków umożliwiających ocenę strategii, w tym: zmienność, rentowność (Return), Sharpe-ratio, Sortino-ratio, Drawndown i kilka innych.

Aby ograniczyć złożoność tychże elementów, zalecamy wykorzystanie specjalnego interfejsu API (interfejs programowania aplikacji), który dostarcza wszystkie wspomniane komponenty. W tym artykule wykorzystujemy interfejs API Zipline (http://www.zipline.io/appendix.html ).

W kolejnej sekcji przedstawimy etapy tworzenia środowiska opartego na interfejsie API Zipline.

 

Procedura instalacji

W tej części przeprowadzimy konfigurację lokalnego środowiska tradingu umożliwiającego zarządzanie aktywami (AAPL, GOOG, AMZN…) wymienianymi w znanych platformach giełdowych (NYSE, NASDAQ…). W tym celu skorzystamy z interfejsu API Zipline.

Za każdym razem będziemy korzystać ze specjalnych wersji pakietów. Nie gwarantujemy powodzenia, jeżeli będziesz zmuszony skorzystać z nowych lub późniejszych wersji.

System operacyjny

Jako system operacyjny wybraliśmy UBUNTU 16.04 LTS. Możesz pobrać bezpłatną wersję pod adresem: http://cdimage.ubuntu.com/netboot/16.04/.

W celu przeprowadzenia instalacji możesz zapoznać się z procedurą opisaną tutaj: https://doc.ubuntu-fr.org/installation

Instalacja oprogramowania Anaconda

W celu utworzenia środowiska pracy Python prosimy o zainstalowanie wersji oprogramowania Anaconda. Korzystaliśmy z wersji 5.1, którą możesz pobrać pod tym adresem: https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh .

Możesz pobrać ją szybko przy użyciu komendy wget ( https://doc.ubuntu-fr.org/wget ).

Po jej pobraniu przeprowadź instalację, używając następującej komendy:

bash Anaconda3-5.1.0-Linux-x86_64.sh zz

 

Instalacja pakietów specjalnych

Aby ułatwić proces tworzenia środowiska i rozwiązywać ewentualne napotkane problemy zależności między wersjami pakietów, utworzyliśmy kopię naszego środowiska prawy (plik requirement.txt do pobrania tutaj).

W celu wykorzystania tego pliku i skopiowania naszego środowiska wprowadź następującą komendę:

conda create –name zipline –file requirements.txt

Niniejsza komenda umożliwi utworzenie środowiska o nazwie zipline i przeprowadzi instalację specjalnych wersji pakietów.

W celu aktywacji środowiska wprowadź następującą komendę:

source activate zipline

Pod tym adresem możesz otrzymać listę niezbędnych komend do zarządzania środowiskami Anaconda:https://conda.io/docs/user-guide/tasks/manage-environments.html

Wprowadź następnie dwie poniższe komendy:

sudo apt-get update

sudo apt-get install build-essential

Komendy te umożliwiają uzyskanie dostępu do niezbędnych bibliotek w celu kompilacji pakietu Debian. Umożliwią nam one na przykład pozyskanie kompilatorów gcc i g++ oraz innych programów.

 

Instalacja biblioteki zipline

Zipline ( http://www.zipline.io/index.html ) jest algorytmiczną biblioteką tradingową. Jest to system oparty na zdarzeniach dla Backtesting (https://www.quantstart.com/articles/Event-Driven-Backtesting-with-Python-Part-I ).

Biblioteka Zipline jest używana w produkcji jako silnik Backtesting i Trading na platformie Quantopian (https://www.quantopian.com/home), która jest bezpłatna do tworzenia oraz realizacji strategii tradingowych.

Biblioteka ta jest łatwa w obsłudze i umożliwia nam skoncentrowanie się na rozwoju algorytmów. Korzystaliśmy z wersji 1.2.0 biblioteki zipline.

W celu przeprowadzenia jej instalacji wprowadź następującą komendę:

pip install zipline==1.2.0

Biblioteka Zipline wykorzystuje pojęcie Bundle ( http://www.zipline.io/bundles.html ). Bundle jest bazą danych zawierającą historyczne dane aktywów na poszczególnych rynkach. Dzięki bazom Bundles możemy wstępnie załadować dane, których będziemy potrzebować do wykonania Backtests.

Pierwszym etapem użytkowania Bundle jest pobranie danych z platformy Quandl (https://www.quandl.com/). Etap ten może wymagać czasu, ponieważ następuje w nim pobieranie oraz przetwarzanie dużej ilości danych. Potrzebujemy klucza API Quandl (https://docs.quandl.com/docs#section-authentication) do przeprowadzenia tej operacji.

W celu pozyskania danych z Bundle quantopian-quandl wprowadź następującą komendę:

QUANDL_API_KEY=<your_key> zipline ingest -b quantopian-quandl

W drugiej części artykułu przedstawimy sposób tworzenia naszego Bundle Blockchain opierającego się na danych z kryptowalut.

W celu pozyskania listy baz Bundles możesz wprowadzić komendę:

zipline bundles

Powinna pojawić się baza Bundle quantopian-quandl wraz z datą utworzenia.

 

Test naszego środowiska pracy

Nasze środowisko pracy jest gotowe do testu. W tym celu skorzystamy z kodu buyapple.py znajdującego się tutaj. Możesz otrzymać przykładowe kody pod tym adresem: https://github.com/quantopian/zipline/blob/master/zipline/examples/

W celu prawidłowego zrozumienia każdej z instrukcji prosimy o zapoznanie się z oficjalną dokumentacją ( http://www.zipline.io/appendix.html ).

Kod widniejący w buyapple.py umożliwia jedynie zakup akcji APPLE oraz utrzymanie pozycji.

W celu uruchomienia kodu wprowadź następującą komendę:

zipline run -f buy_and_hold.py –capital-base 500 –bundle quantopian-quandl -s 2018-1-1 -e 2018-4-30

Poszczególne opcje (http://www.zipline.io/beginner-tutorial.html#running-the-algorithm) podane powyżej umożliwiają odpowiednio:

-f: wskazanie pliku do uruchomienia

–capital-base: wskazanie początkowego kapitału do symulacji

–bundle: wskazanie odpowiedniej bazy danych

-s : wskazanie daty rozpoczęcia symulacji

-e: wskazanie daty zakończenia symulacji

Po uruchomieniu kodu powinieneś otrzymać następujący rysunek:

Pierwszy rysunek wskazuje wartość naszego portfela (gotówka + całkowita wartość aktywów), a kolejny rysunek określa cenę jednostkową akcji. Jest zatem zjawiskiem całkowicie normalnym, że nasz portfel zachowuje się w sposób podobny do rynku z uwagi na fakt, że obraliśmy pozycję długoterminową.

W kolejnej sekcji przedstawimy sposób tworzenia naszego Bundle Blockchain wykorzystującego dane pochodzące z głównych kryptowalut. Będziemy mogli następnie wykorzystać tę bazę Bundle w celu utworzenia naszych strategii na rynku kryptowalut.

 

Tworzenie bazy Bundle Blockchain

W pierwszej części artykułu przedstawiliśmy sposób użytkowania danych tradycyjnych aktywów finansowych na przykładzie APPLE.

W niniejszym dziale przedstawimy sposób tworzenia bazy Bundle przy użyciu danych kryptowalut. Poszczególne etapy są opisane poniżej.

W niniejszym dziale informacje zostały zaczerpnięte z następujących artykułów:http://www.prokopyshen.com/create-custom-zipline-data-bundle. Możesz również przeglądać oficjalną dokumentację online pod adresem:http://www.zipline.io/bundles.html#writing-a-new-bundle

 

Definicja plików CSV w zakresie aktywów, które należy włączyć do bazy Bundle

Biblioteka Zipline wykorzystuje format open-high-low-close-volume (OHLC) do przechowywania danych o aktywach. W tym celu należy utworzyć pliki CSV w tym formacie dla każdej kryptowaluty, którą chcesz włączyć do bazy Bundle. Możesz skorzystać z dwóch plikówdostępnych tutaj ; zawierają one historię cen kursów Bitcoina oraz Ethereum z roku 2018.

WAŻNE: Dni określone w plikach odnoszą się do dni, w których giełda NYSE jest otwarta, ponieważ dotyczy to kalendarza stosowanego domyślnie w bibliotece Ziplinehttp://www.zipline.io/trading-calendars.html ). W celu określenia nowego kalendarza umożliwiającego na przykład kupno lub sprzedaż aktywów przez wszystkie dni w roku prosimy o zapoznanie się z informacjami zamieszczonymi na kolejnej stroniehttp://www.zipline.io/trading-calendars.html.

 

Definicja modułu odpowiedzialnego za tworzenie bazy Bundle

Kod umożliwiający tworzenie bazy Bundle przy użyciu wszystkich plików csv zawarty jest w plikuload_csv.py. W celu uzyskania szczegółowych informacji prosimy o zapoznanie się dokumentacją dostępną pod adresem:http://www.zipline.io/appendix.html#bundles.

Skopiuj plikload_csv.py wzipline/data/bundles/.

W celu pozyskania śladów wykonania powinieneś dodać do zmiennejboDebug wartośćTrue.

W celu ukończenia tego etapu skopiuj pliki Bitcoin.csv i Ethereum.csv do katalogu~/notebooks/csv/. Możesz zmienić ścieżkę bezpośrednio w plikuload_csv.py

 

Definicja rozszerzenia umożliwiająca zapisanie bazy Bundle

Aby utworzyć bazę BundleBlockchain, należy zdefiniować rozszerzenie, które będzie odpowiadać za załadowanie danych. W tym celu plik extension.py zawiera niezbędny kod umożliwiający zapisanie naszej bazy Bundle wraz z danymi Bitcoina i Ethereum w oparciu o kalendarz NYSE.

Skopiuj plikextension.py do katalogu~/.zipline/przy użyciu następującej komendy:

cp extension.py ~/.zipline/

Możemy w końcu utworzyć konkretną bazę Bundle Blockchain po wprowadzeniu następującej komendy:

zipline ingest -b Blockchain

Na konsoli powinno znajdować się następujące wyjście, jeżeli ustawiłeś zmienną boDebugna True w pliku load_csv.py

 

Test bazy Bundle Blockchain

 

W celu weryfikacji poprawnego zapisu naszej bazy Bundle Blockchain możemy wprowadzić następującą komendę:

zipline bundles

Baza Bundle Blockchain wyświetla się na konsoli:

Przeprowadzimy test bazy Bundle Blockchain przy użyciu zapisanych danych Bitcoin. Kod widniejący w plikubuy_bitcoin.py umożliwia jedynie zakup 1 monety Bitcoin oraz utrzymanie pozycji.

W celu uruchomienia kodu wprowadź następującą komendę:

zipline run -f buy_bitcoin.py –bundle Blockchain -s 2018-1-1 -e 2018-1-28

Dodaliśmy nową opcję:

-bundle Blockchain , która wskazuje z jakiej bazy Bundle należy skorzystać

Po uruchomieniu kodu powinieneś otrzymać następujący rysunek:

Pierwszy rysunek wskazuje wartość naszego portfela (gotówka + całkowita wartość aktywów), a kolejny rysunek określa cenę jednostkową akcji. Portfel posiada taki sam kurs jak kurs rynkowy, co jest zjawiskiem normalnym, ponieważ kupiliśmy monetę Bitcoin i utrzymaliśmy pozycję.

 

Wnioski

W niniejszym artykule przedstawiliśmy wszystkie etapy związane w tworzeniem lokalnego środowiska tradingowego, wykorzystując dane pochodzące z tradycyjnych rynków dzięki zastosowaniu interfejsu API Zipline.

W kolejnej części opisaliśmy procedurę integracji danych z kryptowalut w tym środowisku.

W kolejnych artykułach przedstawimy opracowanie dotyczące interfejsu API zipline i zaproponujemy również proste strategie, którą stanowią obecnie podstawę dla wielu strategii szeroko stosowanych w przedsiębiorstwach zarządzających aktywami finansowymi.

 

Pobierz zasoby

 


Autor: Eric Fokou Data Scientist @fokou_eric
Artificial Intelligence
Blockchain
Cryptocurrency
eTrading
Trading
Aktualności

Fakty i mity na temat technologii blockchain

W ostatnich miesiącach wiele napisano o blockchain i łatwo można znaleźć zupełnie sprzeczne informacje na temat tej nowej technologii. Sébastien Bourguignon, Principal & Lead Digital Influencer w firmie Margo, przedstawia 10-punktową analizę, dzięki której lepiej odróżnisz fakty od mitów związanych z tym zagadnieniem.

22/01/2019 Więcej 
Aktualności

Czy blockchain odegra kluczową rolę w ekonomii społecznej i solidarnej?

Blockchain i kryptowaluty są tematem nieustających dyskusji toczących się w różnych sektorach działalności. Branże bankowa i ubezpieczeniowa mają już sporo doświadczeń w tym zakresie, transport i logistyka również czynią coraz większe postępy, ale dziedzina, która naprawdę może wykorzystać siłę tych technologii, to ekonomia społeczna i solidarna (ESS).

15/11/2018 Więcej 
Aktualności

Blockchain i duże firmy: na jakim etapie jesteśmy?

Mniej więcej rok temu duże firmy były jeszcze w trakcie eksperymentów nad technologią blockchain. Większość z nich stworzyła PoC (Proof-of-concept), prototyp lub produkt pilotażowy – krótko mówiąc, działy innowacji albo wpływowe osoby odblokowały fazę testów, aby lepiej zrozumieć atuty tej technologii, oferowane przez nią korzyści i jej oddziaływanie. W tym samym okresie wielu ekspertów prognozowało, że rok 2018 będzie rokiem uruchamiania produkcji. Na jakim więc etapie jesteśmy?

30/10/2018 Więcej 
Aktualności

Czy technologia blockchain rzeczywiście pochłania aż tyle energii?

Analizy niestrudzonych obserwatorów technologii blockchain oparte są w dużej mierze na zupełnie lub częściowo nieprawdziwych informacjach oraz stronniczych opiniach. Od wielu miesięcy szczególne kontrowersje wzbudza kwestia energochłonności. Wielu z przekonaniem rozprawia nad szkodliwością technologii blockchain dla środowiska i upatruje w niej zapowiedź katastrofy energetycznej dla całej planety. Kto ma zatem rację w sporze o energochłonność technologii blockchain? Czy istnieje tylko jedna prawda?

25/06/2018 Więcej 
Aktualności

Tunisia Digital Summit 2018: co należy zapamiętać

W ubiegłym tygodniu Margo zostało zaproszone do wzięcia udziału w drugiej edycji ważnego wydarzenia w Maghrebie tj. Szczytu cyfrowego w Tunezji 2018 (Tunisia Digital Summit 2018). Konferencja ta odbyła się w samym sercu Tunisu, w hotelu Laico. Podczas dwóch dni konferencji omawiano tematy transformacji cyfrowej, sztucznej inteligencji, sieci społecznościowych i łańcucha bloków. Ponad 40 tunezyjskich i międzynarodowych prelegentów, a także około dwudziestu lokalnych startupów zaprezentowało swoje rozwiązania i rzuciło nowe światło na niezwykle ważne dla firm zmiany w dziedzinie cyfryzacji. Przedstawiamy raport z tego wydarzenia obejmujący główne tematy, które w ciągu tych dwóch dni przyciągnęły naszą uwagę.

03/04/2018 Więcej 
Aktualności

Zrozumieć Blockchain

Zapraszamy do zapoznania się z serią artykułów autorstwa Sébastiena Bourguignona, opublikowanych we francuskiej gazecie Les Echos Solutions, w których znajdziesz wszystko, co trzeba wiedzieć na temat technologii blockchain. Krótka historia technologii blockchain, Jak działa blockchain, ICO, Nowy sposób finansowania startupów, Ethereum i inteligentne kontrakty oraz Różnice między blockchainami publicznymi i prywatnymi. Z tych pięciu artykułów dowiesz się, co tak naprawdę oznacza to modne ostatnio słowo.

17/01/2018 Więcej