Wednesday 22 February 2017

Python Pandas Exponentiell Gleitender Durchschnitt

Python Datenanalyse Bibliothek 8220 Pandas ermöglicht es uns, mehr auf Forschung und weniger auf die Programmierung zu konzentrieren. Wir haben Pandas leicht zu erlernen, einfach zu bedienen und leicht zu pflegen gefunden. Unterm Strich ist, dass es unsere Produktivität gesteigert hat.8221 Director of Optimization amp Analytics 8220 pandas ist das perfekte Werkzeug, um die Kluft zwischen schnellen Iterationen von Ad-hoc-Analysen und Produktionsqualitätscode zu überbrücken. Wenn Sie ein Werkzeug in einer multidisziplinären Organisation von Ingenieuren, Mathematikern und Analysten einsetzen wollen, schauen Sie nicht weiter.8221 8220Wir verwenden Pandas, um Zeitreihendaten auf unseren Produktionsservern zu verarbeiten. Die Einfachheit und Eleganz seiner API und ihre hohe Leistungsfähigkeit für hochvolumige Datasets machten sie zu einer perfekten Wahl.8221 Bibliotheks-Highlights Ein schnelles und effizientes DataFrame-Objekt für die Datenmanipulation mit integrierter Indexierung Tools zum Lesen und Schreiben von Daten zwischen In-Memory-Datenstrukturen und verschiedenen Formaten: CSV - und Textdateien, Microsoft Excel, SQL-Datenbanken und das schnelle HDF5-Format Intelligente Datenausrichtung und integrierte Handhabung fehlender Daten. Automatische automatische Etiketten-basierte Ausrichtung in Berechnungen und einfache Bearbeitung von unordentlichen Daten in einer geordneten Form Flexible Umformung und Verschiebung von Datensätzen Intelligentes Etiketten-Slicing. Fancy Indexierung. Und Untermengen von großen Datensätzen Spalten können aus Datenstrukturen zur Größenveränderlichkeit eingefügt und gelöscht werden Aggregieren oder Transformieren von Daten mit einer leistungsfähigen Gruppe durch Engine, die Split-Anwendungskombinationen auf Datensätzen ermöglicht Hochleistungs-Merging und Join von Datensätzen Hierarchische Achsindizierung bietet Eine intuitive Art und Weise, mit hochdimensionalen Daten in einer niedrigdimensionalen Datenstruktur zu arbeiten Zeitreihe - Funktionalität: Datumsbereichsgenerierung und Frequenzumwandlung, bewegte Fensterstatistik, sich bewegende Fenster-lineare Regressionen, Datumsverschiebung und Nacheilung. Sogar kreationsspezifische Zeitverschiebungen erstellen und Zeitreihen ohne Datenverlust verbinden Hochoptimiert für Performance. Mit kritischen Code-Pfade geschrieben in Cython oder C. Python mit Pandas ist in Verwendung in einer Vielzahl von akademischen und kommerziellen Domains, einschließlich Finanzen, Neurowissenschaften, Ökonomie, Statistik, Werbung, Web-Analytics und vieles mehr. Schmierung mit exponentiell gewichteten gleitenden Durchschnitte A Gleitender Durchschnitt eine verrauschte Zeitreihe und ersetzt jeden Wert mit dem Mittelwert einer Nachbarschaft um den gegebenen Wert. Diese Nachbarschaft kann aus rein historischen Daten bestehen oder um den gegebenen Wert zentriert sein. Ferner können die Werte in der Nachbarschaft mit verschiedenen Sätzen von Gewichtungen gewichtet werden. Hier ist ein Beispiel eines gleich gewichteten Dreipunkt-Gleitendurchschnitts, wobei historische Daten verwendet werden: Hier steht das geglättete Signal und stellt die verrauschten Zeitreihen dar. Im Gegensatz zu einfachen gleitenden Durchschnitten passt ein exponentiell gewichteter gleitender Durchschnitt (EWMA) einen Wert gemäß einer exponentiell gewichteten Summe aller vorherigen Werte an. Dies ist die Grundidee, Dies ist schön, weil Sie don.. 17 17 t haben, um über ein Drei-Punkt-Fenster, im Vergleich zu einem Fünf-Punkte-Fenster Sorge oder Sorgen über die Angemessenheit Ihrer Gewichtung. Bei der EWMA vergingen vorherige Störungen 8220, 8221 und 8220l vergessen, 8221 durch den Ausdruck in der letzten Gleichung, wohingegen bei einem Fenster oder einer Nachbarschaft mit diskreten Grenzen eine Störung vergessen wird, sobald sie aus dem Fenster austritt. Mittelung der EWMA, um Trends aufzuspüren Nach dem Lesen über EWMAs in einem Datenanalyse-Buch, war ich glücklich gegangen mit diesem Tool auf jede einzelne Glättung Anwendung, die ich stieß. Erst später erfuhr ich, dass die EWMA-Funktion wirklich nur für stationäre Daten geeignet ist, d. H. Daten ohne Trends oder Saisonalität. Insbesondere die EWMA-Funktion widersteht Trends weg von der aktuellen Mittelwert, dass es8217s bereits 8220seen8221. Wenn Sie also eine laute Hutfunktion haben, die von 0, 1 und dann wieder 0 zurückkehrt, gibt die EWMA-Funktion niedrige Werte auf der Aufstiegsseite und hohe Werte auf der Abwärtsseite wieder. Eine Möglichkeit, dies zu umgehen, besteht darin, das Signal in beide Richtungen zu glätten, nach vorn zu marschieren und dann rückwärts zu marschieren, und dann die beiden durchschnittlich zu vergleichen. Hier verwenden wir die EWMA-Funktion des pandas-Moduls. Holt-Winters Zweite Ordnung EWMA Und hier ist ein Python-Code implementiert die Holt-Winters zweite Ordnung Methode auf eine andere laute Hut Funktion, wie zuvor. Post navigation Recent PostsBacktest ein Moving Average Crossover in Python mit Pandas Im vorigen Artikel über Research Backtesting-Umgebungen In Python Mit Pandas haben wir eine objektorientierte forschungsbasierte Backtesting-Umgebung erstellt und auf einer zufälligen Prognosestrategie getestet. In diesem Artikel werden wir nutzen die Maschinen, die wir eingeführt, um die Forschung über eine tatsächliche Strategie, nämlich die Moving Average Crossover auf AAPL. Moving Average Crossover-Strategie Die Moving Average Crossover-Technik ist eine äußerst bekannte simples Impulsstrategie. Es wird oft als die Hello World Beispiel für quantitative Handel. Die Strategie, wie hier skizziert, ist lang-nur. Zwei getrennte einfache gleitende Durchschnittsfilter werden mit variierenden Rückblickperioden einer bestimmten Zeitreihe erzeugt. Beim Kauf des Assets treten Signale auf, wenn der kürzere Lookback-Bewegungsdurchschnitt den längeren Lookback-Bewegungsdurchschnitt übersteigt. Wenn der längere Durchschnitt anschließend den kürzeren Durchschnitt übersteigt, wird der Vermögenswert zurückgekauft. Die Strategie funktioniert gut, wenn eine Zeitreihe einen starken Trend eintritt und dann langsam den Trend rückgängig macht. Für dieses Beispiel habe ich Apple, Inc. (AAPL) als Zeitreihe mit einem kurzen Rückblick von 100 Tagen und einem langen Rückblick von 400 Tagen gewählt. Dies ist das Beispiel der zipline algorithmischen Handelsbibliothek. Wenn wir also unseren eigenen Backtester implementieren wollen, müssen wir sicherstellen, dass er mit den Ergebnissen in der Zipline übereinstimmt, als grundlegendes Validierungsinstrument. Implementierung Bitte folgen Sie dem vorherigen Tutorial. Die beschreibt, wie die anfängliche Objekthierarchie für den Backtester konstruiert wird, andernfalls funktioniert der nachfolgende Code nicht. Für diese spezielle Implementierung habe ich die folgenden Bibliotheken verwendet: Die Implementierung von macross. py erfordert backtest. py aus dem vorherigen Tutorial. Der erste Schritt besteht darin, die notwendigen Module und Objekte zu importieren: Wie im vorherigen Tutorial werden wir die abstrakte Basisklasse Strategy unterteilen, um MovingAverageCrossStrategy zu produzieren. Die alle Details enthält, wie die Signale erzeugt werden, wenn die sich bewegenden Mittelwerte von AAPL einander kreuzen. Das Objekt benötigt ein kurzes Fenster und ein langes Fenster. Die Werte wurden auf Standardwerte von 100 Tagen bzw. 400 Tagen gesetzt, wobei es sich um dieselben Parameter handelt, die im Hauptbeispiel der Zipline verwendet werden. Die gleitenden Mittelwerte werden durch die Verwendung der Pandas-Rollmechanik auf den BarsClose-Schlusskurs der AAPL-Aktie erstellt. Sobald die einzelnen Bewegungsdurchschnitte konstruiert worden sind, wird die Signalserie dadurch erzeugt, daß die Säule gleich 1,0 gesetzt wird, wenn der kurze gleitende Durchschnitt größer ist als der langgängige Durchschnitt oder 0,0 sonst. Daraus können Positionsaufträge generiert werden, um Handelssignale darzustellen. Das MarketOnClosePortfolio wird von Portfolio subklassen. Die in backtest. py gefunden wird. Es ist fast identisch mit der im vorherigen Tutorial beschriebenen Implementierung, mit der Ausnahme, dass die Trades nun auf einer Close-to-Close-Basis statt einer Open-to-Open-Basis durchgeführt werden. Einzelheiten darüber, wie das Portfolio-Objekt definiert ist, finden Sie im vorherigen Tutorial. Ive ließ den Code in für Vollständigkeit und dieses Tutorium in sich geschlossen halten: Nun, da die MovingAverageCrossStrategy und MarketOnClosePortfolio Klassen definiert worden sind, wird eine Hauptfunktion aufgerufen, um alle Funktionalität zusammen zu binden. Darüber hinaus wird die Performance der Strategie durch eine Kurve der Eigenkapitalkurve untersucht. Das Pandas DataReader-Objekt lädt OHLCV-Preise für AAPL-Aktien für den Zeitraum vom 1. Januar 1990 bis zum 1. Januar 2002 herunter, wobei an diesem Punkt die Signale DataFrame erzeugt werden, um die Langzeitsignale zu erzeugen. Anschließend wird das Portfolio mit einer Stammkapitalzuführung von 100.000 USD erstellt und die Erträge auf der Eigenkapitalkurve berechnet. Der letzte Schritt ist die Verwendung von matplotlib, um einen zweidimensionalen Plot der beiden AAPL-Kurse, überlagert mit den sich bewegenden Durchschnitten und buysell Signale, sowie die Equity-Kurve mit den gleichen buysell Signale. Der Plot-Code wird aus dem Zipline-Implementierungsbeispiel genommen (und modifiziert). Die grafische Ausgabe des Codes ist wie folgt. Ich benutzte den IPython-Einfüge-Befehl, um diesen direkt in die IPython-Konsole zu legen, während in Ubuntu, so dass die grafische Ausgabe in Sicht blieb. Die rosafarbenen upticks stellen Kauf der Vorlage dar, während die schwarzen downticks Vertretung verkaufen es zurück: Wie gesehen werden kann, verliert die Strategie Geld über dem Zeitraum mit fünf Hin - und Rücktransaktionen. Dies ist nicht überraschend angesichts des Verhaltens der AAPL in der Periode, die auf einem leichten Abwärtstrend war, gefolgt von einem deutlichen Aufschwung, der 1998 begann. Die Rückblickperiode der gleitenden Durchschnittssignale ist ziemlich groß und dieses beeinflußte den Profit des abschließenden Geschäfts , Die sonst die Strategie rentabel gemacht haben könnte. In nachfolgenden Artikeln werden wir ein anspruchsvolleres Verfahren zur Leistungsanalyse erstellen sowie die Optimierung der Rückblickperioden der einzelnen gleitenden Durchschnittssignale beschreiben.


No comments:

Post a Comment