Friday 7 April 2017

Gleitender Durchschnittsfilter In Python

Wir haben vorgestellt, wie man mit python Moving-Averages erstellt. Dieses Tutorial wird eine Fortsetzung dieses Themas sein. Ein gleitender Durchschnitt im Rahmen der Statistik, auch rollingrunning average genannt, ist eine Art von endlicher Impulsantwort. In unserem vorherigen Tutorial haben wir die Werte der Arrays x und y: Let8217s plot x gegen den gleitenden Durchschnitt von y aufgetragen, den wir yMA nennen wollen: Erstens, let8217s gleichen die Länge beider Arrays aus: Und dies im Kontext: Das Ergebnis Diagramm: Um dies zu verstehen, let8217s plotten zwei verschiedene Beziehungen: x vs y und x vs MAy: Der gleitende Durchschnitt hier ist die grüne Handlung, die bei 3 beginnt: Share this: Gefällt mir: Post navigation Lassen Sie eine Antwort Antworten abbrechen Sehr nützlich I Möchte den letzten Teil auf großen Datensätzen lesen Hope wird es bald kommen8230 d Blogger wie folgt: Ich spiele in Python ein bisschen wieder, und ich fand ein ordentliches Buch mit Beispielen. Eines der Beispiele ist die Auftragung einiger Daten. Ich habe eine. txt-Datei mit zwei Spalten und ich habe die Daten. Ich habe die Daten genau dargestellt, aber in der Übung heißt es: Ändern Sie Ihr Programm weiter, um den laufenden Durchschnitt der Daten zu berechnen und zu zeichnen, die durch Folgendes definiert sind: wobei r5 in diesem Fall (und yk die zweite Spalte in der Datendatei ist) . Lassen Sie das Programm sowohl die Originaldaten als auch den laufenden Durchschnitt auf demselben Graphen dar. Bisher habe ich dies: So wie berechne ich die Summe In Mathematica seine einfache, da seine symbolische Manipulation (Sumi, zum Beispiel), sondern wie die Summe in python, die alle zehn Punkte in den Daten und mittelt, und es tut Bis zum Ende der Punkte schaute ich das Buch an, fand aber nichts, was das erklären würde: heltonbikers code hat den Trick: D Vielen Dank :) Es gibt ein Problem mit der akzeptierten Antwort. Ich denke, wir müssen gültig anstelle der gleichen hier - return numpy. convolve (Intervall, Fenster, gleiche). Als Beispiel versuchen Sie die MA dieses Datensatzes 1,5,7,2,6,7,8,2,2,7,8,3,7,3,7,3,15,6 - das Ergebnis Sollte 4.2.5.4,6.0,5.0,5.0,5.2,5.4,4.4,5.4,5.6,5.6,4,6,7.0,6.8 sein. Aber mit demselben gibt uns eine falsche Ausgabe von 2.6.3.0,4.2,5.4,6.0,5.0,5.0,5.2,5.4,4.4,5.4,5.6,5.6, 4.6.7.0,6.8,6.2,4.8 Rusty-Code, um dies auszuprobieren -: Versuchen Sie dies mit gültigen amp gleichen und sehen, ob die Mathematik sinnvoll ist. Ich habe versucht, dies aus, aber ich werde es untersuchen, es ist eine Weile seit I39ve codiert in Python. Ndash Dingod Warum don39t Sie schnell ausprobieren dies mit dem rostigen Code (und die Beispiel-Datensatz (als einfache Liste), schrieb ich. Für einige faul Personen (wie ich auf den ersten) - seine Masken aus der Tatsache, dass gleitende Durchschnitt ist falsch. Wahrscheinlich sollten Sie erwägen, die Bearbeitung Ihrer ursprünglichen Antwort. Ich versuchte es nur gestern und doppelte Kontrolle rettete mir Gesicht von schauen schlecht bei der Berichterstattung auf Cxo Ebene. Sie müssen nur tun, ist zu versuchen Ihre gleiche gleitende Durchschnitt einmal mit quotvalidquot und andere Zeit mit quotsamequot - und sobald Sie überzeugt sind, geben Sie mir einige Liebe (aka-up-vote) ndash ekta Oct 29 14 um 7: 16Backtest ein Moving Average Crossover in Python mit Pandas Im vorherigen Artikel On-Forschung Backtesting-Umgebungen In Python Mit Pandas haben wir eine objektorientierte forschungsbasierte Backtesting-Umgebung entwickelt und auf einer zufälligen Prognosestrategie getestet. In diesem Artikel werden wir die von uns eingeleiteten Maschinen zur Erforschung einer tatsächlichen Strategie nutzen Der 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 die Ergebnisse in Zipline, als ein grundlegendes Mittel der Validierung entspricht. 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 über eine Handlung 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 nutze den IPython-Einfüge-Befehl, um diesen direkt in die IPython-Konsole zu legen, während ich 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