Wednesday 22 March 2017

Quantstart Devisenmarkt

Forex Trading Diary 3 - Open Sourcing das Forex Trading System In der heutigen Eintragung des Forex Trading Diary Ich möchte den längerfristigen Plan für das Devisenhandelssystem zu diskutieren. Darüber hinaus möchte ich skizzieren, wie Ive Pythons Decimal-Datentyp verwendet, um Berechnungen genauer zu machen. Bisher haben wir mit der OANDA Rest-API experimentiert, um zu sehen, wie es mit der API von Interactive Brokers verglichen wurde. Weve auch gesehen, wie man in einem grundlegenden Portfolio-Replikationselement als ersten Schritt zu einem richtigen Ereignis-getriebenen Backtesting-System hinzufügen. Ive hatte auch einige hilfreiche Kommentare zu beiden früheren Artikeln (1 und 2), was darauf hindeutet, dass viele von euch sind scharf auf den Wandel und Erweiterung der Code selbst. Open Sourcing das Forex Trading System Aus den oben genannten Gründen habe ich beschlossen, Open-Source-Forex Trading System. Was bedeutet dies, bedeutet, dass alle aktuellen und zukünftigen Code zur Verfügung stehen kostenlos unter einer liberalen MIT Open-Source-Lizenz, auf der Github Versionskontroll-Website unter der folgenden URL: githubmhallsmooreqsforex. Für diejenigen unter Ihnen, die Git und Github vor verwendet haben, youll in der Lage sein, git klonen das Repo und starten Sie es für Ihre eigenen Zwecke zu ändern. Das QuantStart Automated Forex Trading System ist nun Open-Source unter einer liberalen MIT Lizenz. Den letzten Code auf Github findest du unter dem qsforex Repository unter githubmhallsmooreqsforex. Für diejenigen unter Ihnen, die neu in Source-Versionskontrolle sind Sie wahrscheinlich wollen, um zu lesen, wie git (und Versionskontrolle im Allgemeinen) arbeitet mit dem fantastischen kostenlosen ebook Pro Git. Es lohnt sich, etwas Zeit damit zu verbringen, über Quellcodeverwaltung zu lernen, da es Ihnen eine riesige Menge künftiger Kopfschmerzen ersparen wird, wenn Sie viel Zeit mit der Programmierung und Aktualisierung von Projekten verbringen. Der Schnellstart für ein Ubuntu-System ist die Installation von git: Sie müssen es dann machen Ein Verzeichnis für das Projekt qsforex, in dem das Projekt stattfindet und das Projekt von der Github-Site kopiert wird: An dieser Stelle müssen Sie eine virtuelle Umgebung erstellen, in der der Code ausgeführt werden soll: Sie müssen dann die Anforderungen installieren (dies wird dauern) Einige Zeit): Schließlich müssen Sie eine symbolische Verknüpfung in Ihrer virtuellen Pythonumgebung erstellen, um es Ihnen zu ermöglichen, qsforex in Ihren Code einzugeben (und es auszuführen): Wie bereits erwähnt, müssen Sie die notwendigen Umgebungsvariablen erstellen Für Ihre OANDA-Authentifizierungsberechtigungen. Bitte lesen Sie dazu den Tagebucheintrag 2, wie Sie dies tun können. Bitte beachten Sie die README mit dem Repo verbunden, da es Installationsanweisungen, einen Haftungsausschluss und eine Garantie über die Verwendung des Codes enthält. Da sich die Software im Alpha-Modus befindet, werden diese Anweisungen im Laufe der Zeit einfacher. Insbesondere werde ich versuchen, das Projekt in ein Python-Paket zu wickeln, so dass es problemlos über Pip installiert werden kann. Wenn Sie irgendwelche Fragen über die Installation haben, dann zögern Sie bitte nicht, mich auf mikequantstart zu mailen. Longer-Term Plan Die Philosophie des Devisenhandelssystems, wie auch der Rest der QuantStart-Seite, ist es, den realen Handel so weit wie möglich in unserem Backtesting zu simulieren. Dies schließt auch die Details ein, die häufig aus forschungsorientierteren Backtesting-Situationen ausgeschlossen sind. Latenz, Serverausfälle, Automatisierung, Überwachung, realistische Transaktionskosten werden in die Modelle mit einbezogen, um uns eine gute Vorstellung davon zu vermitteln, wie gut eine Strategie wahrscheinlich ist. Da wir Zugriff auf Tick-Daten haben (Bidask-Zeitstempel), können wir den Spread in die Transaktionskosten aufnehmen. Wir können auch Modell Schlupf. Es ist weniger direkt, die Auswirkungen des Marktes zu modellieren, obwohl dies bei kleineren Handelsbeträgen weniger von Belang ist. Zusätzlich zu den Transaktionskosten wollen wir ein robustes Portfoliomanagement mithilfe von Risikoüberlagerungen und Positionsgrößen modellieren. Also, was ist derzeit im Forex Trading System bis dato enthalten Event-Driven Architecture - Das Forex Trading System wurde als ein ereignisgesteuertes System von Grund auf, wie dies ist, wie ein Intraday-Trading-System wird in einer Live-Umgebung implementiert werden . Preis-Streaming - Wir haben eine grundlegende Preis-Streaming-Objekt. Dies behandelt derzeit Abonnement für nur ein einziges Paar, aber wir können dies leicht ändern, um mehrere Währungspaare abonnieren. Signalerzeugung - Wir können Trading-Strategien (basierend auf den bisherigen und aktuellen Tick-Preisen) mit dem Strategy-Objekt, das SignalEvent-Objekte erzeugt, einbinden. Order Execution - Wir haben ein naives Order Execution System, das blind Aufträge aus dem Portfolio an OANDA sendet. Durch blind bedeutet es, dass weder ein Risikomanagement noch eine Positionsbestimmung durchgeführt wird, noch eine algorithmische Ausführung, die zu reduzierten Transaktionskosten führen könnte. GBP Basiswährung - Um die Dinge einfach zu halten, habe ich nur das System für GBP Basiswährung geschrieben. Dies ist vielleicht der wichtigste Aspekt zu ändern, wie viele von Ihnen haben Praxis Konten in USD, EUR, CAD, JPY, AUD und NZD gehandelt GBPUSD Trading - Ich wählte das Kabel als Währungspaar, um die ursprünglichen Position und Portfolio-Objekte zu testen mit. Der Umgang mit mehreren Währungspaaren ist ein wichtiger Schritt. Dabei werden die Positions - und Portfolio-Berechnungen modifiziert. Dezimalbehandlung - Jedes Produktionssystem muss Währungsberechnungen korrekt bearbeiten. Insbesondere sollten Währungswerte nicht als Floating-Point-Datentypen gespeichert werden, da sich Rundungsfehler akkumulieren. Sehen Sie bitte diesen fantastischen Artikel auf Gleitkomma-Darstellungen für mehr Details. LongShort Trading - Zwischen den Tagebucheinträgen 2 und 3 fügte ich die Fähigkeit hinzu, ein Währungspaar zu knacken (im Gegensatz zu nur in der Lage, lange zu gehen). Entscheidend ist, dass dies auch getestet wird. Lokale Portfolio-Handhabung - Meiner Meinung nach einen Backtest durchführen, der die Strategieperformance aufgrund unrealistischer Annahmen aufbaut, ist am besten ärgerlich und äußerst unrentabel im Schlimmsten. Mit der Einführung eines lokalen Portfolio-Objekts, das die OANDA-Berechnungen nachbildet, können wir unsere internen Berechnungen während der Praxis überprüfen Handeln. Was uns mehr Vertrauen gibt, wenn wir später dieses gleiche Portfolio-Objekt für Backtesting auf historische Daten verwenden. Unit Tests für PositionPortfolio - Während Ive nicht erwähnt es direkt in Tagebucheinträge 1 und 2, Ive tatsächlich schrieb einige Unit-Tests für die Portfolio-und Position-Objekte. Da diese für die Berechnungen der Strategie so entscheidend sind, muss man äußerst zuversichtlich sein, dass sie wie erwartet funktionieren. Ein weiterer Vorteil dieser Tests ist, dass sie die zugrunde liegende Berechnung so ändern, dass, wenn alle Tests noch passieren, können wir darauf vertrauen, dass das gesamte System wird sich weiterhin wie erwartet verhalten. In diesem Stadium fehlt dem Forex Trading System die folgende Funktionalität: Slippage Handling - Das System erzeugt derzeit viel Schlupf aufgrund der Hochfrequenz-Charakter der Tick-Daten von OANDA zur Verfügung gestellt. Dies bedeutet, dass der lokal ausgewiesene Portfolio-Saldo nicht den von OANDA berechneten Saldo widerspiegelt. Bis eine korrekte Ereignisabwicklung und Schlupfeinstellung durchgeführt wird, bedeutet dies, dass ein Backtest die Realität nicht korrekt wiedergibt. Mehrere Basiswährungen - Wir sind derzeit auf GBP beschränkt. Zumindest müssen wir die wichtigsten Währungsbezeichnungen - USD, EUR, CAD, AUD, JPY und NZD. Mehrere Währungspaare - Ähnlich müssen wir die wichtigsten Währungspaare über Kabel (GBPUSD) unterstützen. Dafür gibt es zwei Aspekte. Die erste ist, die Berechnungen korrekt zu verarbeiten, wenn weder die Basis oder das Angebot eines Währungspaares gleich der Konten-Nennwährung ist. Der zweite Aspekt ist, mehrere Positionen zu unterstützen, so dass wir ein Portfolio von Währungspaaren handeln können. Risikomanagement - Viele Research Backtests ignorieren das Risikomanagement vollständig. Leider ist dies generell für die Kürze in der Beschreibung der Regeln einer Strategie notwendig. In Wirklichkeit müssen wir - im Falle eines Handels - eine Risikoüberlagerung verwenden, sonst ist es höchstwahrscheinlich, dass wir irgendwann einen erheblichen Verlust erleiden werden. Dies bedeutet nicht, dass das Risikomanagement dies vollständig verhindern kann, aber es macht es sicherlich weniger wahrscheinlich. Portfolio-Optimierung - In einem institutionellen Rahmen haben wir ein Investitionsmandat, das ein robustes Portfolio-Management-System mit verschiedenen Zuteilungsregeln diktiert. In einem Einzelhandel-Einstellung können wir eine Position Dimensionierung Ansatz wie das Kelly Criterion verwenden, um unsere langfristige zusammengesetzte Wachstumsrate zu maximieren. Robuste Strategien - Ich habe nur einige einfache zufällige Signal-Generierung Spielzeug-Strategien bis heute gezeigt. Nun, da wir beginnen, ein zuverlässiges Intraday Devisenhandel System zu schaffen, sollten wir beginnen, die Durchführung einige interessante Strategien. Zukünftige Tagebucheinträge werden sich auf Strategien konzentrieren, die aus einer Mischung von technischen Indikatoren, Zeitreihenmodellen und maschinellen Lerntechniken gezogen werden. Remote-Deployment - Da wir potentiell am 24-Stunden-Handel interessiert sind (zumindest während der Woche), benötigen wir ein anspruchsvolleres Setup als das Ausführen des Backtests auf einem lokalen Desktop-Rechner zu Hause. Es ist wichtig, dass wir eine robuste Remote-Server-Implementierung unseres Systems mit entsprechender Redundanz und Überwachung schaffen. Historisches Backtesting - Wir haben das Portfolio-Objekt gebaut, um ein realistisches Backtesting durchzuführen. In diesem Stadium fehlt uns ein historisches Tick-Datenspeichersystem. In nachfolgenden Artikeln werden wir auf die Erfassung historischer Tickdaten und deren Speicherung in einer geeigneten Datenbank wie HDF5 schauen. Trade Database - Eventuell wollen wir unsere Live Trades in unserer eigenen Datenbank speichern. Dies ermöglicht es uns, unsere eigenen Analysen auf Live-Trading-Daten durchzuführen. Eine gute Empfehlung für eine relationale Datenbank wäre PostgreSQL oder MySQL. Monitoring und Hochverfügbarkeit - Da wir ein hochfrequentes Intraday-System in Betracht ziehen, müssen wir eine umfassende Überwachung und Hochverfügbarkeits-Redundanz vorsehen. Dies bedeutet, dass die CPU-Auslastung, die Plattenverwendung, die Netzwerk-E / A, die Latenzzeit und die Überprüfung, dass alle periodischen Skripts so eingestellt sind, dass sie ausgeführt werden, berichtet werden. Darüber hinaus benötigen wir eine Backup - und Restore-Strategie. Fragen Sie sich, was Backup-Pläne, die Sie an Ort und Stelle haben, wenn Sie große offene Positionen, in einem volatilen Markt, und Ihr Server plötzlich gestorben wäre. Glauben Sie mir, es kommt vor Multiple BrokerFIX Integration - Im Moment sind wir stark an den OANDA Broker gekoppelt. Wie ich schon sagte, ist dies einfach, weil ich über ihre API kam und fand es zu einem modernen Angebot. Es gibt viele andere Broker da draußen, von denen viele das FIX-Protokoll unterstützen. Das Hinzufügen einer FIX-Fähigkeit würde die Anzahl der Broker erhöhen, die mit dem System verwendet werden könnten. GUI Control und Reporting - Im Moment ist das System vollständig konsolenbefehlsgebunden. Zumindest müssen wir einige grundlegende Charting, um Backtest-Ergebnisse anzeigen. Ein anspruchsvolleres System wird zusammenfassende Statistiken von Trades, Performance-Metriken auf Strategieebene sowie Gesamtportfolio-Performance beinhalten. Diese GUI könnte unter Verwendung eines plattformübergreifenden Fenstersystems wie Qt oder Tkinter implementiert werden. Es könnte auch präsentiert werden, mit einem Web-basierten Front-End, mit einem Web-Framework wie Django. Wie man sehen kann, gibt es eine Menge Funktionalität, die auf der Roadmap übrig bleibt. Davon abgesehen, wird jeder neue Tagebucheintrag (und potenzielle Beiträge der Gemeinschaft) das Projekt voranbringen. Dezimal-Datentypen Nun, da wir den längerfristigen Plan diskutiert haben, möchte ich einige der Änderungen vorstellen, die ich an dem Code seit dem Tagebucheintrag 2 vorgenommen habe. Insbesondere möchte ich beschreiben, wie ich den Code geändert habe, um die Decimal - Anstatt Gleitkomma-Speicher zu verwenden. Dies ist eine äußerst wichtige Änderung, da Gleitkomma-Darstellungen eine wesentliche Quelle für Langzeitfehler in Portfolio - und Auftragsmanagementsystemen sind. Python unterstützt nativ Dezimaldarstellungen auf eine beliebige Genauigkeit. Die Funktionalität ist in der Dezimalbibliothek enthalten. Insbesondere müssen wir den Wert "-every-" ändern, der in einer Positionsberechnung in einem Dezimal-Datentyp erscheint. Hierzu gehören die Anteile, die Exposure, die Pips, der Gewinn und der prozentuale Gewinn. Dies stellt sicher, dass wir die volle Kontrolle darüber haben, wie Rundungsprobleme im Umgang mit Währungsrepräsentationen behandelt werden, die zwei Dezimalstellen der Genauigkeit haben. Insbesondere müssen wir die Methode der Rundung wählen. Python unterstützt ein paar verschiedene Typen, aber wir gehen mit ROUNDHALFDOWN. Die auf die nächste ganze Zahl mit Bündeln, die in Richtung Null gehen, umläuft. Hier ist ein Beispiel, wie der Code geändert wird, um Decimal-Datentypen von ihren vorherigen Gleitkommadarstellungen zu behandeln. Das folgende ist eine Liste von position. py: Beachten Sie, dass wir Decimal mit einem String-Argument anstatt ein Gleitkomma-Argument bereitstellen müssen. Dies liegt daran, dass ein String genau die Genauigkeit des Wertes angibt, während ein Gleitkommatyp nicht. Beachten Sie auch, dass, wenn wir anfangen, unsere Trades in einer relationalen Datenbank zu speichern (wie oben in der Roadmap beschrieben), müssen wir sicherstellen, dass wir wieder den richtigen Datentyp verwenden. PostgreSQL und MySQL unterstützen eine Dezimaldarstellung. Es ist wichtig, dass wir diese Datentypen bei der Erstellung unseres Datenbankschemas nutzen, sonst werden wir auf Rundungsfehler hindeuten, die extrem schwer zu diagnostizieren sind. Für diejenigen, die an einer tieferen Diskussion dieser Themen interessiert sind, in Mathematik und Informatik, Gegenstand der Numerical Analysis umfasst Floating-Point-Speicher-Themen, unter vielen anderen interessanten Themen. In den folgenden Tagebucheinträgen werden wir diskutieren, wie ich Unit-Testing auf den Code angewandt habe und wie wir die Software auf mehr Währungspaare erweitern können, indem wir die Positionsberechnungen ändern. Vollständiger Python-Code Da der vollständige Quellcode für das Projekt jetzt Open Source ist, unter einer MIT-Lizenz. Es kann immer herausgefunden werden bei githubmhallsmooreqsforex. Mit den begleitenden Unterlagen. Wenn Sie die anderen Einträge in der Reihe lesen möchten, folgen Sie bitte den unten stehenden Links: Pionierarbeit in Tomorrows Trading Wie funktioniert es? Erstellen Sie Algorithmen in einer Browser-IDE, mit Template-Strategien und Free Data Design und testen Sie Ihre Strategie auf unseren kostenlosen Daten und Wenn Sie bereit sind, es leben 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 Gurt unserer Server-Farm für institutionelle Geschwindigkeiten von Ihrem Desktop-Computer. Sie können auf Ihre Ideen schneller als Sie jemals zuvor getan. Massive Datenbibliothek Wir stellen eine massive Datenbibliothek zur Verfügung, die für die US-Aktien, Optionen, Futures, Fundamentaldaten, CFD und Forex seit 1998 verfügbar ist. World Class Execution Unsere Live-Handelsalgorithmen befinden sich neben den Marktservern in Equinix (NY7) Für eine schnelle, sichere und leichtere Ausführung auf den Märkten. Haben Sie einige tolle Ideen Lets es ausprobieren Start Ihr Algorithmus Professionelle Qualität, Open Data Library Design-Strategien mit unserer sorgfältig kuratierten Datenbibliothek, die sich über globale Märkte, von Tick bis zur täglichen Auflösung. Daten werden fast täglich aktualisiert, so können Sie Backtest auf die 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. Wir bieten Futures-Tick Handels-und Quote-Daten von Januar 2009 zu präsentieren, für jeden Vertrag in CME, COMEX und GLOBEX gehandelt. Die Daten werden wöchentlich aktualisiert und werden von AlgoSeek zur Verfügung gestellt. Wir bieten Option Trades und Quotes bis 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. Team Collaboration Finden Sie neue Freunde in der Community und arbeiten Sie 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. Nutzen 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. Durch führende Brokerages Weve integriert mit weltweit führenden Brokerage bieten die beste Ausführung und niedrigsten Gebühren an die Gemeinschaft. Event Driven Strategies 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 C-Compiler 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 Trading validiert, so dass Sie eine neutrale Drittpartei überprüfen können. Interessierte Hedgefonds können Sie direkt über QuantConnect kontaktieren, um Ihnen eine Beschäftigung oder eine Finanzierung für Ihre Strategie anbieten zu können 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 in der Welt, wie wir neue Bereiche der Wissenschaft, Mathematik und Finanzen zu erforschen.


No comments:

Post a Comment