Tuesday 26 September 2017

Moving Average Strategie Backtest


Backtesting eines 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 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 kurzlebige Durchschnitt größer ist als der lang fortschreitende 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 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 eine anspruchsvollere Methode zur Leistungsanalyse erstellen sowie die Optimierung der Rückblickperioden der einzelnen gleitenden Durchschnittssignale beschreiben. BackTesting Moving Averages Warum Verschieben von Durchschnitten Als Händler oder Investor, der einzige Grund, gleitende Durchschnitte zu untersuchen Ist, Wissen zu erlangen, um Profite zu erhöhen. Wie viele andere technische Indikatoren sind die gleitenden Mittelwerte dazu bestimmt, uns zu helfen, objektiv den Marktstatus zu jedem gegebenen Zeitpunkt zu erzählen. Dies hilft uns, durch die Emotionen des Tages zu sehen und vernünftige Entscheidungen zu treffen, die wir zu höheren Gewinnen und zu weniger Verlusten auf lange Sicht führen werden. Moving Averages (MAs) glatt die Reihe von Preisen für eine Aktie. MAs werden häufig verwendet, um den Trend der Marktrichtung zu identifizieren und werden als Trendfolgender Indikator klassifiziert. Dieses doesn8217t bedeuten, daß MAs nur für langfristige Investoren 8211 sind, die kurzfristige Händler sie auch verwenden. Gleitende Durchschnitte können verwendet werden, um Vorräte für gute Kandidaten abzuschirmen, Signalkäufe zu erwerben und Verkaufssignale anzubieten. Warum Backtest 8211 Eine Geschichte Das Ziel der Backtesting ist es herauszufinden, ob gleitende Durchschnitte wirklich zu besseren Ergebnissen führen und was sind die vielversprechendsten Möglichkeiten, um MAs anzuwenden. Lassen Sie mich Ihnen eine kurze Geschichte erzählen. Während ich die Ergebnisse für eine der gleitenden durchschnittlichen BackTesting Report-Fragen zusammenstellte, geschah ich, einen Freund zu besuchen. In ihrem Haus, stieß ich auf einige Lesung Material aus einem gut angekündigten Rabatt Börsenmakler. In ihm war ein Artikel, der seine Kunden berät, eine bestimmte gleitende durchschnittliche Länge anzuwenden, die in einer bestimmten Weise angewendet wird, um die besten Resultate zu erhalten. Ich hatte meine umfassende Tests direkt vor mir und ich kann Ihnen sagen, dass broker8217s Methode nicht die besten Ergebnisse, obwohl sie eine MA Länge, die auf andere Weise nützlich ist erwähnen. Ich hatte in meiner Hand Testergebnisse, die zeigten, dass die Art und Weise, dass Makler den gleitenden Durchschnitt angewandt hatte eine Gewinnrate schlechter als die Baseline, wenn auf 7147 Aktien über 14 Jahre Aktienmarkt-Daten getestet. Es ist klar, dass der Broker diese Art von Tests nicht laufen ließ. It8217s bis zu den Kunden 8211 us 8211, um für uns selbst zu verteidigen und herauszufinden, was funktioniert im Vergleich zu was doesn8217t. So berechnen Sie MAs Beim Backtesting gleitende Mittelwerte, ist die erste Entscheidung, wie die gleitenden Durchschnitt zu berechnen. Wollen Sie einen einfachen gleitenden Durchschnitt (SMA) oder etwas entwickelt, um Preis besser zu verfolgen, wie ein exponentieller gleitender Durchschnitt (EMA) Sie könnten prüfen, ein Experiment, um die Win-Raten der beiden verschiedenen Mittelwerte zu vergleichen. Ich habe gerade, dass vor ein paar Jahren, und während ich don8217t haben die Ergebnisse zu veröffentlichen, kam ich mit der Vorstellung, dass es didn8217t einen großen Unterschied machen, ob ich SMA oder EMA 8212 gewählt wählen Sie einfach ein und verwenden Sie es konsequent. Also für dieses Projekt, ich beschließen, einfache gleitende Durchschnitte zu verwenden, weil ich sie in den Kommentaren am häufigsten erwähnt. Um tatsächlich die Berechnung zu tun, verließ ich mich auf die integrierte Funktion, die mit TradeStation kam. (Die Wahl des Backtesting-Engine ist eine andere Entscheidung, die allgemein genug ist, um in einem anderen Post zu schreiben.) Wie MAs verwenden Als nächstes müssen Sie festlegen, wie genau Sie gleitende Durchschnitte anwenden möchten. Wie werden Sie interpretieren die Beziehung zwischen Preis und gleitenden Durchschnitt Welche Regeln werden Sie verwenden, um zu entscheiden, wann Sie kaufen und verkaufen Sie müssen lange über Aktien lesen, bevor sie über eine bullish Referenz auf eine Aktie über seinen 200-Tage gleitenden Durchschnitt oder seine 50-Tage gleitenden Durchschnitt, oder sogar die 10- oder 20-Tage-MA. Oder Ratschläge zum Kauf von Aktien, wie sie ihre 50-Tage oder 200-Tage gleitenden Durchschnitt überqueren. Dies sind wichtige Regeln für den Test in der Backtesting Engine. Und dann gibt es den gleitenden Durchschnitt Crossover 8211 eine klassische Methode der technischen Analyse. Das macht drei verschiedene Möglichkeiten, mit beweglichen Durchschnitten zu testen. Gehen wir tiefer, sprechen einige Handelstexte über die Steigung eines gleitenden Durchschnitts. Wenn Sie zur Algebra zurückkehren und die MA als Linie betrachten, können Sie, um die Steigung zu finden, zwei Punkte auf der Linie auswählen und die übliche Formel (x2-x1) (y2-y1) anwenden. Dies stellt die Frage, wie weit auseinander, um die beiden Punkte, die einen Unterschied machen können, um Ergebnisse zu holen. Wirklich, da die MA verwendet wird, um den Trend zu identifizieren, wollen wir nur wissen, ob es schräg nach oben oder unten. Dann können wir die gesamte Berechnung zu vereinfachen, indem wir bemerken, dass, wenn der Preis über dem gleitenden Durchschnitt ist, muss es ziehen den Durchschnitt auf, und ein Preis unterhalb der MA zieht es nach unten. So ein weiterer Grund, die Wirksamkeit des Preises über dem gleitenden Durchschnitt zu testen. Parametereinstellungen Nachdem Sie sich für die Verwendung der MAs entschieden haben, müssen Sie eine Auswahl verschiedener Längen zum Testen auswählen. Hüten Sie sich vor über-Optimierung. Irgendwo da draußen ist ein Mann mit Backtesting Ergebnisse zeigen 3895 Gewinn oder was auch immer mit nur den richtigen gleitenden Durchschnitt. Schade, dass er nicht weiß, was MA diese Ergebnisse in der Zukunft produzieren wird. Das heißt, müssen Sie versuchen, mehr als eine Länge, um sicherzustellen, dass Ihre Ergebnisse aren8217t ein Fluke. Stick mit Standardeinstellungen oder die, die Sie hören, über die meisten in den Medien. Das Finden der eine perfekte Parameter-Einstellung wird nicht machen Sie reich. Finden Sie einen Cluster von guten, robusten Einstellungen können Sie nur eine Menge von guten though. Als praktische Angelegenheit, wenn Backtesting genug Datenverzögerung vor der Messung. Alle Tests müssen an der gleichen Stelle für Äpfel-zu-Äpfel Vergleich zwischen verschiedenen MA-Längen zu messen. Wenn Sie beispielsweise einen 200-Tage gleitenden Durchschnitt testen, werden die ersten 200 Tage Daten benötigt, um den ersten Punkt dieses gleitenden Durchschnitts zu berechnen. Das bedeutet, dass der erste Tag, an dem Sie ein Signal haben könnten, 200 Tage dauert. Um einen fairen Vergleich mit dem 10-tägigen gleitenden Durchschnitt zu erzielen, müssen Sie sicherstellen, dass keine Signale aus dem 10-Tage-Gleit-Durchschnitt gezählt werden, bevor die 200-Tage bereit sind zu gehen. Glücklicherweise TradeStation hat eine Weise, die 8220Maximum Zahl der Stabstudie zu setzen wird reference8221 in 8220Properties für All8221 Strategien, die die Backtesting-Engine zwingt, zu warten, dass lange vor der Tabellierung von Daten. Mehr Gewinn aus dem Kauf oder Verkauf Gleitende Durchschnittsregeln und insbesondere gleitende Durchschnittsübergangsregeln werden oft als Umkehrsystem diskutiert. Dies bedeutet, dass ein Signal, sagen die MAs, die nach oben gehen, ein Kaufsignal ist, und dann ist sein Gegenteil, z. B. MA-Kreuzungen, nicht nur ein Verkaufssignal, sondern auch der Auslöser zu kurz. Theoretisch, that8217s gerade fein, aber viele Leute sind nicht daran interessiert, den Markt zu schließen. Sie suchen nach Techniken, um ihnen zu helfen kaufen und vielleicht verkaufen. Selbst eine Person, die regelmäßig verkauft und verkauft kurz kann verschiedene Techniken für den Kauf und Verkauf. Aus diesen Gründen ist es klug, die Kaufsignale getrennt von den Verkaufssignalen zu testen. Dies stellt ein Dilemma dar, weil es schwierig ist, ein Kaufsignal isoliert zu bewerten. Eine Möglichkeit, dies zu tun, besteht darin, zeitgesteuerte Exits 8211 zu verwenden, die ist, den Handel zu verlassen oder den Bestand zu verkaufen, nachdem eine gewisse Zeit verstrichen ist. Ich wählte, jeden Backtest dreimal mit drei verschiedenen Zeitausgängen zu laufen, weil verschiedene Leute verschiedene Arten und verschiedene Notwendigkeiten haben. Um Backtesting-Ergebnisse für Swing Trader nützlich zu machen, verlasse ich nach 2 Tagen. Zum Modell Position Händler, 20 Tage. Um die Bedürfnisse der aktiven Investoren, Backtesting hält jede Position für 200 Tage. Dies gibt einen Weg, um die Kaufsignale zu isolieren und herauszufinden, wie nützlich der gleitende Durchschnitt ist, um Käufer von verschiedenen Temperamenten. Notwendigkeit, die Güte zu definieren Eine weitere sehr wichtige Sache zu prüfen, wenn Sie Backtesting gleitende Durchschnitte, um herauszufinden, wie gut sie an der Börse tun: Wie werden Sie wissen, was gut ist Sie benötigen objektive Kriterien für den Erfolg. Das bedeutet, die wichtigsten Statistiken wie Win-Rate, Erwartung, hypothetische Equity-Gewinne, etc. identifizieren. Es bedeutet auch, Standards für akzeptable Leistung in jedem dieser Bereiche. Ein Beispiel zeigt, warum dies wichtig ist und warum es nicht so einfach ist, wie es zuerst erscheint. Sagen Sie Ihre Tests zeigen eine Gewinnrate von 55 für einen bestimmten Indikator. Das mag vielleicht nicht so gut sein, wenn etwa 62 aller Aktien im gleichen Zeitraum gestiegen sind. Oder wenn nur 25 der Bestände während dieses Zeitraums stiegen, würde Ihre 55 Gewinnrate spektakulär sein. Was gut ist, hängt davon ab, wie es mit den Baseline-Markt-Performance unter den gleichen Bedingungen vergleicht. Sie können eine kostenlose Kopie der BackTesting Report Baseline-Ausgabe herunterladen, indem Sie hier klicken. Für einen aussagekräftigen Backtest benötigen Sie genügend Daten, um einen statistisch gültigen Vergleich herzustellen. Das bedeutet mindestens 30 Trades. Auch wenn Sie nur ein Instrument 8211 nur eine Aktie oder nur ein Währungspaar 8211 Ich denke es8217s wichtig ist, Ihre Trading-Strategie auf viele verschiedene Instrumente zu testen, um seine Robustheit zu beweisen. Ich ging über die Spitze mit einem extrem großen Testsatz 8212 7147 Aktien über 14 Jahre 8212, um sicherzustellen, dass meine Ergebnisse in einer Vielzahl von Marktbedingungen gelten würde. Sie können Ihre Kopie meiner Backtesting-Berichte über gleitende durchschnittliche Kaufsignale erhalten, indem Sie hier klicken. Moving Average Backtest Symbol - Geben Sie ein beliebiges 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 schließen, Freitag, 27. Januar Wichtiger Haftungsausschluss: Die von ETFScreen zur Verfügung gestellten Informationen 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.

No comments:

Post a Comment