Backtesting trading strategies matlab
Chociaż chciałbym, gdzie to pytanie się powiedzie, chciałbym zaproponować nieco bardziej konkretne. Jakie części procesu testowania wyników chciałbyś się nauczyć Ten zakres może obejmować dowolne miejsce od szacowania zwykłego zwrotu, w którym portfel powraca z twojej strategii, a następnie algorytmicznie realizuje regułę tworzenia portfela. ndash Constantin Dec 30 14 at 21:06 Szczerze mówiąc nie wiem wiele o backtesting. Powiedziano mi, że będę musiał testować nowe strategie lub poprawić aktualny podczas mojego stażu. Przedtem chciałbym dowiedzieć się więcej o temacie. Jakie są różne jego części. ndash Maxime Dec 30 14 at 21:31 Ogólny pomysł W przypadku papierów wartościowych, prosty test typu backtest składa się zazwyczaj z dwóch etapów: Obliczanie wyniku z portfela wynikającego z reguły tworzenia portfela (lub strategii handlowej) Dostosowanie ryzyka do portfela przy użyciu model wyceny aktywów Krok 2 jest po prostu regresją i bardzo prosto obliczeniowo w Matlab. Czym trudniejsze jest wdrożenie kroku 1, który wymaga, abyś był w Matlab bardzo komfortowy i istnieją różne sposoby na to. Jeśli wiesz, jak wykonać regresję OLS w programie Matlab, należy skupić się na wszystkich rodzajach manipulacji matrycami. Wdrożenie w Matlab Tworzenie portfela i obliczanie zwrotu Aby dać przykład na to, jak można zrealizować pierwotną strategię handlową w programie Matlab, przyjąć dane dotyczące miesięcznych zwrotów i jednolity okres przechowywania jednego miesiąca na n zasobach w okresach k, gdzie i in i k w . Zakładając, że nie ma żadnych zmian w składzie twojego wszechświata zapasowego, macierz zwrotu X ma wymiary k razy n. X początek x amp punkty wzmacniacz ampułki xp kropki wzmacniacz x vdoty wzmacniacze ddots wzmacniacze vdots wzmacniacze ddots wzmacniacze vdots x amp punkty kropki wzmacniające amp x wzmacniacze wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniacza wzmacniającego są obliczane jako x frac -1. Zakładając, że kryterium wyboru jest jakąś cechą charakterystyczną, która jest dostępna w miesięcznej częstotliwości, będzie miała również macierz charakterystyczną C. Następnie można napisać algorytm identyfikujący te wpisy w C, które spełniają kryteria wyboru (np. Przekroczenie pewnego progu ) i zastąpić odpowiednie wpisy (gdzie i i t są takie same) matrycy wskaźnika I (która została zainicjowana jako macierz zera przy użyciu funkcji zera) z tymi. Następnie można pomnożyć wpisy I przez macierze zwrotu X, aby otrzymać macierz R, która wskazuje na zwroty wynikające z posiadania. Następnie można obliczyć średnią niezerowych pozycji dla każdego rzędu R, aby uzyskać wektor zwrotów portfela. Dostosowanie ryzyka i identyfikacja nieprawidłowych zwrotów W kroku 2 porównasz ten wektor z normalnymi dochodami uzyskanymi z regresji, w oparciu o model wyceny aktywów, taki jak model Fama-francuski. Przez odjęcie zwykłego wektora zwrotu z wektora zwrotu portfela można określić, czy strategia handlowa doprowadziła do pozytywnego, anormalnego zwrotu, czyli tego, na co chcesz. Zalecenia Jeśli jesteś początkujący w Matlab, osobiście sugeruję, abyś zapoznał się z nim wystarczająco do wdrożenia tej uproszczonej strategii przed odprężeniem niektórych uproszczonych założeń (takich jak jednorodny okres przechowywania i periodyczności) i przejście na bardziej wyrafinowane implementacje. Ponownie, chciałbym podkreślić, że wymaga to, abyś był bardzo komfortowy z Matlaba, a zwłaszcza z różnymi sposobami manipulowania matrycami, co może zająć trochę czasu. Jeśli nie potrzebujesz używać programu Matlab do stażu i chcesz szybko uzyskać wyniki, możesz zrobić krok 1 w programie Excel zamiast tego, co jest żmudne, ale nie wymaga (warto) inwestycji początkowej, którą musisz zrobić dla programu Matlab. Aby zapoznać się z Matlabem, jestem pewien, że już odkryłeś wyjątkowo dobrą dokumentację, która pochodzi z nim. Dla mnie jest to jedyny cenny zasób i prawdopodobnie bardziej przydatny niż jakiekolwiek inne zasoby finansowe (z którymi będę czekać, aż zaznajomisz się z samym Matlabem). Wszystko to, co jest wymagane do określenia normalnego zwrotu jest regresją OLS i podstawowym zrozumieniem modeli wyceny aktywów. odpowiedziało gru 30 14 w 22: 20MatlabTrading Ten post jest o tym, jak ważne jest użycie różnych typów metod optymalizacji, takich jak algorytmy genetyczne i równoległość, aby uzyskać szybsze wyniki. Optymalizacja algorytmów genetycznych Mimo że w ramach seminariów webowych MathWorks bardzo dobrze wyjaśniono zasadę algorytmu genetycznego (ewolucyjnego), w przykładach jest ona wykorzystywana jedynie do optymalizacji wyboru grupy strategii z zestawu. Jest to dobry przykład wykorzystania tych algorytmów, jednak zdarza się, że istnieje potrzeba ustawienia wielu zmiennych ze znacznymi odstępami dla jednej strategii, nie można uzyskać za pomocą jednej iteracji i równoległości procesów 8211 obliczenia mogą potrwać kilka dni . Z pewnością istnieją strategie w końcowym etapie optymalizacji. kiedy prawie na pewno wiemy, że strategia handlowa jest skuteczna, możemy czekać na kilka dni lub wynająć cały klaster - wynik może być tego wart. Jeśli jednak musimy oszacować wyniki nieporęcznej strategii i zdecydować, czy warto spędzić czas, wówczas algorytmy genetyczne mogą być idealnie dopasowane. Możemy wykorzystać trzy metody optymalizacji strategii w programie WFAToolbox: metoda liniowa 8211 jest to zwykły tryb sortowania, w którym widać wszystkie pośrednie (suboptymalne) wyniki. Daje maksymalną dokładność. Zostanie użyta równoległa metoda 8211 wszystkich jądra procesora. Nie pozwala na wyniki pośrednie, ale znacznie przyspiesza działanie. Daje maksymalną dokładność podczas zwiększania prędkości obliczeniowej. Metoda genetyczna 8211 wykorzystuje algorytm optymalizacji ewolucyjnej. Pozwala zobaczyć wartości suboptymalne, ale daje wynik bliski najlepszej. Nie jest to bardzo dokładna metoda, ale wystarczająco precyzyjna dla początkowego uruchomienia tej strategii. Bardzo szybki. Często pytano nas, czy WFAToolbox - Walk-Forward Analysis Toolbox for MATLAB ma możliwość korzystania z GPU w obliczeniach. Niestety, GPU nie nadaje się do wszystkich zadań, a jego zastosowanie jest bardzo specyficzne. Aby go używać, musisz dostosować logikę i kod każdej strategii testowania rdzeni graficznych. Niestety, ze względu na tak nie uniwersalność metody nie można używać GPU w WFAToolbox. Kontynuując część 2 dyskusji na temat problemów i rozwiązań w zakresie testowania i analizy algorytmicznej strategii handlowej w MATLAB, zapraszam do zapoznania się z niniejszym artykułem na temat problemu niedostępności wizualizacji procesów w nowoczesnych rozwiązaniach do testowania systemów transakcyjnych. Wizualizacja procesu testowania W moim doświadczeniu zawodowym często analizowałem inne popularne platformy testowania strategii handlowej. takich jak TradeStation. MetaStock. Multicharts itd. I zawsze byłem zdziwiony, jak niewiele uwagi poświęcono wizualizacji procesu testowania. Chodzi o to, że gdy nie widzimy wyników pośrednich, niższych od optymalnych wartości zoptymalizowanych parametrów, często wyrzucamy złoto wraz z brudem. Sprawą jest zbyt szerokie pobieranie próbek, strategia dostosowuje parametry w taki sposób, w jaki widzimy idealną strategię, która w rzeczywistości nie działa lub widzi jedną lub dwie transakcje, co najwyraźniej najlepsze, ponieważ zostało wybrane takie dane o przedziałach czasowych, w których najlepszą strategią handlową byłoby buy-and-hold, ale dlaczego są to inne strategie niezbędne do wizualizacji procesu testowania strategii handlowej w programie MATLAB (proponowane w seminarium internetowym) W rezultacie, bez widocznych wyników pośrednich, musimy zmodyfikować parametry, aby spróbować aby uzyskać lepsze dane lub oglądać go w niektórych 3D lub 4D (kolor jest czwartym wymiarem), zgodnie z propozycjami w seminariach internetowych. Analiza wartości w przestrzeniach N-wymiarowych może być alternatywą, ale ma kilka ograniczeń: Co zrobić, jeśli jest więcej niż 4 wymiary Kiedy zobaczysz, jakie sygnały i na jakiej częstotliwości pojawiają się w przedziale cenowym, masz prawie wszystkie konieczna wizualna reprezentacja Twojej strategii: częstotliwość transakcji, ich opłacalność (krzywa dochodu), dokładność otwarcia, podobieństwo do innych wartości suboptymalnych itd., których nie można powiedzieć o wydajności w przestrzeni N wymiarowej, gdzie wszystkie przydatne informacje jest rzeczywiście, że optymalna wartość to nie tylko jeden, ale w jednym lub więcej obszarach znajduje się cały szereg wartości suboptymalnych. Optymalizując strategię w WFAToolbox 8211 Walk-Forward Analysis Toolbox dla MATLAB174. gdy pojawi się nowa optymalna wartość, sygnały strategii handlowej w okresie w próbce i poza próbką natychmiast pojawiają się na wykresie, dzięki czemu zawsze możesz kontrolować zakres przypisywanych opcji, a także możesz wstrzymać optymalizację bez czekania na koniec testu, ponieważ staje się jasne, że coś poszło nie tak albo wszystko jest w porządku. Za chodź, nazywam się Igor Volkov. Od 2006 roku rozwijam algorytmiczną strategię handlową i pracowałem w kilku funduszach hedgingowych. W tym artykule chciałbym omówić trudności wynikające z opracowania strategii handlowych MATLAB podczas testowania i analizy, a także zaoferowania możliwych rozwiązań. Używam MATLAB do testowania strategii algorytmowych od 2007 roku i doszedłem do wniosku, że jest to nie tylko najbardziej wygodne narzędzie badawcze, ale również najskuteczniejsze, ponieważ pozwala na wykorzystanie złożonych modeli statystycznych i ekonometrycznych, sieci neuronowych, uczenia maszyn, filtrów cyfrowych, logiki rozmytej itd. przez dodanie przybornika. Język MATLAB jest dość prosty i dobrze udokumentowany, więc nawet nie-programista (jak ja) może go opanować. Jak to się wszystko zaczęło. Było to rok 2008 (jeśli się nie mylę), gdy wydano pierwsze seminarium internetowe dotyczące handlu algorytmami w MATLAB z Ali Kazaam, obejmujące temat optymalizacji prostych strategii opartych na wskaźnikach technicznych itd., Pomimo 8220chaotic8221 kodu, narzędzia były ciekawe wystarczy użyć. Służyły one jako punkt wyjścia do badań i ulepszania modelu testowania i analizy, który pozwoliłby na wykorzystanie całej mocy skrzynek narzędziowych i swobody działań MATLAB podczas tworzenia własnych strategii handlowych, a jednocześnie pozwoliłoby na kontrolę procesu testów i uzyskanych danych oraz ich późniejszej analizy pozwoliłyby wybrać skuteczny portfel solidnych systemów obrotu. Następnie seminaria z programu Mathworks zostały corocznie aktualizowane i stopniowo wprowadzane coraz bardziej interesujące elementy. W 2017 r. Odbyło się pierwsze internetowe seminarium dotyczące handlu parami (arbitraż statystyczny) przy użyciu narzędzia Econometric Toolbox, chociaż przybornik narzędzi testowania i analizy pozostał taki sam. W 2017 r. Pojawiła się skrzynka "Trading Toolkit" z Mathworks, która pozwoliła na połączenie MATLAB z różnymi brokerami w celu realizacji ich aplikacji. Choć istniały automatyczne rozwiązania dla realizacji transakcji, od tego momentu MATLAB można uznać za system opracowywania strategii handlowych z pełnym cyklem: od ładowania danych do realizacji zautomatyzowanych strategii handlowych. Dlaczego powinienem każdy Algotrader ponownie zająć się kołem? Mathworks nie zaoferował jednak kompletnego rozwiązania do testowania i analizy strategii 8211, które mogłyby wydostać się z internetowych seminariów były jedynymi elementami pełnego testu systemu i konieczne było ich modyfikowanie , dostosuj je i dodaj je do GUI dla łatwiejszego użycia. Było to bardzo czasochłonne, stąd postawiono pytanie: niezależnie od strategii, musi przejść ten sam proces testowania i analizy, co pozwoliłoby sklasyfikować go jako stabilny i użyteczny 8211, więc dlaczego każdy powinien zapełnić koło i napisać hisher własny kod dla odpowiednich strategii testowania w MATLAB Więc podjęto decyzję o stworzeniu produktu, który umożliwiłby wykonanie całego procesu związanego z testowaniem i analizą algorytmicznych strategii handlowych przy użyciu prostego i przyjaznego dla użytkownika interfejsu. Przede wszystkim chciałbym odpowiedzieć na następujące pytania: Co się stało z blogiem? Jev Kuznetsov nie jest już właścicielem blog został zakupiony od naszego przyjaciela, Jeva Kuznetsov, który przeniósł się do innego bloga tradingwithpython. blogspot. Doszedł do wniosku, że Python jest lepszy niż MATLAB w handlu, co uważałem za fałszywe. MATLAB pozostaje jednym z najlepszych programów na świecie dla algorytmicznego handlu IMHO (mam kilka faktów na ten temat, choć na przyszłość). 2. Zmieniliśmy markę Od tego momentu blog będzie nazywał MatlabTrading, co jest znacznie bardziej zrozumiałe w odniesieniu do tematów, które będzie zawierać. Ponadto nazwa domeny została zmieniona na matlabtrading zamiast początkowego matlab trading. blogspot. mimo że stara domena nadal pracuje przekierowując z pierwotnej nazwy domeny. Co stanie się z blogem 1. Więcej postów i artykułów Mamy nadzieję, że życie to blogu, publikując jedną lub dwie lub dwa razy w tygodniu. W ciągu pierwszych kilku miesięcy będziemy publikować głównie te artykuły i filmy, które musimy teraz ułatwić naszym drogim czytelnikom w poszukiwaniu informacji o jednym zasobze i ich usieciowaniu. Potem planujemy pisać posty o praktycznych aspektach handlu algorytmicznego w MATLAB. Jak stworzyć nowoczesne strategie automatycznego handlu, takie jak: strategiczne strategie handlu arbitrażem średnie rynki odwracania neutralne strategie handlowe oparte na kointegrujących zespołach bollingera filtrów kalmana itp. Na towary, zapasy i Forex. Strategie dotyczące następujących trendów: Jurik Moving Average i inne wyrafinowane filtry cyfrowe Prognozowanie strategii dzięki uczeniu maszyn (Support Vector Machines) i innych metod Stworzenie skutecznych strategii handlowych przy użyciu wizualnych walk-forward testowania zarządzania pieniędzmi w celu reinwestowania kapitału (nauka na temat uzyskania 1M od 10K w ciągu roku z maksymalnym, ale szacowanym ryzykiem i nagrodami na pot). Może po przeczytaniu tego pomyślałeś, że to będzie kolejny głupi artykuł dla tych biednych facetów, którzy chcą, jak stać się bogatym w handlu na forex i wszystko to. Cóż, to jest całkowicie fałszywe Pracujemy w MATLAB, a większość z nas to naukowcy i eksperci w tym aspekcie, więc wszystko jest poważnie. 2. Bardziej interaktywność Będę szczęśliwa, jeśli możemy wszystkie komentarze w komentarzach. Subskrybuj nasze wiadomości, aby otrzymywać powiadomienia o najnowszych wpisach i wydarzeniach. Później planujemy przeprowadzić seminaria Google Hangouts. Nie przegap tego, kliknij przycisk Śledź w prawym górnym rogu, aby dołączyć do naszej społeczności. Co chciałbyś przeczytać w naszych blogach Jakie tematy możesz zasugerować Proszę napisz tutaj w komentarzach. W moim poprzednim artykule doszedłem do wniosku, że zbliżanie się do pary transakcji nie jest tak opłacalne, jak było przed rokiem 2017. Czytelnik zauważył, że może to oznaczać, że średnia zwrotność spreadów została przesunięta na skróty . Zdarzyło mi się dzielić ten sam pomysł, więc postanowiłem przetestować tę hipotezę. Tym razem testowana jest tylko jedna para: 100 SPY vs -80 IWM. Badanie kontrolne przeprowadza się w 30-sekundowych danych paska od 11.2017 do 12.2017. Reguły są proste i podobne do testowanej strategii w ostatnim poście: jeśli pasek powrotu pary przekracza 1 na z-score, zrób kolejny pasek. Wynik wygląda bardzo ładnie: uważałbym, że jest to wystarczający dowód na to, że nadal istnieje duża średnia wersja na 30 sekund. Jeśli uważasz, że ten wykres jest zbyt dobry, aby być prawdą, to niestety tak jest. Nie brano pod uwagę kosztów transakcji ani spreadu z ofertą. W zasadzie chciałbym wątpić, czy po odjęciu wszystkich kosztów handlowych pozostawiłby się jakiś zysk. Mimo to tego rodzaju wykresy to marchewka zwisająca przed moim nosem, trzymając mnie w spokoju. Złe wieści, według moich obliczeń, (które mam szczerą nadzieję, że są błędne), transakcje klasycznych par są martwe. Niektórzy ludzie by się zdecydowanie nie zgodzili, ale oto, co znalazłem: Pozwala podjąć hipotetyczną strategię, która działa na koszach etnicznych: SPY, XLY, XLE, XLF, XLI, XLB, XLK, IWM, QQQ, DIA Z tych etatów 90 unikalnych można wykonać parę. Każda para jest zbudowana jako neutralny dla rynku. Zasady strategii: każdego dnia, dla każdej pary, obliczyć z-score na podstawie 25-dniowego odchylenia standardowego. Jeśli próg z zerowej wartości granicznej, przejdź krótko, z bliska następnego dnia Jeśli z-score (długość łańcucha) zniknie długo, zamknij następnego dnia Aby zachować to proste, obliczenia są wykonywane bez zarządzania kapitałem (można mieć do 90 par w portfelu w każdy dzień). Koszty transakcji nie są brane pod uwagę. Mówiąc prosto, ta strategia śledzi jeden dzień średni zwrotny charakter neutralnych rynkowych spreadów. Oto wyniki symulowane dla kilku progów: niezależnie od tego, jaki jest próg, strategia ta jest wysoce rentowna w 2008 r., Dość dobry w 2009 r. I zupełnie bezwartościowa od początku 2017 r. To nie pierwszy raz natknąłem się na tę zmianę w średnio zwracającym zachowanie w etfach. Niezależnie od tego, co próbowałem, nie miałem szczęścia w znalezieniu par strategii handlowej, która działałaby na ETF w 2017 roku. Moim wnioskiem jest to, że te typy prostych modeli stat-arb już nie wycinają więcej. Backtesting Waliduj modele finansowe z historycznymi dane Backtesting to ramy, które wykorzystują historyczne dane do zatwierdzania modeli finansowych, w tym strategii handlowych i modeli zarządzania ryzykiem. W zależności od celu walidacji, profesjonalnego wykorzystania finansowego więcej niż jednego wskaźnika lub metodologii mierzenia skuteczności modeli finansowych. Badanie wstępne jest rutynowo wykonywane w handlu i zarządzaniu ryzykiem. W rezultacie istnieje szereg dedykowanych technik testowania wstecznego, które są specyficzne dla tych dwóch obszarów. W handlu, wspólne techniki backtestingu obejmują: testowanie w próbce w porównaniu z próbą poza próbą Analiza przejściowa lub optymalizacja walk-forward Analiza na poziomie instrumentu a ocena na poziomie portfela W zarządzaniu ryzykiem testy backtesting stosuje się zasadniczo do wartości - risk (VaR) i jest również znany jako test VaR backtesting. Istnieją różne techniki testowania VaR, takie jak: test światła bazowego Base Test dwumianowy Kupiecs proporcja testów awarii Kupiec czas do pierwszego testu niepowodzenia test warunkowego testu Christoffersens Test mieszany test Christoffersens test niezależności Haas czas pomiędzy błędami lub mieszanym testem firmy Kupiec Czas między awariami niezależności test Wybierz krajowy sukces testowania algorytmicznych strategii handlowych - część I W tym artykule jest kontynuacja serii obrotu ilościowego, która rozpoczęła się od Podręcznika dla początkujących i identyfikacji strategii. Oba te dłuższe, bardziej zaangażowane artykuły były bardzo popularne, więc Ill kontynuuje się w tej tkance i udostępnia szczegół na temat analizy wyników strategii. Algorytmowe testy wsteczne wymaga znajomości wielu dziedzin, w tym psychologii, matematyki, statystyki, rozwoju oprogramowania i mikrostruktury wymiany rynku. Nie mogłem mieć nadziei obejmować wszystkie te tematy w jednym artykule, więc podzielę je na dwa lub trzy mniejsze kawałki. Co omówimy w tej sekcji Zaczynam od zdefiniowania testów wstecznych, a następnie opiszę podstawy jego przeprowadzania. Potem będę wyjaśniać uprzedzenia, jakie dotknęliśmy w Przewodniku dla początkujących w zakresie ilościowego obrotu. Następnie przedstawię porównanie różnych dostępnych opcji oprogramowania do testów backtestingu. W kolejnych artykułach przyjrzymy się szczegółowym szczegółom implementacji strategii, które często są wymienione lub ignorowane. Rozważymy także, jak sprawić, aby proces testowania wyników był bardziej realistyczny, włączając w to idiosynkręty wymiany handlowej. Następnie omówimy koszty transakcji i poprawnie je wyliczymy w ustawieniach testowych. Kończymy dyskusję na temat wyników naszych testów wstecznych i ostatecznie przedstawimy przykład wspólnej strategii kwantowej, znanej jako handel średnio odwracających się par. Zacznijmy od omówienia tego, co to jest testy zwrotności i dlaczego powinniśmy to przeprowadzić w naszym handlu algorytmicznym. Co to jest Backtesting Algorithmic Trading różni się od innych typów klas inwestycyjnych, ponieważ możemy bardziej niezawodnie dostarczyć oczekiwanie na przyszłe wyniki z wcześniejszych wyników, w wyniku dużej dostępności danych. Proces przeprowadzania tego procesu jest znany jako test wstępny. W prostych słowach testowanie danych przeprowadzane jest poprzez odsłonięcie danego algorytmu strategicznego na strumień historycznych danych finansowych, co prowadzi do zestawienia sygnałów handlowych. Każdy handel (co oznaczamy tutaj jako round-trip dwóch sygnałów) będzie miało powiązany zysk lub stratę. Nagromadzenie tego zysku w czasie trwania testu strategii doprowadzi do całkowitego zysku i straty (znanego również jako PL lub PnL). To jest istota tego pomysłu, chociaż oczywiście diabeł jest zawsze w szczegółach Jakie są główne powody do testowania strategii algorytmicznej Filtracja - jeśli pamiętasz w artykule o identyfikacji strategii. naszym celem na początkowym etapie badawczym było opracowanie rurociągu strategicznego, a następnie wyeliminowanie wszelkich strategii, które nie spełniają określonych kryteriów. Badanie zwrotne zapewnia nam inny mechanizm filtracji, ponieważ możemy wyeliminować strategie, które nie spełniają naszych wymagań wydajnościowych. Modelowanie - testowanie wsteczne pozwala nam (w sposób bezpieczny) testować nowe modele pewnych zjawisk rynkowych, takich jak koszty transakcji, routing zamówienia, opóźnienia, płynność czy inne problemy związane z mikrostrukturą na rynku. Optymalizacja - chociaż optymalizacja strategii jest obarczona uprzedzeniami, testy wstępne pozwalają nam zwiększyć skuteczność strategii poprzez modyfikowanie ilości lub wartości parametrów związanych z tą strategią i ponowne obliczanie jej skuteczności. Weryfikacja - nasze strategie są często pozyskiwane z zewnątrz, za pośrednictwem naszego rurociągu strategicznego. Sprawdzenie strategii zapewnia, że nie została ona nieprawidłowo wdrożona. Chociaż rzadko będziemy mieli dostęp do sygnałów generowanych przez zewnętrzne strategie, często będziemy mieli dostęp do danych o wydajności, takich jak współczynnik Sharpe Ratio i Drawdown. Możemy więc porównać je z naszą własną implementacją. Badanie zwrotne zapewnia wiele korzyści dla handlu algorytmicznego. Jednak nie zawsze możliwe jest bezpośrednie sprawdzenie strategii. Ogólnie rzecz ujmując, wraz ze wzrostem częstotliwości strategii, trudniej jest poprawnie modelować efekty mikrostrukturalne rynku i wymiany. Prowadzi to do mniej wiarygodnych testów wstecznych, a tym samym do bardziej rzetelnej oceny wybranej strategii. Jest to szczególny problem, w którym system wykonawczy jest kluczem do skuteczności strategii, podobnie jak algorytmy ultra wysokiej częstotliwości. Niestety badanie wstępne jest obarczone uprzedzeniami wszystkich typów. W poprzednich artykułach omówiliśmy niektóre z powyższych kwestii, ale omówimy je szczegółowo. Czynniki wpływające na strategię testów wstecznych Istnieje wiele uprzedzeń, które mogą wpływać na wydajność testowanej strategii. Niestety, te uprzedzenia mają tendencję do nadmuchania wydajności, a nie zniechęcają się do niej. W związku z tym należy zawsze rozważyć test z oceną wyników do wyidealizowania górnej granicy rzeczywistego wykonania strategii. Prawie niemożliwe jest wyeliminowanie uprzedzeń z handlu algorytmem, więc naszym zadaniem jest zminimalizowanie ich jak najlepiej, aby móc podejmować świadome decyzje dotyczące naszych algorytmicznych strategii. Istnieją cztery główne uprzedzenia, które chciałbym omówić: Optymalizacja optymalizacji. Spojrzenie na przyszłość. Survivorship Bias i Tolerancja Tolerancji Psychologicznej. Optymalizowanie nastawienia Jest to prawdopodobnie najbardziej podstępne nastawienie wszystkich testów. Obejmuje dostosowanie lub wprowadzenie dodatkowych parametrów handlowych, dopóki wydajność strategii w zestawie danych zaplecza nie jest atrakcyjna. Jednakże, kiedyś realizacja strategii może się znacznie różnić. Inną nazwą tego nastawienia jest krzywa dopasowania lub przesunięcie danych stronniczości. Skłonność do optymalizacji jest trudna do wyeliminowania, gdyż strategie algorytmiczne często zawierają wiele parametrów. Parametrami w tym przypadku mogą być kryteria wstępne, okresy zwrotu, uśrednione okresy (tj. Średni ruchowy parametr wygładzania) lub częstotliwość pomiaru zmienności. Optymalizację stronniczości można zminimalizować, utrzymując minimalną liczbę parametrów i zwiększając ilość punktów danych w zestawie szkoleniowym. W rzeczywistości trzeba też uważać na te ostatnie, ponieważ starsze punkty szkolenia mogą podlegać wcześniejszemu reżimowi (takim jak środowisko regulacyjne), a zatem może nie być istotne dla aktualnej strategii. Jedną z metod pomagania złagodzeniu tego nastawienia jest przeprowadzenie analizy wrażliwości. Oznacza to zróżnicowanie parametrów przyrostowo i wykreślenie powierzchni działania. Dźwięk, podstawowe uzasadnienie wyboru parametru, przy uwzględnieniu wszystkich innych czynników, prowadzi do gładszej powierzchni parametrów. Jeśli masz bardzo jumpy wydajność, często oznacza to, że parametr nie odzwierciedla zjawisk i jest artefaktem danych testowych. Istnieje ogromna literatura w sprawie wielowymiarowych algorytmów optymalizacji i jest bardzo aktywnym obszarem badań. Nie będę tu mieszkał, ale pamiętaj o tym w głowie, kiedy znajdziesz strategię z fantastycznym backtestem Look-Ahead Bias Spojrzenie na przyszłość jest wprowadzane do systemu testów wstecznych, gdy przyszłe dane są przypadkowo włączone do punktu w symulacji, jeżeli dane te nie byłyby w rzeczywistości dostępne. Jeśli używamy testu z opóźnieniem czasowym i dojdziemy do punktu czasowego N, wtedy jeśli dane są dołączone do dowolnego punktu Nk, wówczas wystąpi tendencja do "look-ahead", gdzie k0. Błędy naprzód z wyprzedzeniem mogą być niezwykle subtelne. Oto trzy przykłady tego, jak można wyprzedzić nastawienie: Błędy techniczne - Arraysvectors w kodzie często mają iteratory lub zmienne indeksowe. Niewłaściwe przesunięcia tych indeksów mogą prowadzić do przesuwania się naprzód, dodając dane do Nk dla niezerowego k. Obliczanie parametrów - kolejny wspólny przykład tendencji wyprzedzających występuje przy obliczaniu optymalnych parametrów strategii, takich jak regresje liniowe między dwiema seriami czasowymi. Jeśli cały zestaw danych (łącznie z przyszłymi danymi) jest używany do obliczania współczynników regresji, a tym samym z mocą wsteczną stosowaną do strategii handlowej dla celów optymalizacji, wówczas tworzone są przyszłe dane i pojawia się uprzedzenie. MaximaMinima - niektóre strategie handlowe wykorzystują skrajne wartości w dowolnym okresie czasu, na przykład w celu uwzględnienia wysokich lub niskich cen w danych OHLC. Jednakże, ponieważ te maksymalne wartości minimalne można obliczyć dopiero po upływie okresu czasu, w przypadku gdy wartości te są używane - w trakcie bieżącego okresu, wprowadza się tendencję do odchylania. Konieczne jest zawsze utrzymywanie wartości highlow przynajmniej o jednym okresie w każdej strategii handlowej wykorzystującej je. Podobnie jak w przypadku optymalizacji, trzeba bardzo uważać, aby uniknąć jej wprowadzenia. Często jest to główny powód, dla którego strategie handlowe słabo wpływają na wyniki backtestu w handlu na żywo. Utrata wytrwałości Bias Surwiwizm stronnictwa jest szczególnie niebezpiecznym zjawiskiem i może prowadzić do znacznego napełnienia wydajności niektórych typów strategii. Występuje, gdy strategie są testowane na zbiorach danych, które nie obejmują pełnego zbioru wcześniejszych zasobów, które mogły zostać wybrane w określonym momencie, ale tylko te, które przetrwały do obecnego czasu. Jako przykład warto rozważyć testowanie strategii na losowym wyborze akcji przed i po katastrofie na rynku w 2001 r. Niektóre zapasy technologiczne upadły, a inne zdołały utrzymać się na powierzchni, a nawet prosperować. Gdybyśmy ograniczyli tę strategię tylko do zasobów, które doprowadziły do tego przez okres wycofywania z rynku, wprowadzilibyśmy namiestnicę z powodu przetrwania, ponieważ udowodniły już nam swój sukces. W rzeczywistości jest to kolejny konkretny przypadek tendencyjnego nastawienia, ponieważ przyszłe informacje są włączane do wcześniejszej analizy. Istnieją dwa główne sposoby na złagodzenie odchyleń przetrwania w strategicznych testach: Survivorship Bias Free Datasets - w przypadku danych dotyczących kapitału własnego można zakupić zestawy danych obejmujące podmioty zdez - stępowane, chociaż nie są tańsze i zazwyczaj wykorzystywane przez instytucje instytucjonalne . W szczególności dane Yahoo Finance NIE są stronniczą stroną pozbawienia wolności i są powszechnie stosowane przez wielu handlowców detalicznych. Można także handlować na klasach aktywów, które nie są podatne na uprzedzenia, takie jak niektóre towary (i ich przyszłe instrumenty pochodne). Użyj najnowszych danych - w przypadku akcji skorzystanie z najnowszego zestawu danych ogranicza możliwość, że wybrany wybór zapasów jest ważony dla osób pozostałych przy życiu, ponieważ istnieje mniejsze prawdopodobieństwo całkowitego wycofania zapasów w krótszym okresie. Można również rozpocząć budowę osobistego zbioru danych dotyczących bezsilności, bez przeoczenia, gromadząc dane z bieżącego punktu. Po 3-4 latach będziesz miał stały pakiet informacji o akcjach, który umożliwi nam sprawdzenie kolejnych strategii. Zastanówmy się teraz nad pewnymi zjawiskami psychologicznymi, które mogą mieć wpływ na wyniki handlowe. Tolerancja tolerancji psychologicznej Te szczególne zjawiska nie są często dyskutowane w kontekście handlu ilościowego. Omawiane jest jednak szeroko w odniesieniu do bardziej dyskrecjonalnych metod handlu. Ma różne nazwy, ale postanowiłem nazwać psychologiczną tolerancją stronniczości, ponieważ ujmuje istotę problemu. Podczas tworzenia testów wstecznych przez okres 5 lat lub dłużej łatwo jest spojrzeć na krzywą akcji, wyliczyć łączny roczny zwrot, współczynnik Sharpe'a, a nawet charakterystyki wypłaty i być zadowolony z wyników. Przykładowo, strategia może mieć maksymalny względny wypłat wynoszący 25 i maksymalny czas wypłaty wynoszący 4 miesiące. Nie byłoby to nietypowe dla strategii pędu. Łatwo jest sobie wyobrazić, że łatwo jest tolerować takie okresy strat, ponieważ ogólny obraz jest różowy. Jednak w praktyce jest o wiele trudniejsze Jeśli historyczne wypłaty 25 lub więcej wystąpią w testach wstecznych, najprawdopodobniej zobaczysz okresy podobnego wypłaty w obrocie na żywo. Te okresy wypłaty są psychicznie trudne do zniesienia. Zauważyłem pierwszą rękę, jak może się wydawać rozbudowane rozładunek, w warunkach instytucjonalnych, a to nie jest przyjemne - nawet jeśli testy wsteczne sugerują takie okresy. Powodem, dla którego nazwałem to nastawienie, jest to, że często strategia, która w przeciwnym razie zakończy się powodzeniem, zostanie zatrzymana z obrotu w czasach przedłużonego wycofania, a tym samym doprowadzi do znacznej niesprawności w porównaniu z testem wstecznym. Tak więc, mimo że strategia ma charakter algorytmiczny, czynniki psychologiczne mogą nadal mieć duży wpływ na rentowność. Takeaway jest zapewnienie, że jeśli zobaczysz wypłaty pewnego procentu i czasu trwania testów wstecznych, należy spodziewać się, że mają one miejsce w środowiskach obrotu na żywo i będą musiały wytrwać w celu osiągnięcia rentowności jeszcze raz. Pakiety oprogramowania do testowania wstecznego Obszar oprogramowania do testowania strategii jest ogromny. Rozwiązania obejmują w pełni zintegrowane zaawansowane klasy instytucjonalne, aż po języki programowania, takie jak C, Python i R, gdzie prawie wszystko musi być zapisane od podstaw (lub odpowiednie wtyczki). As quant traders we are interested in the balance of being able to own our trading technology stack versus the speed and reliability of our development methodology. Here are the key considerations for software choice: Programming Skill - The choice of environment will in a large part come down to your ability to program software. I would argue that being in control of the total stack will have a greater effect on your long term PL than outsourcing as much as possible to vendor software. This is due to the downside risk of having external bugs or idiosyncrasies that you are unable to fix in vendor software, which would otherwise be easily remedied if you had more control over your tech stack. You also want an environment that strikes the right balance between productivity, library availability and speed of execution. I make my own personal recommendation below. Execution CapabilityBroker Interaction - Certain backtesting software, such as Tradestation, ties in directly with a brokerage. I am not a fan of this approach as reducing transaction costs are often a big component of getting a higher Sharpe ratio. If youre tied into a particular broker (and Tradestation forces you to do this), then you will have a harder time transitioning to new software (or a new broker) if the need arises. Interactive Brokers provide an API which is robust, albeit with a slightly obtuse interface. Customisation - An environment like MATLAB or Python gives you a great deal of flexibility when creating algo strategies as they provide fantastic libraries for nearly any mathematical operation imaginable, but also allow extensive customisation where necessary. Strategy Complexity - Certain software just isnt cut out for heavy number crunching or mathematical complexity. Excel is one such piece of software. While it is good for simpler strategies, it cannot really cope with numerous assets or more complicated algorithms, at speed. Bias Minimisation - Does a particular piece of software or data lend itself more to trading biases You need to make sure that if you want to create all the functionality yourself, that you dont introduce bugs which can lead to biases. Speed of Development - One shouldnt have to spend months and months implementing a backtest engine. Prototyping should only take a few weeks. Make sure that your software is not hindering your progress to any great extent, just to grab a few extra percentage points of execution speed. C is the elephant in the room here Speed of Execution - If your strategy is completely dependent upon execution timeliness (as in HFTUHFT) then a language such as C or C will be necessary. However, you will be verging on Linux kernel optimisation and FPGA usage for these domains, which is outside the scope of this article Cost - Many of the software environments that you can program algorithmic trading strategies with are completely free and open source. In fact, many hedge funds make use of open source software for their entire algo trading stacks. In addition, Excel and MATLAB are both relatively cheap and there are even free alternatives to each. Now that we have listed the criteria with which we need to choose our software infrastructure, I want to run through some of the more popular packages and how they compare: Note: I am only going to include software that is available to most retail practitioners and software developers, as this is the readership of the site. While other software is available such as the more institutional grade tools, I feel these are too expensive to be effectively used in a retail setting and I personally have no experience with them. Backtesting Software Comparison Description: High-level language designed for speed of development. Wide array of libraries for nearly any programmatic task imaginable. Gaining wider acceptance in hedge fund and investment bank community. Not quite as fast as CC for execution speed. Execution: Python plugins exist for larger brokers, such as Interactive Brokers. Hence backtest and execution system can all be part of the same tech stack. Customisation: Python has a very healthy development community and is a mature language. NumPySciPy provide fast scientific computing and statistical analysis tools relevant for quant trading. Strategy Complexity: Many plugins exist for the main algorithms, but not quite as big a quant community as exists for MATLAB. Bias Minimisation: Same bias minimisation problems exist as for any high level language. Need to be extremely careful about testing. Development Speed: Pythons main advantage is development speed, with robust in built in testing capabilities. Execution Speed: Not quite as fast as C, but scientific computing components are optimised and Python can talk to native C code with certain plugins. Cost: FreeOpen Source Description: Mature, high-level language designed for speed of execution. Wide array of quantitative finance and numerical libraries. Harder to debug and often takes longer to implement than Python or MATLAB. Extremely prevalent in both the buy - and sell-side. Execution: Most brokerage APIs are written in C and Java. Thus many plugins exist. Customisation: CC allows direct access to underlying memory, hence ultra-high frequency strategies can be implemented. Strategy Complexity: C STL provides wide array of optimised algorithms. Nearly any specialised mathematical algorithm possesses a free, open-source CC implementation on the web. Bias Minimisation: Look-ahead bias can be tricky to eliminate, but no harder than other high-level language. Good debugging tools, but one must be careful when dealing with underlying memory. Development Speed: C is quite verbose compared to Python or MATLAB for the same algorithmm. More lines-of-code (LOC) often leads to greater likelihood of bugs. Execution Speed: CC has extremely fast execution speed and can be well optimised for specific computational architectures. This is the main reason to utilise it. Cost: Various compilers: LinuxGCC is free, MS Visual Studio has differing licenses. Different strategies will require different software packages. HFT and UHFT strategies will be written in CC (these days they are often carried out on GPUs and FPGAs ), whereas low-frequency directional equity strategies are easy to implement in TradeStation, due to the all in one nature of the softwarebrokerage. My personal preference is for Python as it provides the right degree of customisation, speed of development, testing capability and execution speed for my needs and strategies. If I need anything faster, I can drop in to C directly from my Python programs. One method favoured by many quant traders is to prototype their strategies in Python and then convert the slower execution sections to C in an iterative manner. Eventually the entire algo is written in C and can be left alone to trade In the next few articles on backtesting we will take a look at some particular issues surrounding the implementation of an algorithmic trading backtesting system, as well as how to incorporate the effects of trading exchanges. We will discuss strategy performance measurement and finally conclude with an example strategy. Just Getting Started with Quantitative Trading
Comments
Post a Comment