Saturday 3 June 2017

Forex Backtesting Python

Handel mit Python Ive vor kurzem gelesen einem großen Beitrag vom turinginance Blog auf, wie man ein Quant ist. Kurz, es beschreibt einen wissenschaftlichen Ansatz zur Entwicklung von Handelsstrategien. Für mich persönlich ist das Beobachten von Daten, das Denken mit Modellen und die Bildung von Hypothesen eine zweite Natur, wie es für jeden guten Ingenieur sein sollte. In diesem Beitrag Im gehen zu illustrieren diesen Ansatz durch explizit durchlaufen eine Reihe von Schritten (nur ein paar, nicht alle von ihnen) in der Entwicklung einer Handelsstrategie beteiligt. Werfen wir einen Blick auf die häufigste Handelsinstrument, die SampP 500 ETF SPY. Ill beginnen mit Beobachtungen. Beobachtungen Es fiel mir ein, dass die meiste Zeit, dass es viel reden in den Medien über den Markt Absturz (nach großen Verlusten über mehrere Tage Zeitspanne), eine ziemlich erhebliche Rebound manchmal folgt. In der Vergangenheit Ive machte ein paar Fehler durch Schließen meiner Positionen, um Verluste kurz, nur um eine Erholung in den folgenden Tagen zu verpassen. Allgemeine Theorie Nach einer Periode von konsekutiven Verlusten, werden viele Händler ihre Positionen aus Angst für noch größere Verluste zu liquidieren. Vieles von diesem Verhalten wird von Angst, anstatt berechnet Risiko geregelt. Smarter Händler kommen dann für die Schnäppchen. Hypothese: Die Rückkehr von SPY am nächsten Tag wird nach mehreren aufeinanderfolgenden Verlusten nach oben zeigen. Um die Hypothese zu testen, berechnete Ive die Anzahl der aufeinanderfolgenden Downtage. Alles unter -0.1 tägliche Rückkehr qualifiziert als unten Tag. Die Rückkehr-Serie ist zufällig, so wie man erwarten würde, sind die Chancen von 5 oder mehr aufeinander folgenden Tage niedrig, was zu einer sehr begrenzten Anzahl von Vorkommnissen. Niedrige Anzahl von Ereignissen führt zu unzuverlässigen statistischen Schätzungen, so dass Ill bei 5 stoppen. Nachstehend ist eine Visualisierung von nex-tday Rückkehr als Funktion der Anzahl der Tage unten. Ive auch aufgetragen 90 Vertrauensintervall der Rückkehr zwischen den Zeilen. Es stellt sich heraus, dass die durchschnittliche Rendite ist positiv korreliert mit der Anzahl der Tage unten. Hypothese bestätigt. Allerdings können Sie deutlich sehen, dass diese zusätzlichen Alpha ist sehr klein im Vergleich zu den Band der wahrscheinlichen Rendite Ergebnisse. Aber auch ein kleiner Rand kann genutzt werden (einen statistischen Vorteil finden und so oft wie möglich wiederholen). Der nächste Schritt ist zu untersuchen, ob diese Kante kann in einer Handelsstrategie gedreht werden. Angesichts der obigen Daten kann eine Trading-Strategie formuliert werden: Nach Konsekutiv 3 oder mehr Verluste, gehen Sie lange. Beim nächsten Schließen beenden. Unten ist ein Ergebnis dieser Strategie im Vergleich zu reinem Buy-and-Hold. Das sieht überhaupt nicht schlecht aus. Wenn man die Sharpe-Ratios betrachtet, schneidet die Strategie einen Abstieg von 2,2 auf 0,44 für den BampH ab. Dies ist eigentlich ziemlich gut (nicht zu aufgeregt, aber ich habe nicht für Provisionskosten, Rutschen usw.). Während die obige Strategie nicht etwas ist, was ich einfach nur wegen der langen Zeitspanne tauschen möchte, provoziert die Theorie selbst weitere Gedanken, die etwas Nützliches hervorbringen könnten. Wenn das gleiche Prinzip gilt für Intraday-Daten, könnte eine Form der Skalping-Strategie gebaut werden. In dem Beispiel oben Ive vereinfachte die Welt ein wenig, indem nur die Anzahl der Tage unten gezählt wurde, ohne die Aufmerksamkeit auf die Tiefe des Drawdowns zu lenken. Auch Position Ausgang ist nur eine grundlegende am nächsten Tag-schließen. Es gibt viel zu verbessern, aber das Wesentliche meiner Meinung nach ist dies: künftige Rückkehr von SPY werden durch Drawdown und Drawdown Dauer in den letzten 3 bis 5 Tage beeinflusst. Ein erfahrener Trader weiß, welches Verhalten aus dem Markt zu erwarten ist, basierend auf einer Reihe von Indikatoren und deren Interpretation. Letzteres ist oft auf der Grundlage seiner Erinnerung oder eine Art von Modell getan. Das Finden einer guten Reihe von Indikatoren und die Verarbeitung ihrer Informationen stellt eine große Herausforderung. Erstens muss man verstehen, welche Faktoren mit den künftigen Preisen korreliert sind. Daten, die keine prädiktive Qualität haben, bringen nur Lärm und Komplexität mit sich. Gute Indikatoren zu finden, ist eine eigene Wissenschaft, die oft ein tiefes Verständnis der Marktdynamik erfordert. Dieser Teil des Strategieentwurfs lässt sich nicht einfach automatisieren. Zum Glück, sobald ein guter Satz von Indikatoren gefunden wurde, können die Händler Erinnerung und Intuition leicht ersetzt werden durch ein statistisches Modell, das wahrscheinlich viel besser als Computer mit makellosem Speicher und können perfekte statistische Schätzungen zu machen. Hinsichtlich des Volatilitätshandels brauchte ich einige Zeit, um zu verstehen, was seine Bewegungen beeinflusst. Insbesondere interessiere ich mich für Variablen, die zukünftige Renditen von VXX und XIV voraussagen. Ich werde hier nicht in vollem Umfang erklären, sondern nur eine Schlussfolgerung. Meine beiden wertvollsten Indikatoren für die Volatilität sind der Begriff Struktur Slope und aktuelle Volatilität Prämie. Meine Definition dieser beiden ist: Volatilitätsprämie VIX-realizedVol Delta (Term-Struktur-Slope) VIX-VXV VIX-AMP VXV sind die 1 und 3 Monate impliziten Volatilitäten des SampP 500. realizedVol ist hier eine 10-tägige realisierte Volatilität von SPY, Berechnet mit der Yang-Zhang-Formel. Delta wurde oft auf VixAndMore Blog diskutiert, während Premium ist bekannt aus Optionshandel. Es ist sinnvoll, kurze Volatilität zu gehen, wenn Prämie hoch ist und Futures sind in contango (Delta-lt 0). Dies führt zu einem Rückenwind aus sowohl der Premium-und tägliche Rolle entlang der Begriffsstruktur in VXX. Aber das ist nur eine grobe Schätzung. Eine gute Trading-Strategie würde kombinieren Informationen aus Premium und Delta zu kommen mit einer Vorhersage der Handelsrichtung in VXX. Ive kämpfte für eine sehr lange Zeit, um oben zu kommen mit einer guten Weise, die lauten Daten von beiden Anzeigen zu kombinieren. Ive versucht die meisten der Standardansätze, wie lineare Regression, das Schreiben einer Reihe von if-thens. Aber alle mit einer sehr kleinen Verbesserungen im Vergleich zu nur mit einem Indikator. Ein gutes Beispiel für solche Single-Indikator-Strategie mit einfachen Regeln finden Sie auf TradingTheOdds Blog. Sieht nicht schlecht aus, aber was kann mit mehreren Indikatoren getan werden Ill Start mit einigen out-of-Probe VXX-Daten, die ich von MarketSci bekam. Beachten Sie, dass dies simulierte Daten sind, bevor VXX erstellt wurde. Die Indikatoren für den gleichen Zeitraum sind im Folgenden aufgetragen: Wenn wir einen der Indikatoren nehmen (Prämie in diesem Fall) und sie gegen zukünftige Renditen von VXX plotten, ist eine gewisse Korrelation zu erkennen, aber die Daten sind extrem laut: Dennoch ist es klar Dass die negative Prämie am nächsten Tag voraussichtlich positive VXX-Renditen aufweisen wird. Die Kombination von Premium und Delta zu einem Modell war für mich eine Herausforderung, aber ich wollte schon immer eine statistische Annäherung machen. Im Wesentlichen für eine Kombination von (Delta, Premium), Id zu finden, alle historischen Werte, die am nächsten zu den aktuellen Werten und eine Abschätzung der zukünftigen Renditen auf sie basieren. Ein paar Mal Ive begann zu schreiben meine eigenen Nachbar-Interpolation Algorithmen, aber jedes Mal, wenn ich aufgeben musste. Bis ich über die Scikit nächsten Nachbarn Regression stieß. Es ermöglichte mir, schnell zu bauen einen Prädiktor auf zwei Eingaben basiert und die Ergebnisse sind so gut, dass Im ein bisschen besorgt, dass Ive einen Fehler gemacht irgendwo. Hier ist, was ich tat: Erstellen Sie einen Datensatz von Delta, premium - gt VXX am nächsten Tag Rückkehr (in-of-Stichprobe) erstellen Sie einen Nachbarn Prädiktor auf der Grundlage der Datenmenge über Handelsstrategie (out-of-sample) mit den Regeln: Go long wenn vorhergesagt return gt 0 go short wenn vorhergesagt return lt0 Die Strategie könnte nicht einfacher sein. Die Ergebnisse erscheinen äußerst gut und besser, wenn mehr Nachbarn für die Schätzung verwendet werden. Zuerst, mit 10 Punkten, ist die Strategie exzellent in der Probe, ist aber flach out-of-sample (rote Linie in Abbildung unten ist der letzte Punkt in-Probe) Dann wird die Leistung mit 40 und 80 Punkte besser: In der letzten Zwei Plots, scheint die Strategie, die gleiche In-und Out-of-Sample. Sharpe Verhältnis ist um 2.3. Ich bin sehr zufrieden mit den Ergebnissen und habe das Gefühl, dass ich nur an der Oberfläche gekratzt habe, was mit dieser Technik möglich ist. Meine Suche nach einem idealen Backtesting-Tool (meine Definition von Ideal ist in den früheren Backtesting Dilemmas Beiträge beschrieben) nicht dazu führen, dass etwas, das ich sofort verwenden könnte. Doch die Überprüfung der verfügbaren Optionen half mir besser zu verstehen, was ich wirklich will. Der Optionen Ive sah, pybacktest war die, die ich am meisten wegen seiner Einfachheit und Geschwindigkeit mochte. Nach dem Durchlaufen der Quellcode, Ive bekam einige Ideen, um es einfacher und ein bisschen mehr elegant. Von dort war es nur ein kleiner Schritt zum Schreiben meiner eigenen Backtester, die jetzt in der TradingWithPython-Bibliothek zur Verfügung steht. Ich habe einen Ansatz gewählt, bei dem der Backtester Funktionalität enthält, die alle Handelsstrategien teilen und die oft kopiert werden. Dinge wie die Berechnung von Positionen und pnl, Performance-Metriken und machen Plots. Strategie-spezifische Funktionalität, wie das Bestimmen von Eintritts - und Austrittspunkten sollte außerhalb des Backtests durchgeführt werden. Ein typischer Arbeitsablauf wäre: finden Eintrag und Exits - gt berechnen pnl und machen Plots mit Backtester - gt Nach-Prozess-Strategie-Daten In diesem Moment ist das Modul sehr minimal (siehe die Quelle hier), aber in der Zukunft plane ich Auf dem Hinzufügen von Gewinn - und Stop-Loss-Exits und Multi-Asset-Portfolios. Die Verwendung des Backtesting-Moduls wird in diesem Beispiel-Notebook gezeigt, in dem ich meine IPython-Notebooks organisiere, indem ich sie in verschiedenen Verzeichnissen speichere. Dies bringt jedoch eine Unannehmlichkeit, denn für den Zugriff auf die Notebooks muss ich ein Terminal öffnen und Typ ipython Notebook --pylabinline jedes Mal. Im sicher das ipython Team wird dies auf lange Sicht zu lösen, aber in der Zwischenzeit gibt es eine ziemlich absteigende Möglichkeit, schnell Zugriff auf die Notebooks aus dem Datei-Explorer. Alles, das Sie tun müssen, ist, ein Kontextmenü hinzuzufügen, das ipython Bediener in Ihr gewünschtes Verzeichnis anfängt: Eine schnelle Weise, das Kontexteinzelteil hinzuzufügen ist, indem Sie diesen Registerflecken laufen lassen. (Beachten Sie, dass der Patch die Python-Installation in C: Anaconda befindet. Wenn nicht, müssen Sie die. reg-Datei in einem Texteditor öffnen und den richtigen Pfad in der letzten Zeile setzen). Anleitungen zum manuellen Hinzufügen der Registrierungsschlüssel finden Sie auf Frolians Blog. Viele Leute denken, dass Leveraged etfs langfristig ihre Benchmarks unterbieten. Dies gilt für choppy Märkte, aber nicht für Trending-Bedingungen, entweder nach oben oder unten. Hebelwirkung hat nur Auswirkungen auf das wahrscheinlichste Ergebnis, nicht auf das erwartete Ergebnis. Für mehr Hintergrund bitte diesen Beitrag lesen. 2013 war ein sehr gutes Jahr für Aktien, die für den Großteil des Jahres tendierten. Lets sehen, was passieren würde, wenn wir einige der gehebelten etfs genau ein Jahr vor kurzem und hedged sie mit ihrer Benchmark. Ich wusste, dass das gehebelte etf-Verhalten erwartete, dass leveraged etfs ihre Benchmark übertrafen, so dass die Strategie, die versuchen würde, vom Verfall zu profitieren, Geld verlieren würde. Ich werde diese Paare betrachten: SPY 2 SSO -1 SPY -2 SDS -1 QQQ 2 QLD -1 QQQ -2 QID -1 IYF -2 SKF -1 Jedes gehebelte etf wird kurz gehalten (-1) und mit einem 1x abgesichert Etf. Beachten Sie, dass zur Absicherung einer inversen etf eine negative Position in der 1x etf gehalten wird. Hier ist ein Beispiel: SPY vs SSO. Sobald wir die Preise zu Beginn der Backtest-Periode (250 Tage) zu 100 normalisieren, ist es offensichtlich, dass das 2x-etf-1: 1 fällt. Jetzt die Ergebnisse der Backtest auf den Paaren oben: Alle 2x etfs (einschließlich inverse) haben ihre Benchmark im Laufe des Jahres 2013 übertroffen. Nach Erwartungen, die Strategie Ausnutzung Beta-Zerfall wäre nicht rentabel. Ich denke, dass das Spielen von gehebelten etfs gegen ihre unleveraged Gegenstücke keine Kante, es sei denn, Sie kennen die Marktbedingungen im Voraus (Trending oder Bereich-gebunden). Aber wenn Sie das kommende Marktregime kennen, gibt es viel einfachere Möglichkeiten, davon zu profitieren. Leider ist es noch niemandem gelungen, das Marktregime auch nur kurzfristig vorherzusagen. Der vollständige Quellcode der Berechnungen steht den Abonnenten des Trading With Python Kurses zur Verfügung. Notebook 307 Hier ist mein Schuss auf Twitter Bewertung. Id wie mit einem Haftungsausschluss zu starten: in diesem Moment ein großer Teil meiner portrolio besteht aus kurzen TWTR Position, so meine Meinung ist eher schief. Der Grund Ive getan meine eigene Analyse ist, dass meine Wette nicht gut funktionieren, und Twitter machte eine parabolische bewegen im Dezember 2013. Also die Frage, dass Im versuchen, hier zu beantworten ist, sollte ich meinen Verlust oder halten auf meine Shorts. Zum Zeitpunkt des Schreibens, TWTR handelt rund 64 Mark mit einer Marktkapitalisierung von 34,7 B. Bis bisher hat das Unternehmen keinen Gewinn gemacht, verlieren 142M im Jahr 3013 nach 534M im Umsatz zu machen. Die letzten beiden Zahlen geben uns jährliche Firmenausgaben von 676M. Preis aus Nutzer-Wert abgeleitet Twitter kann mit Facebook, Google und LinkedIn verglichen werden, um eine Vorstellung von Benutzer-Nummern und ihre Werte zu bekommen. Die folgende Tabelle fasst die Benutzerzahlen pro Unternehmen zusammen und einen Wert pro Nutzer, der aus dem Marktkapital abgeleitet ist. (Quelle für die Anzahl der Nutzer: Wikipedia, die Zahl für Google basiert auf der Anzahl der Suchanfragen) Es wird deutlich, dass die Marktbewertung pro Nutzer für alle Unternehmen sehr ähnlich ist, aber meine persönliche Meinung ist: TWTR ist aktuell wertvoller Pro Benutzer thatn FB oder LNKD. Dies ist nicht logisch, da beide Konkurrenten wertvolle persönliche Nutzerdaten zur Verfügung haben. GOOG wurde ausgezeichnet bei der Gewinnung von Werbeeinnahmen von seinen Nutzern. Um dies zu tun, hat es eine Reihe von stark diversifizierten Angeboten, von der Suchmaschine zu Google. Google Docs und Google Mail. TWTR hat nichts ähnliches, während sein Wert pro Benutzer nur 35 niedriger ist, dass die von Google. TWTR hat einen begrenzten Raum, um seine Benutzerbasis zu wachsen, da es keine Produkte anbietet, die mit FB - oder GOOG-Angeboten vergleichbar sind. TWTR gibt es schon seit sieben Jahren und die meisten Leute, die einen Accout haben, haben ihre Chance bekommen. Der Rest ist einfach egal. TWTR Benutzerbasis ist volatil und wird wahrscheinlich auf die nächste heiße Sache zu bewegen, wenn es verfügbar sein wird. Ich denke, die beste Referenz wäre hier LNKD, die eine stabile Nische im professionellen Markt hat. Durch diese Metrik würde TWTR überbewertet. Das Einstellen des Benutzerwertes bei 100 für TWTR würde einen fairen TWTR Preis von 46 ergeben. Preis aus zukünftigem Ergebnis Es liegen genügend Daten über die zukünftigen Ergebnisschätzungen vor. Einer der nützlichsten, die ich gefunden habe, ist hier. Mit diesen Zahlen, während subtrahieren Unternehmensausgaben, die ich annehmen, konstant bleiben. Produziert diese Zahlen: Fazit Auf der Grundlage der verfügbaren Informationen sollte die optimistische Bewertung der TWTR im Bereich 46-48 liegen. Es gibt keine klaren Gründe, dass sie höher handeln und viele operative Risiken für den Handel niedriger ausfallen sollten. Meine Vermutung ist, dass während des Börsengangs genug Fachleute den Preis überprüft und es auf einem angemessenen Preisniveau eingestellt haben. Was dann geschah, war eine irrationale Marktbewegung, die nicht durch neue Informationen gerechtfertigt war. Werfen Sie einen Blick auf die bullish Raserei auf stocktwits. Mit Menschen behaupten Dinge wie dieser Vogel fliegen zu 100. Reine Emotion, die nie gut funktioniert. Das einzige, was mich jetzt ruht, ist, mein Geld zu setzen, wo mein Mund ist und an meine Shorts kleben. Wir werden sehen. Shorting der kurzfristigen Volatilität etn VXX mag wie eine gute Idee, wenn man sich das Diagramm aus einer gewissen Entfernung. Wegen des Contangos in den Volatilitäts-Futures erlebt das etn sehr viel Gegenwind die meiste Zeit und verliert ein wenig seinen Wert jeden Tag. Dies geschieht aufgrund der täglichen Rebalancing, für weitere Informationen schauen Sie bitte in die Perspektive. In einer idealen Welt, wenn Sie es lange genug halten, ist ein Gewinn, der durch Zeitverfall in den Futures und etn Rebalancing erzeugt wird, aber kurzfristig müssen Sie durch einige ziemlich schwere Drawdowns gehen. Schauen Sie zurück auf den Sommer 2011. Ich war unglücklich (oder dumm) genug, um eine kurze VXX-Position zu halten, kurz bevor die VIX ging. Ich habe fast mein Konto bis dahin geblasen: 80 Drawdown in nur ein paar Tage was zu einer Bedrohung von Margin Call von meinem Broker. Margin Call bedeutet, den Verlust zu zahlen. Dies ist keine Situation Id jemals wieder in sein. Ich wusste, es wäre nicht einfach zu halten Kopf kühl zu allen Zeiten, aber das Erfahren der Stress und Druck der Situation war etwas anderes. Zum Glück wusste ich, wie VXX neigt dazu, sich zu benehmen, so dass ich keine Panik, sondern wechselte Seite auf XIV zu einem Margin-Aufruf zu vermeiden. Die Geschichte endet gut, 8 Monate später war mein Portfolio wieder an Stärke und ich habe eine sehr wertvolle Lektion gelernt. Um mit einem Wort der Warnung hier beginnen: handeln Sie nicht Volatilität, wenn Sie nicht genau wissen, wie viel Risiko Sie einnehmen. Having said, dass, werfen wir einen Blick auf eine Strategie, die einige der Risiken durch Kurzschließen VXX minimiert, nur wenn es angebracht ist. Strategie-Thesis: VXX Erfahrungen am meisten ziehen, wenn die Futures-Kurve ist in einem steilen contango. Die Futures-Kurve wird durch die VIX-VXV-Beziehung angenähert. Wir werden VXX kürzen, wenn VXV eine ungewöhnlich hohe Prämie über VIX hat. Schauen wir uns zuerst die VIX-VXV-Beziehung an: Das obige Diagramm zeigt VIX-VXV-Daten seit Januar 2010. Datenpunkte des letzten Jahres werden rot dargestellt. Ich habe mich dafür entschieden, eine quadratische Passform zwischen den beiden zu verwenden, die VXV f (VIX) approximiert. Die f (VIX) ist als blaue Linie aufgetragen. Die Werte oberhalb der Linie stellen die Situation dar, wenn die Futures stärker sind als normale Contangos. Jetzt definiere ich einen Delta-Indikator, der die Abweichung vom Fit ist: delta VXV-f (VIX). Jetzt können Sie einen Blick auf den Preis von VXX zusammen mit Delta: Oben: Preis von VXX auf Log-Skala. Unten: Delta. Grüne Markierungen zeigen delta gt 0 an. Rote Markierungen deltalt0. Es ist offensichtlich, dass grüne Flächen einer negativen Rendite im VXX entsprechen. Lets simulieren eine Strategie mit diesen Annahmen: Short VXX, wenn Delta gt 0 Konstantes Kapital (Wette auf jeden Tag ist 100) Keine Schlupf - oder Transaktionskosten Diese Strategie wird mit dem verglichen, der jeden Tag klein verhandelt, aber nicht Delta berücksichtigt . Die grüne Linie stellt unsere VXX-Kurzstrategie dar, die blaue Linie ist die dumme. Sharpe von 1,9 für eine einfache End-of-Day-Strategie ist nicht schlecht, meiner Meinung nach. Aber noch wichtiger ist, dass die gut-wrenching Drawdowns weitgehend vermieden werden, indem die Aufmerksamkeit auf die Zukunft Futures-Kurve. Aufbau dieser Strategie Schritt für Schritt wird im kommenden Trading mit Python-Kurs diskutiert werden. Der Preis eines Vermögenswertes oder einer ETF ist natürlich der beste Indikator dort ist, aber leider gibt es nur so viele Informationen darin enthalten. Einige Leute scheinen zu denken, dass die mehr Indikatoren (rsi, macd, gleitenden Durchschnitt Crossover etc). Desto besser, aber wenn alle von ihnen auf der gleichen Basis-Kurs-Serie basieren, werden sie alle enthalten eine Teilmenge der gleichen begrenzten Informationen in dem Preis enthalten. Wir brauchen mehr Informationen zusätzlich zu dem, was enthalten ist der Preis, um eine informierte Vermutung über das, was in der nahen Zukunft geschehen wird. Ein exzellentes Beispiel für die Kombination aller möglichen Informationen zu einer cleveren Analyse finden Sie auf dem Short Side of Long Blog. Die Herstellung dieser Art von Analyse erfordert eine große Menge an Arbeit, für die ich einfach nicht die Zeit haben, da ich nur Teilzeit teilnehmen. So baute ich mein eigenes Markt-Dashboard, das automatisch Informationen für mich sammelt und es in einer leicht verdaulichen Form präsentiert. In diesem Beitrag Im gehend zu zeigen, wie ein Indikator auf der Grundlage von kurzen Volumen-Daten zu bauen. Dieser Beitrag wird den Prozess der Datenerhebung und-verarbeitung. Schritt 1: Datenquelle suchen. BATS-Austausch bietet täglich Volumen-Daten kostenlos auf ihrer Website. Schritt 2: Daten manuell amp überprüfen Kurze Volumendaten der BATS-Börse sind in einer Textdatei enthalten, die gezippt wird. Jeder Tag hat seine eigene Zip-Datei. Nach dem Herunterladen und Entpacken der txt-Datei, ist dies was ist drin (zuerst mehrere Zeilen): Insgesamt enthält eine Datei ca. 6000 Symbole. Diese Daten bedürfen einer gewissen Arbeit, bevor sie sinnvoll dargestellt werden können. Schritt 3: Daten automatisch erhalten Was ich wirklich will ist nicht nur die Daten für einen Tag, sondern ein Verhältnis von kurzem Volumen zum Gesamtvolumen für die letzten paar Jahre, und ich dont wirklich das Gefühl, wie das Herunterladen von 500 Zip-Dateien und kopieren Sie sie in Excel manuell. Glücklicherweise ist die vollständige Automatisierung nur ein paar Codezeilen entfernt: Zunächst müssen wir dynamisch eine URL erstellen, aus der eine Datei heruntergeladen wird: Jetzt können wir mehrere Dateien auf einmal herunterladen: Schritt 4. Parse heruntergeladene Dateien Wir können Zip und Pandas verwenden Bibliotheken, um eine einzelne Datei zu parsen: Es gibt ein Verhältnis von Short VolumeTotal Volume für alle Symbole in der Zip-Datei: Schritt 5: Erstellen Sie ein Diagramm: Jetzt ist nur noch zu analysieren alle heruntergeladenen Dateien und kombinieren sie zu einer einzigen Tabelle und Plot Das Ergebnis: In der obigen Abbildung habe ich das durchschnittliche kurze Volumenverhältnis für die letzten zwei Jahre aufgetragen. Ich könnte auch eine Teilmenge von Symbolen verwendet haben, wenn ich einen Blick auf einen bestimmten Sektor oder eine Aktie nehmen wollte. Ein kurzer Blick auf die Daten vermittelt mir einen Eindruck, dass hohe Short-Volume-Verhältnisse in der Regel mit Marktböden übereinstimmen und niedrige Verhältnisse gute Einstiegspunkte für eine Long-Position zu sein scheinen. Dieses kurze Volumenverhältnis kann von hier aus als Grundlage für die Strategieentwicklung genutzt werden. Handel mit Python-Kurs Wenn Sie ein Händler oder ein Investor und möchten eine Reihe von quantitativen Handel Fähigkeiten, die Sie in Erwägung ziehen, den Handel mit Python Couse erwerben können. Der Online-Kurs bietet Ihnen die besten Werkzeuge und Praktiken für quantitative Handelsforschung, einschließlich Funktionen und Skripte von Experten quantitative Händler geschrieben. Sie lernen, wie Sie unglaubliche Mengen an Daten, Design - und Backtest-Strategien erhalten und verarbeiten und die Trading-Performance analysieren. Dies wird Ihnen helfen, fundierte Entscheidungen, die entscheidend für einen Händler Erfolg sind. Klicken Sie hier, um zum Trading mit Python-Kurswebsite fortzufahren Mein Name ist Jev Kuznetsov, tagsüber Ich bin ein researcherengineer in einer Firma, die im Druckgeschäft beteiligt ist. Der Rest der Zeit bin ich ein Händler. Ich studierte angewandte Physik mit Spezialisierung auf Mustererkennung und künstliche Intelligenz. Meine tägliche Arbeit beinhaltet alles von schnellen Algorithmus-Prototyping in Matlab und anderen Sprachen auf Hardware-Design Amp-Programmierung. Seit 2009 nutze ich meine technischen Fähigkeiten an den Finanzmärkten. Bevor ich zu dem Schluss kam, dass Python das beste verfügbare Werkzeug ist, arbeitete ich intensiv in Matlab, das auf meinem anderen Blog abgedeckt ist. QSForex ist ein Open-Source-Event-driven Backtesting und Live-Handelsplattform für den Einsatz in der Devisenbörse (Forex ) Märkte, die derzeit in einem Alpha-Staat. Es wurde als Teil der Forex Trading Diary-Serie auf QuantStart erstellt, um die systematische Trading-Community mit einem robusten Trading-Engine, die einfache Forward-Strategie-Implementierung und Tests ermöglicht. Die Software wird unter einer zulässigen MIT-Lizenz bereitgestellt (siehe unten). Open-Source - QSForex wurde unter einer äußerst zulässigen Open-Source-MIT-Lizenz freigegeben, die eine vollständige Nutzung sowohl in der Forschung als auch in kommerziellen Anwendungen erlaubt, ohne Einschränkung, jedoch ohne jegliche Garantie. Free - QSForex ist völlig kostenlos und kostet nichts zum Herunterladen oder verwenden. Collaboration - Da QSForex Open Source ist, arbeiten viele Entwickler zusammen, um die Software zu verbessern. Neue Funktionen werden häufig hinzugefügt. Alle Fehler werden schnell bestimmt und behoben. Software-Entwicklung - QSForex ist in der Python-Programmiersprache für einfache Cross-Plattform-Unterstützung geschrieben. QSForex enthält eine Suite von Unit-Tests für den Großteil seines Berechnungscodes und neue Tests werden ständig für neue Funktionen hinzugefügt. Event-Driven Architecture - QSForex ist sowohl für Backtesting als auch für Live-Trader vollständig ereignisgesteuert, was zu einem einfachen Übergang von Strategien von einer Researchtesting-Phase zu einer Live-Trading-Implementierung führt. Transaktionskosten - Spread-Kosten sind standardmäßig für alle BackTest-Strategien enthalten. Backtesting - QSForex bietet intraday Tick-Auflösung mehrtägigen Multi-Währungs-Paar Backtesting. Trading - QSForex unterstützt derzeit den Live-Intraday-Handel mit der OANDA Brokerage API über ein Portfolio von Paaren. Performance Metrics - QSForex unterstützt derzeit grundlegende Performance-Messung und Equity-Visualisierung über die Visualisierungsbibliotheken Matplotlib und Seaborn. Installation und Verwendung 1) Besuchen Sie oanda und richten Sie ein Konto ein, um die Anmeldeinformationen für die API-Authentifizierung zu erhalten, die Sie für den Live-Handel benötigen. Ich erkläre, wie man dies in diesem Artikel: quantstartarticlesForex-Trading-Tagebuch-1-Automated-Forex-Trading-mit-der-OANDA-API. 2) Klonen Sie diese git Repository an einen geeigneten Ort auf Ihrem Rechner mit dem folgenden Befehl in Ihrem Terminal: git clone githubmhallsmooreqsforex. git. Alternativ können Sie die ZIP-Datei des aktuellen Master-Zweigs bei githubmhallsmooreqsforexarchivemaster. zip herunterladen. 3) Erstellen Sie einen Satz von Umgebungsvariablen für alle Einstellungen, die in der Datei settings. py im Stammverzeichnis der Anwendung gefunden wurden. Alternativ können Sie Ihre spezifischen Einstellungen durch Überschreiben der Aufrufe von os. environ. get (.) Für jede Einstellung festlegen: 4) Erstellen Sie eine virtuelle Umgebung (virtualenv) für den QSForex-Code und verwenden Sie pip, um die Anforderungen zu installieren. Zum Beispiel in einem Unix-basierten System (Mac oder Linux) können Sie ein solches Verzeichnis wie folgt erstellen, indem Sie die folgenden Befehle im Terminal eingeben: Dadurch wird eine neue virtuelle Umgebung zur Installation der Pakete erstellt. Angenommen, Sie haben das QSForex git-Repository in ein Beispielverzeichnis wie zB Projekteqsforex heruntergeladen (ändern Sie dieses Verzeichnis unten, wo Sie QSForex installiert haben), dann müssen Sie die folgenden Befehle ausführen, um die Pakete zu installieren: Dies wird einige Zeit dauern, da NumPy, SciPy, Pandas, Scikit-Learn und Matplotlib zusammengestellt werden. Es gibt viele Pakete, die für diese Arbeit erforderlich sind, also werfen Sie einen Blick auf diese beiden Artikel für weitere Informationen: Sie müssen auch einen symbolischen Link aus Ihrem Site-Paket-Verzeichnis zu Ihrem QSForex-Installationsverzeichnis zu erstellen, um in der Lage sein zu rufen Import qsforex innerhalb des Codes. Dazu benötigen Sie einen Befehl, der folgend ähnelt: Stellen Sie sicher, dass Sie projectsqsforex zu Ihrem Installationsverzeichnis und zu venvqsforexlibpython2.7site-Paketen in Ihr virtualenv-Websitepaketverzeichnis ändern. Sie können nun die folgenden Befehle korrekt ausführen. 5) In diesem Stadium, wenn Sie einfach wollen, um Praxis oder Live-Handel, dann können Sie python tradingtrading. py laufen. Die die Standardstrategie von TestStrategy verwenden wird. Dies kauft einfach oder verkauft ein Währungspaar alle 5. Tick. Es ist nur zum Testen - verwenden Sie es nicht in einer Live-Trading-Umgebung Wenn Sie eine nützliche Strategie zu erstellen, dann erstellen Sie einfach eine neue Klasse mit einem beschreibenden Namen, z. MeanReversionMultiPairStrategy und sicherstellen, dass es eine calculatesignals-Methode hat. Sie müssen diese Klasse die Paaren Liste sowie die Ereignis-Queue, wie in tradingtrading. py passieren. Siehe Strategiestrategy. py für Details. 6) Zur Durchführung von Backtesting ist es notwendig, simulierte Forex-Daten zu erzeugen oder historische Tickdaten herunterzuladen. Wenn Sie einfach die Software ausprobieren möchten, ist der schnellste Weg, einen Beispiel-Backtest zu generieren, einige simulierte Daten zu generieren. Das aktuelle Datenformat von QSForex ist das gleiche wie das von DukasCopy Historical Data Feed bei dukascopyswissenglishmarketwatchhistorical zur Verfügung gestellt. Um einige historische Daten zu erzeugen, stellen Sie sicher, dass die CSVDATADIR-Einstellung in settings. py auf ein Verzeichnis festgelegt ist, in dem die historischen Daten gespeichert werden sollen. Sie müssen dann generatesimulatedpair. py ausführen. Die sich unter dem Skriptverzeichnis befindet. Es erwartet ein einziges Befehlszeilenargument, das in diesem Fall das Währungspaar im BBBQQQ-Format ist. Zum Beispiel: In dieser Phase wird das Skript eine einzelne Monate Daten für Januar 2014 zu schaffen, fest einprogrammiert Das heißt, Sie einzelne Dateien zu sehen, von dem Format BBBQQQYYYYMMDD. csv (zB GBPUSD20140112.csv) erscheinen in Ihrem CSVDATADIR für alle Werktage in In diesem Monat. Wenn Sie das Monats - jahr der Datenausgabe ändern möchten, ändern Sie einfach die Datei und starten sie erneut. 7) Nachdem die historischen Daten erzeugt wurden, ist es möglich, einen Backtest durchzuführen. Die Backtest-Datei selbst ist in backtestbacktest. py gespeichert. Aber das enthält nur die Backtest-Klasse. Um einen Backtest auszuführen, müssen Sie diese Klasse instanziieren und mit den notwendigen Modulen versorgen. Der beste Weg, um zu sehen, wie dies getan wird, ist, die Beispiel Moving Average Crossover-Implementierung in der examplesmac. py-Datei zu betrachten und diese als Vorlage zu verwenden. Dies macht Gebrauch von der MovingAverageCrossStrategy, die in der Strategiestrategy. py gefunden wird. Standardmäßig erfolgt der Handel sowohl mit GBPUSD als auch mit EURUSD, um mehrere Währungspaare anzuzeigen. Es verwendet Daten, die in CSVDATADIR gefunden werden. Führen Sie zum Ausführen des Beispiel-Backtests einfach Folgendes aus: Dies wird einige Zeit in Anspruch nehmen. Auf meinem Ubuntu-Desktopsystem zu Hause, mit den historischen Daten, die über generatesimulatedpair. py generiert wurden. Es dauert etwa 5-10 Minuten zu laufen. Ein großer Teil dieser Berechnung erfolgt am Ende des eigentlichen Backtests, wenn der Drawdown berechnet wird. Bitte denken Sie daran, dass der Code nicht aufgelegt hat. Bitte lassen Sie ihn bis zur Fertigstellung. 8) Wenn Sie die Leistung des Backtest zu betrachten Sie einfach output. py verwenden können, eine Equity-Kurve, Zeit gibt (dh tick-to-Tick-Returns) und einem Drawdown Kurve zu lesen: Und das ist es in diesem Stadium sind Sie bereit, Um eigene Backtests zu erstellen, indem sie Strategien in strategiespa. py ändern oder anhängen und reale Daten aus DukasCopy (dukascopyswissenglishmarketwatchhistorical) herunterladen. Wenn Sie irgendwelche Fragen über die Installation haben, dann fühlen Sie bitte sich frei, mich an mikequantstart zu mailen. Wenn Sie irgendwelche Fehler oder andere Probleme, die Sie denken, speziell aufgrund der Code-Basis sein kann, fühlen sich frei, hier ein Github Ausgabe zu öffnen: githubmhallsmooreqsforexissues Copyright (c) 2015 Michael Hallen-Moore Hiermit wird die Erlaubnis erteilt, kostenlos, für jede Person, eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die Software) zu erhalten, die in der Software ohne Einschränkung zu umgehen, einschließlich und ohne Einschränkung der Rechte zu nutzen, zu kopieren, zu ändern, fusionieren, zu veröffentlichen, zu verbreiten, weiter lizenzieren andor Verkaufen von Kopien der Software, Und Personen, denen die Software zur Verfügung gestellt wird, unter den folgenden Bedingungen zu gestatten: Der oben genannte Urheberrechtshinweis und diese Genehmigungsmitteilung sind in allen Kopien oder wesentlichen Teilen der Software enthalten. Die Software wird als vorgesehen, ohne Gewährleistung irgendeiner Art, DIREKT ODER INDIREKT, EINSCHLIESSLICH, ABER NICHT AUF DIE GARANTIEN DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER HAFTUNG FÜR SCHADEN ODER ANDERE HAFTUNG, WEDER IN EINEM VERTRAG, SCHULD ODER AUF ANDERE WEISE, DIE AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER EINER ANDEREN IN DER SOFTWARE. Forex Trading Disclaimer Trading Devisen auf Margin trägt ein hohes Maß an Risiko, und kann nicht für alle Anleger geeignet. Die Wertentwicklung in der Vergangenheit ist kein Hinweis auf zukünftige Ergebnisse. Der hohe Grad der Hebelwirkung kann sowohl gegen Sie als auch für Sie arbeiten. Vor der Entscheidung, in Devisen zu investieren, sollten Sie sorgfältig überlegen Sie Ihre Anlageziele, Erfahrung und Risikobereitschaft. Die Möglichkeit besteht, dass Sie einen Verlust von einigen oder allen Ihrer anfänglichen Investition zu erhalten und daher sollten Sie nicht investieren Geld, das Sie sich nicht leisten können, zu verlieren. Sie sollten sich bewusst sein, alle Risiken im Zusammenhang mit Devisenhandel und suchen Rat von einem unabhängigen Finanzberater, wenn Sie irgendwelche Zweifel haben.


No comments:

Post a Comment