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 Webseiten 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, dass dieser Aufstellungsort Ihnen mit Ihren Geschäften helfen kann, itOverview zu genießen: Diese freie pädagogische Web site soll Ihnen erlauben, populäre technische Handelsstrategien so wissenschaftlich wie möglich durch Backtesting zu vergleichen. Im Allgemeinen ist es ziemlich schwierig, konsequent den Markt zu schlagen und Sie sollten skeptisch von allem, was Sie anders sagt. Diese Website ermöglicht es Ihnen, Backtest einige gemeinsame technische Strategien zu sehen, wie sie gegen den Markt durchgeführt haben und können Sie für die Aktien, die Ihre Trading-Kriterien erfüllen. Strategien, die Backtest gut, natürlich, nicht garantieren Erfolg vorwärts gehen, könnte aber eine höhere Wahrscheinlichkeit der Durchführung gut. Backtesting ermöglicht Ihnen auch, die Marktbedingungen zu sehen, in denen eine bestimmte Strategie gut funktioniert. Zum Beispiel, wenn Sie zuversichtlich sind, wird der Markt Reichweite gehen vorwärts, können Sie herausfinden, welche Strategien am besten in dieser Art von Markt. Dies geschieht durch Backtesting über historische Zeitrahmen, die Reichweite gebunden waren und sehen, welche Strategien am besten sind. Backtesting hilft Ihnen auch, zu sehen, welche Strategie-Parameter sind die meisten robust über verschiedene Zeiträume. Zum Beispiel, eine 10 Stop-Verlust-Outperformance ein 5 Stopp-Verlust 9 historische Zeiträume von 10 So Backtesting kann wertvolle Trading Einblicke, obwohl es nicht garantieren kann die Zukunft. Einige interessante Dinge, die Sie entdecken könnten: Die Kombination von aktivem Handel und Provisionen können Sie auslaufen, auch wenn Sie einen guten Prozentsatz der Gewinne Trades wirklich engen Schleppleisten können ernsthaft schaden Ihre langfristige Rentabilität und nicht reduzieren Drawdown so viel wie Sie erwarten können Strategien, die Sie dachten, wäre gut, dass konsequent unterdurchschnittlich den Markt Richtungen (Single Stock Backtesting): Wählen Sie den Bestand, den Sie Backtest Ihre technische Strategie auf. Starting Capital: Geldbetrag, den Sie mit Stoploss beginnen: Punkt, an dem Sie aus einer Position herausziehen möchten, die sich gegen Sie bewegt. Ein regulärer Halt bedeutet, dass Sie aus Ihrer Position herauskommen, wenn die Aktie einen festgelegten Prozentsatz unterhalb fällt, wo Sie sie gekauft haben. Trailing Stop: Lets sagen, kaufen Sie eine Aktie bei 10 und legen Sie in einem 10 hinteren Stop. Wenn die Aktie fällt 10, ohne jemals höher gehen, werden Sie bei 9 zu verkaufen. Aber wenn die Aktie geht bis zu 15 dann nach unten 10 bis 13,5, werden Sie bei 13,5 zu verkaufen und in einigen der Gewinn zu sperren. Ziel: Verkaufen, wenn Ihr Bestand einen bestimmten prozentualen Gewinn erreicht (können Sie deaktivieren, indem Sie Dont Use Target wählen) Start DateEnd Date: Wählen Sie die historischen Daten, zwischen denen Sie die Strategie testen möchten. Signale: Signale, die die Kreuzungen oder Beziehungen zwischen Preis und technischen Indikatoren beinhalten. Zum Beispiel das goldene Kreuz, kaufen, wenn die 50 Tage einfach gleitenden Durchschnitt (sma) kreuzt über dem 200-Tage-sma und verkaufen, wenn die 50 Tage kreuzt unter dem 200 Tag (Todeskreuz). Die folgenden Links erklären einige beliebte technische Indikatoren: Get TradesGraph: Get Trades wird buchstäblich zeigen Ihnen die Trades, die Sie gemacht hätten, wenn Sie zurück in der Zeit mit einer Zusammenfassung der Leistung inbegriffen. Die statistischen Tests: Testen Sie, um zu sehen, ob die durchschnittliche tägliche Rendite der Strategie die gleiche ist wie die durchschnittliche tägliche Rendite des SampP 500 oder die gleiche wie die durchschnittliche tägliche Rendite von Kauf und halten über den Zeitraum. Wir wollen wissen, wie zuversichtlich wir sein können, dass die beiden Renditen gleich sind. Je höher das Vertrauen desto sicherer können Sie sein, dass Ihre Strategie ist eigentlich besser als die SampP 500 oder kaufen und halten. Der Graph zeigt den Wert des Portfolios im Zeitablauf mit einer Zusammenfassung der Performance. Anfahrtsbeschreibung (PortTester Beta): Dies ist für Backtesting einer Strategie, die Sie auf Ihr Portfolio als Bestände an Ihre technischen Kauf-und Verkaufssignale anwenden würde. Geben Sie im ersten Textfeld die Ticker für den Bestandskorb ein, auf den Sie Ihre technische Strategie hinterlegen möchten. Geben Sie jeden Ticker getrennt durch ein Leerzeichen ein. Zu den derzeit verfügbaren Aktien gehören die 30 Dow Aktie, AA AXP BA BAC CAT CSCO CVX DD DATENBLATT GE HP HPQ IBM INTC JNJ JPM KFT KO MCD MMM MRK MSFT PFE PG TR TRV UTX VZ WMT XOM. Um alle 30 in den Backtest einzuschließen, geben Sie einfach DJIA ein, was die Voreinstellung ist. Zielnummer der offenen Positionen: Dies ist die Anzahl der Aktien, für die Sie eine Position haben möchten, und nicht mehr. Zum Beispiel können Sie sagen, Sie wollen 2 offene Positionen Ziel. Wenn der Backtester ein Kaufsignal in einem der Aktien findet, die Sie in den Korb legen, sagen GE, wird davon ausgehen, dass GE gekauft wurde. Es wird nun für 1 weitere Aktien zu kaufen, wenn es ein Kaufsignal, sagen BAC. Sie haben jetzt ein Portfolio von 2 offenen Positionen (GE und BAC) und der Backtester kauft nicht mehr, bis ein Verkaufssignal einen der Aktien verkauft. Ein diversifiziertes Portfolio sollte vermutlich 10 oder mehr Aktien haben, aber das erfordert eine Menge Rechenleistung zum Backtest. So wird ein kleines Portfolio wie der Standard von 5 offenen Positionen ausreichen, um ein Gefühl für eine Strategie-Performance zu bekommen. Für Investoren mit einer kleinen Menge an Kapital sagen wir 10.000, ist es teuer, eine große Anzahl von Positionen mit 20 Provisionen für Rundreise-Trades handeln. ETFs sind ein günstiger Weg, um diversifiziert zu werden. Startkapital: Höhe des Geldes, das Sie mit Trading Commission beginnen: Betrag, den Sie zahlen TDAmeritrade, SOGO, ScottTrade, etc, um eine Aktie zu handeln Position Sizing: Dies ist, wie Sie sich entscheiden, eine bestimmte Menge an Geld für jeden Bestand in Ihrem Portfolio zu begehen. Derzeit ist nur eine Option (Equal Cash Allocation) verfügbar. Dies bedeutet, wenn ich 10.000 haben und ich möchte 2 Positionen eingeben, werde ich 5000 in jedem weniger Provisionen. Mit anderen Worten, Bargeld verfügbar wird gleichmäßig auf neue Positionen aufgeteilt werden, bis ich mein Ziel n Anzahl der offenen Positionen zu erreichen. Weitere Optionen sind gleich Anzahl der Aktien und Volatilität basiert Position Größenbestimmung Regeln. Stoploss: Punkt, an dem Sie aus einer Position, die sich gegen Sie. Lets sagen, Sie kaufen eine Aktie bei 10 und legen Sie in einem 10 schleppenden Stop. Wenn die Aktie fällt 10, ohne jemals höher gehen, werden Sie bei 9 zu verkaufen. Aber wenn die Aktie geht bis zu 15 dann nach unten 10 bis 13,5, werden Sie bei 13,5 zu verkaufen und in einigen der Gewinn zu sperren. Start DateEnd Date: Wählen Sie die historischen Daten, zwischen denen Sie die Strategie testen möchten. Der Backtester beginnt am Startdatum in historischen Daten und durchsucht die Bestände, die Sie ausgewählt haben, bis es ein Kaufsignal verhängt. Werden am ersten Tag keine Kaufsignale gefunden, geht der Backtester zum nächsten Tag über und durchsucht alle Aktien im Korb, bis ein Kaufsignal gefunden wird, in dem die Aktie zum Schlusskurs für Splits und Käufe gekauft wird Dividenden. Sobald eine Aktie gekauft wird, wird der Backtester versuchen, diesen Bestand zu verkaufen, wenn ein Verkaufssignal kommt. Zudem schaut es weiter, Aktien zu kaufen, bis die Zielzahl der offenen Positionen erreicht ist. Gleichzeitig wird es alle bestehenden Positionen verkaufen, wenn ein Verkaufssignal auftritt. Der Wert des Portfolios wird täglich bis zum Enddatum berechnet. Signale: Signale, die die Kreuzungen oder Beziehungen zwischen Preis und technischen Indikatoren beinhalten. Zum Beispiel, das goldene Kreuz, kaufen, wenn die 50 Tage einfach gleitenden Durchschnitt (sma) kreuzt über dem 200-Tage-sma und verkaufen, wenn die 50 Tage kreuzt unter dem 200 Tag (Todeskreuz). Holen Sie sich TradesGraph: Get Trades wird buchstäblich zeigen Ihnen die Geschäfte, die Sie gemacht hätten, wenn Sie zurück in der Zeit mit einer Zusammenfassung der Leistung inbegriffen. Der Graph zeigt den Wert des Portfolios im Zeitablauf mit einer Zusammenfassung der Performance. Disclaimer: stockbacktest nicht unterstützt oder empfiehlt keine der Strategien oder Wertpapiere auf dieser Website. Der Inhalt dieser Seite dient zu Informationszwecken und ist nicht als Anlageberatung zu betrachten. Stockbacktest ist nicht haftbar für irgendwelche Fehler auf dieser Website oder Aktionen auf der Grundlage dieser Seiten content. Backtesting ein Moving Average Crossover in Python mit Pandas Im vorherigen Artikel auf Research Backtesting Umgebungen In Python Mit Pandas haben wir eine objektorientierte Forschung - basierte Backtesting-Umgebung und testete es auf einer zufälligen 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 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 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 durch eine Kurve der Eigenkapitalkurve untersucht. Das Pandas DataReader-Objekt lädt OHLCV-Preise von 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