Wednesday 3 May 2017

Trading Strategie Backtesting In R


Ich bin sehr neu bei R und versuche, eine Strategie, die bereits in WealthLab programmiert wurde, zu backtest. Mehrere Sachen, die ich nicht verstehe (und es funktioniert nicht offensichtlich :) Ich bekomme nicht die Close Preise schön in einen Vektor. Oder irgendeine Art von Vektor, aber es beginnt mit Struktur und ich verstehe nicht wirklich, was diese Funktion tut. Das ist, warum meine Serie, 1 Anruf wahrscheinlich nicht funktioniert. N-lt-nrow (Serie) funktioniert auch nicht, aber ich brauche das für die Loop Also ich vermute, wenn ich diese 2 Fragen beantwortet meine Strategie sollte funktionieren. Ich bin sehr dankbar für jede Hilfe .. R scheint ziemlich kompliziert auch mit Programmier-Erfahrung in anderen Sprachen yeah Ich Art von kopiert einige Zeilen Code aus diesem Tutorial und don39t wirklich verstehen, diese Zeile. Ich meine, Serie, ich dachte, ich würde die Funktion f auf quotcolumnquot 1 der Serie anwenden. Aber da diese Serie ist etwas komplett mit Struktur etc. es doesn39t Arbeit. I39m reden über dieses Tutorial: r-bloggersbacktesting-a-Trading-Strategie ndash MichiZH Jun 6 13 bei 14: 22Die Leute bei Rstudio haben eine tolle Arbeit mit dem glänzenden Paket gemacht. Von der glänzenden Homepage, 8220Shiny macht es super einfach für R Benutzer wie Sie, um Analysen in interaktive Web-Anwendungen, die jeder nutzen können.8221 Die Entwicklung von Web-Anwendungen hat immer appelliert an mich, aber Hosting, Lernen Javascript, html, etc. machte mich setzen Diese ziemlich niedrig auf meiner Prioritätsliste. Mit glänzend kann man Web-Anwendungen in R schreiben. Dieses Beispiel nutzt die Managers-Dataset mit Anrufen zu charts. PerformanceSummary und table. Stats aus dem PerformanceAnalytics-Paket, um ein Plot und eine Tabelle in der glänzenden Anwendung anzuzeigen. Sie müssen glänzende und Performance Analytics-Pakete installiert haben, um die Anwendung auszuführen. Sobald diese installiert sind, öffnen Sie Ihre R-Aufforderung und laufen: Es gibt eine große glänzende Tutorial von Rstudio sowie Beispiele von SystematicInvestor für diejenigen, die mehr lernen, mehr zu lernen. Die letzten paar Beiträge auf Impuls mit R konzentrierte sich auf eine relativ einfache Möglichkeit, Impulsstrategien zu unterstützen. In Teil 4 verwende ich das quantstrat-Framework, um eine Impulsstrategie zu testen. Mit quantstrat öffnet sich die Tür zu mehreren Features und Optionen sowie ein Orderbuch, um die Trades nach Abschluss des Backtests zu überprüfen. Ich stelle einige neue Funktionen vor, die verwendet werden, um die Daten vorzubereiten und die Ränge zu berechnen. Ich habe sie im Detail durchgemacht, diese Funktionen sind in meinem Github Repo im Rang-Funktionsordner verfügbar. Dieser erste Teil des Codes lädt nur die notwendigen Bibliotheken, Daten und wendet die ave3ROC-Funktion an, um die Assets auf der Grundlage der Mittelwerte der 2, 4 und 6 Monate zurückzugeben. Beachten Sie, dass Sie die Funktionen in Rank. R und monatlich-fun. R laden müssen. Der nächste Teil des Codes ist ein kritischer Schritt bei der Vorbereitung der Daten, die in quantstrat verwendet werden sollen. Mit den berechneten Rängen ist der nächste Schritt, die Reihen an die aktuellen Marktdaten zu binden, die mit quantstrat verwendet werden sollen. Es ist auch wichtig, die Spaltennamen zu z. B. zu ändern. XLY. Rank, weil das als Handels-Signal-Spalte verwendet wird, wenn quantstrat verwendet wird. Jetzt kann der Backtest laufen. Die Funktion qstratRank ist nur eine Bequemlichkeitsfunktion, die die Quantstrat-Implementierung für meine Rangstrategie verbirgt. Für diesen ersten Backtest trage ich die Top 2 Assets mit einer Positionsgröße von 1000 Einheiten. Das Ändern des Arguments auf max. levels2 gibt die Flexibilität von 8220scaling8221 in einem Handel. In diesem Beispiel, sagen Asset ABC ist Platz 1 im ersten Monat 8212 Ich kaufe 500 Einheiten. Im Monat 2, Asset ABC ist immer noch 1 8212 Ich kaufe weitere 500 Einheiten. In der vorherigen Post, zeigte ich einfache Backtests für den Handel eine Reihe von Vermögenswerten auf der Grundlage ihrer 3, 6, 9 oder 12 (i. e Lookback Perioden) Monat einfache Renditen. Während es nicht ein erschöpfender Backtest war, zeigten die Ergebnisse, dass beim Tragen der Top 8-Ranglisten die auf Rangfolge basierenden 3, 6, 9 und 12 Monatsrenditen zu einer ähnlichen Performance führten. Wenn die Ergebnisse für die verschiedenen Lookback-Perioden ähnlich waren, welche Lookback-Periode sollte ich für meine Strategie wählen Meine Antwort ist, mehrere Lookback-Perioden in der Ranking-Methode enthalten. Dies kann erreicht werden, indem man den Durchschnitt der 6, 9 und 12 Monatsrenditen oder irgendwelche anderen n-Monatsrenditen annimmt. Dies gibt uns den Vorteil der Diversifizierung über mehrere Lookback-Perioden. Wenn ich glaube, dass die Rückblickperiode von 9 Monaten Renditen besser ist als die der 6 und 12 Monate, kann ich einen gewichteten Durchschnitt verwenden, um dem 9-Monats-Rendite ein höheres Gewicht zu geben, so dass es mehr Einfluss auf die Bestimmung des Ranges hat. Dies kann mit dem implementiert werden, was ich die unten gezeigte WeightAve3ROC () - Funktion nenne. Die Funktion ist ziemlich selbsterklärend, aber fühlen Sie sich frei zu fragen, ob Sie irgendwelche Fragen haben. Nun zu den Testergebnissen. Die nachstehende Grafik zeigt die Ergebnisse der Verwendung von 6, 9 und 12 Monatsrenditen sowie durchschnittlich 6, 9 und 12 Monatsrenditen und einem gewichteten Durchschnitt von 6, 9 und 12 Monatsrenditen. Fall 1: einfacher Impuls-Test basierend auf 6 Monaten ROC zu Rang Fall 2: einfacher Impuls-Test basierend auf 9 Monaten ROC zu Rang Fall 3: einfacher Impuls-Test auf Basis von 12 Monaten ROC zu Rang Case 4: einfacher Impuls-Test auf der Grundlage von durchschnittlich 6 , 9 und 12 Monate ROC zu Rang 5: einfacher Impuls-Test basierend auf gewichtetem Durchschnitt von 6, 9 und 12 Monate ROC zu Rang. Gewichte sind 16, 23, 16 für 6, 9 und 12 Monate Rückkehr. Hier ist eine Tabelle der Rücksendungen und maximale Drawdowns für den Test. Dieser Test zeigt, wie es möglich sein wird, bessere risikoadjustierte Renditen (höhere CAGR und niedrigere Drawdowns in diesem Fall) zu erreichen, indem man mehrere Lookback-Perioden in der Ranking-Methode berücksichtigt. Voller R-Code ist unten. Ich habe alle Funktionen in das R-Skript unten aufgenommen, um es Ihnen leicht zu machen, die Tests zu reproduzieren und Dinge auszuprobieren, aber ich würde empfehlen, die Funktionen in einer separaten Datei und mit Source () zu laden, um die Funktionen zu laden, um den Code zu behalten Reiniger. Viele der Standorte, mit denen ich in der vorherigen Post verknüpft bin, haben Artikel oder Papiere über Impulsinvestitionen, die die typischen Rankingfaktoren 3, 6, 9 und 12 Monatsrenditen untersuchen. Die meisten (nicht alle) der Artikel suchen, um zu finden, welche die beste Rückblickzeit ist, um die Vermögenswerte zu ordnen. Sagen Sie, dass das Ergebnis des Artikels ist, dass die 6 Monate Rückblick die höchsten Renditen hat. Ein Trading eine Strategie, die nur eine 6-Monats-Rückblick-Periode verwendet, um die Vermögenswerte zu ordnen, lässt mich anfällig für Über-Anpassung auf der Grundlage der Backtest-Ergebnisse. Der Backtest erzählt uns nichts weiter als die Strategie in der Vergangenheit das Beste, es erzählt uns nichts über die Zukunft8230 Duh Immer wenn ich die Ergebnisse von Backtests überprüfe, frage ich mir immer viel, was bei Fragen. Hier sind 3 was, wenn Fragen, die ich für diesen Backtest fragen würde: Was ist, wenn die Strategie auf einem 6-Monats-Rückblick unter führt und die 9 Monate oder 3 Monate beginnt zu überführen Was ist, wenn die Strategien auf 3, 6, Und 9 Monate Rückblickperioden haben etwa das gleiche Rendite - und Risikoprofil, welche Strategie sollte ich handeln Was ist, wenn die Vermögenswerte mit hoher Volatilität die Ranglisten dominieren und damit die Renditen treiben. Die dargestellten Backtests sind einfache Backtests, um die Variabilität der Renditen zu demonstrieren Basierend auf Rückblickperioden und Anzahl der gehandelten Vermögenswerte. Die nachstehenden Graphen zeigen die Performance einer Impulsstrategie mit 3, 6, 9 und 12 Monatsrenditen und handeln die Top 1, 4 und 8 Rangliste. Sie werden feststellen, dass es erhebliche Volatilität und Variabilität in Renditen nur Handel 1 Asset. Die Variabilität zwischen Rückblickperioden ist reduziert, aber es gibt noch keine klare beste Rückblickzeit. Es gibt Perioden von unter Leistung und über Leistung für alle Rückblickperioden im Test. Hier ist der R-Code für die Backtests und die Plots verwendet. Hinterlassen Sie einen Kommentar, wenn Sie Fragen zum Code unten haben. Die Zeit fliegt wirklich, es ist schwer zu glauben, dass es seit einem Monat seit meinem letzten Post war. Arbeit und Leben im Allgemeinen haben viel von mir in letzter Zeit verbraucht und verließen wenig Zeit für Forschung und Blog-Posts. Jedenfalls, auf die Post Dieser Beitrag wird der erste in einer Reihe von, um eine Impuls-Strategie mit R zu decken. Einer meiner Lieblings-Strategien ist eine Dynamik oder relative Stärke-Strategie. Hier sind nur einige der Gründe, warum ich Impulse mag: Einfache Implementierung Lange nur oder Longshort-Portfolios Viele Möglichkeiten, die Stärke oder Impuls-Maßnahme zu definieren Es funktioniert einfach Auch eine Impulsstrategie eignet sich gut für das Diversifizierungspotenzial. Das Universum der Instrumente kann unendlich sein, aber die gehandelten Instrumente sind endlich. Denken Sie es auf diese Weise Investor A schaut auf 10 Instrumente und investiert 1000 in die Top 5 Instrumente, die durch Impuls geordnet sind. Investor B betrachtet 100 Instrumente und investiert 1000 in die Top 5 Instrumente, die von Impuls belegt werden. Investor A beschränkt sein Potenzial für die Diversifizierung, indem es nur ein Universum von 10 Instrumenten hat. Investor B hat ein viel größeres Universum von Instrumenten und kann in der Theorie vielfältiger werden. Theoretisch können Sie eine unendliche Anzahl von Instrumenten mit einer begrenzten Menge an Handelskapital mit einer Dynamik oder einer relativen Stärke-Strategie handeln. Schauen Sie sich diese Links für die weitere Lesung In diesem ersten Beitrag der Serie auf Impuls, werde ich über einige der grundlegenden Setup und Funktionen, die wir verwenden werden. Der erste Schritt ist, Daten von yahoo zu bekommen. Beachten Sie, dass die for-Schleife die Daten in monatlich umwandelt und die Daten unterteilt, so dass die einzige Spalte, die wir behalten, die eingestellte Schlussspalte ist. Wir haben jetzt vier Objekte (XLY, XLP, XLE, XLF), die den Adjusted Close Preis haben. Der nächste Schritt besteht darin, diese vier Objekte zu einem einzigen Objekt zusammenzuführen, das den Adjusted Close-Preis hält. Wir können dies in einem einfachen Ein-Liner in R tun Für den Faktor, der eingestuft wird, werde ich die 3 Periodenänderungsrate (ROC) verwenden. Backtesting eine Handelsstrategie I8217ve bestellte Zeitreihenanalyse und ihre Anwendungen: Mit R Beispiele ( Springer Texte in Statistik), um mir die Zeitreihen in R Lernkurve zu helfen. So weit, was ich gesehen habe, sieht gut aus. Der Autor hat eine gute Seite mit den Ausgaben in R und Zeitreihen. Das Buch sollte bis zum Ende der Woche ankommen. In der Zwischenzeit stieß ich auf eine Handelsstrategie beim Lesen eines Artikels auf John Mauldin8217s 8220Over My Shoulder8221 Service (was ich sehr empfehlen). Der Crux davon war, dass in der Bären-Markt, der mit dem Tech-Blase Crash begann, eine Strategie der Wetten auf mittlere Reversion der SampP500 generiert erhebliche Renditen. Natürlich wollte ich testen Bitte beachten Sie, ich empfehle nichts, was folgt. Machen Sie Ihre Hausaufgaben und sprechen Sie mit einem Investment-Profi, wenn Sie Fragen haben. Die Strategie ist es, den SampP500 zu gehen, wenn der Markt in den letzten 3 Tagen maximal abschließt. Den Handel umkehren und lange dauern, wenn der Markt in den letzten 3 Tagen auf dem Minimum bleibt. ETFs machen diese Strategie relativ einfach zu handeln. SPY wird unser Fahrzeug für die lange SampP500 und SH wird unser Fahrzeug für kurze gehen. Die SH begann den Handel auf 06212006. Wir konzentrieren unsere Backtesting von diesem Punkt bis jetzt. Mit der Funktion importSeries (), die wir zuvor erstellt haben, erhalten Sie alle Werte für SPY und SH. Spy ImportSeries (8220spy8221, toto, fromfrom) sh importSeries (8220sh8221, toto, fromfrom) Serie verschmelzen (Spion, sh), c (8220spy. Open8221. 8220spy. Close8221. 8220spy. Return8221. 8220sh. Open8221. 8220sh. Close8221. 8220sh. Return8221) Wir müssen einige zusätzliche timeSeries erstellen, um LongShort Flag 8212 zu halten, lasst uns den aktuellen Stand unserer Bestände kennen. Trade Flag 8212 signalisiert, dass wir einen Handel zu diesem Zeitpunkt eingeleitet haben. Strat. Returns 8212 nominale Rückkehr für den Tag mit der Strategie. Dollar Betrag 8212 ein Bruttodollar Wert des Portfolios unter der Annahme eines 10.000 Dollar Wert auf 06212006 und eine 2 Transaktionsgebühr, wenn wir handeln. Nachdem wir die Strategie berechnet haben, werden wir auch eine Brutto-Rendite-Serie aus der Dollar-Menge erstellen. F Funktion (x) 0 x ls fapply (Serie 1, FUNf) So scheint es etwas zu dieser Strategie zu geben. Die jährliche Rückkehr und die CAPM-Tabellen sind in der Nähe der Gesamtsumme. Einige Jahre sind besser als andere. Ich werde es Ihnen überlassen, sie zu schaffen und zu studieren (meistens, um hier Platz zu sparen). Es gibt Dinge zu denken: Es sollte darauf hingewiesen werden, dass diese Strategie ist nicht steuerlich effizient 8212 alle Gewinne werden bei der kurzfristigen Kapitalgewinnrate besteuert werden. Es gab 411 Trades. Ein Handel beinhaltet Kauf und Verkauf, so 822 mal würden Sie eine Maklergebühr in Rechnung gestellt werden. Ich habe 1 Dollar pro Buysell 8212 angenommen, was von Interactive Brokers aufgeladen wird. Mit jemandem wie TD Ameritrade würde FAR mehr kosten. Dies geht auch davon aus, dass Sie am Marktschlusspreis kaufen und verkaufen können. Etwas, das möglich ist, aber Schlupf wird auftreten. Verpassen Sie nie ein Update Abonnieren Sie R-Blogger, um E-Mails mit den neuesten R-Beiträgen zu erhalten. (Sie werden diese Nachricht nicht wieder sehen.) Wie man eine Strategie in R backtest, um die Backtesting-Fähigkeiten von R zu erforschen. In einem früheren Post haben wir einige einfache Einstiegsmöglichkeiten für die USDCAD mit einem maschinellen Lernalgorithmus und Techniken aus einem Untermenge von Data Mining namens Assoziationsregel Lernen. In diesem Beitrag werden wir erforschen, wie man einen vollständigen Backtest in R mit unseren Regeln aus dem vorherigen Post zu tun und implementieren nehmen Gewinne und Stop Verluste. Lets tauchen rechts ein: Hinweis: Der Backtest ist aus den 4-stündigen Bars in unserem Datensatz aufgebaut und hat keine körnigere Sicht. Die CAGR (zusammengesetzte jährliche Wachstumsrate) ist der prozentuale Ertragsschulwert, was bedeutet, dass sie das Wachstum in gleicher Raten pro Jahr ausgleicht. Seit unserem Test war vorbei Lets sehen, ob wir die Leistung verbessern können, indem wir einen Stop-Loss hinzufügen und Gewinn nehmen. Mit nur einem Stop-Loss ging die Leistung unter. Es sieht so aus, als würden wir uns aus dem Handel herausholen, bevor sie sich erholen können. Um unsere Gewinne zu sperren, gehen wir voran und setzen einen Gewinn ein. Verriegelung in unseren Gewinnen mit einem Gewinn nehmen die Leistung leicht verbessert, aber nicht drastisch. Lets integrieren sowohl einen Stop-Loss und einen Gewinn nehmen. Jetzt können wir die Baseline Long Short Strategie vergleichen, mit nur einem Stop-Loss, nur ein Gewinn nehmen, und beide einen Stop-Stop-und nehmen Gewinn. Jetzt wissen Sie, wie Sie einen Gewinn hinzufügen und den Verlust beenden können, ich empfehle Ihnen, mit den Daten herumzuspielen und verschiedene Werte basierend auf Ihren persönlichen Risikoparametern zu testen und eigene Regeln zu verwenden. Auch bei leistungsstarken Algorithmen und anspruchsvollen Werkzeugen ist es schwierig, eine erfolgreiche Strategie aufzubauen. Für jede gute Idee neigen wir dazu, viele schlechtere zu haben. Bewaffnet mit den richtigen Werkzeugen und Wissen, können Sie Ihre Ideen effizient testen, bis Sie zu den guten kommen. Wir haben diesen Prozess in TRAIDE gestrafft. Weve entwickelte eine Testinfrastruktur, die Ihnen erlaubt, zu sehen, wo die Muster in Ihren Daten sind und in Echtzeit sehen, wie sie über Ihre historischen Daten durchgeführt hätten. Nun freigeben TRAIDE für 7 große Paare im FX-Markt mit technischen Indikatoren in zwei Wochen. Wenn Sie daran interessiert sind, die Software zu testen und Feedback zu geben, senden Sie bitte eine E-Mail an infoinovancetech. Wir haben 50 Plätze zur Verfügung.

No comments:

Post a Comment