Rynek tradingu to wyjątkowa branża. Rozmowa z Markiem Zganiaczem
Algotrader automatyzuje proces inwestowania na giełdach finansowych całego świata. Zespół stojący za tym produktem opracował algorytm, wykorzystując do tego Javę, Spring, Hibernate, Esper (CEP), QuickFix / J, ActiveMQ, HTML 5 czy React JS, który pozwala realizować złożone, ilościowe strategie transakcyjne m.in. na Foreksie.
Rozmawiamy z Markiem Zganiaczem, który od początku rozwijał Algotradera w polskim oddziale. Przeszedł ścieżkę od developera do team leadera, a w rozmowie z nami podzielił się swoimi spostrzeżeniami na temat branży i nie tylko.
Spis treści
Podejrzewam, że wielu programistów nie zdaje sobie sprawy z tego, jak złożone algorytmy stoją za Algotraderem. Opowiesz o nich?
Algotrader jest platformą, na której klienci mogą wykonywać swoje strategie inwestycyjne, napisane w Javie lub Pythonie. Same strategie są własnością intelektualną klientów, więc nie mogę podawać szczegółów, mogę jedynie powiedzieć że większość z nich wykracza daleko poza standardowe techniki opisywane w popularnych książkach o analizie technicznej i korzystają nie tylko z bieżących danych rynkowych ale także na przykład z autorskich modeli statystycznych z systemów takich jak R czy MatLab.
Kierujecie go do inwestorów indywidualnych czy raczej instytucjonalnych?
Nasz target to inwestorzy zarówno indywidualni, dysponujący odpowiednim progiem wejścia, oraz średniej wielkości fundusze.
Wiemy już czym jest Algotrader. Opowiedz, jak zaczęła się Twoja przygoda w tej firmie?
Na wstępie powiem, że w przypadku Algotradera zdecydowanie nie ma poczucia, że jest się trybikiem. Gdy dołączyłem w styczniu 2018 byłem pierwszą osobą w Polsce, a trzecią ogólnie, zajmującą się developmentem produktu. W zespole były jeszcze dwie osoby – pracujące w Zurychu, z czego jedną z nich był właściciel.
Masz na myśli Andy’ego, z którym kilka tygodni temu rozmawialiśmy?
Tak, Andy odszedł od aktywnego kodowania aplikacji, teraz zajmuje się promowaniem produktu, zdobywaniem nowych rynków, w czym jest świetny. Rok 2018 to był taki rok, w którym bardzo dynamicznie rozwijaliśmy się, co kontynuujemy. Już jako zespół nie mieścimy się przy jednym małym konferencyjnym stole. Na pewno bardzo ciekawe jest przyglądanie się temu, jak szybko rośniemy.
Jesteś team leaderem. Powiedz jak do tego doszło, bo podejrzewam, że było kilka czynników, które na to wpłynęły?
Pomalutku zdobywałem wiedzę na różne tematy i nie starałem się specjalizować w jednej dziedzinie. Zanim przyszedłem do Algotradera, byłem team leaderem i analitykiem w jednej osobie – był to dla mnie ogromny skok na głęboką wodę. Poradziliśmy sobie jako projekt, ale było to okupione dużą ilością stresu, wieloma spotkaniami z managementem. Po tamtym skoku na głęboką wodę dałem sobie kilka lat w innych projektach i w innych firmach, w których starałem się dołączać do zespołów, do leaderów, których cenię i którzy mają duże doświadczenie. Wtedy moim celem było obserwowanie ich i sprawdzanie jak pracują. Z czasem dawało mi to pewne wzorce jak należy postępować, dzięki czemu nabrałem pewności w podejmowaniu decyzji.
Przejdźmy do odkrycia przed programistami, którzy będą nas czytać, specyfiki Algotradera. Co jest, z Twojej perspektywy, największym wyzwaniem w rozwoju tego typu produktu?
Na pewno to, że Algotrader służy jako fasada dla różnych brokerów finansowych. Niektórzy z nich, ci bardziej ustabilizowani na rynku, mają dojrzałe API, więc można polegać na tym, że to, co jest napisane w ich specyfikacji, będzie poprawnie działać. Jeżeli chodzi o ten nowy rynek kryptowalut, to brokerzy reprezentujący te giełdy nie są jeszcze tak ustandaryzowani, jak ci pochodzący z tradycyjnych rynków. Sprawia to wiele kłopotów.
Pochylmy się nad wyzwaniami, które przed Wami stoją. Kwestia low latency czy wydajności to jest jedno z nich?
Na pewno nie staramy się być najszybsi na rynku w składaniu orderów. Raczej kierujemy go do tych traderów, którzy składają między 1000 orderów na sekundę, a kilka na dzień. Nie konkurujemy z firmami, które są używane przez takich traderów, jak ci opisani w słynnej książce “Flash Boys”.
Nie stawiacie zatem na rozdrobniony rynek i na inwestorów, którzy zajmują się stricte day tradingiem i inwestują mały kapitał, tylko mówimy tutaj o zdecydowanie większym wolumenie transakcji. Jak dbacie o ich bezpieczeństwo?
Sprzedajemy produkt w „pudełku”, w takim sensie, że ten, kto kupuje Algotradera, instaluje go na własnej maszynie. To może być jego maszyna w domu, laptop, może być to też maszyna wynajęta w jakimś data center. Najważniejsze, że tylko klient ma do niej dostęp, sam dba więc o jej bezpieczeństwo, a w ten sposób zabezpieczamy się przed sytuacją, w której złamanie zabezpieczeń Algotradera spowodowałoby utratę dostępu do giełd wszystkich naszych klientów.
Co obecnie jest dla Was największym wyzwaniem? Gdzie potrzebujecie wsparcia ze strony innych programistów?
Chcemy wprowadzić nowe interfejsy użytkownika, narzędzie do raportowania czy do wizualizacji na bieżąco strategii. Pracujemy nad wizualizacją order booka skumulowanego z różnych giełd – to wszystko, co wymieniłem, to plan na ten rok. Chcemy jeszcze zmienić architekturę backendu, tak żeby przyspieszyć wykonywanie symulacji strategii. W tych wszystkich obszarach potrzebujemy wsparcia uzdolnionych programistów.
Potrzebujecie wsparcia w tworzeniu systemów, które mają zarabiać pieniądze dla Waszych klientów? Możesz trochę więcej o tym powiedzieć?
Oprócz tego, że rozwijamy naszą platformę, oferujemy także usługę pisania na zamówienie strategii inwestycyjnych, które są na niej wykonywane. Klient zamawia więc dwie rzeczy: kupuje produkt oraz zamawia usługę pisania takiej strategii w Javie według własnego pomysłu. Pomagamy mu dopracować tę strategię oraz zaimplementować ją i przetestować na jakimś konkretnym rynku.
Pod pojęciem strategii kryją się rozwiązania, które sprawiają, że wykorzystujecie np. analizę techniczną i różnego rodzaju wskaźniki trendu: oscylatory, indykatory, na podstawie których określacie odpowiednie wskazania?
Strategię można uznać jako funkcję, która przejmuje dane rynkowe i parametry wejściowe w ustawieniach tej strategii i ma jakąś logikę. Ta logika to może być właśnie wyliczanie różnych wskaźników czy cokolwiek innego. Najczęściej jest to korzystanie z jakichś wskaźników, ale nie tylko.
Podejrzewam, że jeżeli piszecie takie strategie na zamówienie, często robicie je dla dużych klientów. Jak wygląda proces jej tworzenia?
Gdy klient przychodzi do nas z zarysem strategii, pomagamy mu dopracować punkty brzegowe, które widzimy. Tłumaczy na przykład, że na początku otwarcia giełdy nie przewidział jak strategia będzie się zachowywać, czy jak ma się zachowywać w przypadku, kiedy nie ma płynności na danym instrumencie finansowym. Po takich kilku sesjach dopracowujemy opis strategii, a następnie przystępujemy do jej implementacji w Javie. Później symulujemy na danych historycznych, czy pozwala zarabiać pieniądze klientowi, dopracowujemy pewne parametry. Ostatnią fazą jest przetestowanie jej w real time, na prawdziwych pieniądzach, mniejszych oczywiście, niż docelowo chce inwestować klient. Następnie przekazujemy ją klientowi i jeżeli on jest pewien, że chce w nią zainwestować, czyli załadować konto i pozwolić tej strategii handlować jego pieniędzmi, to to robi.
Rynki są na tyle dynamiczne, że cały czas zmieniają się i zapewne każdą strategię z czasem trzeba doprecyzować, bo się trochę dezaktualizuje, bo jest nieskuteczna itd.
Strategie dezaktualizują się dlatego, że zmienia się sytuacja rynkowa. Także strategia może okazać się nieskuteczna, mimo że według danych historycznych działała bardzo dobrze, to jednak w rzeczywistości nie radzi sobie już tak świetnie. Może się to dziać z wielu powodów.
Kluczem jest chyba to, by w odpowiednim momencie zrozumieć, że trzeba coś w tej strategii zmienić, czy też przerzucić się ze strategii A na strategię B. Możemy tak to podsumować?
Tak, Algotrader implementuje możliwość uruchamiania wielu strategii jednocześnie, porównywania ich, raportowania o nich i wybierania, która w tej chwili operuje na większych pieniądzach.
Tak naprawdę praca w Algotraderze polega nie tylko na programowaniu, ale także na części biznesowej. Podejrzewam, że wiele osób, które wchodzi w ten temat, łapie bakcyla związanego z inwestowaniem. Czy tak się dzieje?
Chęć inwestowania i zainteresowanie rynkami finansowymi jest bardzo ważne w pracy tutaj, szczególnie na backendzie. Pozwala rozwiązywać różne problemy, z którymi się spotykamy, znacznie szybciej, efektywniej.
Jak wygląda zespół Algotradera? Na jakie teamy został podzielony? Czym się zajmują?
Podzieliliśmy się na dwa zespoły. W każdym z nich są zarówno ludzie z Zurychu, z naszej centrali, jak i z Wrocławia. Ważne, że płynnie przechodzimy między tymi zespołami, ale na pewien czas każdy z nas zostaje albo w zespole niebieskim, albo czerwonym. Wedle z góry ustalonego klucza przydzielane są dla ich członków zadania.
Jak wygląda współpraca między jednym teamem, który jest w Zurychu, a teamem, który jest tutaj w Polsce?
Podkreślę tylko, że nie jesteśmy podzieleni na team Zurych i team Wrocław, a na team niebiescy i czerwoni. W każdym z nich są ludzie i z Zurychu, i z Wrocławia. W ramach teamu pomagamy rozwiązywać problemy przy danych taskach. Estymujemy, wyceniamy zadania, które wrzucono na tapet, czy do backlogu. Robimy nawzajem review kodu, pomagamy testować rozwiązania, które implementujemy. Kiedy współpracujemy we Wrocławiu, w ramach teamu niebieskiego lub czerwonego, to oczywiście podchodzimy do swoich biurek i tak wykonujemy tę współpracę. Gdy pracujemy z kimś z Zurychu, musimy się z nim skonsultować, po prostu dzwonimy komunikatorem czy rozmawiamy na czacie. W ten sposób się dogadujemy.
Skupmy się na Twojej roli team leadera. Jakie widzisz przed sobą wyzwania?
Swoją rolę widzę jako kogoś, kto łączy kropki, rysując linie. Czyli biorę udział we wszystkich meetingach, staram się mieć zdjęte słuchawki siedząc w pokoju, żeby wiedzieć mniej więcej, co każdy robi zarówno w Zurychu, jak i we Wrocławiu. Pomagam rozwiązywać problemy, pilnuję niepotrzebnej duplikacji pracy, ponieważ zadania trafiają zarówno do backlogu, a później do sprintu. Pomysły na zmiany często nachodzą na siebie, a moją rolą jest pomóc to wykryć.
Pochylmy się nad wyzwaniami, które czyhają na osoby, które dołączają do zespołu. Jak wygląda proces onboardingu?
Pierwszego dnia, kiedy nowa osoba do nas przychodzi, oczywiście nie wpuszczamy jej do biura, jeżeli nie przyniosła ciasta. To warunek konieczny.
Szarlotka, sernik, czy może makowiec?
Wielu z chłopaków chodzi na siłownię, dlatego zdecydowanie serniki.
A po serniku…
Pomagamy uruchomić środowisko developerskie, czyli zainstalować i uruchomić całą aplikację i pozwolić trochę sobie po niej poklikać, uruchomić jakąś strategię. Trwa to jeden, maks dwa dni. Następnie organizujemy pewnego rodzaju formalne szkolenie, na którym w kilka osób przez godzinę lub dwie opowiadamy o architekturze, o tym, nad czym pracujemy i zostawiamy czas na pytania. Po takim wprowadzeniu staramy się od razu w kontrolowany sposób rzucić tę osobę na głęboką wodę, czyli od razu przejść do praktycznego zadania. Jakiegoś w miarę prostego błędu czy w miarę prostej funkcjonalności, którą mamy w backlogu i asystować jej przy wykonywaniu. Wierzymy, że w ten właśnie sposób można się najwięcej nauczyć.
Po kilku tygodniach we Wrocławiu przewidujemy dla każdej nowej osoby delegację do Zurychu, żeby mogła zapoznać się także z tamtym teamem i z tamtymi ludźmi. Popracować, porozmawiać. Po takiej wizycie uznajemy, że ta nowa osoba jest już wdrożona.
Pierwsze pytanie jakie mi przyszło do głowy, to pytanie o Zurych: miasto robi wrażenie?
Oczywiście, jest zupełnie innym miastem niż Wrocław. Zaskoczyło mnie to, że jest niesamowicie czyste. Kiedyś na jednej z pierwszych delegacji wypadł mi papierek z kieszeni, bałem się, że zaraz złapie mnie policja. Oczywiście zaraz po niego wróciłem i go podniosłem, ponieważ niemalże błyszczał i wył syrenami na tym chodniku. Był jedynym malutkim śmieciem leżącym tam na chodniku. No i oczywiście Alpy, góry, to wszystko zrobiło na mnie olbrzymie wrażenie.
Alpy, góry, fauna, flora i w dodatku fajne miasto. Taka wizyta zapewne służy zgraniu się członków zespołu, a wiem, że chcecie go powiększyć. Każdy kandydat musi znać się na inwestowaniu?
Nie, nie musi. Oczywiście jest to plus, ale na początek wystarczy podstawowa wiedza, co to jest obligacja, co to jest rynek Forex itd. Reszty naprawdę można się nauczyć w firmie. Poza tym pracuje u nas wiele osób które były trader’ami lub po prostu od wielu lat pracuje w finansach i w każdej chwili są gotowi wytłumaczyć, nakierować czy wskazać materiały z których danego tematu można się po prostu nauczyć. Organizujemy też sobie wewnętrzne szkolenia.
Jak przebiega taka rozmowa rekrutacyjna?
Na początku ma miejsce wstępna rozmowa z naszym dyrektorem technicznym z Zurychu. Następnie kandydat dostaje do rozwiązania zadanie: albo backendowe związane z integracją z jakimś adapterem rynkowym, albo z napisaniem jakiejś strategii inwestycyjnej. Jeżeli chodzi o frontend, to zadanie polega na napisaniu prostej aplikacji. Po tych etapach następuje zapoznanie się z częścią zespołu. Jeżeli wszyscy dają zielone światło, to taka osoba jest zatrudniana.
Na koniec opowiedz, co czeka Algotrader w najbliższym czasie?
Niedawno opublikowaliśmy wersję 5.0, z długą listą nowych funkcjonalności. Teraz jesteśmy w trakcie publikacji wersji 5.1, w której dodaliśmy możliwość pisania strategii w Pythonie. Mamy zaplanowane kolejne 3 wydania, składające się zarówno z nowych funkcjonalności jak i usprawnień istniejących.
Marek Zganiacz. Ma ponad 11 lat doświadczenia w projektowaniu, budowaniu oraz utrzymywaniu systemów korporacyjnych. Uzyskał tytuł magistra informatyki. Przed dołączeniem do AlgoTrader pracował nad wieloma systemami handlowymi w dużym banku inwestycyjnym i pełnił rolę głównego programisty, kierownika zespołu i analityka.