Tuesday 19 December 2017

Zarządzanie wysoką częstotliwością system projektowanie i zarządzanie procesami


Architektura systemu handlu algorytmicznego. Tutaj na tym blogu napisałem o architekturze koncepcyjnej inteligentnego systemu handlu algorytmicznego, a także funkcjonalnych i niefunkcjonalnych wymaganiach algorytmicznego systemu handlowego produkcji Od tego czasu zaprojektowałem architekturę systemu, która, jak sądzę, mogłaby spełniają te wymogi architektoniczne W niniejszym artykule będę opisywał architekturę zgodnie z wytycznymi systemów ISO IEC IEEE 42017 i standardami opisu architektury oprogramowania. Zgodnie z tym standardem opis architektury musi zawierać niezliczone widoki architektury, np. w UML i. decyzji projektowych i wymagań architektonicznych. Definicja architektury oprogramowania. Nie ma jeszcze konsensusu co do architektury systemu W kontekście tego artykułu zdefiniowana jest jako infrastruktura, w ramach której można określić składniki aplikacji spełniające wymagania funkcjonalne, wdrożone i realizowane Wymagania funkcjonalne są oczekiwanymi funkcjami systemu i jego elementów Wymagania niefunkcjonalne to środki, dzięki którym można zmierzyć jakość systemu. System, który w pełni spełnia jego wymagania funkcjonalne, może nadal nie spełniać oczekiwań, jeśli wymagania niefunkcyjne pozostają niezadowoleni Aby zilustrować tę koncepcję, poniższy scenariusz algorytmiczny system handlu, który zakupiłeś, sprawia, że ​​są świetne decyzje handlowe, ale całkowicie nie działają z organizacjami zarządzania ryzykiem i systemami księgowymi Czy ten system spełni Twoje oczekiwania. Konceptualna architektura. Koncepcyjne widok opisuje koncepcje wysokiego poziomu i mechanizmy, które istnieją w systemie na najwyższym poziomie szczegółowości Na tym poziomie algorytmiczny system handlu następuje za architekturą EDA opartą na zdarzeniach podzieloną na cztery warstwy i dwoma aspektami architektonicznymi Dla każdej architektury warstwy i architektury aspektów oraz wzory ar Zastosowane wzorce architektoniczne są udowodnione, ogólne struktury umożliwiające osiągnięcie określonych wymagań Aspekty architektoniczne to obawy przekrojowe obejmujące wiele elementów. Architektura napędzana przez architekturę - architektura, która wytwarza, wykrywa, zużywa i reaguje na wydarzenia Zdarzenia obejmują ruchy na rynku w czasie rzeczywistym, złożone wydarzenia lub trendy handlowe, np. złożenie zlecenia. Ten schemat ilustruje architekturę koncepcyjną algorytmicznego systemu obrotu. Architektury referencyjne. Aby skorzystać z analogii, architektura referencyjna jest podobna do planów dla nośnej ściany. Ta niebieska druk mogą być ponownie wykorzystane do wielu projektów budynków, niezależnie od tego, jak budowany jest budynek, ponieważ spełnia on szereg wspólnie występujących wymagań. Podobnie, architektura referencyjna definiuje szablon zawierający struktury i mechanizmy ogólne, które można wykorzystać do budowy konkretnej architektury oprogramowania, która spełnia specyficzne wymogi Architektura dla algorytmicznego tr ading system wykorzystuje architekturę przestrzenną SBA i kontroler widoku modelu MVC jako odniesienia Do tego są stosowane dobre praktyki, takie jak operacyjny magazyn danych ODS, transformat ekstraktu i wzór ETL obciążenia, a także hurtownia danych DW. Kontroler widoku wzoru - wzór oddziela reprezentację informacji od interakcji użytkownika z nią. Architektura przestrzeni kosmicznej - określa infrastrukturę, w której jednostki sprzężone luźno sprzężone ze sobą współdziałają poprzez wspólną pamięć asocjacyjną, zwaną przestrzenią pokazaną poniżej. Według spersonalizowanego widoku koncepcyjnego architektonicznego Model View Controller oryginalny obraz Widok strukturalny. Strukturalny widok architektury pokazuje komponenty i podzakresy systemu algorytmicznego handlu. Pokazuje także, w jaki sposób te komponenty są wdrażane na infrastrukturze fizycznej. Wykresy UML używane w tym widoku zawierają diagramy komponentów i schematy instalacji Poniżej znajduje się galeria schematy rozmieszczenia ogólnego systemu handlu algorytmicznego oraz str jednostki przetwarzania danych w architekturze referencyjnej SBA, a także związane z nimi schematy komponentów dla każdego z warstw. Algorytmiczny system handlu schemat rozmieszczenia na wysokim szczeblu diagram wdrożenia jednostek przetwarzania SBA Diagram składniowy modułu przetwarzania zamówień Diagram składnika zdarzenia procesora automatycznego Źródło danych i warstwa wstępnego przetwarzania diagram składnika Schemat składnika interfejsu użytkownika opartego na MVC. Taktyka architektoniczna. Zgodnie z instytutem inżynierii oprogramowania taktyka architektoniczna jest sposobem na spełnienie wymagań jakościowych poprzez manipulowanie pewnym aspektem modelu cech jakościowych poprzez decyzje dotyczące projektowania architektonicznego Prosty przykład stosowany w handlu algorytmicznym architektura systemu operuje na operacyjnym magazynie danych ODS z ciągłym składnikiem zapytania Ten komponent będzie w sposób ciągły analizował ODS w celu identyfikacji i wydzielania złożonych zdarzeń Następujące taktyki są wykorzystywane w architekturze. Zasady zakłóceń w kolejek zdarzeń i kolejności zamówień. Rejestracja pamięci dla kolejki zdarzeń i kolejności zamówień. Continuous zapytanie języka CQL na ODS. Data filtrowania z wzorem projektowym filtru na przychodzących data. Congestion unikania algorytmów na wszystkie połączenia przychodzące i wychodzące. Active zarządzania kolejkami AQM i jawne congestion notificationModity zasobów obliczeniowych z możliwością uaktualnienia skalowalne. Regulacja redundancji dla wszystkich pojedynczych punktów awarii. Indexacja i zoptymalizowane struktury trwałości w ODS. Schedule regularne tworzenie kopii zapasowych i skryptów oczyszczania dla historii ODS. Transakcje na wszystkich bazach. Wszystkich kontrolach dla wszystkich zleceń wykrywania błędów. Annotowane zdarzenia z znacznikami czasowymi do pomijaj przeterminowane reguły walidacji. Reguła sprawdzania oryginalności, np. maksymalne ilości transakcji handlowych. Komponenty handlowe autoryzowane wykorzystują bazę danych w pamięci do analizy. Wirtualne uwierzytelnianie dwukierunkowe dla interfejsów użytkownika łączących się z serwerem ATs. Encryption na interfejsach użytkownika i połączeniach z wzorcem projektowym ATs. Observer MVC do zarządzania poglądami. Powyższa lista to tylko kilka decyzji projektowych, które zidentyfikowałem w trakcie projekt architektury Nie jest to kompletna lista taktyk Podczas rozwijania systemu należy zastosować dodatkowe taktyki na wielu poziomach, aby spełnić wymagania funkcjonalne i niefunkcjonalne Poniżej przedstawiono trzy diagramy opisujące wzorzec projektowania zakłóceń, wzór filtru, i ciągłego elementu zapytania. Ciągły kwerendowy schemat komponentu Diagram zakłócający projektowanie schemat diagramu schemat diagramu filtrów Diagram klasy wzorcowej. Behavioural View. Ten widok architektury pokazuje, jak komponenty i warstwy powinny współdziałać ze sobą Jest to przydatne podczas tworzenia scenariuszy testowania architektury projekty i zrozumienie systemu od końca do końca Ten pogląd składa się z diagramów sekwencyjnych i schematów aktywności Schematy aktywności pokazujące algorytmiczny proces wewnętrzny systemu obrotu i sposoby, w jaki handlowcy mają oddziaływać z algorytmicznym systemem handlu pokazano poniżej. Interakcja algorytmicznego podmiotu gospodarczego Kompleksowy handel algorytmiczny proces. Technologie i ramy. W ostatnim kroku w projektowaniu architektury oprogramowania należy zidentyfikować potencjalne technologie i ramy, które mogłyby być wykorzystane do realizacji architektury Zgodnie z zasadą ogólną lepiej jest wykorzystać istniejące technologie, pod warunkiem, że odpowiednio zaspokajają zarówno funkcjonalne a wymagania niefunkcyjne Ramy to zrealizowana architektura referencyjna, np. JBoss to ramy, które realizują architekturę referencyjną JEE Poniższe technologie i ramy są interesujące i należy wziąć pod uwagę przy wdrażaniu algorytmicznego systemu handlowego. CUDA - firma NVidia oferuje wiele produktów, wydajne modelowanie finansów obliczeniowych Można osiągnąć 50-krotne zwiększenie wydajności w zakresie wykonywania symulacji Monte Carlo na GPU zamiast CPU. Apache River - River to zestaw narzędzi służący do opracowywania systemów rozprojektowanych. Wykorzystano go jako ramy dla budowania aplikacji na schemacie SBA. Apache Hadoop - w e że wykorzystanie Hadoop jest ciekawym rozwiązaniem problemu dużego rozmiaru danych, Hadoop można wdrożyć w środowisku klastrowym obsługującym technologie CUDA. AlgoTrader - algorytmiczna platforma transakcyjna AlgoTrader mogła potencjalnie zostać wdrożona w miejsce automatycznych komponentów handlowych. Silnik FIX - autonomiczna aplikacja, która obsługuje protokoły FIX, Exchange FIX, FAST i FIXatdl. Informacje te nie są technologią ani ramą, należy tworzyć komponenty przy użyciu API interfejsu programowania aplikacji w celu poprawy interoperacyjności systemu i jego komponentów. Proponowana architektura została zaprojektowana tak, aby zaspokoić bardzo ogólne wymogi określone dla systemów handlu algorytmicznego. Ogólnie rzecz biorąc, algorytmiczne systemy handlowe są skomplikowane przez trzy czynniki, które różnią się w zależności od implementacji. NiezaleŜnie od zewnętrznych systemów przedsiębiorstwa i systemów wymiany. i. Ev ograniczenie architektoniczne. Zatem proponowana architektura oprogramowania powinna być dostosowywana indywidualnie dla każdego konkretnego przypadku, aby spełnić określone wymogi organizacyjne i prawne, a także przezwyciężyć regionalne ograniczenia. Algorytmiczną architekturę systemu handlowego należy postrzegać jako po prostu punkt odniesienia dla osób fizycznych i organizacji, które chcą zaprojektować własne algorytmiczne systemy handlowe. Dla pełnej kopii i źródeł używanych proszę pobrać kopię mojego raportu Thank you. High projektowanie systemu handlu częstotliwościami i zarządzania procesem. High projektowania handlu i zarządzania procesem . Consultants Roy E Welsch. Department Projekt i System Zarządzania Systemem. Publisher Massachusetts Institute of Technology. Date Wydano 2009. Firmy handlowe w dzisiejszych czasach są w dużej mierze uzależnione od wydobycia danych, modelowania komputerów i rozwoju oprogramowania Analitycy finansowi wykonują wiele podobnych zadań do oprogramowania i produkcji przemysł finansowy jeszcze nie w pełni przyjęła standardowe ramy inżynierii systemów i podejścia do zarządzania procesami, które odniosły sukces w przemyśle oprogramowania i produkcji Wiele tradycyjnych metod projektowania produktów, kontroli jakości, systematycznych innowacji i ciągłego doskonalenia, jakie można znaleźć w dyscyplinach inżynieryjnych, można zastosować do dziedziny finansów Niniejsza praca pokazuje, w jaki sposób wiedza zdobyta dzięki dyscyplinom inżynieryjnym może poprawić projektowanie i zarządzanie procesami systemów handlu wysokiej częstotliwości Systemy handlu wysokimi częstotliwościami są oparte na obliczeniach Te systemy są automatycznymi lub półautomatycznymi systemami oprogramowania, które są z natury złożone i wymagają wysokiego stopnia precyzja projektu Projekt systemu handlu wysokimi częstotliwościami łączy wiele dziedzin, w tym finansów ilościowych, projektowania systemów i inżynierii oprogramowania W przemyśle finansowym, gdzie teorie matematyczne i modele handlowe są stosunkowo dobrze zbadane, zdolność do wdrażania tych projektów w prawdziwym handlu ctices jest jednym z kluczowych elementów konkurencyjności firmy inwestycyjnej Możliwość przekształcania pomysłów inwestycyjnych w wydajne systemy obrotu w sposób efektywny i efektywny może dać przedsiębiorstwu inwestycyjnemu dużą przewagę konkurencyjną Niniejsza praca zawiera szczegółowe badania obejmujące projektowanie systemów handlu wysokiej częstotliwości , modelowanie systemów i zasady oraz zarządzanie procesami dla rozwoju systemu Szczególny nacisk kładziony jest na testy wstępne i optymalizację, które są uważane za najważniejsze elementy w budowaniu systemu handlowego. Te badania budują modele inżynierii systemów, które prowadzą do procesu rozwoju. Weryfikacja i walidowanie zasad omówionych w tej pracy W końcu niniejsza praca stwierdza, że ​​zasady i ramy inżynierii systemów mogą być kluczem do sukcesu w implementacji handlu wysokonakładowego lub ilościowych systemów inwestycyjnych. Thesis SM --Massachusetts Institute of Technology, System Design and Management Program, 2009 Zlewozmywak z wersji PDF Zawiera bibliograficzne odnośniki z działu 78-79.Kluczów Programu Zarządzania i Zarządzania Systemem. Ta sprawa szczegółowo, co zrobiłem, aby wykonać transakcję z dużą częstotliwością w wysokości ok. 500 tys. Od roku 2009 do 2017 r. Ponieważ byłem całkowicie niezależny i nie jestem już w stanie uruchomić mojego programu Cieszę się, że mogę powiedzieć wszystko Mój handel przeważnie dotyczył kontraktów futures Russel 2000 i DAX. Kluczem do mojego sukcesu, jak sądzę, nie był wyrafinowany równanie finansowe, ale raczej ogólny projekt algorytmu, który wiązał się razem wiele prostych komponentów i korzystanie z nauki maszyn w celu zoptymalizowania dla maksymalnej rentowności Wygrałeś nie potrzebujesz znać jakiejkolwiek zaawansowanej terminologii tutaj, ponieważ podczas instalacji mojego programu wszystko opierało się na intuicji Andrew Ng s niesamowity kurs nauki maszyn nie był jeszcze dostępny - btw jeśli klikniesz ten link zostanie przeniesiony do mojego aktualnego projektu CourseTalk, witryny przeglądu dla MOOCs. First, chcę tylko pokazać, że mój sukces nie był po prostu resu To szczęście Mój program robił 1000-4000 transakcji dziennie pół długie, pół krótkie i nigdy nie dostał się na pozycje o więcej niż kilka kontraktów w tym czasie Oznaczało to przypadkowe szczęście z jednego konkretnego handlu wycenia się dość szybko Wynik był nigdy stracił ponad 2000 w jednym dniu i nigdy nie miał miesiąca, który stracił. EDYCJA Te liczby są po wypłaceniu prowizji. I tutaj jest wykres, aby dać poczucie codziennej odmiany Uwaga, że ​​wyklucza to przez ostatnie 7 miesięcy, ponieważ - jak postacie przestały wchodzić - straciłem moją motywację, aby wejść do nich. Moje tło handlowe. Prior do założenia mojego zautomatyzowanego programu handlowego I d miał 2 lata doświadczenia jako handel ręczny dzień To było w 2001 roku - to były wczesne dni handlu elektronicznego i nie było możliwości dla skalperów, aby zarabiać pieniądze Mogę tylko opisać to, co robiłem jak na przykład grając w gry wideo z domniemaną krawędzią Udane osiągnięcie oznacza szybkie, bycie zdyscyplinowanym i posiadanie dobrego intuicyjnego rozpoznawania wzorców, dzięki któremu mogłem zrobić około 250 tys., spłacić moje pożyczki studenckie i pieniądze pozostawione przez firmę Win. Over w ciągu najbliższych pięciu lat chciałbym uruchomić dwa starty, podnosząc umiejętności programowania po drodze Nie byłoby aż do końca 2008 roku, że wrócę do handlu Z pieniędzmi na niskim poziomie ze sprzedaży mojego pierwszego uruchomienia, handel oferował nadzieje na szybką gotówkę, a ja zorientowałem się w moim następnym ruchu. W 2008 r. byłem ręcznie na rynku terminowym na futures przy użyciu oprogramowania o nazwie T4. Chciałbym mieć jakieś specjalne klawisze dostępu do zamówień, więc po odkryciu T4 miałem interfejs API, podjęłam wyzwanie nauki C języka programowania wymagane do korzystania z interfejsu API i poszedłem naprzód i zbudowałem się kilka klawiszy skrótu. After coraz moje stopy mokre z API wkrótce miał większe aspiracje chciałem nauczyć komputer do handlu dla mnie API dostarczył zarówno strumień dane rynkowe i prosty sposób wysyłania zamówień na wymianę - wszystko, co musiałem zrobić, to stworzenie logiki w środku. Poniżej znajduje się zeskanowanie okna handlowego T4 Co było fajne, gdy dostałem program, pracowałem, byłem w stanie uważaj na handel komputerowy na tym dokładnie tym samym interfejsu Oglądanie prawdziwych zamówień, które pojawiają się i kończąc samymi pieniędzmi, było zarówno emocjonujące, jak i przerażające. Konstrukcja mojego algorytmu. Początkowo miałem na celu ustawienie takiego systemu, współ nfident I d zarabiać pieniądze przed dokonaniem jakichkolwiek transakcji na żywo Aby to osiągnąć potrzebowałem zbudować ramę symulacji handlowej, która - tak dokładnie jak to możliwe - symulować transakcje na żywo. Gdy transakcja na żywo wymaga przetworzenia, aktualizacje rynkowe przesyłane strumieniowo przez interfejs API, tryb symulacji wymagane aktualizacje rynku z pliku danych Aby zebrać te dane, skonfiguruj pierwszą wersję mojego programu, aby po prostu połączyć się z interfejsem API i zapisywać aktualizacje rynkowe z znacznikami czasu. Skończyłem korzystanie z ostatnich 4-tygodniowych danych rynkowych, aby szkolić i testować mój system na. Z podstawowej ramie na miejscu wciąż miałem zadanie dowiedzieć się, jak zrobić korzystny system handlowy Jak okazuje się mój algorytm rozbiłby się na dwa odrębne komponenty, które będę zbadać z kolei. Przedmiotowe zmiany cen. handel. Przedyżanie ruchów cen. Prawdopodobnie oczywistym elementem każdego systemu handlowego jest możliwość przewidzenia, gdzie ceny będą się przemieszczać I moje nie było wyjątkiem Wyznaczałem obecny cena jako średnia z oferty wewnętrznej i oferty wewnętrznej, a ja wyznaczam cel przewidywania, gdzie cena będzie w ciągu najbliższych 10 sekund Mój algorytm musiałby wymyślić ten przewidywany moment przez moment w ciągu dnia handlowego. Optymalizacja produkcji wskaźniki. Stworzyłem kilka wskaźników, które okazały się mieć znaczącą zdolność do przewidywania krótkoterminowych zmian cen Każdy wskaźnik wytworzył liczbę, która była dodatnia lub ujemna Wskaźnik był użyteczny, jeśli częściej niż nie dodatnia liczba odpowiadała wzrastającym rynkowi a liczba ujemna odpowiadała rynkowi zejściem. Mój system pozwalał mi szybko określić, ile wskaźnika predykcyjnego miał wskaźnik, więc mogłem eksperymentować z wieloma różnymi wskaźnikami, aby zobaczyć, co działało Wiele wskaźników miało zmienne w formułach że je wytworzyłem i udało mi się znaleźć optymalne wartości dla tych zmiennych, wykonując porównania wyników osiągniętych z różnymi wartościami. dicatory, które były najbardziej przydatne były stosunkowo proste i opierały się na ostatnich wydarzeniach na rynku byłem obrotu, a także rynków skorelowanych papierów wartościowych. Dokładne prognozy zmian cen. Wskaźniki, które po prostu przewidywały wzrost lub spadek cen nie było wystarczająco dużo Musiałem dokładnie wiedzieć, jak wiele przewidywanych ruchów cenowych przez każdą możliwą wartość każdego wskaźnika potrzebowałem formuły, która umożliwiłaby przeliczanie wartości wskaźnika na predykcję cen. Aby to osiągnąć, śledziłem prognozowane zmiany cen w 50 wiadrach, które zależały od zakresu wartość wskaźnika spadła To wydało unikalne prognozy dla każdego wiadra, który byłem w stanie wydrukować w programie Excel Jak widać spodziewaną zmianę ceny wzrasta wraz ze wzrostem wskaźnika. Na wykresie mogłem utworzyć formułę aby dopasować się do krzywej Na początku wykonałem tą krzywą ręcznie, ale wkrótce napisałem jakiś kod, aby zautomatyzować ten proces. Zwróć uwagę, że nie wszystkie krzywe wskaźników miały takie same hape Zwróć uwagę, że wiadra były rozłożone logicznie, aby rozłożyć punkty danych równomiernie Na koniec zwróć uwagę, że ujemne wartości wskaźników i odpowiadające im prognozy spadku cen zostały odwrócone i połączone z wartościami dodatnimi Mój algorytm traktował w górę iw dół dokładnie te same wskaźniki dla pojedynczego że każdy wskaźnik nie był całkowicie niezależny, nie mogłem po prostu podsumować wszystkich przewidywań, które każdy wskaźnik wykonał indywidualnie. Kluczem było ustalenie dodatkowej predykcyjnej wartości, którą każdy wskaźnik wykraczał poza to, czego się spodziewano nie było trudne do wdrożenia, ale oznaczało to, że jeśli byłam krzywa dopasowana do wielu wskaźników w tym samym czasie musiałem być ostrożnym zmieniać jeden mógłby wpłynąć na przewidywania innego. Aby dopasować krzywe do wszystkich wskaźników w tym samym czasie I skonfiguruj optymalizator, aby przejść krok 30 w stronę nowych krzywych predykcji z każdym przejściem. Z tym 30 skoku znalazłem że krzywe predykcji ustabilizują się w ciągu kilku przejazdów. Z każdym wskaźnikiem, który teraz daje nam dodatkową przewidywaną cenę, można po prostu dodać je do pojedynczego przewidywania, gdzie rynek będzie wynosić 10 sekund. Dlaczego prognozowanie cen nie wystarczy? Można by pomyśleć, że z tej przewagi na rynku byłem złoty Ale trzeba pamiętać, że rynek składa się z ofert i ofert - to nie tylko jedna cena rynkowa Sukces w handlu wysokimi częstotliwościami sprowadza się do uzyskania dobrych cen i to nie takie proste. Następujące czynniki powodują, że tworzenie zyskownego systemu jest trudne. Z każdym handlem musiałem płacić prowizje zarówno moim pośrednikom, jak i wymianę. Różnica między najwyższą ofertą a najniższą ofertą oznaczała, że ​​jeśli miałbym po prostu kupić sprzedaj losowo I d być tracąc mnóstwo pieniędzy. Większości wolumenu rynku były inne boty, które tylko przeprowadzić handel ze mną, jeśli myślą, że mieli jakieś statystyczne krawędzi. Sekcja oferty nie gwarantuje, że mogłaby go kupić czas moje zamówienie kupna dotarła do wymiany było bardzo możliwe, że oferta ta została odwołana. Jak mały gracz na rynku nie było sposobu, w jaki mogłbym konkurować na szybkość sam. Budując pełną symulację handlu. Więc miałem ramy, które pozwoliły mi do testów wstecznych i zoptymalizowania wskaźników Ale musiałem wykraczać poza to - potrzebowałem ramy, które umożliwiłyby mi sprawdzenie wyników i zoptymalizowanie pełnego systemu handlowego, w którym wysyłałem zamówienia i dostając się do pozycji W tym przypadku muszę optymalizować łączny koszt PL i do pewnego stopnia przeciętnego PL na handel. Byłoby to trudniejsze i w pewnym sensie niemożliwe do dokładnego modelowania, ale zrobiłem co najlepsze, jak tylko potrafię. Oto niektóre z problemów, z którymi musiałem się zmierzyć. Kiedy zlecenie zostało wysłane na rynek w symulacji Musiałem modelować czas opóźnienia Fakt, że mój system widział ofertę, nie oznaczałby, że może ją kupić od razu System będzie wysyłał zamówienie, poczekaj około 20 milisekund, a potem tylko wtedy, gdy oferta nadal była tam uznawana za wykonany handel Było to niedokładne, ponieważ rzeczywisty czas opóźnienia był niespójny i nieudokumentowany. Kiedy składałem oferty lub oferty, musiałem przyjrzeć się strumieniom transakcji handlowej dostarczanym przez interfejs API i używać tych, aby ocenić, kiedy moje zamówienie zostanie wykonane. Aby to zrobić, musiałem śledzić pozycję mojego zamówienia w kolejce To sa pierwszy w pierwszym systemie Poza tym nie mogłem tego zrobić idealnie, ale zrobiłem najlepsze przybliżenie. Aby udoskonalić moje wykonanie zamówienia symulacji, co zrobiłem zabierał moje pliki dziennika z żyć transakcją za pośrednictwem interfejsu API i porównać je z plikami rejestracyjnymi wytworzonymi przez symulowany handel z tego samego okresu czasu byłem w stanie uzyskać moją symulację do tego stopnia, że ​​to było dość dokładne i dla części, które nie były w stanie dokładnie dokładnie modelować co najmniej wyniki, które były statystycznie podobne w metrykach Myślałem, że były ważne. Making zyskiem trades. With model symulacji zamówienia w miejscu można teraz wysłać zamówienia w trybie symulacji i zobaczyć symulowany PL Ale jak m system y wiedzą, kiedy i gdzie kupić i sprzedawać. Prognozy dotyczące przesunięć cen były punktem wyjścia, ale nie całą historię Co zrobiłem stworzyłem system punktacji dla każdego z 5 poziomów cen w ofercie i ofercie Obejmują one jeden poziom powyżej wewnątrz stawka na zlecenie kupna i jeden poziom poniżej oferty wewnętrznej dla zlecenia sprzedaży. Jeśli wynik na jakimkolwiek poziomie cenowym był powyżej określonego progu, co oznaczałoby, że mój system powinien mieć aktywną ofertę ofertową - poniżej progu, to wszystkie aktywne zamówienia powinny być anulowane W oparciu o to nie było rzadkością, że mój system będzie błyskawicznie licytować na rynku, a następnie natychmiast go anulować Chociaż starałem się zminimalizować to, jak to irytujące jak heck dla każdego, kto patrzy na ekran z ludzkimi oczami - w tym me. The oceny na poziomie ceny zostały obliczone na podstawie następujących czynników. Prognoza przeniesienia ceny, o której mówiliśmy wcześniej. Poziom cen, o którym mowa Poziom wewnętrzny oznacza wyższe oczekiwania na przesunięcie ceny. Liczba kontraktów przed moim kolejność w kolejce Mniej było lepiej Liczbę kontraktów za moim zamówieniem w kolejce Więcej było lepsze. W zasadzie czynniki te służyły do ​​identyfikowania bezpiecznych miejsc oferowania oferty Przewidywanie przeniesienia ceny było niewystarczające, ponieważ nie uwzględniało to faktu, podczas składania oferty nie zostałem automatycznie napełniony - napełniłem tylko wtedy, gdy ktoś mi sprzedał. Rzeczywistość polegała na tym, że sam fakt sprzedania mi kogoś za pewną cenę zmienił statystyczne szanse handlu. Zmienne stosowane w tym kroku wszystkie zostały zoptymalizowane To zostało zrobione w dokładnie taki sam sposób, jak zoptymalizowane zmienne w wskaźnikach przesunięcia cen, z wyjątkiem tego, że optymalizowałem dla najniższego rzędu P L. W moim ignorowanym programie. Kiedy handel ludźmi często mamy potężne emocje i uprzedzenia, które mogą prowadzić do mniej niż optymalnych decyzji Jasne, że nie chcę kodyfikować tych uprzedzeń Poniżej kilka czynników, które mój system zignorował. Cena, która została wprowadzona - W biurze handlowym jest to dość powszechne aby usłyszeć rozmowę o cenie, w jakiej ktoś jest długi lub krótki, jak gdyby miało to wpływać na przyszłe podejmowanie decyzji Chociaż to ma pewną ważność w ramach strategii redukcji ryzyka, to naprawdę nie ma to wpływu na przyszły przebieg wydarzeń na rynku Dlatego moje program całkowicie zignorował te informacje To jest to samo co ignorowanie kosztów pogrążonych. Mijając krótko i wychodząc z długiej pozycji - Zwykle przedsiębiorca miałby inne kryteria, które decydują, gdzie sprzedać długą pozycję, a gdzie się uda. Jednak z mojego punktu widzenia algorytmów nie ma powodu, aby dokonać rozróżnienia Jeśli mój algorytm spodziewał się sprzedaży na dół był dobrym pomysłem niezależnie od tego, czy był on obecnie długi, krótki czy płaski. Podwójna strategia - jest to wspólna strategia, w której handlowcy będą kupować więcej akcji w wydarzeniu że nie ma oryginalnego handlu się z nimi To skutkuje średnią ceną zakupu jest niższa, a to oznacza, kiedy lub jeśli towar odwraca się wokół Ciebie będzie się, aby twój mon nie w moim czasie tak naprawdę jest straszna strategia, chyba że ponownie Bufet Warrenu Jesteś zmęczony myśleniem, że dobrze radzisz, ponieważ większość twoich transakcji będzie zwycięzcami Problem polega na tym, że stracisz strach Duży efekt jest taki sprawia, że ​​trudno jest ocenić, czy rzeczywiście masz przewagę na rynku czy po prostu czujesz się szczęśliwy Możliwość monitorowania i potwierdzania, że ​​mój program rzeczywiście miał przewagę był ważnym celem. Ponieważ mój algorytm podejmował decyzje w ten sam sposób, niezależnie od tego, gdzie to wszedł w handel lub jeśli to było obecnie długie lub krótkie od czasu do czasu siedzieć i wziąć kilka dużych transakcji, oprócz dużych wygranych transakcji, ale nie należy myśleć, nie było żadnych zarządzania ryzykiem. Aby zarządzać ryzykiem I egzekwowane maksymalnie pozycja wielkości 2 kontraktów naraz, od czasu do czasu spotykana w dużych wolnych dniach miałem również maksymalną dzienną stratę, aby zabezpieczyć się przed nieoczekiwanymi warunkami rynkowymi lub błędem w moim oprogramowaniu Te limity zostały wymuszone w moim bu bu t także w backend przez mojego pośrednika Jak to się stało nigdy nie napotkanych żadnych znaczących problems. Running algorytmu. Na momencie zacząłem pracować nad moim programem zajęło mi to około 6 miesięcy, zanim dostałem go do punktu rentowności i zaczęło go uruchomić żyć Chociaż być uczciwy znaczna ilość czasu to nauka nowego języka programowania Podczas pracy nad ulepszeniem programu widziałem większe zyski na najbliższe cztery miesiące. W każdym tygodniu będę przekwalifikował mój system w oparciu o poprzednie 4 tygodnie warte dane odkryłem, że uderzyło to we właściwą równowagę między pozyskaniem najnowszych tendencji zachowań na rynku a zapewnieniem mojego algorytmu miało wystarczającą ilość danych do ustalenia znaczących wzorców Ponieważ szkolenie zaczęło coraz więcej, rozdzieliłem je tak, że mogło być ono wykonywane przez 8 wirtualnych maszyn używających amazonu EC2 Wyniki były następnie scalane na mojej maszynie lokalnej. Najwyższym punktem mojego handlu był październik 2009, kiedy to zrobiłem prawie 100 tys. Po tym czasie kontynuowałem spędzanie kolejnych czterech miesięcy t aby poprawić mój program pomimo spadku zysku każdego miesiąca Niestety na tym punkcie przypuszczam, że d zrealizowałem wszystkie moje najlepsze pomysły, ponieważ nic, co próbowałem, nie pomogło dużo. Z frustracją nie jest w stanie poprawić i nie mieć poczucia wzrostu I zacząłem myśleć o nowym kierunku, wysłałem e-maili do sześciu różnych firm handlowych o wysokiej częstotliwości, aby sprawdzić, czy są zainteresowani zakupem mojego oprogramowania i zatrudnianiem mnie do pracy dla nich Nikt nie odpowiedział, miałem nowe pomysły na start, na które chciałem pracować, więc nigdy nie podążałem za nim. UPDATE - Opublikowałem to na Hacker News i przyciągnęło mnóstwo uwagi Chcę tylko powiedzieć, że nie zalecam kogoś, kto próbuje zrobić coś takiego teraz Teraz potrzebujesz zespołu naprawdę inteligentnych ludzi z wieloma doświadczeniami mieć nadzieję na współzawodnictwo Nawet jeśli to robię, uważam, że bardzo rzadko zdarzało się, że jednostki osiągnęły sukces, chociaż słyszałem o innych. Na górze strony znajduje się komentarz, który wspomina manipulowanie sta tistics i odnosi się do mnie jako inwestora detalicznego, który z entuzjazmem chętnie wybiera To raczej nieszczęśliwy komentarz, który po prostu nie jest oparty na rzeczywistości Ustawienie tego na bok jest interesujące komentarze. UPDATE 2 - Znalazłem dalsze odpowiedzi na często zadawane pytania, które odpowiadają kilka typowych pytań, jakie otrzymałem od przedsiębiorców na ten temat.

No comments:

Post a Comment