Thursday 23 March 2017

Cointegrierte Forex Paare Geschichte

Hinweis 1: Volatilität neigen dazu, bereits Mittelwert wiederherzustellen. Tipp 2: ein Teil, den Sie reines Vega-Produkt (Variance Volatility Swap) handeln können, müssen Sie sich daran erinnern, dass Sie alle Basisrisiken absichern müssen, um ein reines Volatilitätsspiel zu haben. Die nicht einfach und möglicherweise nicht durchführbar für Bid-und fragen verbreiten Hinweis 3: generell mehr liquidquot kurzfristige Optionen haben niedrige Vega (Sie müssen viel Arbeit tun, um das Basisrisiko zu hemmen, um eine begrenzte Exposition gegenüber vol und Sie müssen es tun Für beide zugrunde liegenden) Hinweis 4: es gibt viele quotacademicquot Forschung rund um. Aber ich würde raten zu versuchen verstehen vol selbst erste 1.2k Views middot Ansicht Upvotes middot Nicht für die Reproduktion Mehr Antworten unten. Verwandte Fragen Was sind einige gute Paar Handel Ideen Wie handele ich Index-Optionen mit der Idee der (Volatilität) Paare Handel Was ist relativer Wert Volatilität Handel Wie handeln Sie Volatilität mit Volatilität Arbitrage Wie funktioniert Volatilität Pumping als eine Handelsstrategie Was ist Die Bedeutung der Trading-Volatilität Wie ist die Volatilität gehandelt und wie ist ein solcher Vertrag bewertet Wie handelst du Volatilität Woher weißt du, wenn der Markt ist volatil oder nicht für den binären Handel Was sollte ausgewählt werden zwischen direktionalen Handel und Volatilität Handel What039s Wettbewerb HFT und andere Überlegungen. Als Forex Trader, sollte ich nur auf ein Paar konzentrieren, ein Dutzend Paare oder handeln jedes Paar, wenn ich ein gutes Einstiegssignal OK, Paare Handel finden. Im einfachsten Sinne ist es der Handel von zwei Aktien in der gleichen Branche, wobei lange ein und kurz das andere. Aber lassen Sie uns noch einen Schritt weiter und legen Sie es in ein Volatilität Handelssystem. Meine Analyse zeigt, dass eine Aktienoption (ATM-Straddle) mit einer sehr niedrigen impliziten Volatilität gehandelt wird, während eine andere Aktie in den gleichen Sektoren Optoins (ATM Straddle) mit einer sehr hohen impliziten Volatilität handelt. Pairs Trading wäre der Kauf ATM Straddle auf dem Lager mit den billigen Optionen und den Verkauf der ATM-Straddle auf dem Lager mit den reichen Optionen. Zusammenfassung: Der Handel von Paris ist ein VOLATILITY-Handel, wo der Händler billige Optionen kauft und Rish-Optionen auf Aktien im gleichen Sektor oder in der Industrie verkauft. 677 Aufrufe middot Ansicht Upvotes middot Nicht für Fortpflanzung Pratik Jain. Chefredakteur: Tradingtuitions Pair Trading ist eine marktneutrale Strategie, bei der zwei hochkoordinierte Instrumente gemeinsam gekauft und verkauft werden, wenn ein gewisses Maß an Abweichung in ihrer Kooperation besteht. In der Regel sind die Aktien oder Rohstoffe für Pair Trading aus dem gleichen Sektor ausgewählt und bewegt sich während der meisten der Markt Ereignisse. Laden Sie ein Excel-Blatt zu identifizieren Pair Trading-Chancen aus dem folgenden Link: 336 Aufrufe middot View Upvotes middot Nicht für ReproductionForex Trading Diary 5 - Trading mehrere Währungspaare Gestern habe ich einige wichtige Änderungen an der QSForex-Software veröffentlicht. Diese Änderungen haben die Nützlichkeit des Systems signifikant erhöht bis zu dem Punkt, wo es nahezu bereit für ein mehrtägiges Tick-Data Backtesting über eine Reihe von Währungspaaren ist. Folgende Änderungen wurden an Github gebucht: Weitere Modifikationen an den Positionen und Portfolio-Objekten, um mehrfache Währungspaare zu handeln sowie Währungen, die nicht auf die Kontowährung lauten. Daher kann ein GBP-deonomiertes Konto jetzt EURUSD handeln. Vollständige Überarbeitung, wie sich die Positions - und Portfolioberechnung öffnet, schließt, ergänzt und entfernt. Das Positionsobjekt führt nun das schwere Heben aus, wodurch ein relativ mageres Portfolio-Objekt verlässt. Addition der ersten nicht-trivialen Strategie, nämlich der bekannten Moving Average Crossover-Strategie mit einem Paar einfacher gleitender Mittelwerte (SMA). Änderung an backtest. py, um es single-threaded und deterministisch. Trotz meines Optimismus, dass ein Multi-Thread-Ansatz wäre nicht zu schädlich für die Simulationsgenauigkeit, fand ich es schwierig, zufriedenstellende Backtesting-Ergebnisse mit einem Multi-Thread-Ansatz zu erhalten. Einführung eines sehr einfachen Matplotlib-basierten Ausgangsskripts zur Anzeige der Aktienkurve des Portfolios. Die Eigenkapitalgenerierung ist in einem frühen Stadium und erfordert noch viel Arbeit. Wie ich schon erwähnt habe. Für diejenigen von Ihnen, die nicht mit QSForex vertraut sind und zum ersten Mal zu dieser forex Tagebuchserie kommen, schlage ich vor, die folgenden Tagebucheintragungen zu lesen, um mit der Software zu beschleunigen: Neben der Github-Seite für QSForex : Mehrfache Währungsunterstützung Eine Eigenschaft, die ich ständig in diesen Tagebucheintragungen diskutiert habe, ist die Fähigkeit, mehrere Währungspaare zu unterstützen. In diesem Stadium änderte Ive jetzt die Software, um unterschiedliche Kontobezeichnungen zu erlauben, da vorher GBP die hartcodierte Währung war. Es ist jetzt auch möglich, mit anderen Währungspaaren zu handeln, außer denen, die aus einer Basis oder einem Zitat im japanischen Yen (JPY) bestehen. Letzteres ist darauf zurückzuführen, wie tick Größen in JPY Währungen caclulated sind. Um dies zu erreichen, habe ich geändert, wie der Gewinn berechnet wird, wenn Einheiten entfernt werden oder die Position geschlossen ist. Hier ist das aktuelle Snippet für die Berechnung von Pips in der position. py-Datei: Wenn wir die Position schließen, um einen Gewinn oder Verlust zu realisieren, müssen wir das folgende Snippet für die Closeposition verwenden. Auch in der position. py-Datei: Erstens erhalten wir die Bid - und Ask-Preise für sowohl das Währungspaar, das gehandelt wird, als auch das Quotehome-Währungspaar. Zum Beispiel für ein Konto, das auf GBP lautet, wo wir EURUSD handeln, müssen wir Preise für USDGBP erhalten, da EUR die Basiswährung ist und USD das Zitat ist. In diesem Stadium prüfen wir, ob die Position selbst eine Long - oder Short-Position ist und berechnen dann den passenden Entfernungspreis und den Quotehome-Entfernungspreis, die durch den Removeprice und die qhclose angegeben werden. Wir aktualisieren dann die aktuellen und durchschnittlichen Preise innerhalb der Position und schließlich berechnen die PampL durch Multiplikation der Pips, die Quotehome Entfernung Preis und dann Anzahl der Einheiten wurden auszuschließen. Wir haben die Notwendigkeit, die Belichtung zu besprechen, die eine redundante Variable war, vollständig eliminiert. Diese Formel liefert dann korrekt die PampL gegen jeden (nicht-JPY denominierten) Währungspaarhandel. Überholung der Position und Portfolio-Handhabung Neben der Fähigkeit, in mehreren Währungspaaren Handel Ive auch verfeinert, wie die Position und Portfolio die Verantwortung für die Öffnung und Schließung Positionen, sowie das Hinzufügen und Subtrahieren Einheiten. Insbesondere bewegte Ive eine Menge des Positions-Handhabungs-Codes, der sich in portfolio. py in position. py befand. Dies ist natürlicher, da die Position sollte für sich selbst sorgen und nicht delegieren, um das Portfolio Insbesondere die Addunits. Removeunits und Closeposition Methoden wurden erstellt oder erweitert: In den letzteren zwei sehen Sie, wie die neue Formel für die Berechnung der Gewinn umgesetzt wird. Damit wurde ein Großteil der Funktionalität der Portfolio-Klasse entsprechend reduziert. Insbesondere die Methoden addneposposition. Additionseinheiten. Removepositionunits und closeposition wurden modifiziert, um der Tatsache Rechnung zu tragen, dass die Berechnungsarbeit im Positionsobjekt durchgeführt wird: Im Grunde haben sie alle (neben der addNewposition) einfach zu prüfen, ob die Position für dieses Währungspaar existiert und dann die entsprechende Positionsmethode aufruft , Gegebenenfalls unter Berücksichtigung des Gewinns. Moving Average Crossover-Strategie Weve diskutierte die Moving Average Crossover-Strategie vor QuantStart. Im Rahmen des Aktienhandels. Es ist eine sehr nützliche Test-Bett-Indikator-Strategie, weil es leicht ist, die Berechnungen von Hand (zumindest bei niedrigeren Frequenzen) zu replizieren, um zu überprüfen, dass der Backtester verhält sich wie es sollte. Die Grundidee der Strategie ist wie folgt: Es werden zwei separate einfache gleitende Durchschnittsfilter mit unterschiedlichen Blickzeitperioden einer bestimmten Zeitreihe erstellt. Beim Kauf des Assets treten Signale auf, wenn der kürzere Lookback-Bewegungsdurchschnitt den längeren Lookback-Bewegungsdurchschnitt übersteigt. Wenn der längere Durchschnitt anschließend den kürzeren Durchschnitt übersteigt, wird der Vermögenswert zurückgekauft. Die Strategie funktioniert gut, wenn eine Zeitreihe einen starken Trend eintritt und dann langsam den Trend rückgängig macht. Die Implementierung ist einfach. Erstens bieten wir eine Methode calcrollingsma, die es uns ermöglicht, effizienter nutzen die vorherige Zeitperiode SMA Berechnung, um die neue zu generieren, ohne die vollständige Berechnung der SMA bei jedem Schritt. Zweitens erzeugen wir Signale in zwei Fällen. Im ersten Fall erzeugen wir ein Signal, wenn die kurze SMA den langen SMA überschreitet und das Währungspaar nicht lang war. Im zweiten Fall erzeugen wir ein Signal, wenn der lange SMA den kurzen SMA überschreitet und wir schon lange sind. Ich habe das Standard-Fenster auf 500 Ticks für die kurzen SMA und 2.000 Ticks für die lange SMA. Offensichtlich würden diese Parameter in einer Produktionseinstellung optimiert, funktionieren aber gut für unsere Testzwecke. Single-Threaded Backtester Eine weitere wesentliche Änderung war, die Backtesting-Komponente als Single-Threaded anstatt Multi-Threaded zu modifizieren. Ich habe diese Änderung, weil ich eine sehr harte Zeit, die Synchronisierung der Threads in einer Weise, die in einer Live-Umgebung auftreten ausführen war. Grundsätzlich bedeutete dies, dass die Ein - und Ausstiegspreise sehr unrealistisch waren und oft (virtuelle) Stunden nach dem Erreichen der tatsächlichen Zecke auftraten. Daher habe ich das Streaming von TickEvent-Objekten in die Backtesting-Schleife eingebunden, wie Sie im folgenden Snippet von backtest. py sehen können: Beachten Sie die Zeile ticker. streamnexttick (). Dies wird vor einer Abfrage der Ereignis-Warteschlange aufgerufen und als solches wird immer garantieren, dass ein neues Tick-Ereignis eingetroffen ist, bevor die Warteschlange erneut abgerufen wird. Insbesondere bedeutet dies, dass ein Signal ausgegeben wird, wenn neue Marktdaten ankommen, auch wenn es zu Verzögerungen im Bestellvorgang aufgrund von Schlupf kommt. Ive auch einen maxiters Wert, der steuert, wie lange die Backtesting-Schleife fortgesetzt. In der Praxis muss dies ziemlich groß sein, wenn es um mehrere Währungen über mehrere Tage geht, aber ich setze es auf einen Standardwert, der für einzelne Tage Daten von einem Währungspaar ermöglicht. Die Methode streamnexttick der Preishandler-Klasse ähnelt streamtoqueue, außer dass sie die Iterator next () - Methode manuell aufruft, anstatt das Tick-Streaming in einer for-Schleife auszuführen. Beachten Sie, dass es nach dem Empfang einer StopIteration-Ausnahme stoppt. Dies ermöglicht den Code wieder aufzunehmen, anstatt abstürzen, an der Ausnahme. Matplotlib Output Ive erzeugte außerdem ein sehr einfaches Matplotlib-Ausgabeskript, um die Eigenkapitalkurve anzuzeigen. Output. py lebt derzeit im Backtest-Verzeichnis von QSForex und ist unten angegeben: Beachten Sie, dass es eine neue settings. py-Variable gibt, die nun OUTPUTRESULTSDIR heißt. Die in Ihren Einstellungen gesetzt werden müssen. Ich habe es auf ein temporäres Verzeichnis an anderer Stelle auf meinem Dateisystem, da ich nicht versehentlich hinzufügen möchten alle Equity Backtest-Ergebnisse an die Code-Basis Die Equity-Kurve funktioniert, indem ein Balance-Wert zu einer Liste von Wörterbüchern hinzugefügt, mit einem Wörterbuch entsprechend einem Zeitstempel. Sobald der Back-Test abgeschlossen ist, wird die Liste der Wörterbücher in ein Pandas DataFrame konvertiert und die tocsv-Methode wird verwendet, um equity. csv auszugeben. Dieses Ausgabeskript liest dann einfach in der Datei und zeichnet die Balance-Spalte des nachfolgenden DataFrame auf. Sie können das Snippet für die appendequityrow - und outputresults-Methoden der Portfolio-Klasse unten sehen: Jedesmal, wenn executsignal aufgerufen wird, wird die frühere Methode aufgerufen und hängt den Zeitstempel-Balance-Wert an das Equity-Mitglied an. Am Ende des Backtests werden Outputresults aufgerufen, die einfach die Liste der Wörterbücher in ein DataFrame umwandeln und dann in das angegebene OUTPUTRESULTSDIR-Verzeichnis ausgeben. Leider ist dies keine besonders geeignete Art, eine Eigenkapitalkurve zu schaffen, wie sie nur bei der Erzeugung eines Signals auftritt. Das bedeutet, dass er nicht unrealisiertes PampL berücksichtigt. Während dies ist, wie tatsächlichen Handel tritt (Sie havent tatsächlich kein Geld, bis Sie eine Position zu schließen) bedeutet dies, dass die Equity-Kurve wird vollständig flach zwischen Balance-Updates bleiben. Schlimmer wird Matplotlib standardmäßig linear zwischen diesen Punkten interpolieren, wodurch der falsche Eindruck des nicht realisierten PampL entsteht. Die Lösung für dieses Problem besteht darin, einen nicht realisierten PampL-Tracker für die Positionsklasse zu erstellen, die bei jedem Tick korrekt aktualisiert wird. Dies ist ein wenig mehr rechenintensiv, aber erlaubt eine nützliche Eigenkapitalkurve. Diese Funktion ist zu einem späteren Zeitpunkt geplant. Nächste Schritte Die nächste Hauptaufgabe von QSForex besteht darin, ein mehrtägiges Backtesting zu ermöglichen. Gegenwärtig lädt das HistoricCSVPriceHandler-Objekt nur einzelne Tage im Wert von DukasCopy-Tickdaten für alle angegebenen Währungspaare auf. Um mehrtägige Tests zu ermöglichen, ist es erforderlich, jeden Tag sequentiell zu laden und zu streamen, um das Füllen von RAM mit dem gesamten Verlauf der Zeigendaten zu vermeiden. Dies erfordert eine Änderung, wie die streamnexttick-Methode funktioniert. Sobald dies abgeschlossen ist, wird es ermöglichen, langfristige Strategie Backtesting über mehrere Paare. Eine weitere Aufgabe ist es, die Produktion der Eigenkapitalkurve zu verbessern. Um irgendwelche der üblichen Leistungsmetriken (wie das Sharpe Ratio) zu berechnen, müssen wir Prozentsatzrenditen über einen bestimmten Zeitraum berechnen. Dies erfordert jedoch, dass wir die Tick-Daten in Balken binden, um eine Rendite für einen bestimmten Zeitraum zu berechnen. Ein solches Binning muss bei einer Abtastfrequenz auftreten, die der Handelsfrequenz ähnlich ist, oder das Sharpe-Verhältnis ist nicht reflektierend für die wahre Risikobereitschaft der Strategie. Diese Binning ist nicht eine triviale Übung, da es viele Annahmen, die gehen in die Erzeugung eines Preises für jede bin. Sobald diese beiden Aufgaben abgeschlossen sind und ausreichende Daten erworben wurden, werden wir in der Lage sein, eine breite Palette von tick-data-basierten Forex-Strategien zu testen und Eigenkapitalkurven abzüglich der Mehrheit der Transaktionskosten zu produzieren. Darüber hinaus wird es extrem einfach sein, diese Strategien auf dem Praxis-Papierhandelskonto zu testen, das von OANDA zur Verfügung gestellt wird. Dies sollte Ihnen ermöglichen, viel bessere Entscheidungen darüber, ob eine Strategie im Vergleich zu einem mehr forschungsorientierten Backtesting-System laufen.


No comments:

Post a Comment