Thursday 7 December 2017

Jak zbudować system handlu o wysokiej częstotliwości


Podstawy handlu algorytmicznego: pojęcia i przykłady Algorytm to określony zestaw jasno zdefiniowanych instrukcji mających na celu wykonanie zadania lub procesu. Handel algorytmiczny (handel automatyczny, handel czarnoskrzynkowy lub po prostu handel algowy) jest procesem wykorzystywania komputerów zaprogramowanych do wykonywania określonego zestawu instrukcji dotyczących zawarcia transakcji w celu generowania zysków z prędkością i częstotliwością niemożliwą do uzyskania. ludzki przedsiębiorca. Zdefiniowane zestawy reguł są oparte na czasie, cenie, ilości lub dowolnym modelu matematycznym. Poza możliwościami zysku dla handlowca, algo-trading sprawia, że ​​rynki są bardziej płynne i sprawia, że ​​handel staje się bardziej systematyczny, wykluczając emocjonalny wpływ na działalność handlową. Załóżmy, że trader przestrzega następujących prostych kryteriów handlowych: kup 50 akcji w magazynie, gdy jego 50-dniowa średnia krocząca przekracza średnią ruchomą wynoszącą 200 dni Sprzedaj akcje w magazynie, gdy jego 50-dniowa średnia krocząca spada poniżej 200-dniowej średniej kroczącej Korzystając z tego zestawu dwóch prostych instrukcji, łatwo jest napisać program komputerowy, który automatycznie monitoruje cenę akcji (i wskaźniki średniej ruchomej) i umieszcza zamówienia kupna i sprzedaży po spełnieniu określonych warunków. Przedsiębiorca nie musi już dłużej obserwować cen i wykresów na żywo, ani składać zamówień ręcznie. Algorytmiczny system transakcyjny automatycznie robi to za niego, prawidłowo identyfikując możliwości handlowe. (Aby dowiedzieć się więcej na temat średnich kroczących, zobacz: Proste średnie ruchome Wyróżnij trendy). Algo-trading zapewnia następujące korzyści: Transakcje wykonywane w najlepszych możliwych cenach Natychmiastowe i dokładne rozmieszczenie zleceń handlowych (co daje duże szanse na wykonanie na pożądanych poziomach) Transakcje prawidłowo i natychmiastowo, aby uniknąć znacznych zmian cen Zmniejszone koszty transakcji (patrz przykład niedoboru implementacji poniżej) Jednoczesne automatyczne kontrole warunków na wielu rynkach Zredukowane ryzyko ręcznych błędów podczas zawierania transakcji Backtest algorytmu, na podstawie dostępnych danych historycznych i danych w czasie rzeczywistym Reduced możliwość pomyłek popełnianych przez handlarzy ludźmi w oparciu o czynniki emocjonalne i psychologiczne Największą część dzisiejszego algo-handlowania stanowi transakcja o wysokiej częstotliwości (HFT), która stara się wykorzystać dużą liczbę zleceń przy bardzo dużych prędkościach na wielu rynkach i wielu decyzjach parametry, oparte na zaprogramowanych instrukcjach. (Aby uzyskać więcej informacji na temat transakcji o wysokiej częstotliwości, zobacz: Strategie i sekrety przedsiębiorstw o ​​wysokiej częstotliwości (HFT)) Algo-trading jest wykorzystywany w wielu formach działalności handlowej i inwestycyjnej, w tym: Inwestorzy średnio - i długoterminowi lub kupują firmy poboczne (fundusze emerytalne) fundusze inwestycyjne, towarzystwa ubezpieczeniowe), które dokonują zakupu w dużych ilościach, ale nie chcą wpływać na ceny akcji za pomocą dyskretnych, dużych inwestycji. Handlowcy krótkoterminowi i uczestnicy rynku sprzedaży (animatorzy rynku, spekulanci i arbitrzy) dodatkowo zyskują dzięki automatycznej realizacji transakcji, algo-trading pomagają w stworzeniu wystarczającej płynności dla sprzedawców na rynku. Systematyczni handlowcy (twórcy trendów, handlowcy parami, fundusze hedgingowe itp.) Uważają, że programowanie reguł handlowych jest o wiele bardziej efektywne i pozwala programowi handlować automatycznie. Handel algorytmiczny zapewnia bardziej systematyczne podejście do aktywnego handlu niż metody oparte na intuicji lub instynkcie handlowców. Algorytmiczne strategie handlowe Każda strategia handlu algorytmicznego wymaga zidentyfikowanej możliwości, która przynosi zyski pod względem poprawy zysków lub redukcji kosztów. Poniżej przedstawiono typowe strategie transakcyjne stosowane w algo-trading: Najpopularniejsze strategie handlu algorytmicznego podążają za trendami średnich kroczących. wyłuskanie kanałów. zmiany poziomu cen i powiązane wskaźniki techniczne. Są to najprostsze i najprostsze strategie implementacji poprzez handel algorytmiczny, ponieważ strategie te nie wymagają dokonywania jakichkolwiek prognoz ani prognoz cenowych. Transakcje są inicjowane w oparciu o występowanie pożądanych trendów. które są łatwe i proste do wdrożenia za pomocą algorytmów bez wchodzenia w złożoność analizy predykcyjnej. Powyższy przykład średniej ruchomej wynoszącej 50 i 200 dni jest popularnym trendem zgodnym ze strategią. (Aby uzyskać więcej informacji na temat strategii handlu trendami, zobacz: Proste strategie wykorzystywania trendów.) Zakup podwójnego notowania giełdowego po niższej cenie na jednym rynku i jednoczesne sprzedawanie go po wyższej cenie na innym rynku oferuje różnicę cen jako wolny od ryzyka zysk lub arbitraż. Ta sama operacja może być powielana w odniesieniu do instrumentów akcji w porównaniu do instrumentów futures, ponieważ różnice cenowe istnieją od czasu do czasu. Wdrożenie algorytmu identyfikującego takie różnice cenowe i składanie zamówień pozwala na efektywne zyski. Fundusze indeksowe określiły okresy równoważenia w celu dostosowania swoich udziałów do swoich odpowiednich indeksów odniesienia. Stwarza to zyskowne możliwości dla handlowców algorytmicznych, którzy wykorzystują oczekiwane transakcje, które dają 20-80 punktów bazowych zysków w zależności od liczby akcji w funduszu indeksowym, tuż przed przywróceniem indeksu funduszy. Takie transakcje są inicjowane za pomocą algorytmicznych systemów transakcyjnych w celu terminowej realizacji i najlepszych cen. Wiele sprawdzonych modeli matematycznych, takich jak neutralna strategia handlowania delta, które umożliwiają handel kombinacjami opcji i zabezpieczeniami. w przypadku transakcji zawieranych w celu kompensowania dodatnich i ujemnych delt, tak aby delta portfela została utrzymana na poziomie zero. Średnia strategia zwrotu opiera się na założeniu, że wysokie i niskie ceny aktywów są zjawiskiem przejściowym, które okresowo powracają do ich wartości średniej. Identyfikacja i definiowanie przedziału cenowego i algorytmu implementacji w oparciu o to pozwala na automatyczne umieszczanie transakcji, gdy cena aktywów włamuje się i znika z określonego przedziału. Strategia średniej ważonej ilości woluminów dzieli duże zlecenie i uwalnia dynamicznie określone mniejsze porcje zamówienia na rynek, korzystając z historycznych profili wolumenu historycznych. Celem jest wykonanie zamówienia zbliżonego do średniej ważonej wolumenem ceny (VWAP), a tym samym skorzystanie ze średniej ceny. Strategia średniej ważonej ceny dzieli duże zlecenie i uwalnia dynamicznie określone mniejsze porcje zlecenia na rynek za pomocą równomiernie podzielonych przedziałów czasowych między czasem rozpoczęcia i zakończenia. Celem jest wykonanie zamówienia zbliżonego do średniej ceny między początkiem a czasem zakończenia, minimalizując w ten sposób wpływ na rynek. Dopóki zlecenie handlowe nie zostanie w pełni wypełnione, algorytm ten kontynuuje wysyłanie zleceń częściowych, zgodnie z określonym współczynnikiem udziału i według wolumenu obrotu na rynkach. Strategia powiązanych działań wysyła zamówienia według zdefiniowanego przez użytkownika procentu wielkości rynku i zwiększa lub zmniejsza współczynnik uczestnictwa, gdy cena akcji osiąga poziomy zdefiniowane przez użytkownika. Strategia niedoborów wdrożeniowych ma na celu zminimalizowanie kosztów realizacji zamówienia poprzez obrót rynkiem czasu rzeczywistego, co pozwala zaoszczędzić na kosztach zamówienia i skorzystać z kosztu alternatywnego opóźnionego wykonania. Strategia zwiększy docelową stopę uczestnictwa, gdy cena akcji będzie się korzystnie zmieniać i spadnie, gdy cena akcji będzie się pogarszać. Istnieje kilka specjalnych klas algorytmów, które próbują zidentyfikować zdarzenia po drugiej stronie. Te algorytmy wykrywające, stosowane na przykład przez twórcę rynku strony sprzedającej, mają wbudowaną inteligencję, która identyfikuje istnienie dowolnych algorytmów po stronie kupna dużego zamówienia. Takie wykrywanie za pomocą algorytmów pomoże animatorowi rynku zidentyfikować duże możliwości zleceń i umożliwić mu skorzystanie z wypełniania zamówień po wyższej cenie. Jest to czasami określane jako front-running high-tech. (Aby uzyskać więcej informacji na temat transakcji o wysokiej częstotliwości i nieuczciwych praktyk, zobacz: Jeśli kupujesz akcje online, angażujesz się w transakcje HFT.) Wymagania techniczne dla handlu algorytmicznego Wdrożenie algorytmu za pomocą programu komputerowego jest ostatnią częścią, której towarzyszy weryfikacja historyczna. Wyzwaniem jest przekształcenie zidentyfikowanej strategii w zintegrowany skomputeryzowany proces, który ma dostęp do rachunku handlowego do składania zamówień. Potrzebne są następujące elementy: Wiedza programistyczna do zaprogramowania wymaganej strategii handlowej, wynajęci programiści lub gotowe oprogramowanie transakcyjne Łączność sieciowa i dostęp do platform transakcyjnych do składania zamówień Dostęp do rynkowych kanałów danych, które będą monitorowane przez algorytm pod kątem możliwości umieszczenia zamówienia Zdolność i infrastruktura do testowania wstecznego systemu po jego zbudowaniu, zanim zostanie wprowadzona na rzeczywiste rynki Dostępne historyczne dane do analizy historycznej, w zależności od złożoności reguł zaimplementowanych w algorytmie Oto przykładowy przykład: Royal Dutch Shell (RDS) jest notowany na Amsterdamie Giełda (AEX) i Giełda Londyńska (LSE). Skonstruujmy algorytm, aby zidentyfikować możliwości arbitrażu. Oto kilka interesujących spostrzeżeń: AEX inwestuje w euro, a LSE w funtach szterlingach Ze względu na różnicę godzinową AEX otwiera godzinę wcześniej niż LSE, a następnie obie giełdy handlują jednocześnie przez kilka następnych godzin, a następnie handlują tylko w LSE podczas ostatnia godzina w miarę zamykania AEX Czy możemy zbadać możliwość handlu arbitrażowego na rynku akcji Royal Dutch Shell notowanych na tych dwóch rynkach w dwóch różnych walutach Program komputerowy, który odczytuje bieżące ceny rynkowe Kanały cenowe z LSE i AEX A Kurs wymiany GBP-EUR Zdolność do składania zleceń, która może doprowadzić zamówienie do właściwej wymiany Potencjał testowy w historycznych kanałach cenowych Program komputerowy powinien wykonać następujące czynności: Odczytać przychodzący strumień ceny zasobów RDS z obu giełd. Wykorzystanie dostępnych kursów wymiany walut . przeliczenie ceny jednej waluty na inną Jeśli istnieje wystarczająco duża rozbieżność cenowa (zdyskontowana koszty maklerskie) prowadząca do korzystnej okazji, wówczas należy złożyć zlecenie kupna po niższej cenie na zlecenie wymiany i sprzedaży na wyższą wycenę Jeśli zlecenia są realizowane jako pożądany, zysk arbitrażowy będzie następował Prosto i Łatwie Jednak praktyka handlu algorytmicznego nie jest tak prosta w utrzymaniu i wykonaniu. Pamiętaj, że jeśli umieścisz handel generowany przez algo, inni uczestnicy rynku również. W związku z tym ceny wahają się w milli, a nawet mikrosekundach. W powyższym przykładzie, co się stanie, jeśli twój zakup zostanie zrealizowany, ale nie sprzedajesz handlu, ponieważ ceny sprzedaży zmieniają się w momencie, gdy twoje zamówienie trafi na rynek. W końcu będziesz siedział z otwartą pozycją. uczynienie strategii arbitrażowej bezwartościową. Istnieje dodatkowe ryzyko i wyzwania: na przykład ryzyko awarii systemu, błędy łączności sieciowej, opóźnienia między zleceniami handlowymi a wykonaniem oraz, co najważniejsze, niedoskonałe algorytmy. Bardziej złożony algorytm wymaga bardziej rygorystycznej analizy wstecznej, zanim zostanie wprowadzony w życie. Ilościowa analiza wydajności algorytmów odgrywa ważną rolę i powinna zostać poddana krytycznej analizie. To ekscytujące, aby przejść do automatyzacji wspomagane komputerami z myślą o zarabianiu pieniędzy bez wysiłku. Ale trzeba się upewnić, że system jest dokładnie przetestowany i ustalone są wymagane limity. Analitycy powinni rozważyć samodzielne uczenie się programowania i budowania systemów, aby mieć pewność, że wdrażają odpowiednie strategie w niezawodny sposób. Ostrożne użycie i dokładne testowanie handlu al-tro może stworzyć korzystne możliwości. Rodzaj struktury wynagrodzeń, z której korzystają zazwyczaj zarządzający funduszami hedgingowymi, w której część wynagrodzenia jest oparta na wynikach. Ochrona przed utratą dochodu, która powstałaby w przypadku śmierci ubezpieczonego. Nazwany beneficjent otrzymuje. Miara związku między zmianą ilości żądanej danego towaru a zmianą jego ceny. Cena. Łączna wartość rynkowa w dolarach wszystkich dostępnych akcji spółki. Kapitalizacja rynkowa jest obliczana poprzez pomnożenie. Frexit krótko dla quotFrench exitquot to francuski spinoff terminu Brexit, który pojawił się, gdy Wielka Brytania głosowała. Zlecenie złożone z brokerem, który łączy w sobie funkcje zlecenia stopu z zleceniami limitów. Zlecenie z limitem zatrzymania nastąpi. Here Jak skonfigurować własną operację handlu o wysokiej częstotliwości W zeszłym tygodniu mieliśmy przywilej zasiadania z Mike'em Felixem i doktorem Lawrencem Hansenem z Lime Brokerage. pośrednik agencyjny z siedzibą w Nowym Jorku, który specjalizuje się w wysokiej częstotliwości. handel o niskich opóźnieniach. Główne dania na wynos. Ci, którzy myślą, że prędkości są niedopuszczalne, lepiej przyzwyczajają się do tego, ponieważ są tu, aby pozostać, a stąd tylko szybciej. Zapytaliśmy ich, jak można by zorganizować własną operację handlu wysokimi częstotliwościami na poziomie amatorskiej poczty elektronicznej. Po dokładnym ustaleniu, czym jest definicja handlu o wysokiej częstotliwości. przeszliśmy przez kroki, które trzeba podjąć, aby to się stało. Wyświetl jako: Jedna strona PrezentacjeTen post wyszczególni, co zrobiłem, aby zrobić około. 500k z transakcji o wysokiej częstotliwości od 2009 do 2017 roku. Ponieważ handlowałem całkowicie niezależnie i nie używam już mojego programu, Irsquom z radością mówi wszystko. Moje transakcje były głównie w kontraktach futures na rok 2000 i DAX. Kluczem do mojego sukcesu, jak sądzę, nie było wyrafinowane równanie finansowe, ale raczej ogólny projekt algorytmu, który wiązał ze sobą wiele prostych komponentów i używane uczenie maszynowe w celu optymalizacji w celu uzyskania maksymalnej rentowności. Nie musisz znać żadnej wyrafinowanej terminologii, ponieważ kiedy konfigurowałem program, wszystko opierało się na intuicji. (Niezwykły kurs nauki maszynowej Andrew Ngrsquosa nie był jeszcze dostępny - btw, jeśli klikniesz ten link, twój link zostanie przeniesiony do mojego bieżącego projektu: CourseTalk, strona z recenzjami dla MOOC) Po pierwsze chcę tylko pokazać, że mój sukces nie był jedynie wynikiem szczęście. Mój program zawierał transakcje o wartości 1000-4000 dziennie (półdługie, pół-krótkie) i nigdy nie zajmował pozycji więcej niż kilka kontraktów na raz. Oznaczało to, że losowe szczęście z jakiejś konkretnej transakcji uśredniono dość szybko. Rezultatem było to, że nigdy nie straciłem więcej niż 2000 w jeden dzień i nigdy nie miałem przegranego miesiąca: (EDYCJA, te liczby są po zapłaceniu prowizji) I tutaj jest wykres, który daje odczucie codziennej zmienności. Zauważ, że to wyklucza ostatnie 7 miesięcy, ponieważ - ponieważ liczby przestały rosnąć - straciłem motywację, aby je wprowadzić. Moje zaplecze handlowe Przed założeniem mojego automatycznego programu handlowego, Irsquod miał 2-letnie doświadczenie jako trader dnia handlowego. To było w 2001 roku - było to początkiem handlu elektronicznego i istniały możliwości, aby ldquoscalpersrdquo zarabiać pieniądze. Mogę tylko opisać, co robię, tak jak gra w gry hazardowe z domniemaną przewagą. Sukces polegał na byciu szybkim, zdyscyplinowanym i dobrym intuicyjnym rozpoznawaniu wzorców. Udało mi się zarobić około 250 000, spłacić kredyty studenckie i zostawić pieniądze. Wygraj W ciągu następnych pięciu lat uruchomię dwa startupy, zbierając po drodze pewne umiejętności programistyczne. Dopiero pod koniec 2008 r. Powrócę do handlu. Przy niskich obrotach ze sprzedaży mojego pierwszego uruchomienia, obrót dawał nadzieję na szybką gotówkę, podczas gdy ja odkryłem mój następny ruch. W 2008 roku byłem kontraktami terminowymi na akcje o średniej wartości, używając oprogramowania o nazwie T4. Irsquod potrzebował kilku niestandardowych skrótów do wprowadzania zamówień, więc po odkryciu T4 miał API, podjąłem wyzwanie nauki C (język programowania wymagany do korzystania z API) i poszedłem dalej i zbudowałem sobie kilka skrótów klawiszowych. Po tym, jak zacząłem się moczyć z API, wkrótce miałem większe aspiracje: chciałem nauczyć komputer, żeby handlował dla mnie. Interfejs API zapewniał zarówno strumień danych rynkowych, jak i łatwy sposób wysyłania zleceń do giełdy - wszystko, co musiałem zrobić, to stworzyć logikę w środku. Poniżej zrzut ekranu okna transakcyjnego T4. To, co było fajne, to fakt, że kiedy uruchomiłem program, mogłem oglądać handel komputerowy na tym samym interfejsie. Obserwowanie prawdziwych rozkazów pojawiających się i wychodzących (samo z moimi prawdziwymi pieniędzmi) było zarówno ekscytujące, jak i przerażające. Projekt mojego algorytmu Od samego początku moim celem było stworzenie takiego systemu, żebym mógł być dość pewny, że Irsquod zarabia pieniądze, zanim dokona transakcji na żywo. Aby to osiągnąć, musiałem zbudować platformę symulacji handlu, która - tak dokładnie, jak to możliwe - mogłaby symulować transakcje na żywo. Podczas handlu w trybie na żywo wymagane aktualizacje rynku przetwarzania przesyłane przez interfejs API, tryb symulacji wymagał odczytania aktualizacji rynku z pliku danych. Aby zebrać te dane, konfiguruję pierwszą wersję mojego programu, aby po prostu połączyć się z interfejsem API i rejestrować aktualizacje rynkowe z sygnaturami czasowymi. Ostatnimi czasy wykorzystałem ostatnie dane rynkowe do przetestowania i przetestowania mojego systemu. Z podstawowymi ramami nadal miałem zadanie dowiedzieć się, jak stworzyć zyskowny system transakcyjny. Jak się okazało, mój algorytm podzieliłby się na dwa odrębne komponenty, które Irsquoll eksploruje kolejno: przewidywanie ruchów cenowych i dokonywanie zyskownych transakcji Przewidywanie ruchów cenowych Być może oczywistym elementem każdego systemu transakcyjnego jest zdolność przewidywania, gdzie ceny będą się przemieszczać. A mój nie był wyjątkiem. Zdefiniowałem obecną cenę jako średnią z oferty wewnętrznej i wewnętrznej i ustaliłem cel przewidywania, gdzie cena będzie za 10 sekund. Mój algorytm musiałby wymyślić tę prognozę z dnia na dzień przez cały dzień handlu. Tworząc wskaźniki optymalizacji wzmacniacza stworzyłem garść wskaźników, które okazały się mieć znaczącą zdolność przewidywania krótkoterminowych ruchów cenowych. Każdy wskaźnik tworzył liczbę, która była albo dodatnia, albo ujemna. Wskaźnik był przydatny, gdy częściej niż dodatnia liczba odpowiadała wzrostowi rynku, a ujemna liczba odpowiadała spadkowi na rynku. Mój system pozwolił mi szybko określić, jak dużą zdolność przewidywania miał każdy wskaźnik, więc mogłem eksperymentować z wieloma różnymi wskaźnikami, aby zobaczyć, co zadziałało. Wiele wskaźników miało zmienne w formułach, które je wytworzyły i udało mi się znaleźć optymalne wartości dla tych zmiennych, dokonując porównania wartości uzyskanych przy różnych wartościach. Wskaźniki, które były najbardziej użyteczne, były stosunkowo proste i opierały się na ostatnich wydarzeniach na rynku, na którym handlowałem, a także na rynkach powiązanych ze sobą papierów wartościowych. Wykonywanie dokładnych prognoz ruchów cen O ile wskaźniki, które po prostu przewidywały ruch w górę lub w dół, nie były wystarczające. Musiałem dokładnie wiedzieć, jak dużo ruchu cenowego przewidywano przy każdej możliwej wartości każdego wskaźnika. Potrzebowałem formuły, która zamieniłaby wartość wskaźnika na prognozę ceny. Aby to osiągnąć, śledziłem przewidywane ruchy cen w 50 segmentach, które zależały od zakresu, w którym spadła wartość wskaźnika. W ten sposób uzyskano unikalne prognozy dla każdego segmentu, które następnie mogłem wygenerować w Excelu. Jak widać oczekiwana zmiana ceny rośnie wraz ze wzrostem wartości wskaźnika. Na podstawie takiego wykresu udało mi się stworzyć formułę dopasowaną do krzywej. Na początku zrobiłem to ręcznie, ale wkrótce napisałem trochę kodu, aby zautomatyzować ten proces. Należy zauważyć, że nie wszystkie krzywe wskaźnika miały ten sam kształt. Należy również zauważyć, że kubły zostały logarytmicznie rozmieszczone, aby równomiernie rozłożyć dane. Na koniec należy zauważyć, że ujemne wartości wskaźników (i odpowiadające im prognozy cen w dół) zostały odwrócone i połączone z dodatnimi wartościami. (Mój algorytm jest dokładnie taki sam.) Łączenie wskaźników dla jednej prognozy Ważną rzeczą, którą należy wziąć pod uwagę, jest to, że każdy wskaźnik nie był całkowicie niezależny. Nie mogłem po prostu po prostu zsumować wszystkich prognoz, które każdy indykator zrobił indywidualnie. Kluczem było ustalenie dodatkowej wartości prognostycznej, którą każdy wskaźnik przekroczył już przewidywany. Nie było to trudne do wdrożenia, ale oznaczało to, że gdybym był dostosowany do wielu wskaźników jednocześnie, musiałbym uważać, aby zmienić jeden, co mogłoby wpłynąć na przewidywania innego. Aby dopasować do siebie wszystkie wskaźniki w tym samym czasie, ustawiam optymalizator tak, aby przy każdym przejściu przechodził tylko 30 w kierunku nowych krzywych predykcji. W tym 30 skoku odkryłem, że krzywe predykcji ustabilizują się w ciągu kilku przebiegów. Z każdym wskaźnikiem, który daje nam teraz dodatkowe prognozy cenowe, mógłbym je po prostu dodać, aby wytworzyć jedną prognozę, gdzie rynek będzie za 10 sekund. Dlaczego przewidywanie cen nie wystarczy Możesz pomyśleć, że z tą przewagą na rynku byłem złoty. Należy jednak pamiętać, że rynek składa się z ofert i ofert - to nie tylko jedna cena rynkowa. Sukces w handlu wysokiej częstotliwości sprowadza się do uzyskania dobrych cen i nie jest to łatwe. Następujące czynniki sprawiają, że tworzenie opłacalnego systemu jest trudne: przy każdej transakcji musiałem płacić prowizje zarówno brokerowi, jak i giełdzie. Spread (różnica pomiędzy najwyższą ofertą a najniższą ofertą) oznaczał, że gdybym po prostu kupował i sprzedawał losowo Irsquod, traciłbym mnóstwo pieniędzy. Większość wolumenu rynku to inne roboty, które realizowałyby ze mną tylko transakcje, gdyby uważały, że mają pewną przewagę statystyczną. Złożenie oferty nie gwarantowało, że mogę ją kupić. Do czasu, gdy moje zlecenie kupna dotarło na giełdę, bardzo możliwe, że oferta ta zostałaby anulowana. Jako mały gracz na rynku nie było mowy, żebym mógł rywalizować tylko z prędkością. Zbudowanie pełnej symulacji transakcji Miałem więc ramy, które pozwoliły mi na analizę historyczną i optymalizację wskaźników. Ale musiałem wyjść poza to - potrzebowałem ram, które pozwoliłyby mi przetestować i zoptymalizować system pełnego handlu, w którym wysyłałem zamówienia i zajmowałem pozycje. W tym przypadku Irsquod optymalizuje pod kątem całkowitej PampL i do pewnego stopnia średniej PampL na handel. Byłoby to trudniejsze i pod pewnymi względami niemożliwe do modelowania, ale robiłem wszystko, co mogłem. Oto kilka problemów, z którymi miałem do czynienia: kiedy zamówienie zostało wysłane na rynek w trakcie symulacji, musiałem modelować czas opóźnienia. To, że mój system zobaczył ofertę, nie oznaczało, że może ją kupić od razu. System wysłałby zlecenie, odczekał około 20 milisekund, a następnie tylko wtedy, gdy oferta nadal istniała, uznawano ją za zrealizowaną transakcję. Było to niedokładne, ponieważ rzeczywisty czas opóźnienia był niespójny i niezgłaszany. Kiedy składałem oferty lub oferty, musiałem spojrzeć na strumień realizacji transakcji (dostarczony przez API) i użyć ich do sprawdzenia, kiedy moje zamówienie zostałoby wykonane przeciwko niemu. Aby to zrobić, musiałem śledzić pozycję mojego zamówienia w kolejce. (Itrsquos to system typu first-in first-out). Znowu nie mogłem zrobić tego doskonale, ale zrobiłem najlepsze przybliżenie. Aby udoskonalić symulację wykonania zlecenia, zrobiłem pliki logów z transakcji na żywo za pośrednictwem interfejsu API i porównałem je z plikami dziennika wygenerowanymi przez symulację transakcji z tego samego okresu. Udało mi się doprowadzić symulację do tego stopnia, że ​​była całkiem dokładna, a dla części, których nie udało się dokładnie modelować, upewniłem się przynajmniej, że wyniki będą statystycznie podobne (w metrykach, które uważałem za ważne). Prowadzenie dochodowych transakcji Dzięki wprowadzeniu modelu symulacji zamówienia mogłem teraz wysyłać zamówienia w trybie symulacji i zobaczyć symulowany PampL. Ale w jaki sposób mój system wie, kiedy i gdzie kupować i sprzedawać Prognozy dotyczące zmiany cen były punktem wyjścia, ale nie całą historią. To co zrobiłem, to stworzyć system punktacji dla każdego z 5 poziomów cenowych w ofercie i ofercie. Obejmowały one jeden poziom powyżej wewnętrznej oferty (w przypadku zlecenia zakupu) i jeden poziom poniżej wewnętrznej oferty (w przypadku zlecenia sprzedaży). Jeśli wynik na dowolnym poziomie cen był powyżej pewnego progu, co oznaczałoby, że mój system powinien mieć aktywną ofertę ofertową - poniżej progu, wszelkie aktywne zamówienia powinny zostać anulowane. Na tej podstawie nierzadko zdarzyło się, że mój system wyświetli stawkę na rynku, a następnie natychmiast ją anuluje. (Chociaż starałem się zminimalizować to, ponieważ itrsquos było irytujące dla każdego, kto patrzył na ekran ludzkimi oczami - także ja.) Wyniki poziomu cen zostały obliczone na podstawie następujących czynników: Prognozy przesunięcia cen (które omówiliśmy wcześniej). Poziom cenowy, o którym mowa. (Wewnętrzne poziomy oznaczały większe przewidywania dotyczące ruchów cenowych). Liczba umów przed moim zamówieniem w kolejce. (Mniej znaczyło lepiej.) Liczba kontraktów za moim zamówieniem w kolejce. (Więcej było lepiej.) Zasadniczo te czynniki służyły do ​​identyfikacji miejsc, w których można licytować. Samo przewidywanie ruchu cenowego nie było odpowiednie, ponieważ nie uwzględniało ono faktu, że składając ofertę nie byłem automatycznie wypełniony - zostałem tylko wypełniony, jeśli ktoś mi tam sprzedał. W rzeczywistości sam fakt sprzedania mi za pewną cenę zmienił statystyczne kursy handlu. Zmienne zastosowane w tym kroku zostały poddane optymalizacji. Dokonano tego dokładnie w taki sam sposób, jak zoptymalizowane zmienne w wskaźnikach przesunięcia ceny, z tym że w tym przypadku optymalizowałem pod kątem PampL. To, co mój program zignorował Podczas handlu ludźmi, często mamy silne emocje i uprzedzenia, które mogą prowadzić do mniej niż optymalnych decyzji. Najwyraźniej nie chciałem skodyfikować tych uprzedzeń. Oto kilka czynników, które mój system zignorował: Cena, w jakiej wprowadzono pozycję - W biurze handlowym bardzo często słyszy się rozmowę o cenie, w której ktoś jest długi lub krótki, jakby to miało wpłynąć na jego przyszły proces decyzyjny. Chociaż ma to pewne znaczenie w ramach strategii ograniczania ryzyka, nie ma to żadnego wpływu na dalszy rozwój wydarzeń na rynku. Dlatego mój program całkowicie zignorował te informacje. Itrsquos to ta sama koncepcja, co ignorowanie kosztów utopionych. Krótko mówiąc, a wyjście z długiej pozycji - Zwykle przedsiębiorca miałby inne kryteria, które decydowałyby o tym, gdzie sprzedać długą pozycję, a gdzie się skrócić. Jednak z perspektywy moich algorytmów nie było powodu do rozróżnienia. Jeśli mój algorytm spodziewał się posunięcia w dół, sprzedaż była dobrym pomysłem, niezależnie od tego, czy był on obecnie długi, krótki, czy płaski. Strategia podwyższania ratingu - Jest to wspólna strategia, w której kupcy będą kupować więcej akcji w przypadku, gdyby pierwotny handel był przeciwko nim. Powoduje to, że twoja średnia cena zakupu jest niższa, a to oznacza, kiedy (lub jeśli) stan się zmienia wokół yoursquoll być ustawione, aby odzyskać pieniądze w mgnieniu oka. Moim zdaniem jest to naprawdę okropna strategia, chyba że Twój Warren Buffet. Yoursquore nabrał przekonania, że ​​radzisz sobie dobrze, ponieważ większość Twoich transakcji będzie zwycięzcami. Problem polega na tym, że kiedy przegrywasz, tracisz duże. Innym efektem jest to, że trudno jest ocenić, czy rzeczywiście masz przewagę na rynku lub po prostu masz szczęście. Możliwość monitorowania i potwierdzenia, że ​​mój program rzeczywiście ma przewagę, jest ważnym celem. Ponieważ mój algorytm podejmował decyzje w ten sam sposób, niezależnie od miejsca, w którym wszedł do handlu, lub jeśli był on obecnie długi lub krótki, od czasu do czasu zasiadał (i zabierał) duże transakcje tracące (oprócz dużych transakcji z nagrodami). Ale nie powinieneś myśleć, że nie było żadnego zarządzania ryzykiem. Aby zarządzać ryzykiem, wymuszałem maksymalną wielkość pozycji 2 kontraktów naraz, czasami zdarzało się to w przypadku dużych dni. Miałem też maksymalny dzienny limit strat, aby zabezpieczyć się przed nieoczekiwanymi warunkami rynkowymi lub błędem w moim oprogramowaniu. Ograniczenia te zostały wprowadzone w moim kodzie, ale również w backendach za pośrednictwem mojego brokera. Tak się złożyło, że nigdy nie napotkałem żadnych znaczących problemów. Uruchamianie algorytmu Od momentu rozpoczęcia pracy nad moim programem zajęło mi to około 6 miesięcy, zanim osiągnąłem punkt opłacalności i zacząłem go uruchamiać. Chociaż uczciwie, sporo czasu zajęło uczenie się nowego języka programowania. Kiedy pracowałem nad ulepszeniem programu, widziałem zwiększone zyski dla każdego z następnych czterech miesięcy. Każdego tygodnia przekwalifikowywałem swój system na podstawie danych z poprzednich 4 tygodni. Stwierdziłem, że osiągnęło to właściwą równowagę między uchwyceniem ostatnich trendów behawioralnych na rynku i upewnieniem się, że mój algorytm ma wystarczającą ilość danych do ustalenia znaczących wzorców. W miarę, jak szkolenie zaczęło się zajmować coraz więcej czasu, dzieliłem je na 8 maszyn wirtualnych za pomocą Amazon EC2. Wyniki zostały następnie połączone na mojej lokalnej maszynie. Najważniejszym momentem w mojej transakcji był październik 2009, kiedy osiągnąłem prawie 100 tys. Potem kontynuowałem kolejne cztery miesiące, próbując poprawić swój program pomimo spadku zysków każdego miesiąca. Niestety, w tym momencie wydaje mi się, że Irsquod wdrożyła wszystkie moje najlepsze pomysły, ponieważ nic, co próbowałem, nie pomogło. Z frustracją polegającą na tym, że nie mogliśmy dokonywać ulepszeń i nie mieć poczucia wzrostu, zacząłem myśleć o nowym kierunku. Wysłałem e-mail do 6 różnych firm handlowych o wysokiej częstotliwości, aby sprawdzić, czy są zainteresowane zakupem mojego oprogramowania i zatrudnieniem mnie do pracy. Nikt nie odpowiedział. Miałem kilka nowych pomysłów na rozpoczęcie pracy, nad którymi chciałem pracować, więc nie podjąłem żadnych dalszych kroków. AKTUALIZACJA - zamieściłem to w Hacker News i zyskało ono dużo uwagi. Chcę tylko powiedzieć, że nie popieram nikogo, kto próbuje teraz zrobić coś takiego. Będziesz potrzebował zespołu naprawdę inteligentnych ludzi z szerokim wachlarzem doświadczeń, aby mieć nadzieję na rywalizację. Nawet gdy to robiłem, uważam, że bardzo rzadko zdarzały się osoby, które osiągnęły sukces (choć słyszałem o innych.) Na górze strony znajduje się komentarz, który wymienia manipulowane statystyki i odnosi się do mnie jako do ldquoretail investorrdquo that quants chciałabym od razu wybrać offrdquo. Jest to raczej niefortunny komentarz, który po prostu nie jest oparty na rzeczywistości. Odłóżmy na bok kilka interesujących komentarzy: news. ycombinatoritemid4748624 UPDATE 2 - Irsquove zamieściła następującą FAQ, która odpowiada na częste pytania, jakie Irsquove otrzymała od handlowców na temat tego postu.

No comments:

Post a Comment