Saturday, January 28, 2017

Moving Average Backtest

Einfache Moving Averages - Trading Backtests Was gleitende Durchschnittsparameter sind die besten Diese Seite hat einen Ozean von gleitenden durchschnittlichen Backtests, die ich für den DAX, SP500 und auch USDEU (Forex) durchgeführt. Diese Tests wurden unter Verwendung unterschiedlicher Signalstrategien durchgeführt: einfache, exponentielle und Crossover-Varianten und verschiedene Indizes für einen Zeitraum von 1000 Handelstagen. Im Gegensatz zu anderen Websites testete ich alle gleitenden durchschnittlichen Tagesfensterwerte von 1 - 1000 Tagen, für die Cross-Over-Strategien auch in Kombination Diese Daten sind auch unqiue, da ich versucht habe, realistische Tests durchzuführen, die die buysell Verbreitung und die Steuern für simulieren Vergleich mit einer Referenz - (Buy-Hold-) Strategie. Ein schnell reagierender Fensterwert sieht gut aus in der Theorie und mit einem einfachen Test. Aber die Ausbreitung, Gebühren und Steuern zerstören alle Leistungen in der praktischen Anwendung. Deshalb sind diese realistischen Tests so wertvoll. Ich hoffe, diese Seite kann Ihnen helfen, mit Ihren Trades, genießen itMoving Average Backtest Symbol - Geben Sie jedes Symbol in unserer Datenbank verfolgt, oder verwenden Sie ein Verhältnis zwischen Symbolen durch die Eingabe von zwei Symbolen wie sym1: sym2. Moving Averages - Kann für die angegebene Anzahl von Tagen einfach oder exponentiell sein. Bei einer einzigen MA wird der Bestand durch den Wert von Price relativ zum Moving Average bestimmt. Wenn zwei MAs verwendet werden, wird der Betrieb durch die Beziehung zwischen den beiden Moving Averages bestimmt. Holdings - Der zu haltende Fonds kann derselbe sein wie der Fonds, der für die obigen Berechnungen verwendet wird. Beispielsweise könnten Sie den Kauf eines Leveraged Fund basierend auf dem gleitenden Durchschnitt des unleveraged Fonds modellieren. Benchmark - SPY ist die Voreinstellung, aber jedes Symbol kann verwendet werden. Statistiken - Die Stats beinhalten drei Volatilitätsmaßnahmen, die Sie niedrig halten möchten, die Standardabweichung, den Ulcer Index und Max Drawdown. Darüber hinaus gibt es drei Rückkehr: Risikomessungen, wo höher ist besser. Dazu gehören die Sharpe Ratio, Sortino Ratio und Martin Ratio. Von den letzten Bildschirmen ETF-Markt Ansicht ab Ende, Mi, Jan 25 Wichtiger Haftungsausschluss: Die Informationen, die von ETFScreen zur Verfügung gestellt werden, dienen ausschließlich Informationszwecken und sind nicht als Beratung oder Aufforderung zum Kauf oder Verkauf von Wertpapieren auszulegen. Der Eigentümer von ETFScreen übernimmt keine Haftung, die sich aus der Verwendung des hierin enthaltenen Materials für Zwecke, einschließlich der Anlagezwecke, ergibt. Datenschutz DisclaimerTerms of Use Wenn Sie einen Kommentar haben, kontaktieren Sie uns bitte. Backtesting ein Moving Average Crossover in Python mit Pandas Im vorherigen Artikel auf Research Backtesting Umgebungen in Python Mit Pandas haben wir eine objektorientierte forschungsbasierte Backtesting-Umgebung erstellt und getestet Eine zufällige Prognosestrategie. 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 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 ist, 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 erheblichen Aufschwung, der 1998 begann. Die Rückblickperiode der gleitenden durchschnittlichen Signale 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