Monday 27 November 2017

Quelltext Betrachten


Forex Trading Diary 6 - Multi-Day-Trading und Plotten Ergebnisse Sein seit einer Weile seit meinem letzten Forex Trading Diary Update. Ive gewesen beschäftigt, an dem neuen QuantStart Jobs-Brett zu beschäftigen und so Ive hatte nicht so viel Zeit wie üblich, um an QSForex zu arbeiten. Obwohl ich einige Fortschritte gemacht habe Insbesondere habe ich in der Lage, einige neue Features hinzuzufügen, darunter: Dokumentation - Ive jetzt einen QSForex Unterabschnitt auf der Website, die alle Einträge des Forex Trading Diary und Dokumentation für QSForex enthält. Insbesondere enthält es detaillierte Installationsanweisungen und eine Gebrauchsanleitung für Backtesting und Live-Trading. Simulierte Tick-Daten-Generierung - Da es schwierig, Forex-Tick-Daten in Bulk-Download (oder zumindest war es von bestimmten Herstellern Ich benutze) Ich beschloss, es wäre einfacher, einfach zu generieren einige zufällige Tick-Daten für das Testen des Systems. Multi-Day Backtesting - Eine langjährige Feature-Anfrage in QSForex ist die Fähigkeit, Backtest über mehrere Tage von Tick-Daten. In der neuesten Version unterstützt QSForex nun sowohl Multi-Day - als auch Multi-Pair Backtesting, was ihn wesentlich nützlicher macht. Plotten von Backtesting-Ergebnissen - Während die Konsolenausgabe nützlich ist, schlägt nichts daran, eine Eigenkapitalkurve oder einen historischen Drawdown visualisieren zu können. Ive nutzte die Seaborn-Bibliothek, um die verschiedenen Performance-Charts darzustellen. In diesem Eintrag Ill beschreiben alle neuen Funktionen im Detail unten. Wenn Sie die Serie bis jetzt nicht verfolgen konnten, können Sie zur QSForex Sektion gehen, um aufzuholen vorherige Eintragungen. Simuliertes Tick-Data-Skript Ein extrem wichtiges Anforderungsmerkmal für QSForex ist die Möglichkeit, über mehrere Tage hinweg zu testen. Bisher unterstützte das System nur Backtesting über eine einzige Datei. Dies war keine skalierbare Lösung, da eine solche Datei in den Speicher und anschließend in ein Pandas DataFrame eingelesen werden muss. Während die erzeugten Tick-Datendateien nicht groß sind (ungefähr 3,5 MB), addieren sie sich schnell, wenn man mehrere Paare über Monate oder mehr betrachtet. Um mit der Erstellung einer Multi-Tag / Multi-Datei-Fähigkeit begann ich versuchen, weitere Dateien aus dem DukasCopy historischen Tick-Feed zu laden. Leider lief ich in einige Schwierigkeiten und ich war nicht in der Lage, die notwendigen Dateien herunterladen, um das System zu testen. Da ich nicht zu sehr um die eigentliche Zeitreihe selber war, fühlte ich, dass es einfacher wäre, ein Skript zu schreiben, um simulierte Forexdaten selbst zu erzeugen. Ich habe dieses Skript in der Datei scripts / generatesimulatedpair. py platziert. Den aktuellen Code finden Sie hier. Die Grundidee des Skripts besteht darin, eine Liste von zufällig verteilten Zeitstempeln zu erzeugen, die jeweils sowohl Bid / Ask-Werte als auch Bid / Ask-Volumenwerte besitzen. Der Spread zwischen dem Bid und dem Ask ist konstant, während die Bid / Ask-Werte selbst als zufälliger Weg erzeugt werden. Da ich nicht wirklich irgendwelche wirklichen Strategien auf diesen Daten prüfen werde, war ich nicht zu störte über seine statistischen Eigenschaften oder seine absoluten Werte in Bezug auf reale Forex-Währungspaare. Solange es das richtige Format und die ungefähre Länge hatte, konnte ich es verwenden, um das mehrtägige Backtesting-System zu testen. Das Skript ist derzeit hartcodiert, um Forex-Daten für den gesamten Monat Januar 2014 zu generieren. Es nutzt die Python-Kalender-Bibliothek, um festzustellen, Werktage (obwohl ich havent ausgeschlossen Feiertage noch) und erzeugt dann eine Reihe von Dateien der Form BBBQQQYYYYMMDD. csv . Wobei BBBQQQ das angegebene Währungspaar (z. B. GBPUSD) und YYYYMMDD das angegebene Datum (z. B. 20140112) ist. Diese Dateien werden im Verzeichnis CSVDATADIR abgelegt, das in der Datei settings. py im Anwendungsstamm angegeben ist. Um die Daten zu erzeugen, muß der folgende Befehl ausgeführt werden, wobei BBBQQQ durch den speziellen Währungnamen von Interesse ersetzt werden muß, z. B. GBPUSD: Die Datei muss geändert werden, um mehrere Monate oder Jahre Daten zu erzeugen. Jede Tickdatei ist in der Größenordnung von 3,2 MB groß. In Zukunft werde ich dieses Skript modifizieren, um mehrere Monate oder Jahre Daten zu generieren, die auf einer Liste von Währungspaaren basieren, anstatt die Werte, die hartcodiert sind. Dies soll Ihnen jedoch zunächst helfen. Bitte beachten Sie, dass das Format genau mit dem der historischen Tickdaten von DukasCopy übereinstimmt. Dies ist der Dataset, den ich derzeit verwende. Multi-Day Backtesting implementiert Nach der direkten Erstellung simulierter Tick-Daten erfolgt die Implementierung von mehrtägigem Backtesting. Während mein langfristiger Plan ist, ein robusteres historisches Speichersystem wie PyTables mit HDF5 zu verwenden. Für die Zeit werde ich nutzen, eine Reihe von CSV-Dateien, eine Datei pro Tag pro Währungspaar. Dies ist eine skalierbare Lösung, wenn die Anzahl der Tage zunimmt. Die ereignisgesteuerte Natur des Systems erfordert immer nur N-Dateien im Speicher auf einmal, wobei N die Anzahl der Währungspaare ist, die an einem bestimmten Tag gehandelt werden. Die Grundidee des Systems ist für die aktuelle HistoricCSVPriceHandler weiterhin die streamnexttick-Methode verwenden, aber mit einer Änderung, um mehrere Tage von Daten durch Laden jeden Tag der Daten sequentiell Rechnung zu tragen. Die aktuelle Implementierung beendet den Backtest beim Empfang der StopIteration-Ausnahme, die durch den nächsten Aufruf (..) von self. allpairs geworfen wird, wie in diesem Pseudocode-Snippet gezeigt: In der neuen Implementierung wird dieses Snippet wie folgt modifiziert: In diesem Snippet, Wenn StopIteration angehoben wird, prüft der Code auf das Ergebnis von self. updatecsvforday (). Wenn das Ergebnis True ist, wird der Backtest fortgesetzt (auf self. curdatepairs, der in die nachfolgenden Tagedaten geändert werden konnte). Wenn das Ergebnis False ist. Die Backtest-Enden. Dieser Ansatz ist sehr speichereffizient, da nur ein bestimmter Datenwert an einem beliebigen Punkt geladen wird. Das bedeutet, dass wir monatelange Backtests durchführen können und nur durch die CPU-Geschwindigkeit und die Datenmenge, die wir generieren oder erwerben können, begrenzt sind. Ich habe die Dokumentation aktualisiert, um die Tatsache zu aktualisieren, dass das System jetzt erwartet, dass mehrere Tage von Daten in einem bestimmten Format, in einem bestimmten Verzeichnis, das angegeben werden muss. Plotten Backtesting Ergebnisse mit Seaborn-Bibliothek Ein Backtest ist relativ nutzlos, wenn wir nicht die Leistung der Strategie im Laufe der Zeit visualisieren können. Während das System bisher weitgehend konsolenbasiert war, habe ich mit dieser Version den Übergang zu einer grafischen Benutzeroberfläche (GUI) begonnen. Insbesondere habe ich die üblichen drei Scheibendiagramme erstellt, die oftmals die Performance-Metriken für quantitative Handelssysteme begleiten, nämlich die Eigenkapitalkurve, das Renditeprofil und die Drawdown-Kurve. Alle drei werden für jedes Tick berechnet und in einer Datei mit dem Namen equity. csv im OUTPUTRESULTSDIR in settings. py ausgegeben. Um die Daten einzusehen nutzen wir eine Bibliothek namens Seaborn. Die Publishing-Qualität (ja, ACTUAL Publikation-Qualität) Grafiken, die wesentlich besser aussehen als die Standard-Grafiken von Matplotlib produziert produziert. Die Grafiken sehen sehr nah an denen, die vom R-Paket ggplot2 erzeugt werden. Darüber hinaus verwendet Seaborn tatsächlich Matplotlib darunter, so können Sie immer noch die Matplotlib API. Um Ausgabe Ive das output. py-Skript zu ermöglichen, das im backtest / Verzeichnis lebt. Die Liste für das Skript ist wie folgt: Wie Sie sehen können, das Skript importiert Seaborn und öffnet die equity. csv-Datei als Pandas DataFrame, dann erstellt einfach drei Subplots, jeweils eine für die Equity-Kurve, Renditen und Drawdown. Beachten Sie, dass das Drawdown-Diagramm selbst tatsächlich aus einer Helperfunktion berechnet wird, die in performance / performance. py lebt. Die von der Portfolio-Klasse am Ende eines Backtests aufgerufen wird. Ein Beispiel der Ausgabe für die enthaltene MovingAverageCrossStrategy-Strategie auf einem zufällig generierten GBPUSD-Datenbestand für den Monat Januar 2014 wird wie folgt gegeben: Insbesondere können Sie die flachen Abschnitte der Eigenkapitalkurve an den Wochenenden sehen, an denen keine Daten vorhanden sind (Zumindest für diesen simulierten Datensatz) vorhanden ist. Darüber hinaus können Sie sehen, dass die Strategie einfach verliert Geld in einer ziemlich vorhersehbaren Art und Weise auf dieser zufällig simulierten Datensatz. Dies ist ein guter Test des Systems. Wir versuchen einfach, einem Trend auf einer zufällig generierten Zeitreihe zu folgen. Die Verluste entstehen durch den im Simulationsprozess eingeführten festen Spread. Dies macht es reichlich klar, dass, wenn wir einen gleichbleibenden Gewinn in fremden Devisenhandel machen wollen wir eine bestimmte quantifizierbare Flanke, die positive Renditen generiert über die Transaktionskosten wie Ausbreitung und Schlupf. Wir werden viel mehr über diesen äußerst wichtigen Punkt in nachfolgenden Einträgen des Forex Trading Diary sagen. Nächste Schritte Fixing Position Berechnungen Ive hatte vor kurzem eine Menge sehr hilfreich Korrespondenz mit QSForex Benutzer über die Disqus Kommentare und die QSForex Issues Seite über die Korrektheit der Berechnungen innerhalb der Position-Klasse. Einige haben bemerkt, dass die Berechnungen nicht genau widerspiegeln können, wie OANDA (der Broker, der für das trading. py-System verwendet wird) selbst Kreuzwährungsgeschäfte berechnen. Folglich ist einer der wichtigsten folgenden Schritte, diese vorgeschlagenen Änderungen in position. py tatsächlich zu machen und zu testen und auch die Unit-Tests zu aktualisieren, die in positiontest. py leben. Dies wird mit portfolio. py und auch portfoliotest. py ein Knock-on-Effekt haben. Performance-Messung Während wir nun über die Equity-Kurve, die Renditeprofile und die Drawdown-Serie über eine Reihe von visuellen Leistungsindikatoren verfügen, benötigen wir mehr quantifizierte Leistungsmaßnahmen. Insbesondere werden wir Maßstäbe auf der strategischen Ebene benötigen, einschließlich gemeinsamer Risiko - / Ertragsquoten wie Sharpe Ratio, Information Ratio und Sortino Ratio. Wir benötigen auch Drawdown-Statistiken, einschließlich der Verteilung der Drawdowns, sowie beschreibenden Statistiken wie maximale Drawdown. Weitere nützliche Metriken sind die jährliche jährliche Wachstumsrate (CAGR) und die Gesamtrendite. Auf der Handels - / Positionsebene wollen wir Metriken wie Avg Gewinn / Verlust, max Gewinn / Verlust, Gewinn-Verhältnis und Gewinn / Verlust-Verhältnis sehen. Da wir die Positionsklasse von Anfang an als grundlegenden Teil der Software gebaut haben, sollte es nicht zu problematisch sein, diese Metriken über einige zusätzliche Methoden zu generieren. Mehr dazu im nächsten Eintrag, jedoch Klicken Sie unten, um mehr darüber zu erfahren. Die Informationen auf dieser Website ist die Meinung der einzelnen Autoren auf der Grundlage ihrer persönlichen Beobachtung, Forschung und jahrelange Erfahrung. Der Herausgeber und seine Autoren sind nicht eingetragene Anlageberater, Rechtsanwälte, CPAs oder andere Finanzdienstleister und machen keine Rechts-, Steuer-, Rechnungswesen, Anlageberatung oder andere professionelle Dienstleistungen. Die Informationen, die von dieser Web site angeboten werden, sind nur allgemeine Ausbildung. Weil jeder Einzelne sachliche Situation anders ist, sollte der Leser seinen persönlichen Berater suchen. Weder der Autor noch der Herausgeber übernehmen jegliche Haftung oder Verantwortung für Fehler oder Unterlassungen und haben weder eine Haftung noch Verantwortung gegenüber Personen oder Körperschaften in Bezug auf Schäden, die direkt oder indirekt durch die auf dieser Website enthaltenen Informationen verursacht oder vermutet werden. Benutzung auf eigene Gefahr. Darüber hinaus kann diese Website erhalten finanzielle Entschädigung von den Unternehmen erwähnt durch Werbung, Affiliate-Programme oder auf andere Weise. Preise und Angebote von Inserenten auf dieser Website ändern sich häufig, manchmal ohne Vorankündigung. Während wir uns bemühen, rechtzeitige und genaue Informationen aufrechtzuerhalten, können Angebot Details veraltet sein. Besucher sollten daher die Bedingungen dieser Angebote vor der Teilnahme an ihnen überprüfen. Der Autor und sein Herausgeber haften nicht für die Aktualisierung von Informationen und haften nicht für die Inhalte, Produkte und Dienstleistungen von Drittanbietern, auch wenn sie über Hyperlinks und / oder Werbung auf dieser Website aufgerufen werden. Backtesting einer Intraday-Mean-Reversion-Paare-Strategie zwischen SPY und IWM In diesem Artikel Werden wir unsere erste Intraday-Trading-Strategie zu prüfen. Es wird mit einer klassischen Handelsidee, die der Handelspaare. In diesem Fall werden wir von zwei Exchange Traded Funds (ETFs), SPY und IWM Gebrauch machen. Die an der New York Stock Exchange (NYSE) gehandelt werden und versuchen, die US-Aktienmarktindizes, den SampP500 und den Russell 2000 zu repräsentieren. Die Strategie schafft breit eine Spanne zwischen dem Paar von ETFs, indem sie einen verlangt und einen Betrag des anderen kürzt. Das Verhältnis von langem zu kurzem kann in vielerlei Hinsicht definiert werden, wie die Verwendung von statistischen Kointegrations-Zeitreihen-Techniken. In diesem Szenario werden wir ein Hedge-Verhältnis zwischen SPY und IWM über eine lineare Linearbewegung berechnen. Dies ermöglicht es uns, eine Spread zwischen SPY und IWM, die auf eine z-Score normalisiert ist zu schaffen. Die Handelssignale werden erzeugt, wenn die z-Punktzahl bestimmte Schwellenwerte unter dem Glauben übersteigt, dass der Spread auf den Mittelwert zurückkehrt. Der Grundgedanke für die Strategie ist, dass SPY und IWM die gleiche Situation, die der Wirtschaft einer Gruppe von Großkapital - und Small-Cap-US-Unternehmen, annähernd charakterisieren. Die Prämisse ist, dass, wenn man die Ausbreitung der Preise, dann sollte es Mittelwert-wiederherzustellen, da, während lokale (in Zeit) Ereignisse können entweder die SP500 oder die Russell 2000 Indizes separat (wie Small-Cap / Large-Cap Unterschiede , Neuausgleichstermine oder Blocktrades), wird die langfristige Preisserie der beiden wahrscheinlich kointegriert werden. Die Strategie Die Strategie wird in den folgenden Schritten durchgeführt: Daten - 1 Minute Barren von SPY und IWM werden von April 2007 bis Februar 2014 bezogen. Verarbeitung - Die Daten sind korrekt ausgerichtet und fehlende Balken werden gegenseitig verworfen. Spread - Das Hedge-Verhältnis zwischen den beiden ETFs wird durch eine lineare Linearbewegung berechnet. Dies ist definiert als der Beta-Regressionskoeffizient unter Verwendung eines Rückblickfensters, das sich um 1 Bar vorwärts bewegt und die Regressionskoeffizienten neu berechnet. Somit wird das Hedge-Verhältnis betai für bar bi über die Punkte b bis b für einen Rückblick auf k bars berechnet. Z-Score - Die Standardbewertung des Spread wird in der üblichen Weise berechnet. Dies bedeutet eine Subtraktion des (Sample-) Mittels der Ausbreitung und Division durch die (Proben-) Standardabweichung der Ausbreitung. Der Grund dafür besteht darin, Schwellenparameter einfacher zu interpet zu machen, da die z-Bewertung eine dimensionslose Größe ist. Ich habe bewusst ein lookahead Bias in die Berechnungen eingeführt, um zu zeigen, wie subtil es sein kann. Versuchen Sie es und achten Sie darauf Trades - Long-Signale werden erzeugt, wenn die negative Z-Score unter eine vorgegebene (oder post-optimierte) Schwelle sinkt, während kurze Signale umgekehrt sind. Exit-Signale werden erzeugt, wenn die absolute z-Wertigkeit unter eine zusätzliche Schwelle fällt. Für diese Strategie habe ich (etwas willkürlich) eine absolute Eintrittsschwelle von z2 und eine Austrittsschwelle von z1 ausgewählt. Angenommen, mittlere Rückkehr Verhalten in der Ausbreitung, wird dies hoffentlich erfassen, dass die Beziehung und eine positive Leistung. Vielleicht ist der beste Weg, um die Strategie in die Tiefe zu verstehen, um es tatsächlich umzusetzen. Der folgende Abschnitt beschreibt einen vollständigen Python-Code (einzelne Datei) für die Implementierung dieser Mittelrücksetzstrategie. Ich habe den Code kommentiert, um das Verständnis zu unterstützen. Python-Implementierung Wie bei allen Python / Pandas-Tutorials ist es notwendig, eine Python-Forschungsumgebung einzurichten, wie in diesem Tutorial beschrieben. Nach der Einrichtung besteht die erste Aufgabe darin, die notwendigen Python-Bibliotheken zu importieren. Für diesen Backtest sind Matplotlib und Pandas erforderlich. Die spezifischen Bibliotheksversionen, die ich verwende, sind wie folgt: Lets Go ahead und Import der Bibliotheken: Die folgende Funktion createpairsdataframe importiert zwei CSV-Dateien mit den Intraday Bars von zwei Symbolen. In unserem Fall wird dies SPY und IWM sein. Es erstellt dann ein separates Dataframe-Paar. Die die Indizes der beiden Originaldateien verwendet. Da ihre Zeitstempel wahrscheinlich aufgrund fehlender Trades und Fehler unterschiedlich sind, garantiert dies, dass wir passende Daten haben. Dies ist einer der wichtigsten Vorteile der Verwendung einer Datenanalyse-Bibliothek wie Pandas. Der Boilerplate-Code wird für uns sehr effizient gehandhabt. Der nächste Schritt besteht darin, die rollende lineare Regression zwischen SPY und IWM durchzuführen. In diesem Fall ist IWM der Prädiktor (x) und SPY ist die Antwort (y). Ich habe ein Standard-Lookback-Fenster von 100 bar gesetzt. Wie oben diskutiert, ist dies ein Parameter der Strategie. Um die Strategie als robust zu betrachten, wollen wir idealerweise ein Rückkehrprofil (oder ein anderes Maß an Leistung) als eine konvexe Funktion der Rückblickperiode sehen. So werden wir in einem späteren Stadium des Codes eine Sensitivitätsanalyse durch Variation der Rückblickperiode über einen Bereich durchführen. Sobald der rollende Beta-Koeffizient im linearen Regressionsmodell für SPY-IWM berechnet wird, addieren wir ihn zu den Datenpaaren DataFrame und löschen die leeren Zeilen. Dies stellt den ersten Satz von Stäben gleich der Größe des Rückblicks als Trimmmaß dar. Wir erstellen dann die Verbreitung der beiden ETFs als eine Einheit von SPY und - betai Einheiten von IWM. Dies ist eindeutig keine realistische Situation, da wir die IWM gebrochen haben, was bei einer realen Implementierung nicht möglich ist. Schließlich erstellen wir die z-Kerbe des Spread, die durch Subtrahieren des Mittelwerts der Ausbreitung und Normalisierung durch die Standardabweichung der Ausbreitung berechnet wird. Beachten Sie, dass es hier eine eher subtile Lookahead-Bias gibt. Ich habe es bewusst in den Code, wie ich wollte betonen, wie einfach es ist, einen solchen Fehler in der Forschung machen. Mittelwert und Standardabweichung werden für die gesamte Spreizzeitreihe berechnet. Wenn dies die tatsächliche historische Genauigkeit widerspiegelt, dann wären diese Informationen nicht verfügbar gewesen, da sie implizit auf zukünftige Informationen zurückgreifen. Daher sollten wir ein rollendes Mittel und stdev verwenden, um die z-Punktzahl zu berechnen. In createlongshortmarketsignals werden die Handelssignale erzeugt. Diese werden berechnet, indem man die Ausbreitung verlängert, wenn die z-Bewertung eine negative z-Bewertung negativ überschreitet und die Ausbreitung unterschreitet, wenn die z-Bewertung positiv eine positive z-Bewertung übersteigt. Das Ausgangssignal wird gegeben, wenn der absolute Wert des z-Wertes kleiner oder gleich einer anderen (kleineren) Schwelle ist. Um diese Situation zu erreichen, ist es notwendig, für jede Bar zu wissen, ob die Strategie in oder aus dem Markt ist. Longmarket und Shortmarket sind zwei Variablen definiert, um die lange und kurze Marktpositionen zu verfolgen. Leider ist dies viel einfacher zu codieren in einer iterativen Weise im Gegensatz zu einem vectorized Ansatz und damit ist es langsam zu berechnen. Trotz 1-Minuten-Takten, die 700.000 Datenpunkte pro CSV-Datei erfordern, ist es noch relativ schnell auf meiner älteren Desktop-Maschine zu berechnen. Um über ein Pandas DataFrame zu iterieren (was eigentlich kein gemeinsamer Vorgang ist), ist es notwendig, die iterrows-Methode zu verwenden Ein Generator, über den Iteration: In diesem Stadium haben wir aktualisiert Paare, die tatsächlichen Long / Short-Signale enthalten, die uns zu bestimmen, ob wir auf dem Markt sein müssen. Jetzt müssen wir ein Portfolio erstellen, um den Marktwert der Positionen zu verfolgen. Die erste Aufgabe besteht darin, eine Positionspalte zu erstellen, die die langen und kurzen Signale kombiniert. Dies enthält eine Liste von Elementen aus (1,0, -1), wobei 1 eine Long / Market-Position darstellt, wobei 0 keine Position (beendet) und -1 eine Short - / Marktposition darstellt. Die Spalten sym1 und sym2 repräsentieren die Marktwerte der SPY - und IWM-Positionen am Ende jedes Balkens. Sobald die ETF-Marktwerte erstellt wurden, summieren wir sie, um einen Gesamtmarktwert am Ende jeder Bar zu erzeugen. Dieses wird dann durch die Methode pctchange für dieses Series-Objekt in einen returnstream umgewandelt. Nachfolgende Codezeilen löschen die schlechten Einträge (NaN und inf Elemente) und berechnen schließlich die volle Eigenkapitalkurve. Die Hauptfunktion bringt alles zusammen. Die intraday CSV-Dateien befinden sich auf dem Datadir-Pfad. Achten Sie darauf, den unten stehenden Code zu ändern, um auf Ihr bestimmtes Verzeichnis zu verweisen. Um zu ermitteln, wie empfindlich die Strategie für die Rückblickperiode ist, ist es notwendig, eine Leistungsmetrik für eine Reihe von Rückblicken zu berechnen. Ich habe die endgültige Gesamtprozentsatzrendite des Portfolios als das Leistungsmaß und den Rückverfolgungsbereich in 50.200 mit Schritten von 10 gewählt. Sie können im folgenden Code sehen, dass die vorherigen Funktionen in einer for-Schleife in diesem Bereich mit anderen Schwellenwerten verpackt sind Fest gehalten. Die abschließende Aufgabe ist, matplotlib zu verwenden, um ein Liniendiagramm der Rückblicke gegen Rückkehr zu verursachen: Das Diagramm der Rückblickperiode gegen Rückkehr kann jetzt gesehen werden. Beachten Sie, dass es ein globales Maximum um ein Lookback gleich 110 Bars gibt. Wenn wir eine Situation gesehen hätten, in der der Rückblick unabhängig von den Renditen war, hätte dies einen Anlass zur Besorgnis gegeben: Kein Backtesting-Artikel wäre ohne eine nach oben geneigte Eigenkapitalkurve vollständig. Wenn Sie also eine Kurve der kumulierten Renditen vs Zeit plotten möchten, können Sie verwenden Den folgenden Code. Es wird das endgültige Portfolio aus der Lookback-Parameter-Studie erstellt. Daher ist es notwendig, das Lookback zu wählen, je nachdem, welches Diagramm Sie visualisieren möchten. Das Diagramm zeigt auch die Erträge von SPY in der gleichen Periode, um den Vergleich zu unterstützen: Das folgende Aktienkurvendiagramm ist für eine Rückblickperiode von 100 Tagen: Beachten Sie, dass der Drawdown von SPY im Jahr 2009 während der Periode der Finanzkrise signifikant ist. Die Strategie hatte auch eine volatile Periode zu diesem Zeitpunkt. Beachten Sie auch, dass sich die Performance im letzten Jahr aufgrund des starken Trendes der SPY in diesem Zeitraum, der den SampP500-Index widerspiegelt, etwas verschlechtert hat. Beachten Sie, dass wir bei der Berechnung der Z-Punktzahl der Spreizung noch die Vorausschau-Bias berücksichtigen müssen. Ferner wurden alle diese Berechnungen ohne Transaktionskosten durchgeführt. Diese Strategie würde sicherlich sehr schlecht funktionieren, sobald diese Faktoren berücksichtigt werden. Gebühren, Bid / Ask Spread und Slippage sind alle derzeit nicht berücksichtigt. Darüber hinaus ist die Strategie der Handel in fraktionalen Einheiten der ETFs, die auch sehr unrealistisch ist. In späteren Artikeln werden wir einen viel anspruchsvolleren ereignisgesteuerten Backtester erstellen, der diese Faktoren berücksichtigt und uns deutlich mehr Vertrauen in unsere Equity-Kurve und Performance-Metriken bietet. Pionier in Tomorrows Trading Wie es funktioniert Build-Algorithmen in einem Browser-IDE, Mit Template-Strategien und Free Data Design und testen Sie Ihre Strategie auf unsere kostenlosen Daten und wenn youre bereit Bereitstellung es live zu Ihrem Brokerage. Code in mehreren Programmiersprachen und nutzen Sie unseren Cluster von Hunderten von Servern, um Ihren Backtest auszuführen, um Ihre Strategie in Aktien, FX, CFD, Optionen oder Futures-Märkten zu analysieren. QuantConnect ist die nächste Revolution im Quant-Trading und kombiniert Cloud Computing und offenen Datenzugriff. Unübertroffene Geschwindigkeit Harness unserer Server-Farm für institutionelle Geschwindigkeiten von Ihrem Desktop-Computer. Sie können auf Ihre Ideen schneller als Sie jemals zuvor getan iterieren. Massive Data Library Wir bieten Ihnen eine umfangreiche, 400-TB-Tick-Resolution-Datenbibliothek für US-Aktien, Optionen, Futures, Fundamentaldaten, CFD und Forex seit 1998. World Class Execution Unsere Live-Handelsalgorithmen befinden sich neben den Marktservern in Equinix (NY7) Für die sichere, sichere und erleichternde schnelle Ausführung auf den Märkten. Haben Sie einige tolle Ideen Lets testen Sie es aus Starten Sie Ihren Algorithmus Professionelle Qualität, Open Data Library Design-Strategien mit unserer sorgfältig kuratierten Datenbibliothek, übergreifende globale Märkte, von Tick bis zur täglichen Auflösung. Daten werden fast täglich aktualisiert, so können Sie Backtest auf den neuesten Daten möglich, und Überleben Bias frei. Wir bieten Aktien-Tick-Daten gehen bis Januar 1998 für jedes Symbol gehandelt, insgesamt über 29.000 Aktien. Der Preis wird von QuantQuote zur Verfügung gestellt. Darüber hinaus haben wir Morning Star Fundamental Daten für die beliebtesten 8.000 Symbole für 900 Indikatoren seit 1998. FOREX amp CFD Wir bieten 100 Währungspaare und 70 CFD-Verträge für alle großen Wirtschaft von FXCM und OANDA zur Verfügung gestellt. Die Daten werden in Tick-Auflösung, beginnt April 2007 und wird täglich aktualisiert. Für jeden Vertrag, der in CME, COMEX und GLOBEX gehandelt wird, bieten wir Futures-Tick-Trade - und Quote-Daten von Januar 2009 bis heute an. Die Daten werden wöchentlich aktualisiert und werden von AlgoSeek zur Verfügung gestellt. Wir bieten Option Trades und Quotes bis hin zur Minute Auflösung, für jede Option auf ORPA seit 2007 gehandelt, für Millionen von Verträgen. Die Daten werden innerhalb von 48 Stunden aktualisiert und werden von AlgoSeek zur Verfügung gestellt. Teamzusammenarbeit Finden Sie neue Freunde in der Community und arbeiten zusammen mit unserer Team-Coding-Funktion Share-Projekte und sehen ihren Code sofort, wie sie tippen. Sie können sogar Live-Zugriff gewähren und den Live-Algorithmus zusammen steuern. Verwenden Sie unsere interne Instant Messaging, um potenzielle Team-Mitglieder zu finden, um Kräfte zu sichern Secure Intellectual Property Unser Fokus ist es, Ihnen die bestmögliche algorithmische Handelsplattform und schützen Sie Ihre wertvollen geistigen Eigentums. Wir werden immer ein Infrastruktur - und Technologieanbieter sein. Wenn Sie bereit für Live-Trading gut glücklich helfen, führen Sie durch Ihre Broker der Wahl. Execute Durch Leading Brokerages Weve integriert mit weltweit führenden Brokerage bieten die beste Ausführung und niedrigsten Gebühren an die Gemeinschaft. Event Driven Strategien Entwerfen eines Algorithmus könnte nicht einfacher sein. Es gibt nur zwei benötigte Funktionen, und wir kümmern uns um alles andere Sie gerade Initialisieren () Ihre Strategie und behandeln die Daten-Events, die Sie angefordert haben. Sie können neue Indikatoren, Klassen, Ordner und Dateien mit einem webbasierten Vollcompiler erstellen und automatisch vervollständigen. Wir sind verpflichtet, Ihnen die bestmögliche Algorithmus-Design-Erfahrung. Nutzen Sie Ihr Potenzial Entscheiden Sie sich für die Nutzer können ihre Strategien präsentiert Hedgefund Kunden in einem transparenten professionellen Strategie-Dashboard. Strategien werden durch QuantConnects Backtesting und Live-Handel validiert, so dass Sie eine neutrale Drittanbieter-Überprüfung des Codes erhalten. Interessierte Hedgefonds können Sie direkt über QuantConnect kontaktieren, um Ihnen eine Beschäftigung oder eine Finanzierung für Ihre Strategie zu bieten Verbinden Sie unsere Gemeinschaft Wir haben eine der größten quantitativen Handelsgemeinschaften in der Welt, Gebäude, teilen und diskutieren Strategien durch unsere Gemeinschaft. Sprechen Sie mit einigen der hellsten Köpfe der Welt, wie wir neue Bereiche der Wissenschaft, Mathematik und Finanzen zu erforschen.

No comments:

Post a Comment