Friday, 3 November 2017

System handlu garch


Quantum Financier napisał ciekawy artykuł System przełączania reguł za pomocą prognozy lotności W artykule przedstawiono elegancki algorytm przechodzenia pomiędzy strategię średniej rewersji i trendy w oparciu o zmienność rynku Dwa modele są badane jeden z wykorzystaniem zmienności historycznej, a drugi przy użyciu modelu Garch 1, 1 Prognoza lotności Strategia średniej rewersji jest wzorowana na RSI 2 Long, gdy RSI 2 i Short inaczej Strategia trendów jest modelowana przy pomocy SMA 50 200 Crossover Długie, gdy SMA 50 SMA 200 i Short w przeciwnym razie. Chciałbym pokazać, jak wdrożyć te pomysły korzystając z biblioteki testów wstecznych w Systematic Investor Toolbox. Following code załaduje historyczne ceny z Yahoo Fiance i porównuje wyniki strategii Buy-Hold, Mean-Reversion i Trend-Follow przy użyciu biblioteki testów wstecznych w Systematic Investor Toolbox. Następna, niech s stworzy strategię, która przełącza się między średnio odwrotnym trendem i strategiami opartymi na trendach opartych na historycznym niestabilności rynkowej ty. Następna, niech s utworzyć GARCH 1,1 Prognoza lotności Polecam przeczytać następujące artykuły dla każdego, kto chce dowiedzieć się, co GARCH jest o lub odświeżyć swoją wiedzę. GARCH 1,1 przez David Harper bardzo dobry artykuł wprowadzający z dużą ilością wizualnych diagramów. Praktyczne kwestie dotyczące jednowymiarowego modelu GARCH przez Y Chalabi, D Wurtz krok po kroku przykład dopasowania modelu GARCH 1,1 z pełnym kodem R. Basic Wprowadzenie do GARCH przez Quantum Financier to seria postów, które wchodzą w szczegóły i założenia GARCH i EGARCH. There kilka pakietów R do dopasowania do modeli GARCH Będę rozważyć funkcję garch z pakietu tseries i funkcji garchFit z pakietu fGarch Funkcja garch z pakietu tseries jest szybka, ale nie zawsze znajdzie rozwiązanie Funkcja garchFit z pakietu fGarch jest wolniejszy, ale bardziej konwergentnie Aby zilustrować różnicę prędkości pomiędzy funkcją garch i garchFit stworzyłem prostą benchmark. Funkcja garchFit jest średnio 6 razy wolniej niż funkcja garch Aby prognozować zmienność spróbuję użyć funkcji garch, gdy tylko znajdzie się rozwiązanie i funkcja garchFit inaczej. Więc teraz stwórz strategię, która przełącza się pomiędzy strategiami średniej rewersji i trendów opartymi na GARCH 1, 1. Prognoza zmienności. Strategia przełączania, która wykorzystuje prognozę zmienności 1,1 GARCH, jest nieco lepsza niż ta, która wykorzystuje zmienność historyczną. Istnieje wiele różnych podejść, które można uwzględnić w prognozowaniu modeli i strategii handlowych R ma bardzo bogaty zestaw pakietów do modelowania i prognozowania serii czasowych Oto kilka przykładów, które uważałem za ciekawe. Aby wyświetlić pełny kod źródłowy dla tego przykładu, spójrz na funkcję w modelach github. ARMA dla handlu. W tym samouczku będę podzielić się moim RD i doświadczenie handlowe wykorzystujące dobrze znane ze statystyk Autoregresywny Moving Average Model ARMA Jest wiele napisanych o tych modelach, jednak zdecydowanie polecam Intro ductory Time Series z R, które uważam, jest doskonałym połączeniem lekkiego tła teoretycznego z praktycznymi implementacjami w R Kolejnym dobrym czytaniem jest e-bookowe zasady prognozowania i praktyki napisane przez Rob Hyndmana eksperta w dziedzinie prognozowania statystycznego i autor doskonałej prognozy R. Getting Started. In R, jestem głównie przy użyciu pakietu fArma, który jest ładny opakowanie z rozszerzoną funkcjonalnością wokół funkcji arima z pakietu statystyk używanych w wyżej wspomnianej książce Oto prosta sesja dopasowania modelu ARMA do dziennego zwrotu z SP 500. Więcej informacji na ten temat można znaleźć w literaturze i pakietach, chcę tylko podkreślić kilka punktów. Modeluj codzienne powroty zamiast na ceny stacjonarne, musimy jakikolwiek sposób normalizować serię itp. Używamy funkcji diff i log do obliczania dziennych zwrotów zamiast procentów Nie tylko jest to standardowa p ractice w statystykach, ale również daje cholernie dobre przybliżenie do dyskretnych zwrotów. Podejście, które tutaj przedstawię, jest formą walk-forward backtesting Podczas chodzenia po serii z dnia na dzień wykorzystamy historię o pewnej długości, aby znaleźć najlepsze model Następnie użyjemy tego modelu, aby przewidzieć powrót następnego dnia. Jeśli przewidywanie jest ujemne, przyjmujemy krótką pozycję, w przeciwnym razie przyjmujemy długą pozycję. Przykład sprawi, że wszystko będzie wyraźniejsze Po zamknięciu 11 czerwca 2017 roku obliczymy ostatnie 500 dziennych zwrotów Za pomocą tych zwrotów przeszukiwamy obszary modeli ARMA i dobieramy najlepsze wzorce w odniesieniu do niektórych metryk i niektórych wymagań modelu Wreszcie używamy tego modelu w celu obliczenia przewidywania dla jutrzejszego powrotu i używania znaku powrót do określenia właściwej pozycji. Wybór dobrego modelu. Pierwszą przeszkodą dla tej metody zanim będzie nam to użyteczne, jest wybranie parametrów modelu W przypadku ARMA istnieją dwa parametry W innym przypadku rds, istnieje nieskończona liczba wyborów 0,1, 1,0, 1,1, 2,1, itd. Skąd wiadomo, jakie parametry mają być użyte. Wspólnym podejściem w statystyce do ilościowej oceny dobrobytu jest AIC dla Akaike Information Criteria statistic Po wykonaniu dopasowania wartość statystyk aic jest dostępna za pośrednictwem. Istnieją oczywiście inne statystyki, jednak zazwyczaj wyniki są dość podobne. Aby podsumować wszystko, potrzebujemy pętli, aby przejść przez wszystkie kombinacje parametrów, które uznajemy za rozsądne, na przykład od 0,0 do 5,5 włącznie, dla każdej parze parametrów dopasowanych do modelu i ostatecznie wybierz model o najmniejszej liczbie AIC lub innej statystyce. Zauważ, że czasami armaFit nie znalazł dopasowania i zwraca błąd, a tym samym zamknięcie pętli natychmiast armaSearch obsługuje ten problem przy użyciu funkcji tryCatch w celu złapania dowolnego błędu lub ostrzeżenia i zwraca wartość logiczną FALSE zamiast przerywać wszystko i kończy się z błędem W ten sposób możemy rozróżnić błąd i zwracanie funkcji normalnej po prostu sprawdzając typ rezultatu Trochę niechlujnie prawdopodobnie, ale to działa. Niektóre pakiety R, prognoza i rugarch na przykład zapewniają podobną funkcję poza pudełkiem. Można więc zbudować infrastrukturę wokół jednego z nich. parametry są wybrane, to czas, aby ustalić pozycję na końcu Jednym ze sposobów postępowania jest jednodniowy wyprzedzanie, jeśli przewidywanie przychodzi negatywnie, pamiętaj, że serie, na których pracujemy, to codzienne powroty, wtedy pożądane położenie jest krótkie, w przeciwnym razie jest długi. Teraz, aby zbudować wskaźnik dla testów wstecznych, można przejść dziennie serie powrotu i w każdym punkcie wykonywać kroki, które objęliśmy do tej pory Pętla główna wygląda jak skrócona na purpose. Where historii jest look-back okres, który należy rozważyć w każdym punkcie, zazwyczaj używam 500, czyli około dwóch lat danych Innymi słowy, w celu ustalenia pozycji każdego dnia poprzedniego dnia w pobliżu obecnego dnia zamknięcia określa się zwrot, z którego korzystamy 500 dni historii, z opóźnieniem Zobaczysz później, jak w grę wchodzą praktyki opóźnień. Notyczność, która przewiduje, że musi być otoczona blokiem tryCatch armaSearch ma również dobrą cechę, aby określić, czy model ma prognozę, czy nie przewiduje sukcesu, czy nie, test ten jest kontrolowany za pomocą parametru forForecast. Poprawa wydajności. Liczba obliczeń, które musimy zrobić szybko zwiększa się. Na przykład przez 10 lat danych historycznych musimy obliczyć około 2.520 dni handlowych. Każdego dnia będziemy zmieścić się i przewidzieć co najmniej 35 35 6 6-1, 0-5 zarówno dla komponentu AR, jak i MA, ale z wyłączeniem 0,0 kombinacji modeli Pomnożenie liczby modeli według liczby dni, a my już szukamy ponad 88 tysięcy dopasowań modelu, które sa partia obliczeń. Jedynym sposobem na poprawienie wydajności tych niezbędnych obliczeń można osiągnąć przez wykorzystanie wielozakładowych procesorów. Moje podejście polega na równoległym wyborze modelu, funkcji armaSearch w powyższym kodzie. Chociaż może to nie być najbardziej skuteczne ient podejście, jest z pewnością bardziej praktyczne, ponieważ będzie również zwiększyć wydajność armaSearch przy użyciu niezależnie. I wygrał t ostatniej wersji kodu tutaj ze względu na to długość dę Ci link GIST zamiast. Modeling zmienność z GARCH. Financial time series są przypadkowe w ogóle Jedną z niewielu właściwości, jakie wykazują, jest Klastrowanie zmienności Zwykle osiąga się to poprzez rozszerzenie prognoz ARiMR za pomocą modelu GARCH Dźwięki złożone, a teoretyczne szczegóły są złożone, ale okazuje się, że jest ładny oczywiście oczywiście w R. Oczywiście musimy zmodyfikować wszystkie istotne funkcje, takie jak armaSearch Calls to garchFit i przewidzieć, że muszą być obsługiwane przez tryCatch Notice również, że przewiduje zwraca macierz dla modeli GARCH. Pełny kod źródłowy jest dostępny w GitHub Gist. SP 500 Performance. Let zaczynają się od krzywej słuszności w zastosowaniu strategii ARMA GARCH w ciągu 60 lat od 1950 r. Danych historycznych SP 500.ARMA vs. Buy-and-Hold. Nie wygląda fantastycznie W rzeczywistości to zrobiło na mnie tak wiele, że od dłuższego czasu szukałem błędów w kodzie Już na wykresie logarytmicznym wydajność tej metody jest oszałamiająca CAGR 18 87, a strategia ARMA GARCH osiąga ten wynik z porównywalną maksymalną wycofanie 56. Aby obliczyć wzrost strategii ARiMR, najpierw potrzebujemy dziennego wskaźnika wskaźnik ten trwa około dwóch dni, aby obliczyć wszystkie optymalizacje, które objęto tym stanowiskiem. Pierwsza kolumna to data, druga pozycja na ten dzień 1 dla długie, -1 za krótkie, 0 za nic Uwaga, pozycja jest już ustawiona w stosunku do dnia zwrotu obliczonego na zakończenie poprzedniego dnia, innymi słowy, wskaźnik jest wyrównywany prawidłowo do zwrotów bez potrzeby zmiany prawo przez opóźnienie Wskaźnik, pierwsza kolumna, musi być pomnożona przez zwroty dzienne SP 500. Pozostała część kolumn jest bez znaczenia i miejmy nadzieję, że jest ona oczywista. Zaśmięto wpis z kodem, który ładuje wskaźnik i wykresuje wykres c. Hello Wyjątkowo ciekawostki, wyniki, które wysłałeś, były badane przez codzienne powroty w danym okresie lookboksa, a następnie próbując przewidzieć następny dzień powrotu Czy wypróbowałeś strategię ARiMR na tygodniowe zwroty Jak wyniki przeciwstawią się strategia, w której codzienne powroty są wprowadzane do Twojego modelu. Zamiast tego warto też zobaczyć inne numery, np. zwycięzców. Czy aktualnie używasz tego modelu do handlu prawdziwymi pieniędzmi? Wielkim postem i kontynuuj dobrą robotę. He haven t wypróbowane tygodniowe zwroty, prawdopodobnie warto do tego przyjrzeć, chociaż w przypadku cotygodniowych zwrotów wolę używać modelu, biorąc pod uwagę inne cechy oprócz zwrotów Więcej nadaje się do SVM lub sieci neuronowej. Tak, używałem strategii ARMA GARCH do handlu jeden instrument finansowy nie SPY od ponad roku To jest główny powód, dla którego jestem niechętnie dzielić się tym kodem. Następnie, szukam uaktualnienia wpisu, zawierającego więcej informacji na temat handlu i statystyk, ale haven t zrobić to do tej pory, ponieważ nie mogłem wymyślić satysfakcjonujące jestem wybredna format. Ii ivannp, jestem bardzo wdzięczny za wprowadzenie takich użytecznych r kody i informacje dotyczące analizy ilościowej nie widziałem takich zorganizowanych procedur i kodów R do analizy ilościowej gdzie indziej Odwiedzałem Twój blog od dłuższego czasu staram się przestrzegać kodów tutaj, ale obawiam się, że zdecydowanie brakuje niektórych kroków tutaj funkcja armasearch daje mi arma 5,2 dla SPY, ale jesteś używając arma 0,2 dla garchfit Mogę wiedzieć, dlaczego jeśli czegoś brakuje proszę poprowadzić mnie i może proszę napisz do mnie pełny kod Dziękuję z wyprzedzeniem. Hi Prabin, zawsze szczęśliwy, że słyszę od ludzi, którzy lubią bloga, inspiruje mnie do nie zaniechania kodu. Kole, o którym mówisz, jest tylko ilustracją, jak używać garchFit 0,2 jest całkowicie przypadkowe Wybieram niektóre numery W rzeczywistym życiu musimy utworzyć funkcję garchSearch, podobną do przedstawionej armaSearch Jest to podobne, ale różnią się pos sible modele składają się z czterech elementów, dwa pierwsze są AR, MA, ale są również dwa składniki GARCH, a garchFit zastępuje armaFit, a także wyniki z garchFit są nieco bardziej szczegółowe tablicę vs numer. Kod nie jest w pełni funkcjonalny jak to jest Powód, dla którego nie chcę opublikować pełnego kodu jest to, że używam go codziennie Wyniki jej pracy na SPY są dostępne na stronie SP 500 Posiada zarówno codzienną pozycję opierającą się na ARMA GARCH, jak i , tabela akcji na koniec dnia. Co to jest stan na temat ARMA GARCH, ale obiecuję, że wygrałem zrobić to samo dla nowych rzeczy SVMs nadchodzą opublikuje w pełni funkcjonalną wersję kodu, chociaż ja nie wygrywam t aktualizować to z ulepszenia. Hi, bardzo interesujące stanowisko mam pytanie dotyczące funkcji armaComputeForecasts, która produkuje prognozy kroczące Kiedy produkuje prognozę, data forecaset tj. indeksu w odpowiednim wierszu xts odpowiada datę utworzenia lub datę prognozuje i nto, tzn. czy muszę zwlekać z przewidywanym wskaźnikiem, czy też jest to już zadbane. Skoro strategia ARiMR jest zdecydowanie lepsza niż w przypadku specyfiki czasowej, zdecydowana większość nadmiernych zwrotów wydaje się być generowana w latach 1965-75, byłoby o wiele bardziej przydatne, aby zobaczyć wykres łącznych skumulowanych zwrotów dla każdej strategii, tj. w ciągu 3 lub 5 lat Również zwroty ARiMR przypuszczalnie są brutto t-koszt tutaj, więc obrót strategii jest kolejnym bardzo ważnym czynnikiem jest to, że możesz dzielić to, co W moim starym blogu wspomniałem, że co dwa 35 dni robiłem średnio jeden handel Pamiętam licytując transakcje i dzieląc według dni Wskaźnik dla serii jest tutaj dostępny Musi być dopasowany do kwoty pieniężnej SP 500 indeks, nie ma opóźnień, ale wtedy można uzyskać wszystkie rodzaje statystyk z pewnością zrobię to pewnego dnia, po prostu nie wiem, kiedy z tą strategią nie jestem zbytnio zaniepokojony kosztami transakcji Korzystając z regularnych kont detalicznych na Interactive Brokers, można sprzedaj udział SPY za 0 005 W obecnej cenie 140, to jest nieznaczne, chyba że robisz to kilka razy dziennie. Hi, Twój artykuł jest nie tylko ciekawy do czytania, ale również działa jako przewodnik dla osób nowych w dziedzinie ilościowego początkującego w tej dziedzinie, Twój blog wydaje się być złotą kopalnią I, masz kilka pytań, jednakże używałem Twojego kodu Armasearch na konkretnym instrumencie i stwierdziłem, że ze wskaźnikami nie dał lepszej skuteczności niż kupić i przytrzymaj, więc próbowałem zmieścić się w kodzie garchFit używając garch 1,1 jako błędów garch, czy możesz uprzejmie poprowadzić mnie tak, że będę w stanie to zrobić Odpowiednie przykłady lub linki byłyby bardzo pomocne Także i nie rozumiem z Twojego kodu, jak dokładnie wykonać wymianę handlową, tj. punkty wejścia i wyjścia, mógłbyś uprzejmie poprowadzić mnie do tego samego. Hej, Twój blog jest nie tylko interesujący, ale także informacyjny dla osób, które są nowe w świecie finansów ilościowych Mam kilka pytań, używałem funkcji armasearch dla konkretnego instrumentu testy backtestingu okazały się gorsze od zakupu i przytrzymania, więc staram się dopasować garch 1,1, czy możesz mi uprzejmie poprowadzić mnie, jak to zrobić. Również, mógłbyś mi pomóc w kwestii punktów wejścia i wyjścia dla wskaźnika wygenerowanego przez Ty to jest mój najlepszy wysiłek bez dostarczania samego kodu źródłowego, aby wyjaśnić, jak używać garchFit Możesz spróbować innych metod podejścia do arma, polecam pakiet prognoz i jego książkę lub pakiet rugarch Oba te pakiety dostarczają bardziej naukowego i zaawansowanego podejścia do wyboru modelu arma. Aby zastosować pomysły na tym blogu w praktyce wymaga znacznej ilości dodatkowych prac Moja jedyna rada, którą nakreśliłem w innych postach, to zastanowienie się nad stosowaniem w praktyce praktycznej krok. Dziękuję bardzo za świetne wprowadzenie, jakie zapewnia użytkownikom początkowym, jak ja w finansach ilościowych. W swoich pracach chodzisz serią z dnia na dzień, szukając najlepszego modelu ARMA ARMA p, q, a następnie użyj modelu aby przewidzieć kierunek następnego dnia. A następnie, aby poprawić wydajność, używasz najlepszych parameetrów p, q w tym czasie z GARCH 1,1, aby utworzyć nowy model i używać go do przewidywania kierunków następnego dnia. Je masz model z 4 parametrami używanymi w garchFit. Jest używam innej biblioteki GARCH nie w R, jest w C, aw nim parametry dla modelu są tylko 2 zamiast 4. liczba automatycznych regresywnych parametrów AR i liczba poruszających się średnie parametry MA. Jeż proszę doradzić, jak używać metody w moim scenariuszu, jak zawsze tworząc GRACH 1,1 bez rozważania ARMA P, Q różni się. Nie wydaje się, że powodem masz tylko 2 parametry dla swojego modelu ponieważ próbujesz dopasować datę do modelu ARMA bez składnika heteroskedastyczności Metoda GarchFit w bibliotece fGarch w R pozwala dopasować się do modelu autoregresji uogólnionej, a więc o 4 parametry. Pytanie związane z szybkim pytaniem dla Ciebie można wskazać mnie na C biblioteka, o której mówisz, ja, myse Jeśli podoba mi się C, mam całą architekturę zbudowaną wokół niego i chciałbym włączyć bibliotekę dopasowaną do danych, która pozwala na wywołanie modelu ARMA. Twoje posty są naprawdę świetne i mają wiele cennych informacji, które próbowałem na dziennym wskaźniku csv, ale to nie jest już w górę Czy mogłabym mieć kopię do sprawdzenia I m obecnie testowanie pełnego kodu arma i chcesz wiedzieć, jak ocenić wyniki poprawnie przed przejściem na próbę wdrożenia składnika GARCH. I lubiłam czytać bloga na tym używałem alternatywnej funkcji, zamiast dużo wolniejszej i droższej funkcji ARMAsearch, ale ta drastycznie różni testy backtests i była gorsza niż Buy-and-Hold Nie replikowała wyników w oparciu o ARMAsearch, ale to zarobił jednak wiele zysków wokół 08 kryzysu, podobnie jak to zrobił ARMAsearch, ale to nie tak naprawdę porównuje To było interesujące dla mnie W tej chwili odczytuję kod źródłowy i porównuję go do ciebie r ARMAsearch Wydaje się, że przeszukiwanie sieciowe odbywa się w lokalnym wyszukiwania, które wyjaśnia szybkość. Męć pytam, jakiego rodzaju sprzętu używasz obecnie Czy robisz jakieś obliczenia GPU. Hello, cieszę się, że lubisz mój blog Dla mojego użytku widzę Procesory Intel zapewniają wystarczającą wydajność i równoległość Sprzęt, którego używam jest czterordzeniowy i7 z funkcją hipertreadingu, co czyni go niemal 8-stronnym. Na takim komputerze test ARMA GARCH zajmuje mniej niż jeden dzień, jeśli moja pamięć jest poprawna przez około 50 lat dane Robi wszystko, aby przewidzieć decyzje bliskie na konkretny dzień tj. pracę potrzebną do przygotowania się do obrotu w ciągu około kilku godzin. Mówisz, że masz rację, funkcja używa innego algorytmu, który nie analizuje wszystkich rezultaty Z mojego doświadczenia nie jest łatwe do powtórzenia 100 wyników pomiędzy pakietami Szczególnie, gdy chodzi o dystrybucję pozostałości, zauważyłem to samo, gdy w pewnym momencie spróbowałem krótko pakiet rugarch. Ii Ivan, jestem początkującym matematykiem l finansów Właśnie dyskutowałam z moim profesorem na temat korzystania z modelu ARMA w prawdziwym handlu w zeszłym tygodniu Znalazłem swój model szczegółowości bardzo ciekawy Więc próbuję go przeanalizować wierszem Próbowałem wydrukować standardowe errror wraz z przewidywaniami i że wielkość błędu standardowego znacznie większa niż przewidywana myślałem, czy to stanowiłoby duże ryzyko dla indywidualnej decyzji, ograniczając model do działania tylko w dużej liczbie decyzji, a może nie dlatego, że przy użyciu strategii na krótki okres czasów Nadzieja może uzyskać twój pomysł Thanks. That sa problem i został już omówiony w innych uwag już Jeśli ktoś nie chce użyć takiej metody ze względu na brak wartości statystycznych więc niech to alternatywnym podejściem byłoby stworzenie systemu, który używa metoda while it works. Hey ivannp, Wielki blog, dzięki, że używałem Twojego kodu dla niektórych badań chciałbyś / chciałbyś opublikować kod źródłowy do utworzenia matrycy wskaźników. Thanks. mclapply bierze modele, lista wszystkich modeli i każdy model jest również listą, więc mamy listę list, które chcemy obliczyć jako pierwszy argument, a następnie wywołuje garchAutoTryFit dla każdego modelu z tej listy, przekazując model jako pierwszy argument . Następująca linia dodaje nowy model do listy w modelach długości garchAuto. models 1 lista zamówień cp, q, r, s, dyst dist. Each jest także listą, zawierającą zlecenie dostępne za pośrednictwem zamówienia i dystrybuowane poprzez dist . Czuję, że to jest trochę brzydki sposób na robienie rzeczy, ale robi to pracę. Czy to ma sens dla mnie, ale co właściwie buduje garchAutoTryFit i garchAuto pozwalają zoptymalizować parametry do przewidywania zrobić z garchfit wiem, że dane lub xx w kodzie jest seria powrót, ale nie widzę, jak wykonać funkcje bez początkowego ll Thanks. ll jest skonstruowany wewnątrz garchAuto, przy użyciu i kilka innych parametrów przekazanych do rutyny przez użytkownika Jeśli jest 0,0,1,1 i wynosi 5,5,1,1, garchAuto konstruuje ll, która zawiera wszystkie możliwe wariacje w obrębie tych limitów, na przykład będzie zawierać 0,0,1,1,1,1,1 itd. Domyślnie rutynę wybiera najlepszy model w granicach 0,0,1 , 1 i 5,5,1,1.Ok dzięki starałem się uruchomić garchAuto przy użyciu serii zwrotu jako wejście xx, ale tylko otrzymywać NULL. Very informacyjny blog planuję użyć podobnej strategii przy użyciu bez powodzenia tak daleko tylko zacząłem Jaka była Twoja przybliżona stawka CAGR tylko przy użyciu modeli ARIMA bez firmy Garch Jak zdecydować, którą pozycję należy podjąć, gdy tylko prognoza na powrocie jest pozytywna i sprzedaj, jeśli jest ujemna, czy też wdrożisz minimalne progi, aby uniknąć sprzedaży lub zakupu jeśli różnica jest za mała Jeśli tak, to w jaki sposób zdefiniujesz te progi Czy mógłbyś przytoczyć niektóre z przyczyn, dla których nie prognozujesz oryginalnej serii Czy jest to warunek krytyczny IYO Czy możesz doradzić, jak mogę kontynuować moje dotychczasowe nieudane strategia. ARIMA bez GARCH nie jest bardzo dobra na S PY Nie na innych ETF Nawet w przypadku GARCH potrzebna jest dodatkowa praca, aby wymyślić coś w rodzaju handlowej zdolności. Zakładam, że jestem w stanie zrealizować transakcje na najbliższym końcu, co można osiągnąć w prawdziwym życiu Najłatwiejszy jest handel futures open 24 7 jednak trzeba dokładnie sprawdzić ją. ARMA GARCH są wykorzystywane na stacjonarnych szeregach czasowych Zwroty są stacjonarne, ceny zamknięcia nie są. Jestem początkującym przedsiębiorcą, który chce zastosować stopień w statystykach do świata rynków finansowych Widziałem, że nie Chcę podzielić się kodem z kilkoma laty, ale jeśli istnieje jakikolwiek skrypt formularza, który mógłbym przeszukiwać i używać, aby lepiej nauczyć się R, to byłbym bardziej niż wdzięczny, jeśli możesz wysłać to na mój sposób. Dzięki ponownie za post, był doskonały. Zawiera odpowiedź Anuluj odpowiedź. ARIMA Strategia GARCH w zakresie obrotu na indeksie giełdowym S P500 Korzystanie z R. W tym artykule chcę pokazać, jak wykorzystać całą wiedzę zdobytą w poprzednich punktach analizy serii do strategii handlowej na indeksie S P500 w USA ee, że łącząc modele ARIMA i GARCH możemy znacznie lepiej zrealizować podejście Buy-and-Hold w perspektywie długoterminowej. Strategia Overview. Idea strategii jest stosunkowo prosta, ale jeśli chcesz eksperymentować z nią, bardzo sugeruję przeczytanie poprzednich stanowiska w czasie analizy serii, aby zrozumieć, co zmieniłbyś. Strategia jest przeprowadzana w sposób ciągły. Dla każdego dnia, n, poprzednich k dni różniczkowych logarytmicznych zwrotów indeksu giełdowego są używane jako okno do dopasowania optymalnego modelu ARIMA i GARCH. Model łączony jest używany do przewidywania następnego dnia powrotu. Jeśli przewidywania są ujemne, zapas jest zwarty na poprzednim zamknięciu, a jeśli jest pozytywny, to jest tęsknotą. Jeśli przewidywania jest taki sam jak poprzedni dzień, nic się nie zmieniło. W tej strategii wykorzystałem maksymalnie dostępne dane z Yahoo Finance dla S P500, które zabrałem k 500, ale jest to parametr, który można zoptymalizować w celu poprawy e wydajność lub zmniejszenie wyskakiwania. Badanie typu backtest przeprowadza się w prosty sposób za pomocą wektora z użyciem R Nie została jeszcze wdrożona w backtesterze zdarzeń opartym na zdarzeniach Pythona. W związku z tym wydajność osiągnięta w rzeczywistym systemie obrotu prawdopodobnie będzie nieco mniejsza niż osiągnąć tutaj, z powodu prowizji i poślizgu. Strategiczne wdrożenie. Aby wdrożyć strategię będziemy używać niektórych kodów, które stworzyliśmy wcześniej w serii artykułów analizy szeregowej, a także kilka nowych bibliotek, w tym rugarch, co zostało zasugerowane mi przez Ilyę Kipnis nad QuantStrat Trader. Przejdę do składni w sposób krok po kroku, a następnie przedstawię pełną implementację na końcu, a także link do mojego zestawu danych dla wskaźnika ARIMA GARCH I ve włączone ostatnie bo zajęło mi kilka dni na komputerze z mozliwością dekstopu, aby wygenerować sygnały. Powinieneś móc replikować moje wyniki w całości, ponieważ sam kodeks nie jest zbyt złożony, chociaż to wymaga trochę czasu na symulowanie, czy to się wykonasz w całości. Pierwszym zadaniem jest zainstalowanie i zaimportowanie niezbędnych bibliotek w bibliotece R. Jeśli masz już zainstalowane biblioteki, po prostu zaimportuj je. W tym celu zostaną zastosowane strategię S P500 Możemy wykorzystać quantmod w celu uzyskania danych pochodzących z 1950 roku dla indeksu Finanse Yahoo używa symbolu GPSC. Jesteśmy w stanie następnie utworzyć zróżnicowane logarytmiczne zwroty z ceny zamknięcia S P500 i wyeliminować początkową wartość NA. Jesteśmy potrzebni utworzyć wektor, prognozy przechowywać nasze prognozy wartości w określonych datach Ustawienie długości foreLength jest równe długości danych handlowych mamy minus k, długość okna. Na tym etapie musimy pętli codziennie w danych handlowych i dopasuj odpowiedni model ARIMA i GARCH do okna kroczącego o długości. k Biorąc pod uwagę próbę 24 oddzielnych pasowań ARIMA i dopasowanie modelu GARCH, na każdy dzień wskaźnik może zająć dużo czasu na wygenerowanie. Używamy indeksu d jako pętli zmiennej i pętli od k do długości danych handlowych. Następnie tworzymy okno zwijania, przyjmując zwroty S P500 i wybierając wartości pomiędzy 1 d a kd, gdzie k 500 dla tej strategii. Używamy tej samej procedury, co w artykule ARIMA do wyszukiwania przez wszystkie modele ARMA z p in i q in, z wyjątkiem p, q 0. Zawijamy wywołanie arimaFit w bloku obsługi wyjątku tryCatch R, aby upewnić się, że jeśli nie zdołymy dopasować się do określonej wartości p i q , ignorujemy go i przejdźmy do następnej kombinacji p i q. Zauważ, że ustawiamy zintegrowaną wartość d0, to różni się od naszego parametru indeksowania i jako taki naprawdę pasuje do modelu ARMA, a nie ARIMA. Procedura zapętleniowa dostarczy nam najlepszego dopasowanego modelu ARMA pod względem kryterium informacyjnego Akaike, który może być wykorzystany do przesyłania danych do naszego modelu GARCH. W następnym bloku kodu będziemy używać biblioteki rugarch, a Model GARCH 1,1 Składnia wymaga tego, aby utworzyć specyfikację ugarchspec obiekt, który przyjmuje model wariancji i średniej Odchylenie otrzymuje model GARCH 1,1, podczas gdy średnia przyjmuje model ARMA p, q, w którym wybiera się p i q Ponadto wybieramy rozkład sutków w przypadku błędów. wybrali specyfikację, którą wykonujemy w rzeczywistym dopasowaniu ARMA GARCH przy użyciu polecenia ugarchfit, która przyjmuje obiekt specyfikacji, zwroty k S P500 i numeryczny optymalizator Wybraliśmy opcję hybrydową, która próbuje różnych solverów w celu zwiększenia prawdopodobieństwo zbieżności. Jeśli model GARCH nie zbieżny, po prostu ustawimy dzień, aby wyprodukować długi przepowiednię, co jest wyraźnie przypuszczeniem. Jeśli jednak model zbieżnie się z nami, wówczas wyprowadzamy kierunek przewidywania i jutro 1 lub -1 jako ciąg, w którym pętla jest zamknięta. W celu przygotowania wyjścia pliku CSV utworzyłem łańcuch zawierający dane oddzielone przecinkami kierunkiem prognozy następnego dnia. penultima te krokiem jest wyprowadzenie pliku CSV na dysk Dzięki temu możemy pobrać wskaźnik i używać go w alternatywnym oprogramowaniu do analizy danych, jeśli jest to pożądane. Jednak istnieje niewielki problem z plikiem CSV, ponieważ stoi on w tej chwili Plik zawiera listę dat i przewidywania na jutrzejszy kierunek Jeśli mamy załadować to do kodu testowego na dole, to faktycznie wprowadzimy tendencję do "look-ahead", ponieważ wartość predykcyjna oznaczałaby dane nie znane w czasie przewidywania. Aby to uwzględnić, po prostu musimy przenieść przewidzianą wartość na jeden dzień naprzód Znalazłem to bardziej proste przy użyciu Pythona Ponieważ nie chcę założyć, że masz zainstalowane specjalne biblioteki, takie jak pandy, ja ve przechowywano go w czystej Pythonie. Oto krótki skrypt, który wykonuje tę procedurę. Upewnij się, że uruchomisz ją w tym samym katalogu, co plik. W tym punkcie mamy teraz poprawiony plik wskaźników zapisany w pliku Ponieważ zajmuje to znaczną ilość czas na obliczenia, pod warunkiem, że podam pełny plik tutaj, aby można było pobrać siebie. Strategiczne wyniki. Teraz, gdy wygenerowaliśmy nasz wskaźnik pliku CSV, musimy porównać jego skuteczność z zakupem Hold. We najpierw czytamy w wskaźniku z pliku CSV i przechowuj go jako spArimaGarch. Następnie tworzymy przecięcie dat dla prognoz ARIMA GARCH i oryginalnych zestawów zwrotów z S P500 Możemy następnie wyliczyć zwroty dla strategii ARIMA GARCH poprzez pomnożenie prognozy lub - wraz z samym zwrotem Po uzyskaniu zwrotu z strategii ARIMA GARCH możemy tworzyć krzywe dotyczące kapitału zarówno dla modelu ARIMA GARCH, jak i dla Buy Hold Wreszcie łączymy je w jedną strukturę danych. Wreszcie możemy użyć komendy xyplot, aby wykreślić krzywe akcji na w tym samym wykresie. Krzywa kapitału własnego do 6 października 2018 roku przedstawia się następująco. Krzywa równowagi strategii ARIMA GARCH i kup Hold dla S P500 z roku 1952. Jak widać, w ciągu 65 lat strategia ARIMA GARCH ma znaczący wzrost Zauważ, że większość zysków zaobserwowano w latach 1970 i 1980. Zwróć uwagę, że zmienność krzywej jest dość minimalna do początku lat 80., w tym momencie zmienność znacząco wzrasta, a przeciętne zyski są mniej imponujące. Jasne jest, że krzywa kapitału zakładowego zapewnia wysoką wydajność w całym okresie. Czy ta strategia rzeczywiście była możliwa do zaoferowania. Przede wszystkim rozważmy fakt, że model ARiMR został opublikowany dopiero w 1951 r. Nie był on powszechnie stosowany do lat siedemdziesiątych Box Jenkins omówił to w swojej książce. Po drugie, model ARCH nie został odkryty publicznie do początku lat osiemdziesiątych, przez Engle i GARCH, opublikowany przez Bollerslev w 1986 roku. Po trzecie ten test został przeprowadzony na indeksie giełdowym i not a physically tradeable instrument In order to gain access to an index such as this it would have been necessary to trade S P500 futures or a replica Exchange Traded Fund ETF such as SPDR. Henc e is it really that appropriate to apply such models to a historical series prior to their invention An alternative is to begin applying the models to more recent data In fact, we can consider the performance in the last ten years, from Jan 1st 2005 to today. Equity curve of ARIMA GARCH strategy vs Buy Hold for the S P500 from 2005 until today. As you can see the equity curve remains below a Buy Hold strategy for almost 3 years, but during the stock market crash of 2008 2009 it does exceedingly well This makes sense because there is likely to be a significant serial correlation in this period and it will be well-captured by the ARIMA and GARCH models Once the market recovered post-2009 and enters what looks to be more a stochastic trend, the model performance begins to suffer once again. Note that this strategy can be easily applied to different stock market indices, equities or other asset classes I strongly encourage you to try researching other instruments, as you may obtain substantia l improvements on the results presented here. Now that we ve finished discussing the ARIMA and GARCH family of models, I want to continue the time series analysis discussion by considering long-memory processes, state-space models and cointegrated time series. These subsequent areas of time series will introduce us to models that can improve our forecasts beyond those I ve presented here, which will significantly increase our trading profitability and or reduce risk. Here is the full listing for the indicator generation, backtesting and plotting. And the Python code to apply to before reimporting. Just Getting Started with Quantitative Trading.

No comments:

Post a Comment