W tym artykule zamierzam wprowadzić Cię w niektóre z podstawowych pojęć, które towarzyszą całościowemu systemowi handlu ilościowego. Mam nadzieję, że ten post będzie służył dwóm grupom odbiorców. Pierwszą z nich będą osoby starające się o pracę w funduszu jako quantitative trader. Druga to osoby, które chcą spróbować założyć własną firmę handlu algorytmicznego.
Handel ilościowy jest niezwykle wyrafinowanym obszarem finansów ilościowych. Może to zająć znaczną ilość czasu, aby zdobyć niezbędną wiedzę, aby przejść rozmowę kwalifikacyjną lub skonstruować własne strategie handlowe. Nie tylko to, ale wymaga rozległej wiedzy programistycznej, co najmniej w języku takim jak MATLAB, R lub Python. Jednak wraz ze wzrostem częstotliwości handlu strategią, aspekty technologiczne stają się o wiele bardziej istotne. Tak więc znajomość C/C++ będzie miała ogromne znaczenie.
System handlu ilościowego składa się z czterech głównych komponentów:
- Identyfikacja strategii – Znalezienie strategii, wykorzystanie przewagi i podjęcie decyzji o częstotliwości handlu
- Backtesting strategii – Pozyskiwanie danych, analiza wydajności strategii i usuwanie biasów
- System wykonawczy – Połączenie z domem maklerskim, automatyzacja handlu i minimalizacja kosztów transakcyjnych
- Zarządzanie ryzykiem – Optymalna alokacja kapitału, „bet size”/kryterium Kelly i psychologia handlu
Zaczniemy od spojrzenia na to, jak zidentyfikować strategię handlową.
Identyfikacja strategii
Wszystkie procesy handlu ilościowego rozpoczynają się od wstępnego okresu badań. Ten proces badawczy obejmuje znalezienie strategii, sprawdzenie czy strategia pasuje do portfela innych strategii, które możesz stosować, uzyskanie wszelkich danych niezbędnych do przetestowania strategii i próby optymalizacji strategii w celu uzyskania wyższych zysków i/lub niższego ryzyka. Będziesz musiał wziąć pod uwagę swoje własne wymagania kapitałowe, jeśli prowadzisz strategię jako inwestor „detaliczny” i jak jakiekolwiek koszty transakcji wpłyną na strategię.
W przeciwieństwie do powszechnego przekonania, znalezienie zyskownych strategii poprzez różne publiczne źródła jest w rzeczywistości dość proste. Naukowcy regularnie publikują teoretyczne wyniki handlowe (aczkolwiek w większości bez uwzględnienia kosztów transakcyjnych). Blogi poświęcone finansom ilościowym będą szczegółowo omawiać strategie. Czasopisma branżowe przedstawią niektóre strategie stosowane przez fundusze.
Można zadać sobie pytanie, dlaczego osoby i firmy są chętne do omawiania swoich zyskownych strategii, zwłaszcza gdy wiedzą, że inni „zatłaczający handel” mogą uniemożliwić działanie strategii w długim terminie. Powód leży w tym, że często nie będą oni omawiać dokładnych parametrów i metod dostrajania, które przeprowadzili. Te optymalizacje są kluczem do przekształcenia relatywnie przeciętnej strategii w wysoce zyskowną. W rzeczywistości, jednym z najlepszych sposobów na stworzenie własnych unikalnych strategii jest znalezienie podobnych metod, a następnie przeprowadzenie własnej procedury optymalizacyjnej.
Oto mała lista miejsc, w których można zacząć szukać pomysłów na strategie:
- Social Science Research Network – www.ssrn.com
- arXiv Quantitative Finance – arxiv.org/archive/q-fin
- Seeking Alpha – www.seekingalpha.com
- Elite Trader – www.elitetrader.com
- Nuclear Phynance – www.nuclearphynance.com
- Quantivity – quantivity.wordpress.com
Wiele strategii, którym się przyjrzysz, będzie należało do kategorii mean-reversion i trend-following/momentum. Strategia odwracania średniej to taka, która próbuje wykorzystać fakt, że istnieje długoterminowa średnia dla „serii cen” (takich jak spread pomiędzy dwoma skorelowanymi aktywami) i że krótkoterminowe odchylenia od tej średniej w końcu powrócą. Strategia momentum próbuje wykorzystać zarówno psychologię inwestorów, jak i strukturę dużych funduszy poprzez „zaprzęgnięcie” do trendu rynkowego, który może nabrać rozpędu w jednym kierunku i podążać za trendem aż do jego odwrócenia.
Innym ogromnie ważnym aspektem handlu ilościowego jest częstotliwość strategii handlowej. Handel o niskiej częstotliwości (LFT) odnosi się ogólnie do każdej strategii, która utrzymuje aktywa dłużej niż jeden dzień handlowy. Odpowiednio, handel wysokiej częstotliwości (HFT) odnosi się do strategii, która utrzymuje aktywa w ciągu dnia. Ultra-high frequency trading (UHFT) odnosi się do strategii, które utrzymują aktywa na poziomie sekund i milisekund. Jako praktykujący inwestor detaliczny, HFT i UHFT są z pewnością możliwe, ale tylko przy szczegółowej znajomości „stosu technologicznego” handlu i dynamiki portfela zamówień. Nie będziemy omawiać tych aspektów w dużym stopniu w tym wstępnym artykule.
Gdy strategia, lub zestaw strategii, został zidentyfikowany, musi być teraz przetestowany pod kątem zyskowności na danych historycznych. To jest domena backtestingu.
Strategia Backtesting
Celem backtestingu jest dostarczenie dowodów, że strategia zidentyfikowana poprzez powyższy proces jest zyskowna, kiedy jest stosowana zarówno do danych historycznych jak i danych poza próbą. To ustawia oczekiwania co do tego, jak strategia będzie działać w „prawdziwym świecie”. Jednakże, backtesting NIE jest gwarancją sukcesu, z różnych powodów. Jest to być może najbardziej subtelny obszar handlu ilościowego, ponieważ wiąże się z wieloma błędami, które muszą być dokładnie rozważone i wyeliminowane tak bardzo jak to tylko możliwe. Omówimy typowe rodzaje błędów, w tym look-ahead bias, survivorship bias i optimisation bias (znany również jako „data-snooping” bias). Inne obszary ważne w backtestingu to dostępność i czystość danych historycznych, uwzględnienie realistycznych kosztów transakcyjnych oraz wybór solidnej platformy backtestingowej. Koszty transakcji omówimy szerzej w rozdziale Systemy egzekucyjne poniżej.
Gdy strategia została zidentyfikowana, konieczne jest uzyskanie danych historycznych, dzięki którym można przeprowadzić testy i, być może, udoskonalenia. Istnieje znaczna liczba dostawców danych dla wszystkich klas aktywów. Ich koszty generalnie skalują się wraz z jakością, głębokością i aktualnością danych. Tradycyjnym punktem wyjścia dla początkujących quant traderów (przynajmniej na poziomie detalicznym) jest korzystanie z bezpłatnego zestawu danych z Yahoo Finance. Nie będę się tutaj zbytnio rozwodził nad dostawcami, chciałbym raczej skupić się na ogólnych kwestiach związanych z zestawami danych historycznych.
Główne obawy związane z danymi historycznymi obejmują dokładność/czystość, stronniczość przetrwania i dostosowanie do działań korporacyjnych, takich jak dywidendy i podziały akcji:
- Dokładność odnosi się do ogólnej jakości danych – czy zawierają one jakiekolwiek błędy. Błędy mogą być czasami łatwe do zidentyfikowania, takie jak z filtrem spike, który wybierze nieprawidłowe „spikes” w danych szeregu czasowego i skorygować dla nich. W innych przypadkach mogą one być bardzo trudne do wykrycia. Często konieczne jest posiadanie dwóch lub więcej dostawców, a następnie sprawdzenie wszystkich ich danych względem siebie.
- Survivorship bias jest często „cechą” darmowych lub tanich zbiorów danych. Zbiór danych z tendencyjnością przetrwania oznacza, że nie zawiera aktywów, które nie są już w obrocie. W przypadku akcji oznacza to akcje wycofane z obrotu/upadłe. Skłonność ta oznacza, że każda strategia handlu akcjami testowana na takim zbiorze danych prawdopodobnie będzie działać lepiej niż w „prawdziwym świecie”, ponieważ historyczni „zwycięzcy” zostali już wstępnie wybrani.
- Działania korporacyjne obejmują „logistyczne” działania prowadzone przez firmę, które zazwyczaj powodują skokową zmianę ceny surowca, która nie powinna być uwzględniana w obliczaniu zwrotów z ceny. Częstym winowajcą są korekty z tytułu dywidend i podziałów akcji. Proces znany jako korekta wsteczna jest konieczny do przeprowadzenia przy każdej z tych akcji. Należy być bardzo ostrożnym, aby nie pomylić podziału akcji z prawdziwą korektą zwrotów. Niejeden inwestor został przyłapany przez działania korporacyjne!
W celu przeprowadzenia procedury backtest konieczne jest użycie platformy programowej. Masz wybór pomiędzy dedykowanym oprogramowaniem backtestowym, takim jak Tradestation, platformą numeryczną, taką jak Excel lub MATLAB lub pełną niestandardową implementacją w języku programowania, takim jak Python lub C++. Nie będę się zbytnio rozwodził nad Tradestation (lub podobnym), Excelem czy MATLABem, ponieważ wierzę w tworzenie pełnego wewnętrznego stosu technologicznego (z powodów przedstawionych poniżej). Jedną z korzyści takiego postępowania jest to, że oprogramowanie backtestowe i system wykonawczy mogą być ściśle zintegrowane, nawet w przypadku bardzo zaawansowanych strategii statystycznych. W szczególności w przypadku strategii HFT, konieczne jest użycie niestandardowej implementacji.
Podczas backtestingu systemu należy być w stanie określić ilościowo, jak dobrze on działa. Standardowymi metrykami dla strategii ilościowych są maksymalny spadek oraz współczynnik Sharpe’a. Maksymalny drawdown charakteryzuje największy spadek krzywej equity konta od szczytu do dołu w określonym okresie czasu (zazwyczaj rocznym). Jest on najczęściej podawany jako wartość procentowa. Strategie LFT będą miały tendencję do większych drawdownów niż strategie HFT, ze względu na szereg czynników statystycznych. Historyczny backtest pokaże maksymalny drawdown w przeszłości, co jest dobrą wskazówką dla przyszłej wydajności drawdown strategii. Drugą miarą jest wskaźnik Sharpe’a, który jest heurystycznie definiowany jako średnia nadwyżkowych zwrotów podzielona przez standardowe odchylenie tych nadwyżkowych zwrotów. Tutaj, nadwyżka zwrotu odnosi się do zwrotu strategii powyżej wcześniej określonego benchmarku, takiego jak S&P500 lub 3-miesięczne bony skarbowe. Zauważ, że roczna stopa zwrotu nie jest miarą zazwyczaj wykorzystywaną, ponieważ nie bierze pod uwagę zmienności strategii (w przeciwieństwie do wskaźnika Sharpe’a).
Gdy strategia została przetestowana i uznana za wolną od błędów (na tyle, na ile jest to możliwe!), z dobrym Sharpe i zminimalizowanymi stratami, nadszedł czas, aby zbudować system egzekucji.
Systemy egzekucji
System egzekucji jest środkiem, za pomocą którego lista transakcji generowanych przez strategię jest wysyłana i wykonywana przez brokera. Pomimo faktu, że generowanie transakcji może być częściowo lub nawet w pełni zautomatyzowane, mechanizm egzekucji może być ręczny, częściowo ręczny (tj. „jedno kliknięcie”) lub w pełni zautomatyzowany. W przypadku strategii LFT, techniki manualne i pół-manualne są powszechne. W przypadku strategii HFT konieczne jest stworzenie w pełni zautomatyzowanego mechanizmu wykonawczego, który często będzie ściśle sprzężony z generatorem transakcji (ze względu na współzależność strategii i technologii).
Kluczowe rozważania podczas tworzenia systemu wykonawczego to interfejs do brokera, minimalizacja kosztów transakcyjnych (w tym prowizji, poślizgu i spreadu) oraz rozbieżność wydajności systemu na żywo z wydajnością sprawdzoną w backtested.
Istnieje wiele sposobów na interfejs do brokera. Począwszy od wywoływania brokera przez telefon, aż po w pełni zautomatyzowany, wysokowydajny interfejs programowania aplikacji (API). Idealnie byłoby, gdyby użytkownik chciał zautomatyzować realizację swoich transakcji w jak największym stopniu. Uwalnia to użytkownika od konieczności koncentrowania się na dalszych badaniach, jak również pozwala na uruchamianie wielu strategii lub nawet strategii o wyższej częstotliwości (w rzeczywistości HFT jest zasadniczo niemożliwe bez zautomatyzowanej egzekucji). Powszechne oprogramowanie backtestingowe opisane powyżej, takie jak MATLAB, Excel i Tradestation są dobre dla prostszych strategii o niższej częstotliwości. Jednakże konieczne będzie zbudowanie własnego systemu wykonawczego napisanego w wysokowydajnym języku, takim jak C++, w celu wykonywania prawdziwego HFT. Jako anegdota, w funduszu, w którym kiedyś pracowałem, mieliśmy 10-minutową „pętlę handlową”, gdzie pobieraliśmy nowe dane rynkowe co 10 minut, a następnie realizowaliśmy transakcje w oparciu o te informacje w tym samym przedziale czasowym. Było to przy użyciu zoptymalizowanego skryptu Pythona. Dla wszystkiego, co zbliża się do danych o częstotliwości minutowej lub sekundowej, uważam, że C/C++ byłoby bardziej idealne.
W większym funduszu optymalizacja egzekucji często nie jest domeną quant tradera. Jednak w mniejszych sklepach lub firmach HFT, traderzy SĄ wykonawcami, a zatem znacznie szerszy zestaw umiejętności jest często pożądany. Należy o tym pamiętać, jeśli chce się być zatrudnionym przez fundusz. Twoje umiejętności programowania będą tak samo ważne, jeśli nie bardziej, niż twoje talenty statystyczne i ekonometryczne!
Innym ważnym zagadnieniem, które mieści się pod hasłem egzekucji, jest minimalizacja kosztów transakcji. Istnieją generalnie trzy składniki kosztów transakcyjnych: Prowizje (lub podatek), które są opłatami pobieranymi przez biuro maklerskie, giełdę i SEC (lub podobny rządowy organ regulacyjny); poślizg, który jest różnicą między tym, po czym zamierzałeś zrealizować swoje zlecenie, a tym, po czym zostało ono faktycznie zrealizowane; spread, który jest różnicą między ceną kupna/sprzedaży papieru wartościowego będącego przedmiotem obrotu. Zauważ, że spread NIE jest stały i zależy od bieżącej płynności (tj. dostępności zleceń kupna/sprzedaży) na rynku.
Koszty transakcji mogą stanowić różnicę pomiędzy ekstremalnie zyskowną strategią z dobrym wskaźnikiem Sharpe’a a ekstremalnie nierentowną strategią z okropnym wskaźnikiem Sharpe’a. Prawidłowe przewidzenie kosztów transakcji na podstawie backtestu może być wyzwaniem. W zależności od częstotliwości strategii, będziesz potrzebował dostępu do historycznych danych giełdowych, które będą zawierały dane tick dla cen bid/ask. Całe zespoły kwantów są dedykowane do optymalizacji egzekucji w większych funduszach, właśnie z tych powodów. Rozważmy scenariusz, w którym fundusz musi pozbyć się znacznej ilości transakcji (a powody, dla których to robi są liczne i różnorodne!). Poprzez „zrzucenie” tak wielu akcji na rynek, szybko obniżą one cenę i mogą nie uzyskać optymalnej egzekucji. Dlatego też istnieją algorytmy, które „kroplówkowo” dostarczają zlecenia na rynek, chociaż wtedy fundusz ponosi ryzyko poślizgu. Co więcej, inne strategie „żerują” na tych potrzebach i mogą wykorzystywać nieefektywność. Jest to domena arbitrażu struktury funduszu.
Ostatni główny problem dla systemów wykonawczych dotyczy rozbieżności wyników strategii z wynikami backtested. Może się to zdarzyć z wielu powodów. Omówiliśmy już dogłębnie tendencyjność spojrzenia z wyprzedzeniem i tendencyjność optymalizacji, biorąc pod uwagę backtesty. Jednakże, niektóre strategie nie ułatwiają testowania tych tendencji przed ich wdrożeniem. Dzieje się tak przede wszystkim w HFT. Mogą istnieć błędy w systemie wykonawczym, jak również w samej strategii inwestycyjnej, które nie są widoczne w backtestach, ale ujawniają się w transakcjach na żywo. Rynek mógł podlegać zmianie reżimu po wdrożeniu Twojej strategii. Nowe środowiska regulacyjne, zmieniające się nastroje inwestorów oraz zjawiska makroekonomiczne mogą prowadzić do rozbieżności w zachowaniu rynku, a tym samym w zyskowności Twojej strategii.
Zarządzanie ryzykiem
Ostatnim elementem układanki handlu ilościowego jest proces zarządzania ryzykiem. „Ryzyko” obejmuje wszystkie poprzednie uprzedzenia, które omówiliśmy. Obejmuje ryzyko technologiczne, takie jak serwery zlokalizowane na giełdzie, które nagle ulegają awarii dysku twardego. Obejmuje ryzyko brokerskie, takie jak bankructwo brokera (nie jest to tak szalone, jak się wydaje, biorąc pod uwagę niedawny kryzys z MF Global!). Krótko mówiąc, obejmuje prawie wszystko, co mogłoby zakłócić realizację transakcji, których źródeł jest wiele. Całe książki są poświęcone zarządzaniu ryzykiem dla strategii ilościowych, więc nie będę próbował wyjaśniać wszystkich możliwych źródeł ryzyka tutaj.
Zarządzanie ryzykiem obejmuje również to, co jest znane jako optymalna alokacja kapitału, która jest gałęzią teorii portfela. Jest to sposób, w jaki kapitał jest alokowany do zestawu różnych strategii i do transakcji w ramach tych strategii. Jest to złożona dziedzina i opiera się na nietrywialnej matematyce. Standard branżowy, dzięki któremu optymalna alokacja kapitału i dźwignia finansowa strategii są powiązane, nazywany jest kryterium Kelly’ego. Ponieważ jest to artykuł wprowadzający, nie będę się rozwodził nad jego obliczaniem. Kelly kryterium robi niektóre założenia o statystycznej naturze zwrotów, które nie często są prawdziwe na rynkach finansowych, więc handlowcy są często konserwatywni, jeśli chodzi o wdrożenie.
Inny kluczowy składnik zarządzania ryzykiem jest w radzeniu sobie z własnym profilem psychologicznym. Istnieje wiele tendencji poznawczych, które mogą wkradać się do handlu. Chociaż jest to wprawdzie mniej problematyczne w przypadku handlu algorytmicznego, jeśli strategia jest pozostawiona sama sobie! Powszechną tendencją jest awersja do strat, gdzie tracąca pozycja nie zostanie zamknięta z powodu bólu związanego z koniecznością zrealizowania straty. Podobnie, zyski mogą być przyjmowane zbyt wcześnie, ponieważ strach przed utratą już osiągniętego zysku może być zbyt duży. Inną często spotykaną tendencją jest tzw. tendencja rekurencyjna. Objawia się ona, gdy inwestorzy kładą zbyt duży nacisk na ostatnie wydarzenia, a nie na dłuższą perspektywę czasową. Oczywiście istnieje również klasyczna para uprzedzeń emocjonalnych – strach i chciwość. Mogą one często prowadzić do niedostatecznego lub nadmiernego lewarowania, co może spowodować wybuch (tj. kapitał własny na koncie zmierzający do zera lub gorzej!) lub zmniejszone zyski.
Podsumowanie
Jak widać, handel ilościowy jest niezwykle złożonym, aczkolwiek bardzo interesującym, obszarem finansów ilościowych. W tym artykule dosłownie zarysowałem powierzchnię tego tematu i już robi się on dość długi! Całe książki i prace zostały napisane o kwestiach, którym poświęciłem tylko zdanie lub dwa. Z tego powodu, przed ubieganiem się o pracę w handlu funduszami ilościowymi, konieczne jest przeprowadzenie znacznej ilości badań podstawowych. W przypadku bardziej wyrafinowanych strategii o wyższej częstotliwości, Twój zestaw umiejętności będzie prawdopodobnie obejmował modyfikację jądra Linuksa, C/C++, programowanie montażowe i optymalizację opóźnień sieciowych.
Jeśli jesteś zainteresowany próbą stworzenia własnych algorytmicznych strategii handlowych, moją pierwszą sugestią byłoby, abyś był dobry w programowaniu. Preferuję budowanie jak największej części systemu zbierania danych, backtestera strategii i systemu wykonawczego samodzielnie, jak to tylko możliwe. Jeśli na szali jest Twój własny kapitał, czy nie spałbyś lepiej w nocy wiedząc, że w pełni przetestowałeś swój system i jesteś świadomy jego pułapek i szczególnych problemów? Zlecenie tego dostawcy, choć potencjalnie oszczędza czas w krótkim okresie, może być bardzo kosztowne w dłuższej perspektywie.