Tuesday 5 December 2017

Przewożenie średnio piramidy


Sprawdzanie przecięcia średniej rozdrożu w Pythonie z pandasem. W poprzednim artykule poświęconym Środowisku testowania zaplecza W Pythonie Z programem Pandas stworzyliśmy środowisko testowania bazującego na obiektach i testowaliśmy je w oparciu o strategię prognozowania losowego W tym artykule wykorzystamy maszyny, które wprowadziliśmy w celu przeprowadzenia badań nad rzeczywistą strategią, mianowicie Moving Average Crossover na AAPL. Moving Average Crossover Strategy. Średnia ruchoma technika przenoszenia jest bardzo znaną strategią uproszczonej pędu Jest to często postrzegany jako Hello World przykład handlu ilościowego Strategia opisana tutaj jest długotrwała Tylko dwie oddzielne, proste, średnie ruchome filtry są tworzone, z różnymi okresami wyszukiwania, określonej serii czasowej Sygnały dotyczące zakupu majątku mają miejsce wtedy, gdy krótszy wskaźnik średniej ruchomej przewyższa dłuższą średnią ruchową, jeśli średnia średnia przewyższa krótsze średnie, aktywa są sprzedawane z powrotem Strategia nas działa kiedy seria czasu przechodzi w okres silnej tendencji, a następnie powoli odwraca trend. W tym przykładzie wybrałem firmę Apple, Inc. AAPL jako serię czasu, z krótkim spojrzeniem na 100 dni i długim spojrzeniem na 400 dni. przykład dostarczony przez bibliotekę handlu algorytmicznego zipline Więc jeśli chcemy wdrożyć własny backtester musimy upewnić się, że jest zgodny z wynikami w liniach pocztowych, jako podstawowym środkiem walidacji. Pamiętaj, aby przejść do poprzedniego samouczka, który opisuje, jak początkowy hierarchia obiektów dla backtest jest skonstruowana, w przeciwnym razie poniższy kod nie będzie działał W tej konkretnej implementacji używałem następujących bibliotek. Implementacja wymaga od poprzedniego samouczka. Pierwszym krokiem jest import niezbędnych modułów i obiektów. Jak w poprzednim samouczek, będziemy podklasować strategiczną klasę bazową Strategy w celu stworzenia MovingAverageCrossStrategy, która zawiera wszystkie szczegóły dotyczące generowania sygnałów podczas przenoszenia av wymazywanie krzywej AAPL. Obiekt wymaga krótkiego podmodułu i długiej tryby pracy. Wartości ustawiono domyślnie na 100 dni i 400 dni, które są tymi samymi parametrami, co w głównym przykładzie linii zipline. średnie tworzone są za pomocą funkcji walcowania pandas na prętach Zamknij cena zamknięcia zapasów AAPL Po skonstruowaniu poszczególnych średnic ruchu, seria sygnałów jest generowana przez ustawienie wartości równej 1 0, gdy średnia krótkotrwała jest większa niż długa średnia ruchoma lub 0 0 w przeciwnym razie Z tego można generować zlecenia rozliczeniowe w celu reprezentowania sygnałów handlowych. MarketOnClosePortfolio jest podklasowany z portfela, który znajduje się w jego prawie identycznym z implementacją opisaną w poprzednim samouczku, z wyjątkiem transakcji są obecnie realizowane na zasadzie "blisko do zamknięcia", a nie na zasadzie typu "otwarty". Szczegółowe informacje na temat definicji obiektu portfela można znaleźć w poprzednim punkcie utorial I've pozostawił kod w dla kompletności i utrzymać ten samouczek samouczka. Kiedy zostały zdefiniowane MovingAverageCrossStrategy i MarketOnClosePortfolio klasy, zostanie wywołana główna funkcja, aby powiązać wszystkie funkcje razem Ponadto wydajność strategii będzie należy rozpatrywać za pomocą wykresu słupkowego. Pandas DataReader pobiera pliki OHLCV cen akcji AAPL za okres od 1 stycznia 1990 roku do 1 stycznia 2002 roku, w którym to momencie tworzone są sygnały DataFrame generujące długie sygnały. Następnie portfel jest wygenerowane przy użyciu podstawy kapitału zakładowego w wysokości 100 000 USD, a zyski są obliczane na podstawie krzywej kapitału. Ostatnim etapem jest wykorzystanie matplotlib do sporządzenia wykresu dwóch cyfr obu cen AAPL, pokrytych średnimi ruchoma i sygnałami sprzedaży kupna, a także krzywa kapitału własnego z tymi samymi sygnałami kupna sprzedaży Kod wyprowadzania jest pobierany i modyfikowany z przykładu implementacji zipline. Graficzne wyjście kodu jest następujące: I mad Użyj komendy IPython do wklejenia bezpośrednio do konsoli IPython w Ubuntu, dzięki czemu dane graficzne pozostały w pamięci Różowe up-upy oznaczają kupno zapasów, a czarne downtaki sprzedają je z powrotem. AAPL Moving Average Crossover Performance from 1990-01-01 do 2002-01-01. Jak widać, strategia traci pieniądze w tym okresie, a pięć transakcji treningowych To nie jest zaskakujące, biorąc pod uwagę zachowanie AAPL w tym okresie, co było niewielkim trendem spadkowym , a następnie znaczny wzrost od początku 1998 r. Okres ważności średnich ruchowych sygnałów jest dosyć duży, co miało wpływ na zysk końcowego handlu, co w przeciwnym razie może uczynić strategię korzystną. W kolejnych artykułach stworzymy bardziej wyrafinowane środki analizując wydajność, a także opisując jak zoptymalizować okresy wzorcowe poszczególnych średnich ruchowych sygnałów. Wystarczy zacząć od ilościowego obrotu handlowego. przy czym średnia ruchoma przebiega w serii hałasu i zastępuje każdą z wartości średnią wartością sąsiedztwa o danej wartości Ta dzielnica może składać się z czysto historycznych danych lub może być skupiona wokół danej wartości Ponadto wartości w sąsiedztwo może być ważone przy użyciu różnych zestawów ciężarów Oto przykład równej ważonej średniej ruchomej z trzech punktów, przy użyciu danych historycznych. Tutaj reprezentuje wygładzony sygnał i reprezentuje serię godzin hałasu W przeciwieństwie do prostych średnic ruchu, wykładniczy ważony średnia ruchoma EWMA dostosowuje wartość do wartości wykładniczej ważonej sumy wszystkich poprzednich wartości Jest to podstawowy pomysł. Jest to miłe, ponieważ nie musisz martwić się o okno z trzema punktami, w porównaniu z pięcioma oknami, lub martwić się o odpowiedniość systemu ważenia Z EWMA, poprzednich zaburzeń pamiętane i powoli zapominane, przez termin w ostatnim równanie, podczas gdy z oknem lub otoczenie z dyskretnymi granicami, perturbacja zostaje zapomniana, gdy tylko wyjdzie z okna. Używając EWMA, aby dostosować się do trendów. Po przeczytaniu o EWMA w książce analizy danych, poszedłem szczęśliwie używając tego narzędzia na każdej pojedynczej aplikacji wygładzającej Natknąłem się na to dopiero dopiero, gdy dowiedziałem się, że funkcja EWMA jest właściwa tylko dla danych stacjonarnych, tj. Danych bez tendencji lub sezonowości. W szczególności funkcja EWMA przeciwstawia się trendom odbiegającym od obecnego, co oznacza, że ​​jest to już widoczne. masz hałaśliwą funkcję kapelusza, która idzie od 0, do 1, a następnie z powrotem do 0, wtedy funkcja EWMA zwróci niskie wartości po stronie wzgórza, a wysokie wartości po stronie wzgórza Jednym ze sposobów obejścia tego jest aby wygładzić sygnał w obu kierunkach, maszerować do przodu, a następnie maszerować do tyłu, a następnie przeciętnie dwa W tym miejscu użyjemy funkcji EWMA dostarczanej przez moduł pandasu. Hilt-Winters Drugie zamówienie EWMA. Kolejny porządek Holt-Winters hod próbuje uwzględnić szacowany trend w wygładzone dane, używając terminu, który śledzi stok pierwotnego sygnału wygładzony sygnał jest zapisywany do terminu. A oto jakiś kod Pythona implementujący metodę drugiego rzędu Holt-Winters na innym hałasu, jak poprzednio. Post navigation. Recent Postsputational tools. Analogously, DataFrame ma metodę cov do obliczania kowariancji pary wśród serii w ramce DataFrame, również z wyłączeniem wartości null NA. Zarządzanie brakujące dane są przypadkowo brakuje wyników oszacowanie matrycy kowariancji, która jest bezstronna Jednak dla wielu zastosowań ta ocena może być nie do przyjęcia, ponieważ szacowana matryca kowariancji nie jest gwarantowana jako dodatnia półznaczona Może to prowadzić do szacunkowej korelacji o wartościach bezwzględnych większych niż jeden, lub macierz kowariancji niemożliwej inwersyjnie Szacowanie macierzy kowariancji więcej szczegółów. obsługuje również opcjonalne słowo kluczowe minperiods, które określa wymaganą minimalną liczbę obserwacji dla każdej pary kolumn w celu uzyskania prawidłowego wyniku. Wagi stosowane w oknie są określane przez słowo kluczowe typu wintype. Lista rozpoznanych typów jest potrzebna do :. beta. gaussian potrzebuje std. generalgaussian potrzebuje zasilania, width. slepian potrzebuje szerokości. Należy zauważyć, że okno boxcar jest równoznaczne z mean. For niektórych funkcji okienkowania, dodatkowe parametry muszą być określone. For z wintype nie ma normalizacji wykonane wagi dla okna Passing Wagi niestandardowe 1, 1, 1 przynoszą inny wynik niż przenoszenie ciężarów 2, 2, 2, na przykład podczas przechodzenia przez wintype zamiast wyraźnego określania ciężaru, wagi są już znormalizowane tak, że największa waga wynosi 1. W przeciwieństwie , charakter obliczeń jest taki, że odważniki są znormalizowane względem siebie Wagi 1, 1, 1 i 2, 2, 2 dają ten sam wynik. Regulacja na bieżąco. Nowa w wersji 0 19 0.Ne w w wersji 0 19 0 są zdolnością do przekazywania offsetu lub przekształcenia do metody i mają do wygenerowania okna o zmiennej wielkości w oparciu o przekazany czas dla każdego punktu czasowego, zawiera wszystkie poprzednie wartości występujące w wskazanym czasie delta. This może jest szczególnie przydatna w przypadku nierównomiernego wskaźnika częstotliwości czasowej. Jest to zwykły indeks częstotliwości Użycie parametru okna całkowitego umożliwia przemieszczanie się wzdłuż częstotliwości okna. Określenie przesunięcia umożliwia bardziej intuicyjne określenie częstotliwości walcowania. Wykorzystanie niestandardowego, ale nadal indeks monotoniczny, toczący się w oknie całkowitym, nie daje żadnych specjalnych obliczeń. Wykorzystanie specyfikacji czasowej generuje zmienne okna dla tych niewielkich danych. Następnie teraz umożliwiamy opcjonalnemu parametrowi określenie kolumny, a nie domyślnej indeksu w DataFrame. Time Rolling vs Resampling. Using z indeksu czasowego jest dość podobny do ponownego próbkowania Obydwa operują i wykonują operacje redukcyjne na czas indeksowanych pa obiektów ndas. Korzystanie z przesunięciem Przesunięcie jest czasem-delta Przejmij okno przeszukiwania wstecz i zgrupuj wszystkie wartości w tym oknie, łącznie z punktem końcowym, ale nie punktem początkowym Jest to nowa wartość w tym punkcie wyniku Są to okna o zmiennej wielkości w przestrzeni czasowej dla każdego punktu wejścia Otrzymasz taki sam wynik co wejście. Kiedy użyjesz z przesunięciem Zbuduj nowy indeks, czyli częstotliwość przesunięcia każdy zbiornik częstotliwości, punkty zagregowane z wejścia w oknie przewijania wstecz w dół, które wchodzą w skład tego bloku Wynik tej agregacji jest wyjściem dla tego punktu częstotliwości Okna są rozmiarem stałym w przestrzeni częstotliwości Wynik będzie miał kształt regularnej częstotliwości między min a max oryginalnego obiektu wejściowego. Aby podsumować walcowanie jest operacja okna opartego na czasie, podczas gdy jest operacją na podstawie częstotliwości. Włączanie systemu Windows. Domyślnie etykiety są ustawione na prawą krawędź okna, ale a centralne słowo kluczowe jest dostępne, więc etykiety można ustawiać w centrum. Binary Window Functions. cov i corr mogą obliczyć ruchome statystyki okna dotyczące dwóch serii lub dowolnej kombinacji DataFrame Series lub DataFrame DataFrame Oto zachowanie w każdym przypadku. two dwie serie obliczają statystyka pary. DataFrame oblicza statystyki dla każdej kolumny ramki danych z przekazywaną serią, co powoduje zwrócenie ramki danych DataFrame. DataFrame domyślnie oblicza statystykę dopasowywania nazw kolumn i zwraca ramkę danych Jeśli argument słowa kluczowego jest parzysty, a następnie prawda oblicza statystykę dla każdej pary kolumn, zwracając panel, którego pozycje są danymi, które są omawiane w następnym paragrafie obliczania kowariancji i współzależności parowej. W analizie danych finansowych iw innych dziedzinach obliczane są matryce kowariancji i korelacji dla zbioru czasu seria Często zainteresowana jest też macierz zmienności ruchomej i matryce korelacji Można to zrobić przez pa co w przypadku danych wejściowych DataFrame spowoduje przekazanie Panelu, którego elementami są daty, w których zapytano. W przypadku pojedynczego argumentu DataFrame parawise argument może zostać pominięty. Wartości są ignorowane, a każda pozycja jest obliczana przy użyciu pełne obserwacje parzystości Proszę zapoznać się z sekcją kowariancji dotyczącą ostrzeżeń związanych z tą metodą obliczania macierzy kowariancji i korelacji. Poza tym, że nie ma parametru okna, funkcje te mają te same interfejsy, co ich odpowiedniki. Podobnie jak powyżej, parametry one akceptują. minperiody próg nieprzetworzonych punktów danych wymagający Ustawienie domyślne minimum konieczne do obliczenia statystyk Żadne wartości NaN zostaną wypuszczone po przekroczeniu minperiodów. Nieprzeczytowe punkty danych zostały zaobserwowane. centrum boolean, niezależnie od tego, czy etykiety mają wartość domyślną, jest False. metody i metody nie zwracają NaN, jeśli w bieżącym oknie znajdują się co najmniej minperiods wartości inne niż null To różni się od cumsum cumprod cumma x i cummin, które zwracają NaN na wyjściu wszędzie tam, gdzie spotyka się NaN na wejściu. Stabilizacja okna rozbudowy będzie bardziej stabilna i mniej elastyczna niż jego odpowiednik okna toczenia, ponieważ zwiększenie rozmiaru okna zmniejsza względny wpływ pojedynczego punktu danych przykładowo jest to średnie wyjście dla poprzedniego zbioru danych z serii danych z poprzednich czasów. Określony z ważeniem system Windows. Zaznaczony zestaw funkcji to wykładniczo ważone wersje kilku powyższych statystyk Podobny interfejs do i jest dostępny za pośrednictwem metody otrzymywania obiektu EWM Liczba rozszerzonych metod wykładniczo ważonych EW.

No comments:

Post a Comment