Monday 11 December 2017

Trading strategies matlab


Bitfinex ogłosił dzisiaj rozpoczęcie kontraktów wydobywczych jako produkt handlowy na swojej platformie. W sumie 100 THS (terahash na sekundę) z terminem wygaśnięcia w ciągu 3 miesięcy udostępniono do handlu pod nazwą TH1BTC. 100 THS są częścią większej puli 3500 THS, więc więcej kontraktów górniczych może stać się dostępnych w przyszłości. Co ciekawe, oznacza to po raz pierwszy, że możliwe jest skrócenie kontraktu górniczego. Zerwanie umowy wydobywczej oznacza obecnie otrzymanie kwoty Bitcoin (cena, którą sprzedajemy), a następnie wypłatę dywidend (w Bitcoin) w ciągu kolejnych 3 miesięcy, aż do wygaśnięcia umowy w połowie grudnia. Zysk powstaje, gdy suma wszystkich wypłaconych dywidend (plus odsetki zapłacone za zawarcie umowy) jest mniejsza niż kwota, którą otrzymaliśmy na początku, kiedy sprzedaliśmy umowę (oczywiście innej osobie). Oznacza to, że cena TH1BTC powinna zależeć od 3 zmiennych (w kolejności malejącej ważności): Zmiana trudności wydobycia do 15 grudnia Czas pozostały do ​​15 grudnia Stopa procentowa (stopa swap) Jeśli trudności zwiększają wypłatę dywidendy stają się mniejsze, ponieważ 1 THS reprezentuje mniejszą część całej mocy mieszania sieci. W związku z tym cena jednej umowy powinna się obniżyć, jeżeli wzrosną trudności. Im bliżej do wygaśnięcia jest gorączka Bitcoiny mogą mieć umysł z 1 THS w sumie. Dlatego cena jednej umowy powinna być mniejsza, im bliżej mamy do wygaśnięcia i osiągnąć cenę równą 0 w chwili wygaśnięcia. Im wyższe oprocentowanie, tym droższe jest zawieszenie i utrzymanie umowy przez cały okres 3 miesięcy. Bitfinex nie oferuje 90-dniowych transakcji typu swap, dlatego zawarcie umowy, której celem jest utrzymanie jej do końca, niesie ze sobą spore ryzyko stopy procentowej, ponieważ w pewnym momencie konieczne jest wykupienie nowego swapu (przy potencjalnie niekorzystnej stopie procentowej). Jest to mniejszy problem, gdy idzie się długo (stawki bitcoinów są zwykle niskie), niż gdy są krótkie (dostępnych jest tylko maksymalnie 100 umów, brak nagiego zwarcia). Aby zrekompensować ryzyko, ceny powinny wzrosnąć, gdy stawki swapowe rosną. Wielką niewiadomą jest oczywiście zmiana trudności eksploatacyjnych w ciągu najbliższych 90 dni. Na poniższym rysunku widzimy, jak trudności zmieniły się w ciągu ostatnich 6 miesięcy. Dane pochodzą z programu Tradeblock i pokazują nie tylko graficzną reprezentację przeszłych zmian trudności (trudności zmieniają się co 14 dni w zależności od wcześniejszej stopy hash, więcej informacji można znaleźć na wiki), ale także podstawowe statystyki podsumowujące. Średnio trudność wzrosła 27 w ciągu ostatnich 30 dni i 77 w ciągu ostatnich 60 dni. Aby oszacować uczciwą cenę jednego TH1BTC, założymy, że trudność wzrośnie średnio 15 miesięcznie w ciągu najbliższych 3 miesięcy. Obecnie cena zakupu jednego kontraktu wartego 1 THS to 2 BTC. Opłata za wstęp wynosi 3, a my pomijamy stopy procentowe. Wypełniając wszystkie informacje otrzymujemy następujące wyniki: Dlatego jeśli przejdziemy długo jeden kontrakt oparty na naszych założeniach, stracimy około 0.39 Bitcoin (nieco więcej w rzeczywistości, ponieważ zaczniemy wydobywanie w połowie września aż do połowy grudnia), ponieważ oczekiwane dywidendy (miesięczne przychody) nie pokryją początkowych kosztów 2 BTC przed wygaśnięciem umowy. Z drugiej strony, krótka cena za 2 Bitcoin wygenerowałaby zysk w wysokości 0,39 Bitcoina na kontrakt. Należy pamiętać, że nie uwzględniliśmy kosztów wymiany, które wynoszą obecnie około 1 dziennie (). Istnieją dwa sposoby patrzenia na wyniki. Albo moglibyśmy powiedzieć, że ceny za TH1BTC są obecnie zawyżone i powinny być zbliżone do około 1,5 BTC. Jeśli założymy, że poziom trudności wzrośnie powyżej 15 miesięcznie, ceny powinny być jeszcze niższe. Lub możemy powiedzieć, że rynek jest wydajny, a ceny są prawidłowe, co sugerowałoby, że rynek spodziewa się, że trudności spadną średnio o około 2 miesięcznie w ciągu najbliższych 90 dni. Tak czy inaczej, wyniki będą znane z pewnością w ciągu 90 dni. Stara się odzyskać od ostatniej awarii flash Bitcoin, która pochodzi z Bitfinex tylko cztery dni. Ceny bitcoinów znów zaczęły spadać, ponieważ handlowcy z marginesu kupili swoje pozycje na BTC-e. Impreza rozpoczęła się o 13:36 (UTC1), kiedy duże zamówienia sprzedaży zaczęły pojawiać się na trzeciej co do wielkości zachodniej giełdzie Bitcoin BTC-e. Zmniejszyło się tempo w dół, gdy portfel zamówień stał się coraz bardziej cienki, powodując spadek cen do poziomu 309 USD za Bitcoin o godzinie 13:43. W następnych minutach ceny odbiły się szybko po cienkim wolumenie do około 442 USD, ponieważ handlowcy arbitrażowi zaczęli wykorzystywać zniżkę w stosunku do innych giełd. BTC-e jest jedną z nielicznych dużych giełd, które oferują obrót marżą swoim klientom za pośrednictwem platformy MetaTrader od listopada 2017 r., Ale szczegóły dotyczące tego, kto dokładnie zapewnia fundusze niezbędne do przeprowadzenia transakcji z opcją depozytu zabezpieczającego, pozostają niejasne. Kształt, a zwłaszcza moment awarii wskazuje na to, że handlowcy z marginesu są likwidowani (lub wstrzymują realizację zleceń), podobnie jak to miało miejsce w Bitfinex kilka dni temu. Jednak w przeciwieństwie do Bitfinex, który jest przezroczysty o otwartych pozycjach wymiany. BTC-e nie dostarcza ważnych danych, które byłyby potrzebne do dokładniejszej analizy, więc to ostatnie stwierdzenie można uznać jedynie za trafne. W przeciwieństwie do Bitfinex, który polega na ukrytym algorytmie w celu kontrolowania przepływu zleceń. Wydaje się, że BTC-e nie ma specjalnych zabezpieczeń w celu złagodzenia takich zdarzeń. Spadek poniżej 400 był spowodowany głównie brakiem ofert w portfelu zamówień, a nie dlatego, że rynek uważał, że prawdziwa wartość jest niższa niż 400, ponieważ odbicia wróciły do ​​ponad 440 zaledwie kilka minut później. W związku z tym wstrzymanie handlu w warunkach skrajnej zmienności w dół mogłoby łatwo zapobiec rozlewowi krwi wśród podmiotów zajmujących się marżą, dając innym uczestnikom rynku więcej czasu na zagęszczenie portfela zamówień. Update 4:58 PM (UTC1): BrCapoeira zamieściła na Reddit interesujący wykres oparty na danych z platformy Metatrader: Ten wykres sugeruje, że przyczyną było jedno wielkie zamówienie. Nie jest jasne, czy zamówienie zostało utworzone z powodu wezwania do uzupełnienia depozytu, zwykłego błędu, manipulowania rynkiem lub otwarcia dużej pozycji krótkiej. Zdrowy rozsądek sugerowałby, że był to prawdopodobnie wynik wezwania do uzupełnienia pojedynczego dużego przedsiębiorcy. Mój poprzedni post na ten temat został poruszony podczas dyskusji w następstwie ostatniej awarii Flash Bitcoin. Coindesk był jednym z pierwszych, który je odebrał i od tego czasu zaczęły pojawiać się różne posty dotyczące przejrzystości i możliwej odpowiedzialności wymiany w celu aktywnego zarządzania realizacją zamówień. W wyniku tych wydarzeń Josh Rossi, wiceprezes ds. Rozwoju działalności w Bitfinex, udał się do Reddit, aby otwarcie zająć się niektórymi sprawami wymierzonymi w wymianę. Fakty, które wiemy na pewno, to fakt, że na krótko przed rozpoczęciem awarii pojawiły się duże zlecenia sprzedaży, na przykład zamówienie o wartości 500 sztuk na Bitstamp o godzinie 9.49 rano (UTC1), około 6 minut przed dużym zleceniem sprzedaży Bitfinex spowodowało awarię. Jednak dane nie mówią nam, czy był to handel wykorzystujący informacje poufne, jakąś formę manipulacji na rynku. lub prosty błąd. Faktem jest, że po rozbiciu pamięci flash Bitcoin otwarte pozycje swapowe zmniejszyły się z około 28m do 24m, co wskazuje, że około 8400 pozycji długich zostało zamkniętych (przy założeniu średniej 475) w jedną stronę (wezwanie do uzupełnienia depozytu) lub innej (trafienie stop). Dane nie mówią nam, jaki jest stosunek, ale według Josha tylko około 650 Bitcoinów zostało sprzedanych w wyniku wezwań do uzupełnienia depozytu zabezpieczającego. Jak słusznie zauważył Jonathan Levin. Faktem jest, że począwszy od około 24 godzin przed awarią flash bitcoin do momentu zderzenia, dodatkowe 1000 bitcoinów zostało usuniętych w krótkich pozycjach i około 2500 szortów zostało następnie zamkniętych podczas awarii. To, czy szorty zostały otwarte w celu zabezpieczenia istniejących pozycji, jako złośliwa próba wywołania wezwania do uzupełnienia depozytu, czy też sposób na uruchomienie rynku przy użyciu prywatnych informacji, nie może zostać określone na podstawie dostępnych danych (wygląda jednak dziwnie podejrzanie). Co było nieoczekiwane Osobiście interesującym punktem nie jest to, że flash Bitcoin się zawiesił. Nagłe wahania cen miały miejsce w przeszłości i będą miały miejsce w przyszłości, szczególnie na niepłynnych rynkach, takich jak Bitcoin. Interesującym punktem jest zaangażowanie Bitfinex i sposób, w jaki aktywnie zarządzali realizacją zamówień bez uprzedniego informowania uczestników rynku. Silnik dopasowujący Bitfinex nie został zatrzymany podczas całej katastrofy, chociaż zwolnił (ale nigdzie tak źle, jak niesławne opóźnienie rzędu 70 minut na nieistniejącej już giełdzie MtGox podczas katastrofy w 2017 roku). Jednak Bitfinex wprowadził coś, co teraz nazywają "szybkimi uderzeniami". Oznacza to, że zasadniczo zgłaszają one zamówienia, które uważają za nieważne lub potencjalnie niebezpieczne, i spowalniają je celowo. Na pierwszy rzut oka może to wydawać się fajnym pomysłem. Kto nie chce filtrować, aby usunąć lub spowolnić złośliwe rozkazy Jednak jak często z tego rodzaju rzeczy diabeł tkwi w szczegółach. Problem polega na tym, że Bitfinex nie (i nigdy nie będzie) podał do publicznej wiadomości, w jaki sposób dokładnie kategoryzują zamówienie jako 8220bad8221 i 8220, czy to w dół8221. Jeśli uczestnik rynku zdecyduje się na złożenie dużego zlecenia sprzedaży na cienki portfel zamówień, wówczas to decyzja. To, czy jego działanie było zamierzone, czy nie, nie zależy od decyzji o wymianie. Możliwe, że ten uczestnik rynku był po prostu pierwszą osobą, która zareagowała na duże wydarzenie i jest całkowicie gotów ponieść dodatkowe koszty wynikające z poślizgu w oczekiwaniu na znaczący ruch cenowy. Po prostu nie istnieje sposób dokładnego klasyfikowania zamówień jako 8220good8221 lub 8220bad8221, ponieważ automatycznie zakłada to znajomość wszystkich bezpośrednich przyszłych zdarzeń. Co można poprawić Błędy zdarzają się (8220fat finger8221, algorytm mający spustoszenie), nazywają się marże, a ludzie starają się grać w system w każdy możliwy sposób. Logicznie rzecz biorąc, muszą istnieć zabezpieczenia chroniące rynki i ich uczestników. Bitfinex zdawał sobie sprawę z potencjalnego toksycznego przepływu zamówień i przygotowanych środków zaradczych. Jedyną rzeczą, o której zapomnieli, było poinformowanie swoich klientów o ukrytych funkcjach bezpieczeństwa. Ukrywanie tych zabezpieczeń przed opinią publiczną dodaje niepewności rynkowi (szczególnie teraz, gdy wiemy, że istnieją, a czasem coś robi) i zasadniczo sprawia, że ​​każdy przedsiębiorca pokłada zaufanie w rękach Bitfinex. W tym momencie trader może mieć tylko nadzieję, że Bitfinex zawsze będzie działał w najlepszych intencjach swoich klientów. Ta nadzieja może być jednak daremna, ponieważ Bitfinex zarabia na opłatach handlowych, niezależnie od tego, czy inwestor faktycznie zarabia. Nie trzeba długo myśleć, aby zdać sobie sprawę z ukrytego potencjału nadużyć w takim systemie. Głównym powodem, dla którego Josh wyjaśnia, dlaczego Bitfinex nie zamierza publikować swojego algorytmu, jest unikanie możliwości wykorzystania go przez kupujących, co ilustruje jego przyczyna. Są to oficjalne wyłączniki na rynku używane przez NASDAQ, publikowane online i całkowicie przejrzyste dla każdego uczestnika rynku. Zasady te z pewnością nie są doskonałe, ale są proste, przejrzyste i działają na jednym z największych rynków giełdowych na świecie. Teraz mam wielki szacunek dla ludzi pracujących na platformie Bitfinex, ale wątpię, czy zdołali wymyślić algorytm, który chroni uczestników rynku lepiej niż te używane przez dużą giełdę, która średnio handluje ponad 900 milionów akcji dziennie . A jeśli tak, to teraz jest szansa, że ​​Bitfinex udowodni to światu i ewentualnie napisze historię, ucząc wielkich chłopców, jak właściwie prowadzić wymianę. Jeśli chodzi o wymianę publiczną, przejrzystość jest koniecznością, nie tylko dla Bitfinex, ale dla każdej wymiany. Uczestnicy rynku muszą dokładnie wiedzieć, co się dzieje, gdy składają zamówienie i nie mogą w żadnym wypadku polegać wyłącznie na dobrej wierze. Zabezpieczenia są ważne, ponieważ zdarzają się wypadki i krach na rynkach, ale to nie od wymiany zależy na dyskryminacji w tajnym porządku. Istnieją różne sposoby ochrony rynków finansowych i żaden z nich nie jest doskonały. Dodanie złożoności zwykle zwiększa szansę na niepożądane efekty uboczne i dlatego proste, przejrzyste podejście wydaje się bardziej odpowiednie niż ukryte, złożone. Dwa dni temu BitMEX obniżył swoje opłaty transakcyjne do 0 i świętował je, wypuszczając na rynek Github podstawowy barman robiący zakupy. BitMEX prowadzi obecnie wyzwanie handlowe do 29 sierpnia 2017 r. W celu promowania swojej nowej platformy. Wydanie bota oznaczającego rynek jest prawdopodobnie interesującym i skutecznym sposobem zwiększenia ruchu API i przetestowania platformy nieco. Oczywiście nie mogłem się oprzeć i rzuciłem okiem. Market-maker to rozwidlony Liquidbot. który był oryginalny zaprojektowany do działania na nieaktualnej już giełdzie MtGox. Wprowadzono kilka drobnych zmian (nowa klasa APi do połączenia z BitMEX, dodatkowe wydruki do konsoli, zmiany w celu dostosowania do kontraktów futures oraz ogromny i niepotrzebny druk do konsoli podczas uruchamiania), ale bez znaczących zmian w logice handlowej. Algorytm używa REST i sprawdza tylko zmiany co 60 sekund. To już dyskwalifikuje bota, ponieważ zbyt wolno reaguje na ciągłe zmiany w zamówieniu. BitMEX ogranicza żądania do REST API do 150 na 5 minut, więc możesz spróbować zredukować 60 sekund do czegoś podobnego do 3, ale to nie zmieni faktu, że jak tylko rynki zaczną się poruszać, osiągniesz limit i utkniesz z otwartymi pozycjami. Aby być sprawiedliwym, BitMEX zapewnia bota bardziej jako chwyt marketingowy i wyraźnie stwierdza, że ​​przejście na WebSocket będzie bardzo korzystne, ponieważ umożliwi aktualizację w czasie rzeczywistym. Ogólnie rzecz biorąc, algorytm jest napisany solidnie, technicznie działa i jest łatwy w konfiguracji, ale w dłuższej perspektywie wygrał. Jeśli ktoś poważnie rozważa użycie tego bota, poleciłbym następujące małe zmiany, aby kod był bardziej użyteczny: 1. Zmień na Websocket 2. Zamknij pozycję na zamknij: 3. Twórz zamówienia zaczynając od punktu środkowego: Dodatkowo radziłbym mierzyć zmienność w jakiś sposób i dynamicznie dostosowywać odległość między zamówieniami, jak również wielkość. Podczas moich testów interfejs API zawsze był responsywny i dokładny. Wolumen na giełdzie jest nadal niski, ale podstawy platformy wyglądają obiecująco. Ten bot jest fajnym narzędziem do wprowadzenia użytkowników w świat tworzenia rynku i handlu algorytmicznego, ale nie ma szans na ustalone algorytmy. Uwaga: Jeśli rozważasz użycie tego algorytmu, pamiętaj, że tworzenie rynku to praca na pełen etat. Wszystko, co jest mniej niż pełne poświęcenie, szybki czas reakcji i 100 przestojów, spowoduje utratę pieniędzy. Edycja: Kontynuacja po tym wydarzeniu Dzisiaj ceny Bitcoin zanurkowały, ponieważ handlowcy na marginesie na jednej z największych giełd Bitfinex dostali swoje zamówienia zlikwidowane. Dla wielu bliskich obserwatorów rynku i bardziej wyrafinowanych inwestorów nie było to zaskoczeniem. W rzeczywistości, długie pozycje nieustannie rosły w ciągu ostatnich kilku miesięcy w oczekiwaniu na nową bańkę w cenach Bitcoin i osiągnęły nawet 30 mw znakomitych pozycjach wymiany na Bitfinex. To nie byłby problem sam w sobie, o ile istnieje wystarczający kapitał na spłatę pożyczki. Niestety, większość z tych długich pozycji została wprowadzona około 600 8211 640 USDBTC, a zabezpieczenie było głównie dostarczane w samych bitcoinach. Poniższy wykres przedstawia ładowanie długich pozycji, osiągając maksimum w okolicach 14 lipca, przy prawie 32-milionowej zmianie w swapach. Przeprowadzając szybką matematykę na podstawie marginesu utrzymania Bitfinex z 13 i przyjmując Bitcoin jako zabezpieczenie stwierdzamy, że wezwania do uzupełnienia depozytu powinny zacząć się wokół 520 8211 540 USDBTC. Wczoraj ceny zbliżyły się i dziś w końcu przeskoczyły przez klif. Problem polega na tym, że po wprowadzeniu wezwań do uzupełnienia depozytu masz kaskadowy efekt, który rozdziera księgę zleceń, powodując, że jeszcze więcej zleceń osiąga punkt, w którym nie ma odwrotu, i dodatkowo zwiększa pęd. Tego typu wydarzenia nie są ograniczone do wymiany bitcoinów, ale mogą również wystąpić na głównych giełdach, takich jak podczas katastrofy flash 2017 w USA. Przyczyna takiego flash crashe może się różnić i przechodzi od błędów grubego palca do błędów programowania po kaskadowe wywołania depozytu zabezpieczającego. Interesujące jest to, jak giełdy radzą sobie z tymi wydarzeniami. W Stanach Zjednoczonych Nasdaq wprowadził wyłączniki na rynku, które spowodują zatrzymanie handlu w tak ekstremalnych okolicznościach. Rynki bitcoinów nie są jeszcze tak zaawansowane i zazwyczaj kontynuują handel. Jeśli spojrzymy na akcję zlecenia na Bitfinex dzisiaj, zobaczymy coś bardzo szczególnego: wydaje się (i jest to tylko przypuszczenie, ponieważ nie ma oficjalnego komentarza z wymiany), jak gdyby Bitfinex uruchamiał algorytm postępowania z wezwaniami do uzupełnienia depozytu. Algorytm rozpoczyna sprzedaż, ale ogranicza się do 10 spadku cen w ciągu 1 minuty. Jeśli ceny spadną o więcej niż 10 w ciągu 1 minuty, przestaną się sprzedawać i czekać na zamówienia zakupu. Po ponownym wprowadzeniu pewnej liczby zleceń kupna w portfelu zamówień, algorytm zacznie ponownie sprzedawać, aż wszystkie wezwania do uzupełnienia depozytu zostaną spełnione. Edytuj: LeMogawai jako pierwszy wskazał to w tym poście i pasuje do mojej osobistej obserwacji w czasie wydarzenia. Wydaje się, że jest to ciekawy sposób na radzenie sobie z kaskadowymi wezwaniami do uzupełnienia depozytu, ale można go również uznać za manipulację na pograniczu rynku od strony giełdy. Rozłożenie zleceń sprzedaży z biegiem czasu zmniejsza impet, jednak inwestorzy kończą handel z samą giełdą, a nie z rynkiem. Wymiana ma przewagę informacyjną w tym punkcie i dlatego jest bardziej prawdopodobne, że osiągnie zysk niż przedsiębiorcy. Na szczęście trwało to tylko około 10 minut, po czym kontrola została zwrócona na rynek. Inne giełdy, które również oferują obrót marżą, takie jak BTC-e i OKcoin, są teraz w korzystnej sytuacji i mogą uczyć się na bieżących wydarzeniach. Wdrożenie systemu bardziej przypominającego wyłączniki wielkich giełd, takich jak Nasdaq, może być mądrym pierwszym krokiem. Ostatnio pracuję nad uruchomieniem mojej nowej platformy transakcyjnej. Ta nowa wersja bazuje na Pythonie, używa MySQL do przechowywania bazy danych wszystkich serii czasowych różnych walut wirtualnych z automatycznym wypełnianiem z BitcoinCharts i integruje 3 główne giełdy MtGox, BTC-E i Bitstamp. Platforma będzie używana jako metoda weryfikacji historycznej niektórych strategii i przeprowadzania transakcji automatycznych. W okresie poprzedzającym to postanowiłem pobrać dane BTC przeciwko USD z BitcoinCharts i na podstawie pomysłów gazety Hashem i Timmermanna (1995) wdrożyłem prostą strategię handlową. Chodzi o to, aby przewidzieć znak zwrotu w okresie t1 w oparciu o regresję, która jest szacowana na automatyczny dobór wskaźników technicznych w ciągu ostatniego n okresu aż do t. Następnie, po wystąpieniu t1, odświeżamy model i staramy się przewidzieć t2, wykorzystując wszystkie dostępne dane z ostatnich n okresów, aż do t1 i tak dalej. W mojej pracy licencjackiej przeanalizowałem cztery różne techniczne zasady handlu na rynkach Forex. Wykorzystuje test MCS i SPA do wyszukiwania prawidłowych modeli wśród różnych parametrów, które nie są przedmiotem snoopingu danych. Biorąc pod uwagę realistyczne koszty transakcyjne, nie znajdujemy dowodów na nadwyżki zwrotów, co jest zgodne z efektywnością rynku. Za pomocą tego kodu powinieneś być w stanie szukać możliwości arbitrażu Bitcoin w ramach BTC-e. Wykorzystuje ideę jednej ceny i stosuje trójstronny arbitraż, biorąc pod uwagę koszty i spread. Powodem, dla którego to zamieszczam jest to, mimo że działa, jest szansa, że ​​będziesz zbyt wolny, aby konkurować z innymi inwestorami robiącymi to samo. Możliwą poprawą byłoby uwzględnienie głębokości portfela zamówień i dynamiczne rozdzielanie transakcji, próbując podcinać innych przedsiębiorców robiących to samo. Ustawienie wszystkiego na dedykowanym serwerze w pobliżu fizycznej lokalizacji silnika meczowego BTC-e powinno radykalnie zmniejszyć opóźnienie i dać potencjalną przewagę. Nawigacja postuMatlabTrading Ten post dotyczy tego, jak ważne jest stosowanie różnych typów metod optymalizacji, takich jak algorytmy genetyczne i równoległość, aby uzyskać wyniki szybciej. Optymalizacja algorytmów genetycznych Pomimo faktu, że zasada algorytmu genetycznego (ewolucyjnego) jest bardzo dobrze wyjaśniona w webinariach MathWorks, w przykładach jest ona jednak używana tylko do optymalizacji wyboru grupy strategii z zestawu. Jest to dobry przykład użycia tych algorytmów, jednak zdarza się, że istnieje potrzeba ustawiania wielu zmiennych ze znaczącymi interwałami dla jednej strategii, nie można uzyskać jednej iteracji, a równoległość procesów 8211 może potrwać kilka dni . Z pewnością istnieją strategie na końcowym etapie optymalizacji. kiedy prawie na pewno wiemy, że strategia handlowa jest udana, możemy też poczekać kilka dni lub wynająć cały klaster - wynik może być tego wart. Jeśli jednak musimy oszacować wyniki obszernej strategii i zdecydować, czy warto poświęcić czas, algorytmy genetyczne mogą być doskonale odpowiednie. Zapewniamy możliwość zastosowania trzech metod optymalizacji strategii w WFAToolbox: Linear metoda 8211 jest to zwykły tryb sortowania, w którym zobaczysz wszystkie pośrednie (nieoptymalne) wyniki. Daje maksymalną dokładność. Równoległa metoda 8211 będzie używana dla wszystkich procesorów jądra. Nie pozwala zobaczyć wyników pośrednich, ale znacznie przyspiesza operację. Daje maksymalną dokładność podczas zwiększania prędkości obliczeniowej. Metoda genetyczna 8211 wykorzystuje algorytm optymalizacji ewolucyjnej. Pozwala zobaczyć wartości nieoptymalne, ale daje wynik bliski najlepszemu. Nie jest to bardzo dokładna metoda, ale wystarczająco precyzyjna, aby można ją było uruchomić na początku. Bardzo szybki. Często jesteśmy pytani, czy WFAToolbox - Walk-Forward Analysis Toolbox dla MATLAB ma możliwość korzystania z GPU w obliczeniach. Niestety GPU nie nadaje się do wszystkich zadań, a jego użycie jest bardzo specyficzne. Aby go użyć, musisz dostosować logikę i kod każdej strategii do testowania rdzeni graficznych. Niestety, z powodu takiej nie-uniwersalności metody nie można używać GPU w WFAToolbox. Kontynuując część 2 dyskusji o problemach i rozwiązaniach w testowaniu i analizowaniu strategii handlu algorytmicznego w MATLAB, zapraszam do lektury tego posta o problemie niedostępności wizualizacji procesów w nowoczesnych rozwiązaniach programistycznych do testowania systemów transakcyjnych. Wizualizacja procesu testowania W mojej pracy zawodowej często analizowałem inne popularne platformy do testowania strategii handlowych. takich jak TradeStation. MetaStock. Multicharts itp. I zawsze byłem zaskoczony, jak mało uwagi poświęcono wizualizacji procesu testowania. Chodzi o to, że gdy nie widzimy wyników pośrednich, nieoptymalnych wartości zoptymalizowanych parametrów, często wyrzucamy złoto wraz z brudem. Sprawa polega na zbyt szerokim próbkowaniu, strategia dostosowuje parametry w taki sposób, w jaki widzimy idealną strategię, która zawodzi w prawdziwym życiu lub widzimy jedną lub dwie transakcje, które są prawdopodobnie najlepsze, ponieważ wybrano takie dane dotyczące przedziałów czasowych, w których najlepszą strategią handlową byłoby kupowanie i trzymanie, ale dlaczego są jeszcze inne strategie niezbędne do wizualizacji procesu testowania strategii handlowej w MATLAB (proponowane w webinarium) W rezultacie, bez oglądania wyników pośrednich, musimy 171 ledwo zmienić parametry, aby spróbować aby uzyskać lepsze dane lub obejrzeć je w niektórych 3D lub 4D (kolor jest czwartym wymiarem), zgodnie z propozycją w webinariach. Analiza wartości w przestrzeniach N-wymiarowych może z pewnością być alternatywą, ale ma kilka ograniczeń: Co, jeśli są więcej niż 4 wymiary Kiedy widzisz, jakie sygnały i na jakiej częstotliwości pojawiają się w przedziale cenowym, masz prawie wszystkie niezbędna wizualna reprezentacja twojej strategii: częstotliwość transakcji, ich opłacalność (krzywa dochodów), dokładność otwierania, podobieństwo z innymi niższymi wartościami itp., których nie można powiedzieć o wydajności w przestrzeni N-wymiarowej, gdzie wszystkie użyteczne informacje jest tak naprawdę, że optymalna wartość nie jest tylko jedna, ale istnieje cały szereg nieoptymalnych wartości w jednym lub kilku obszarach. Podczas optymalizacji strategii w WFAToolbox 8211 Walk-Forward Analysis Tool dla MATLAB174. gdy zostanie znaleziona nowa wartość optymalna, sygnały strategii handlowej w okresie próbnym i poza próbą natychmiast pojawiają się na wykresie, więc zawsze możesz kontrolować, jaki zakres opcji należy przypisać, a także możesz wstrzymać optymalizację bez czekania na koniec testu, ponieważ staje się jasne, że coś poszło nie tak lub wszystko jest w porządku. Cześć, mam na imię Igor Volkov. Od 2006 roku opracowuję algorytmiczne strategie transakcyjne i pracowałem w kilku funduszach hedgingowych. W tym artykule chciałbym omówić trudności wynikające ze sposobu opracowywania strategii handlowych MATLAB podczas testowania i analizy, a także zaproponować możliwe rozwiązania. Używam MATLAB do testowania strategii algorytmów od 2007 roku i doszedłem do wniosku, że jest to nie tylko najwygodniejsze narzędzie badawcze, ale także najpotężniejsze, ponieważ umożliwia wykorzystanie złożonych modeli statystycznych i ekonometrycznych, sieci neuronowych, uczenie maszynowe, filtry cyfrowe, logika rozmyta, itp. poprzez dodanie zestawu narzędzi. Język MATLAB jest dość prosty i dobrze udokumentowany, więc nawet nie-programista (taki jak ja) może go opanować. Jak to się wszystko zaczęło. Był rok 2008 (jeśli się nie mylę), kiedy ukazało się pierwsze internetowe seminarium poświęcone algorytmicznemu handlowi MATLAB z Ali Kazaam, obejmujące temat optymalizacji prostych strategii w oparciu o wskaźniki techniczne itp. Pomimo dość 8220chaotic8221 kodu, narzędzia były interesujące wystarczy użyć. Służyły one jako punkt wyjścia do badań i udoskonalania modelu testowania i analizy, który pozwoliłby wykorzystać całą moc zestawów narzędzi i swobodę działań MATLABU podczas tworzenia własnych strategii handlowych, jednocześnie pozwalał kontrolować proces testowania, a uzyskane dane i ich późniejsze analizy wybierałyby skuteczny portfel solidnych systemów transakcyjnych. Następnie webinaria Mathworks były aktualizowane co roku i stopniowo wprowadzane coraz więcej interesujących elementów. W związku z tym pierwsze seminarium internetowe poświęcone handlowi parami (arbitraż statystyczny) za pomocą Econometric Toolbox odbyło się w 2017 r., Chociaż zestaw narzędzi do testowania i analizy pozostał taki sam. W 2017 roku pojawił się Trading Toolbox z Mathworks, który umożliwił połączenie MATLAB z różnymi brokerami w celu wykonania ich aplikacji. Chociaż istniały automatyczne rozwiązania do realizacji transakcji, od tego momentu MATLAB może być uznany za system do opracowywania strategii handlowych z pełnym cyklem: od ładowania danych do realizacji automatycznych strategii handlowych. Dlaczego każdy Algotrader powinien odkrywać koło? Jednak Mathworks nie zaoferował kompletnego rozwiązania do testowania i analizy strategii. 8211 kody, które można uzyskać z seminariów, były jedynymi elementami pełnego testu systemowego i konieczne było ich zmodyfikowanie , dostosuj je i dodaj do GUI dla łatwości użycia. Było to bardzo czasochłonne, co stawia pytanie: niezależnie od strategii, musi przejść ten sam proces testowania i analizy, który pozwoliłby na zaklasyfikowanie go jako stabilnego i użytecznego 8211, więc dlaczego każdy algotrader wymyśliłby na nowo koło i napisał własny kod prawidłowych strategii testowania w MATLAB Podjęto więc decyzję o stworzeniu produktu, który pozwoliłby na wykonanie całego procesu związanego z testowaniem i analizą algorytmicznych strategii handlowych za pomocą prostego i przyjaznego dla użytkownika interfejsu. Przede wszystkim chciałbym odpowiedzieć na następujące pytania: Co się stało z blogiem 1. Jev Kuznetsov już nie jest właścicielem Blog został zakupiony od naszego przyjaciela Jev Kuznetsova, który przeniósł się do swojego drugiego bloga tradingwithpython. blogspot. Doszedł do wniosku, że Python jest lepszy niż MATLAB do handlu, który uważałem za fałszywy. MATLAB pozostaje jednym z najlepszych programów na świecie dla celów handlu algorytmicznego IMHO (mam kilka faktów na ten temat do dalszej dyskusji). 2. Zmieniliśmy markę Od tego momentu blog będzie się nazywał MatlabTrading, co jest znacznie bardziej zrozumiałe w odniesieniu do tematów, które będzie zawierać. Co więcej, nazwa domeny została zmieniona na matlabtrading zamiast początkowego matlab-trading. blogspot. chociaż stara domena wciąż pracuje przekierowując z głównej nazwy domeny. Co stanie się z blogiem 1. Więcej artykułów i artykułów Mamy nadzieję, że życie tego bloga ożywi się, publikując odpowiednią treść raz lub dwa razy w tygodniu. W ciągu pierwszych kilku miesięcy opublikujemy głównie te artykuły i filmy, które już mamy, aby ułatwić naszym drogim czytelnikom wyszukiwanie informacji na temat jednego zasobu i mieć na nich link krzyżowy. Następnie planujemy pisać posty o praktycznych aspektach handlu algorytmicznego w MATLAB. Jak tworzyć nowoczesne automatyczne strategie transakcyjne, takie jak: handel parami arbitrażu statystycznego oznacza rynek neutralizacji neutralny dla handlu oparty na kointegracyjnych opcjach ryglowych filtr kalmana itp. Dla towarów, akcji i rynku Forex. Podążaj za strategiami z Jurik Moving Average i innymi zaawansowanymi filtrami cyfrowymi Strategie prognozowania z uczeniem maszynowym (obsługiwane maszyny wektorowe) i innymi metodami Stwórz solidne strategie inwestycyjne, wykorzystując wizualne testowanie zarządzania pieniędzmi do reinwestowania kapitału (nauka o tym, jak zdobyć 1M z 10 000 w ciągu roku z maksymalnym, ale szacowanym ryzykiem i nagrodami za pot). Może po przeczytaniu tego pomyślałeś, że to będzie kolejny głupi artykuł dla tych biednych facetów, którzy szukają sposobów na wzbogacenie się poprzez handel na rynku forex i tak dalej. Cóż, to jest całkowicie nieprawda. Pracujemy w MATLAB, a większość z nas to naukowcy i eksperci w tym zakresie, więc wszystko jest poważne. 2. Więcej interaktywności Będę szczęśliwy, jeśli wszyscy będziemy odnosić się poprzez komentarze w postach. Zapisz się do naszych wiadomości, aby otrzymywać powiadomienia o najnowszych wpisach i wydarzeniach. Później planujemy przygotować webinaria Google Hangouts. Nie przegap tego, kliknij przycisk Obserwuj w prawym górnym rogu, aby dołączyć do naszej społeczności. Co chciałbyś przeczytać w naszych postach na blogu Jakie tematy możesz zaproponować? Napisz tutaj w komentarzach. W poprzednim poście doszedłem do wniosku, że handel parami zbliżonymi do bliskich nie jest tak rentowny, jak to było przed rokiem 2017. Czytelnik zwrócił uwagę, że może to być ten zawracający się charakter spreadów przesunięty w kierunku krótszych terminów . Tak się składa, że ​​mam ten sam pomysł, więc postanowiłem przetestować tę hipotezę. Tym razem testowana jest tylko jedna para: 100 SPY vs -80 IWM. Analiza historyczna przeprowadzana jest na 30-sekundowych danych prętowych od 11.2017 do 12.2017. Zasady są proste i podobne do strategii, którą przetestowałem w ostatnim poście: jeśli zwrot z pary pary przekroczy 1 na z-score, wymień następny pasek. Wynik wygląda bardzo ładnie: uznałbym, że jest to wystarczający dowód na to, że nadal istnieje znaczna rewersja w 30-sekundowej skali. Jeśli uważasz, że ta tabela jest zbyt dobra, aby mogła być prawdziwa, tak się niestety zdarza. Nie uwzględniono kosztów transakcji ani spreadów między ceną kupna i sprzedaży. Prawdę mówiąc, wątpiłbym, że po odjęciu wszystkich kosztów transakcyjnych pozostałby zysk. Jednak ten rodzaj wykresów to marchewka zwisająca mi przed nosem, która nie pozwala mi odejść. Złe wieści dla wszystkich, według moich obliczeń (które, mam szczerą nadzieję, są nieprawidłowe), handel klasycznymi parami jest martwy. Niektórzy ludzie zdecydowanie by się nie zgodzili, ale oto, co znalazłem: Przyjmijmy hipotetyczną strategię, która działa na koszyku etfów: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Z tych etfów 90 unikalnych można tworzyć pary. Każda para jest skonstruowana jako neutralny dla rynku spread. Zasady strategii: Każdego dnia, dla każdej pary, oblicz z-score na podstawie 25-dniowego odchylenia standardowego. Jeśli próg z-score gt, idź krótko, zamknij następnego dnia Jeśli próg z-score lt będzie długi, zamknij następnego dnia Aby wszystko było proste, obliczenia są wykonywane bez zarządzania kapitałem (w portfelu można mieć do 90 par) każdego dnia). Koszty transakcji również nie są uwzględniane. Mówiąc prościej, strategia ta śledzi jednodniową średnią odwracającą naturę spreadów neutralnych na rynku. Oto wyniki symulowane dla kilku progów: Bez względu na to, jaki próg jest stosowany, strategia jest bardzo opłacalna w 2008 roku, całkiem dobrze po roku 2009 i całkowicie bezwartościowa od początku 2017 roku. Nie po raz pierwszy spotkałem się z tą zmianą w średniej rewersji zachowanie w etfach. Bez względu na to, co próbowałem, nie miałem szczęścia w znalezieniu strategii handlu parami, która działałaby na ETFach w przeszłości 2017. Mój wniosek jest taki, że te typy prostych modeli stat-arb po prostu nie mają już tego więcej. Prezentacja systemu handlu w czasie rzeczywistym Hello Jeśli jesteś tu nowy, możesz chcieć zasubskrybować kanał RSS lub kanał e-mail, aby otrzymywać aktualizacje dotyczące nieudokumentowanych tematów Matlab. 23 maja 2017 r. Przedstawiłem prezentację na konferencji MATLAB Computational Finance w Nowym Jorku. W pokoju było pełno blisko 200 profesjonalistów z branży finansowej. Energia i sprzężenie zwrotne były olbrzymie, to było wspaniałe doświadczenie. Jeśli przyszedłeś na konferencję, dziękuję, że jesteś wielką publicznością. 19 września 2017 r. Przedstawiłem odmianę tej prezentacji na wirtualnej konferencji MATLAB Computational Finance. Prezentacja (format PDF) znajduje się tutaj. nagranie wideo jest dostępne tutaj. W obu przypadkach przedstawiłem aplikację demo, która pokazała, w jaki sposób Matlab może być użyty do stworzenia pełnego systemu handlu end-to-end, podkreślając potencjał Matlab8217 jako platformę z wyboru. Użyłem Interactive Brokers do zademonstrowania danych rynkowych na żywo oraz danych wejściowych accountportfolio, a także do wysyłania zleceń handlowych na rynek za pośrednictwem złącza IB-Matlab: Algorytm handlu stosowany w demo jest trywialnie uproszczony (losowy). W prawdziwym systemie naturalnie zastąpiłbyś go swoim własnym zastrzeżonym algorytmem. Ale możesz użyć tego demo jako punktu wyjścia do swojej aplikacji. Tutaj znajduje się kod źródłowy demo (tradingDemo. m i pliki pomocnicze). Należy pamiętać, że jest to dostarczane w stanie "jak jest", bezpłatnie, ale bez żadnej gwarancji ani wsparcia. Oczywiście, aby go uruchomić, potrzebujesz oczywiście IB-Matlab i konta Interactive Brokers. Mam nadzieję, że mamy szansę wspólnie pracować nad Twoimi projektami. Wyślij mi wiadomość e-mail, jeśli chcesz uzyskać pomoc w konsultacjach, szkoleniach lub pracach rozwojowych. 4 Odpowiedzi na wersję demonstracyjną systemu handlu w czasie rzeczywistym Wypróbowałem trasę Activex przed zakupem produktu. Jest jedna podstawowa wada, jeśli chodzi o używanie ActiveX z Matlab. Załóżmy, że używasz algorytmu i przetwarzasz funkcję, a TWS uruchamia zdarzenie. Jeśli używasz ActiveX, MATLAB NIE zaktualizuje ceny, dopóki nie zakończy się przetwarzanie twojej funkcji. W związku z tym kilka zdarzeń zostanie pominiętych, a cena, jaką chciałbyś zobaczyć, będzie inna. Podczas gdy w JAVA. nie ma takiego problemu. Każde wystrzelone zdarzenie zostanie natychmiast przechwycone przez java, która działa w tle. Więc kiedy zadzwonisz getLastPrice, dostaniesz poprawną cenę. Inną wadą jest oczywiście fakt, że możesz używać ActiveX TYLKO w WINDOWS. Podczas gdy z JAVĄ możesz używać go z Windows, Mac, Linux itp. NIE jest dobrym pomysłem, aby przesyłać strumieniowo dane Live Trades, gdy przychodzi do MATLAB. Wyobraź sobie, że masz 100 symboli, które aktualizują co każde 200 milisekund, więc transakcja odbywa się tak szybko i jest przechwytywana i przechowywana w Matlabie. Z powodu pojedynczego wątku MATLAB8217s niektóre tickety Trades zostaną pominięte, a także pochłoną Twoją pamięć. Więc wszystko, co będziesz mógł zrobić, to po prostu przesyłać strumieniowo dane, a nie robić nic innego. Kenan 8211 rzeczywiście, Java API (który jest używany przez IB-Matlab) ma wiele zalet w stosunku do ActiveX API (który jest używany przez MathWorks8217 Trading Toolbox). Jednym z pozytywnych rezultatów używania języka Java jest to, że IB-Matlab może działać na wszystkich platformach, na których działa Matlab (Windows, Mac, Linux), ponieważ wszystkie te platformy mają zarówno klienta Java, jak i klienta TWS. Interfejs API języka Java jest znacznie szybszy i bardziej niezawodny (od czasu do czasu zgłaszane jest, że złącze ActiveX zrzuca zdarzenia IB). Jeśli chodzi o opóźnienia w opcjach przesyłania strumieniowego, zależy to od zmienności zabezpieczeń, liczby monitorowanych papierów wartościowych, przepustowości sieci, sprzętu komputerowego, innych działających procesów na komputerze oraz szerokiego zakresu innych aspektów, które mogą wpływać na wydajność. Na standardowym laptopie Lenovo Thinkpad E530 z zainstalowanym Matlab R2017a na Win7 osiągnąłem opóźnienie w kwotowaniu w zakresie zaledwie 1-2 mSec (czyli setki zdarzeń IB na sekundę). Oczywiście, YMMV. Marco Ruijken mówi: Chociaż podoba mi się to, gdzie idzie to pytanie, sugerowałbym, aby był nieco bardziej konkretny. Które elementy procesu analizy historycznej chciałbyś poznać? Może to być zakres od dowolnego oszacowania zwykłego zwrotu, w którym portfel powraca z Twojej strategii, już jest wprowadzony w celu implementacji algorytmu pełnej reguły tworzenia portfela. ndash Constantin 30 grudnia 14 o 21:06 Szczerze mówiąc nie wiem zbyt wiele o testowaniu wstecznym. Powiedziano mi, że podczas mojego stażu będę musiał przeprowadzić analizę historyczną nowych strategii lub udoskonalić obecny. Więc chciałbym wiedzieć nieco więcej na ten temat przed rozpoczęciem. Jakie są różne jego części. ndash Maxime 30 grudnia 14 o 21:31 Ogólna idea W przypadku kapitałowych papierów wartościowych prosta analiza historyczna składa się zazwyczaj z dwóch etapów: Obliczanie zwrotu z portfela wynikającego z reguły tworzenia portfela (lub strategii handlowej) Korekta ryzyka zwrotów portfela za pomocą model wyceny aktywów Krok 2 to po prostu regresja i prosta w obliczeniach Matlab. Co jest trudniejsze, to implementacja kroku 1, który będzie wymagał komfortu w Matlab, i są na to różne sposoby. Jeśli wiesz, jak zrobić regresję OLS w Matlab, to na czym powinieneś się skupić, to wszelkiego rodzaju manipulacje matrycą. Wdrożenie w Matlab Tworzenie portfela i obliczenia zwrotów Aby dać przykład, w jaki sposób prymitywna strategia handlowa może zostać zaimplementowana w Matlab, przyjmijmy miesięczne dane zwrotne i jednolity okres trzymania jednego miesiąca na n aktywów w ciągu k okresów, w których i in i k w . Zakładając, że nie ma zmian w składzie twojego uniwersum zasobów, twoja matryca zwrotów X ma wymiary k razy n. X zaczynać x amp kropki amp x amp kropki amp x vdots amp ddots amp vdots amp ddots amp vdots amp amp kropki amp x amp kropka amp x vdots amp ddots amp vdots amp ddots amp vdots x amp kropka amp x amp kropka amp x koniec Gdzie zwrot są obliczane jako x frac -1. Zakładając, że twoje kryterium wyboru jest jakimś rodzajem charakterystyki zapasów, które jest dostępne z częstotliwością miesięczną, będziesz miał również macierz charakterystyczną C. Możesz wtedy napisać algorytm identyfikujący te wpisy w C, które spełniają twoje kryterium wyboru (np. Przekraczaj pewien próg ) i zamień odpowiednie wpisy (gdzie i i t są takie same) macierzy wskaźników I (która została zainicjowana jako zerowa macierz za pomocą funkcji zer) z tymi. Następnie możesz pomnożyć wpisy I przez te z macierzy X powrotu, aby otrzymać macierz R, która wskazuje zwroty z twoich gospodarstw. Następnie można obliczyć średnią z niezerowych wpisów dla każdego wiersza R, aby uzyskać wektor zwrotów portfela. Korekta ryzyka i identyfikacja nietypowych zwrotów W kroku 2 porównuje się ten wektor z normalnymi zwrotami uzyskanymi z oszacowania regresji modelu wyceny aktywów, takiego jak model Fama-French. Odejmując normalny wektor powrotny od twojego wektora zwrotu portfela, określasz, czy twoja strategia handlowa doprowadziła do pozytywnego nienormalnego zwrotu, na co celujesz. Zalecenia Jeśli jesteś nowym użytkownikiem Matlab, osobiście sugeruję, abyś zapoznał się z nim w wystarczającym stopniu, aby wdrożyć tę uproszczoną strategię, zanim złagodzisz niektóre z uproszczających założeń (takich jak jednolity okres przechowywania i okresowość) i postępujesz do bardziej wyrafinowanych implementacji. Ponownie, chciałbym podkreślić, że wymaga to, abyś czuł się dobrze z Matlabem, a zwłaszcza różnymi sposobami manipulowania matrycami, co może zająć trochę czasu. Jeśli nie musisz korzystać z Matlaba na stażu i chcesz szybko uzyskać wyniki, możesz zamiast tego zrobić krok 1 w Excelu, co jest uciążliwe, ale nie wymaga (wartościowej) początkowej inwestycji, którą musisz wykonać dla Matlaba. Aby zapoznać się z Matlab, jestem pewien, że odkryłeś już bardzo dobrą dokumentację, która mu towarzyszy. To dla mnie najcenniejszy zasób i prawdopodobnie bardziej użyteczny niż jakiekolwiek inne zasoby finansowe (z którymi chciałbym poczekać, aż poznasz samą Matlab). Wszystko, co jest wymagane do określenia normalnego zwrotu, to regresja OLS i podstawowe zrozumienie modeli wyceny aktywów. odpowiedziało 30 grudnia 14 o 22:20

No comments:

Post a Comment