Trading na rynkach finansowych mocno zmienił się w ostatnich dekadach. Wcześniej pracownicy trading desków musieli posiadać donośny głos, ostre łokcie oraz umiejętność przeprowadzenia obliczeń arytmetycznych w pamięci z prędkością błyskawicy lub przy wsparciu wysłużonego kalkulatora. Z całą pewnością nie był to świat dla tzw. geeków, czyli entuzjastów nowych technologii. W pokoleniu millenialsów obraz rynku wygląda jednak inaczej – fizyczne parkiety zostały zastąpione przez wirtualne maszyny, a praca ludzi przez komputery.
Czy jest więc nadal możliwe, aby technofob (osoba bojąca się technologii) pracował w tradingu finansowym, czy też znajomość co najmniej jednego języka programowania jest absolutnie konieczna?
Sell-side, czy buy-side?
Odpowiedź zależy przede wszystkim od rodzaju prowadzonego tradingu. Dzięki Regule Volckera, transakcje własnościowe (“propretiary trading”) po stronie sprzedaży (np. w bankach inwestycyjnych) należą już do przeszłości w Stanach Zjednoczonych, więc traderzy obsługujący tzw. sell-side zajmują się tworzeniem (animacją) rynku lub obsługą przepływu klientów. W większości klas aktywów tworzenie rynku jest całkowicie zautomatyzowane. W efekcie potrzeba mniej rąk do pracy, a głównym zadaniem pozostaje pisanie kolejnych linijek kodu. W tym przypadku liczy się szybkość, najlepiej sprawdza się więc C++ oraz Java.
Wycena i zabezpieczenie transakcji klienckich w większości banków jest nadal realizowane przez czynnik ludzki, ale zależy to od stopnia zaawansowania produktu bazowego. Bardziej egzotyczne instrumenty nadal wymagają ingerencji tradera. Wyceny wysoce zindywidualizowanych transakcji mogą być dokonywane w pośpiesznie skonstruowanych arkuszach kalkulacyjnych. Dobra znajomość Visual Basic, która leży u podstaw wielu z tych arkuszy, jest tu bardziej przydatna niż doktorat z inżynierii programowania.
Trading ilościowy, wysokiej częstotliwości lub tradycyjny
Tymczasem po stronie zakupowej (buy-side) traderzy mogą być podzieleni na trzy kategorie:
- strategii ilościowych,
- strategii wykonawczych,
- wysokiej częstotliwości (HFT).
Traderzy opracowujący strategie ilościowe mogą być zatrudnieni przez fundusze hedgingowe lub w tradycyjnych funduszach zarządzania aktywami, a ich rola rozmywa się z rolą zarządzających portfelem ilościowym. Ich zadaniem jest zaprojektowanie strategii, które będą systematycznie handlować (np. przy użyciu modeli komputerowych, przy minimalnej ingerencji człowieka.) Umiejętności kodowania są tu niezbędne do przekopywania dużych ilości danych i tworzenia prototypowych strategii testowania nowych pomysłów.
Python jest językiem preferowanym przez wielu traderów tego typu ze względu na szeroką dostępność pakietów do analizy danych, takich jak SciPy i Pandas. R jest również popularny, ponieważ jest domyślnie używany do analizy statystycznej na wielu kursach uniwersyteckich. Przy tak dobrych językach open source, komercyjne alternatywy jak Matlab nie są już modne.
Traderzy realizujący transakcje po stronie zakupowej mają za zadanie wdrożenie decyzji o zrównoważeniu portfela, podejmowanych przez strategie ilościowe lub przez tradycyjnych menedżerów portfela. Osiągają to na kilka różnych sposobów:
- poprzez outsourcing do algorytmów wykonawczych stron trzecich (algos) dostarczanych przez banki,
- rozwój własnych algos
- lub poprzez handel ręczny (który nadal przewyższa algorytmy na niektórych rynkach).
Umiejętności kodowania potrzebne do rozwoju własnego algorytmu pokrywają się z zestawem umiejętności niezbędnym w przypadku animatorów zakupowej części rynku. W każdym przypadku, gdy wiele dróg na rynek jest używanych w wewnętrznych biurach wykonawczych, trzeba będzie stale oceniać skuteczność każdego algorytm oraz pojedynczego tradera. Wymaga to analizy danych i umiejętności kodowania bardzo podobnych do umiejętności traderów ilościowych.
Wreszcie, traderzy wysokiej częstotliwości (z ang. high frequency traders) mają podobną pracę jak inni traderzy ilościowi, ale w znacznie krótszych horyzontach czasowych. Oznacza to, że mają do czynienia z bardzo dużymi zbiorami danych. Tutaj. znajomość ekosystemu Hadoop staje się bardzo ważna. Python jest nadal popularny w transakcjach wysokiej częstotliwości (HFT), ale nowsze języki takie jak Go lepiej nadają się do równoczesnego przetwarzania dużych zbiorów danych.
Python cieszy się największą wszechstronnością
Kiedy strategia jest tworzona, wtedy jako inwestor wysokiej częstotliwości masz do czynienia z bardzo krótką skalą czasową, a minimalizacja opóźnień jest kluczowa. Podobnie jak w przypadku traderów buy-side, C+++ jest prawdopodobnie jedynym językiem na wysokim poziomie, który jest wystarczająco szybki, ale aby uzyskać prawdziwą przewagę trzeba będzie zanurzyć się w assemblerze i mieć głębokie zrozumienie sieci komputerowych oraz sprzętu.
Jednak jeśli masz czas na naukę tylko jednego języka programowania, to Python jest prawdopodobnie najbardziej wszechstronny. Jako, że jest szeroko stosowany w innych branżach, to również sprawia się świetnie jako plan B, gdybyś nie sprawdził się jako trader.
Powyższy tekst powstał na bazie rad Roberta Carvera, który pracował po stronie sprzedażowej – jako trader opcyjny – oraz po stronie zakupowej jako szef działu fixed-income w funduszu hedgingowym AHL. Dodatkowo jest autorem pozycji “Systematic Trading” i “Smart Portfolios”. Sam określa siebie mianem technofoba i nadal korzysta z tradycyjnego, ręcznego kalkulatora.