Kalman Handelsstrategie


Statistisches Arbitrage mit dem Kalman-Filter Eine der Herausforderungen mit dem Kointegrationsansatz zur statistischen Arbitrage, die ich in meinem bisherigen Beitrag besprochen habe. Ist, dass Kointegrationsbeziehungen selten statisch sind: sie ändern sich ziemlich häufig und brechen oft ganz aus. Im Jahr 2009 begann ich mit einem dynamischeren Ansatz zum Paarhandel zu experimentieren, basierend auf dem Kalman Filter. In ihrer einfachsten Form modellieren wir die Beziehung zwischen einem Paar von Wertpapieren auf folgende Weise: Beta (t) beta (t-1) w beta (t), die nicht beobachtete Zustandsvariable, die einem zufälligen Spaziergang folgt Y (t) beta (T) X (t) v Die beobachteten Prozesse der Aktienkurse Y (t) und X (t) N (0, Q) bedeutet w ist Gauss-Rauschen mit Null-Mittelwert und Varianz QN (0, R) bedeutet v ist Gauß-Rauschen Mit Varianz R So ist dies genau wie die üblichen Paar Beziehung Y Beta X v, wo der typische Ansatz ist es, Beta mit der kleinsten Quadrate Regression oder eine Art rollende Regression zu schätzen (um zu versuchen, die Tatsache, dass Beta kann sich ändern Zeit). In diesem traditionellen Rahmen ist Beta statisch oder langsam verändert. Im Kalman-Rahmen ist Beta selbst ein zufälliger Prozess, der sich im Laufe der Zeit kontinuierlich entwickelt, als zufälliger Spaziergang. Weil es zufällig ist und durch Lärm verunreinigt ist, können wir die Beta nicht direkt beobachten, sondern müssen aus den beobachtbaren Aktienkursen X und Y ihren (sich ändernden) Wert ableiten. (Anmerkung: Im Folgenden werde ich X und Y verwenden, um auf Aktienkurse zu verweisen Sie könnten auch Log-Preise oder Rücksendungen verwenden). Unbekannt für mich zu dieser Zeit, einige andere Forscher dachten über die gleichen Zeilen und später veröffentlicht ihre Forschung. Ein solches Beispiel ist Statistical Arbitrage und High-Frequency Data mit einer Anwendung auf Eurostoxx 50 Equities. Rudy, Dunis, Giorgioni und Gesetze, 2010. Eine weitere eng verwandte Studie ist die Leistungsanalyse der Paarhandelsstrategie unter Verwendung hoher Frequenzdaten mit einer Anwendung auf KOSPI 100 Equities. Kim, 2011. Beide Forschungsstudien folgen einem sehr ähnlichen Weg, indem sie die Beta-Schätzung mit rollenden Regression oder exponentielle Glättung zugunsten des Kalman-Ansatzes ablehnen und ein Ornstein-Uhlenbeck-Modell anwenden, um die Halbwertszeit der mittleren Reversion der Paar-Portfolios abzuschätzen. Die Studien berichten über sehr hohe Out-of-Sample-Informationsverhältnisse, die in einigen Fällen über 3. hinausgehen. Ich habe bereits darauf hingewiesen, dass eine solche ungewöhnlich hohe Leistung in der Regel das Ergebnis der Ignorierung der Tatsache ist, dass das Netto-PnL pro Aktie innerhalb der Region liegen kann Das durchschnittliche Angebotsangebot, das die Umsetzung sehr problematisch macht. In diesem Beitrag möchte ich auf eine andere kritische Frage eingehen, die für den Kalman-Ansatz besonders wichtig ist: das Signal: Rauschverhältnis, QR, das das Verhältnis der Varianz des Beta-Prozesses zumjenigen des Preisprozesses ausdrückt. (Neugierig machen beide Papiere den gleichen Fehler, um Q und R als Standardabweichungen zu kennzeichnen. Tatsächlich sind sie Abweichungen). Beta, ein zufälliger Prozess, enthält offensichtlich etwas Lärm: aber die Hoffnung ist, dass es weniger laut als der Preisprozess ist. Die Idee ist, dass die Beziehung zwischen zwei Aktien stabiler 8211 weniger flüchtige 8211 als die Aktienprozesse selbst ist. Auf seinem Gesicht erscheint diese Annahme aus empirischer Sicht vernünftig. Die Frage ist: wie stabil ist der Beta-Prozess, relativ zum Preisprozess Wenn die Varianz im Beta-Prozess relativ zum Preisprozess niedrig ist, können wir die Beta im Laufe der Zeit genau bestimmen und so genaue Schätzungen des wahren Preises erhalten Y ( T), basierend auf X (t). Dann, wenn wir eine genügend Abweichung im zitierten Preis Y (t) vom wahren Preis zum Zeitpunkt t beobachten, haben wir einen potentiellen Handel. Mit anderen Worten, wir interessieren uns für: alpha (t) Y (t) 8211 Y (t) Y (t) 8211 beta (t) X (t) wobei Y (t) und X (t) die beobachteten Aktienkurse sind Und beta (t) ist der geschätzte Wert von beta zum Zeitpunkt t. Wie üblich würden wir das Alpha mit einer Schätzung der Alpha-Standardabweichung standardisieren, die sqrt (R) ist. (Alternativ können Sie die Standardabweichung des Alphas direkt mit einem Lookback-Zeitraum auf der Basis der Alpha-Halbwertszeit abschätzen). Wenn das standardisierte Alpha groß genug ist, schlägt das Modell vor, dass der Preis Y (t) deutlich über dem wahren Wert liegt. In diesem Zusammenhang, wo X und Y Rohpreise darstellen, würden Sie eine gleiche und entgegengesetzte Anzahl von Aktien in Y und X halten. Wenn X und Y die Renditen darstellten, würden Sie gleich halten Und gegenüber dem Marktwert in jedem Bestand). Der Erfolg einer solchen Strategie hängt entscheidend von der Qualität unserer Schätzungen von Alpha ab, die wiederum auf die Genauigkeit unserer Schätzungen der Beta beruhen. Dies hängt von der Lärm des Beta-Prozesses ab, dh seiner Varianz, Q. Wenn der Beta-Prozess sehr laut ist, dh wenn Q groß ist, werden unsere Schätzungen von Alpha zu laut sein, um als Grundlage für eine Reversionsstrategie nützlich zu sein . Also, die Schlüsselfrage, die ich in diesem Beitrag ansprechen möchte, ist: Damit der Kalman-Ansatz bei der Modellierung einer Paar-Beziehung wirksam sein kann, wäre ein akzeptabler Bereich für die Beta-Prozessvarianz Q. (Es wird oft gesagt, dass was zählt Im Kalman-Rahmen ist nicht die Varianz Q, per se, sondern das Signal: Rauschverhältnis QR. Es stellt sich heraus, dass dies nicht strikt wahr ist, wie wir sehen werden). Um das Problem zu lösen, habe ich folgende Vorgehensweise getroffen: (i) Simulieren Sie einen Bestandsprozess X (t) als geometrischen Brownschen Bewegungsprozess mit vorgegebener Drift und Volatilität (ich verwendete 0, 5 und 10 für die jährliche Drift, Und 10, 30 und 60 für die entsprechende jährliche Volatilität). (Ii) simulieren eines Beta (t) - Verfahrens als zufälliger Spaziergang mit Varianz Q im Bereich von 1E-10 bis 1E-1. (Ii) Erzeugen Sie den wahren Preisprozess Y (t) beta (t) X (t) (iv) Simulieren Sie einen beobachteten Preisprozess Yobs (t), indem Sie zufälliges Rauschen mit Varianz R zu Y (t) addieren, wobei R in der Bereich (1) - Technik (t) (v)) Das Kalman-Filter-Modell passt zu den simulierten Prozessen und schätzt beta (t) und Yest (t) . So erzeugen wir Schätzungen kfalpha (t) Yobs (t) 8211 Yest (t) und vergleichen diese mit dem bekannten, wahren Alpha (t). Die Diagramme in Abb. 1 unten veranschaulichen das Verfahren für einen Aktienprozess X (t) mit jährlicher Drift von 10, jährlicher Volatilität 40, Beta-Prozessabweichung Q von 8,65E-9 und Preisprozessabweichung R von 5.62E-2 (QR-Verhältnis von 1,54E-7 ). Feige. 1 True und Estimated Beta und Alpha mit dem Kalman Filter Wie Sie sehen können, macht der Kalman Filter eine sehr gute Arbeit bei der Aktualisierung seiner Beta-Schätzung, um die zugrunde liegende, wahre Beta (die in diesem Experiment bekannt ist) zu verfolgen. Da das Rauschverhältnis QR klein ist, entsprechen die Kalman Filterschätzungen des Prozesses alpha, kfalpha (t) genau dem wahren alpha (t), was uns in dieser experimentellen Einstellung wieder bekannt ist. Sie können die Beziehung zwischen den wahren alpha (t) und den Kalman Filterschätzungen kfalpha (t) untersuchen, ist das Diagramm im obersten linken Quadranten der Figur. Die Korrelation zwischen den beiden ist etwa 89. Mit einer Genauigkeit, die gut für unsere Alpha-Schätzungen ist, würde das Paar simulierte Aktien einen idealen Kandidaten für eine Paar-Handelsstrategie machen. Natürlich hängt das Ergebnis in hohem Maße von den Werten ab, die wir für Q und R (und auch in gewissem Maße von den Annahmen über die Drift und die Volatilität des Preisprozesses X (t) annehmen. Die nächste Phase der Analyse ist daher, eine große Anzahl von simulierten Preis - und Beta-Beobachtungen zu generieren und die Auswirkungen der verschiedenen Ebenen von Q und R, die Abweichungen des Beta - und Preisprozesses zu untersuchen. Die Ergebnisse sind in der Tabelle in Fig. 2 unten zusammengefasst. Abb. 2. Korrelation zwischen dem wahren alpha (t) und kfalpha (t) für die Werte von Q und R Wie erwartet, ist die Korrelation zwischen dem wahren alpha (t) und den vom Kalman-Filter erzeugten Schätzungen sehr hoch, wenn das Signal: Rauschverhältnis Ist klein, dh in der Größenordnung von 1E-6 oder weniger. Durchschnittliche Korrelationen beginnen sehr schnell abzuschalten, wenn QR dieses Niveau übersteigt und auf so niedrig wie 30 fällt, wenn das Rauschverhältnis 1E-3 übersteigt. Bei einem QR-Verhältnis von 1E-2 oder höher werden die Alpha-Schätzungen zu laut, um nützlich zu sein. Ich finde es eher zufällig, sogar unplausibel, dass Rudy et al. In ihrer Studie ein Rauschverhältnis von 3E-7 für alle Aktienpaare in ihrer Studie annehmen können, was gerade in der süßen Stelle für Alpha ist Einschätzung. Aus meiner eigenen Forschung ist ein viel größerer Wert im Bereich von 1E-3 bis 1E-5 typischer. Weiterhin variiert das Rauschverhältnis signifikant von Paar zu Paar und im Laufe der Zeit. In der Tat würde ich so weit gehen, um zu empfehlen, ein Rauschverhältnis Filter auf die Strategie, was bedeutet, dass Trading-Signale ignoriert werden, wenn das Rausch-Verhältnis überschreitet einige bestimmte Ebene. Der Take-away ist das: Der Kalman-Filter-Ansatz kann sehr erfolgreich bei der Entwicklung statistischer Arbitrage-Strategien angewendet werden, aber nur für Prozesse, bei denen das Rauschverhältnis nicht zu groß ist. Ein Vorschlag ist, eine Filterregel zu verwenden, um Handelssignale zu unterdrücken, die zu Zeiten erzeugt werden, wenn das Rauschverhältnis zu groß ist, und um die Zuteilung von Paaren zu erhöhen, in denen das Rauschverhältnis relativ niedrig ist. Kalman-Filter und Währungsstärke Joined Aug 2011 Status: Member 1,132 Beiträge in letzter Zeit Im herumspielen mit rekursiven Bayes'schen Schätzern (en. wikipedia. orgwikiRecursi. Ianestimation), für die der Kalman-Filter ein Spezialfall ist. Ich gehe nicht in die blutigen Details siehe Bayesian Forecasting und Dynamic Models von West und Harrison. Zuerst versuchte ich, den Trend und die Volatilität des Marktes abzuschätzen. Aber das ist nicht das, worum es in diesem Beitrag geht. Es geht darum, warum du es besser machst, lange auf dem Drachen zu sein. Die Marktrendite ist nicht normal verteilt, sondern irgendwo zwischen Cauchy und Student verteilt. Kalman-Filterleistungen verschlechtern sich schnell für nicht-normale Innovationen. Thats, warum ich einen anderen Kalman-Filter verwende, der den Fehler des ersten schätzt und ich diese Informationen in das erste Modell als eine Modulation der erlaubten Varianz des Zustands zurücksende. Eine Art von dynamischen Cursor-Quoten lt-gt Glätte. Dieses erste Modell ist eine Polynom-Lokalschätzung zweiter Ordnung. Ich wählte ein Polynom 2. Ordnung, weil es eine glatte Funktion wie eine Sinuswelle für einen Markt mit einer zyklischen Komponente (Bereich oder valatile Trend) oder einen exponentiellen Trend (für Index und Aktien) approximieren kann (Taylor). Auch der Accelaration-Faktor hilft beim Aufholen des Preises im Falle eines plötzlichen Umzugs. Der zweite Filter benutzt nur ein konstantes Modell. Ich benutze H4, um den täglichen Trend zu messen. Hier ist ein Screenshot von EURUSD H4. Die blaue Linie ist der ideale, aber nicht-kausale, Tiefpassfilter sinc (en. wikipedia. orgwikiSincfilter), der mit 41 Samples verwendet wird. Es gibt Ihnen eine Vorstellung von der Verzögerung. Der Filter ist grün, wenn der Trend am wahrscheinlichsten ist und ansonsten rot ist. Die Bindestrichhülle ist das 95 Konfidenzintervall der mittleren Preisschätzung. Unten sind der Fehler zwischen dem Preis und der Schätzung (schwarz) und dieser Wert gefiltert mit dem 2. Filter (rot). Es folgt nicht dem Fehler zu viel, um nicht den Hauptfilter überreagieren zu lassen. Angehängtes Bild (zum Vergrößern anklicken) Keine Gier. Keine Angst. Nur Mathe. Joined Aug 2011 Status: Mitglied 1,132 Beiträge Jetzt habe ich eine Schätzung der wahrscheinlichsten Trend. Es ist wichtig zu beachten, dass es eine Wahrscheinlichkeit nicht eine Gewissheit ist, dass ich diese Informationen verwenden kann, um festzustellen, ob EURUSD höchstwahrscheinlich auf - oder abwärts ist. OK ich höre dich, ich kann auch auf die Karte schauen und sehen, ob es hebt oder fällt :-). Du hast recht. Aber die Idee, die ich hatte, ist, dies mit jedem der Majors zu wiederholen, nicht nur zu wissen, ob sie oben oder unten sind, aber wie viel sie oben oder unten sind. Wenn GBPUSD hinuntergeht, bedeutet, dass USD stärker als Pfund ist. Wenn EURUSD unten ist, ist EUR auch schwächer als USD. Aber was von GBP oder EUR ist der schwächste Man kann nicht einfach die Pip-Wert des Trends, weil der Wert eines Pip ist nicht das gleiche für alle Paare. Aus diesem Grund benutze ich den Prozentsatz der Variation. Durch die Aufteilung einer Preisdifferenz um einen Preis erhalten Sie einen einheitlichen Wert. Auf diese Weise bekomme ich die Einheitskala los und ich kann EURNZD und USDJPY direkt vergleichen. Da EURGBP (EURUSD) (GBPUSD) ist, ist es nicht notwendig, alle Paare zu filtern. Die Preisschätzung und die Trendschätzung der Majors reichen aus, um mit einer ausreichend genauen Genauigkeit zu linearisieren. Wenn Sie GBP finden, ist schwächer als EUR, als Sie die drei Währungen bestellen können: GBP lt EUR lt USD. Es ist sinnvoll, einen guten Einstieg auf GBPUSD zu suchen, weil es dort ist, wo wir eine gute Chance haben, einen Trend zu fangen. Jetzt für jedes Paar bestelle ich die Währungen paarweise, stärker - gt schwächer. Jede der Währung wird jedes Mal, wenn sie stärker als eine andere ist, eine Punktzahl belohnt. Diese Punktzahl ist das geschätzte - prozentuale Wachstum. Am Ende hat jede Währung eine Punktzahl und die Liste der Währungen stärker als sie. Ich kann das in einer Grafik organisieren. Es soll eine Schätzung des Geldflusses darstellen. Dont fragen mich für eine benutzerdefinierte indi wie ich Cant Programm MQL. Wenn Sie daran interessiert sind, eine Indi zu kodieren, die auf dieser Idee basiert, kann ich Ihnen helfen, wenn es die Zeit erlaubt. Angehängtes Bild (zum Vergrößern anklicken) Offene Frage: Wenn es einen Zyklus in der Grafik gibt, macht es Sinn, den geschäftigen Währungen in einem Ring sehr interessant zu machen, schaut auf die Links, die du gepostet hast, derzeit nutze ich die Wertänderungen für Bias und Holding Trades und Add-Ons, ich habe nichts gefunden, was in der Nähe der Informationen kommt, die ich von diesen Paaren bekomme. Obwohl ich die Wertänderung in Pip-Wert und Gesamtprozentsatz betrachte. Havnt hat es ganz perfekt in excell aber immer noch im Gange. Sie erwähnen den Handel in einem Korb, das kann sehr lohnend sein. Ein gutes Beispiel für diese Art von Handel war heute, ich überwiegend handeln Kabel, die wie alle verwandten Paare wurde nach unten gedrückt. Das führende Paar in der heutigen Änderung war cable. its Wert war 60 plus Pips, während die anderen Puppenkreuze sich nicht bewegt hatten. Die Yenpaare hatten auch gestoppt, aber an diesem Punkt kein Anzeichen von Richtungsänderung. Die Kraft im Kabel war der Clue. i platzierte Trades auf 4 Yen Paare, der Doller Chf, Doller Cad Und euro. including meine anfängliche Kabine lange ive bekam in der Nähe von 400 Pips. Die Korrelationen werden auf diesem Forum viel entlassen, weil es nicht verstanden wird. Die Art, wie du es beschrieben und recherchiert hast, zeigt die Art und Weise, wie die Zusammenhänge in Bezug auf dort Beziehungen sehr viel da sind, ausgeglichen von dort Pip-Wert zusammen mit sich ändernden Bedingungen innerhalb der eigenen Person Fundamentals. but diese Zyklen sind da und können verwendet werden Es scheint, dass eine Währung stark sein kann, entweder weil es viel von einigen anderen Währungen empfängt oder weil es von allen anderen empfangen wird. Normalerweise passen die 2 Bedingungen. Welches ist der stärkste USD mit der größten Punktzahl oder EUR, die von allen anderen erhalten wird (die Partitur ist die Summe der Trendhänge). Auch hier ist ein Zyklus JPY-gtAUD-gtUSD. Keine Gier Keine Angst. Nur Mathe. Mitglied seit Dec 2010 Status: Foook Bollinger-dr. Kegel kennt 9.292 Beiträge Jetzt habe ich eine Schätzung der wahrscheinlichsten Trend. Es ist wichtig zu beachten, dass es eine Wahrscheinlichkeit nicht eine Gewissheit ist. Am Ende hat jede Währung eine Punktzahl und die Liste der Währungen stärker als sie. Ich kann das in einer Grafik organisieren. Es soll eine Schätzung des Geldflusses darstellen. Dont fragen mich für eine benutzerdefinierte indi wie ich Cant Programm MQL. Wenn Sie daran interessiert sind, eine Indi zu kodieren, die auf dieser Idee basiert, kann ich Ihnen helfen, wenn es die Zeit erlaubt. Ich mache etwas Ähnliches. Ich spiele mit den Indizes. 7 Währungen 21 Währungspaare. Ich markiere sie mit einigen statistischen Anerkennung einmal am Tag. Gibt jedem Währungspaar eine Sequence-Nummer von (quotup dayquot1 und quotdown dayquot 0). Es könnte als Geldfluss dargestellt werden. Aber es ist schwer zu sagen. Auf jeden Fall einige Schwächen haben. Definitiv ist es einfacher zu handeln, aber man muss diszipliniert sein, während wir im Trend sind und wann wir eine Korrektur haben. Hartes Zeug. Wie ich es sehe, präsentiert es mich, was die heißesten Währungen da draußen ist. Bedeutung negativ und positiv. Top 2 in und - Lower 2. Das Problem mit diesen Systemen ist immer die zeitliche Verzögerung des Umzugs in die Korrektur, später in eine tiefere korrigierte Bühne und schließlich die Präsentation eines neuen Trends. Schwer zu programmieren Deshalb ist es so wichtig, dass man auf jeden Fall versucht, es täglich herauszufinden, was los ist. Im mit 4 verschiedenen Geschwindigkeiten von Indizes. Starke Tendenz gibt mir definitiv eine Präsentation der Geldflussrichtung (Bild 1). Ich gehorche es und ich versuche nur diese Richtungsspiele zu spielen. In den letzten paar Wochen sind wir sehr lieb der GBP und EUR, während wir versuchen, CAD und JPY loszuwerden. Ziemlich einfaches Zeug in einer Weise, aber wenn Sie nicht handeln monatlich wöchentlich Charts und man nicht hält Stopps höher als 300 Pippers ist es immer noch keine leichte Aufgabe, wenn zu geben und wie man eine Korrektur beenden. Speed ​​Trend Chart (Bild 2) ist, wo man einige Beweise finden konnte, wo das Spiel zu Ende geht. Mindestens vermuten, was bei einer Korrektur auftreten wird. Sehr harte Sachen zu tun, da die Volatilität an diesen Extremen höher wird. Vor allem es verblasst die anfängliche Trendbewegung, die in einem sehr starken Contra Trend tägliche Kerze darstellt. Währung Paar (Bild 3) Chart sieht Währungen GBP als einer der stärksten und AUD einer der schwächsten. Im letzten Monat nach einigen starken Wochen der höheren Rate konnten wir eine Pause im Aufstieg sehen. Das ist auch auf der Tageskarte zu sehen, mit Leichtigkeit. Aber wie auf dem Schaubild zu sehen, können wir sehen, dass schon am 6. dezember man sehen konnte, dass wir im Begriff sind, in eine Korrektur nur wenige Tage Pause zu bekommen. Warum AUDL (lange) und AUDs (kurze) Indizes am 4. Dezember gekreuzt, Noch in der negativen Zone. Gleiches gilt für beide GBP-Indizes. Sie haben am 6. Dezember in Schwäche gegangen, so dass wir einen starken Vorschlag für eine tiefere Korrektur haben. Mindestens einer sollte jetzt sehr sorgfältig über den Kauf der Dips, auf jeden Fall sollte man in den letzten Tagen loswerden Position eins gehalten Tage vor. Wir konnten leicht auf eine HH täglich umziehen, sollten aber begrenzt sein. Jetzt komme ich zu meinen Fragen. Bist du immer noch an diesem Thema? Können Sie teilen, was waren Ihre allgemeinen Erkenntnisse über Indexhandel. Zyklen Haben Sie einige Ergebnisse bei der Suche nach vielversprechenden Faktoren, um Randproblematik in Ihre Gunst für die quotale Retracementquot. Es scheint, dass eine Währung stark sein kann, entweder weil es viel von einigen anderen Währungen empfängt oder weil es von allen anderen empfangen wird. Normalerweise passen die 2 Bedingungen. Welches ist der stärkste USD mit der größten Punktzahl oder EUR, die von allen anderen erhalten wird (die Partitur ist die Summe der Trendhänge). Auch hier ist ein Zyklus JPY-gtAUD-gtUSD. Joined Aug 2011 Status: Mitglied 1,132 Beiträge Ich habe nicht auf die Zyklen untersucht. Ich fand, dass dies für Korbhändler interessant sein könnte. Die Verzögerung ist ein Mörder mit diesem Indikator. Es ist oft so. Wenn es ein Paar findet, ist stark die Bewegung der Bewegung ist bereits gemacht. Aber das Verblassen dieser Bewegung ist tödlich. Also brauchst du auf einen retracement warten Going Multi-Timeframe war, was ich fand den logischen nächsten Schritt. Das hast du auch getan Zum Beispiel ist AN derzeit in meiner Top-Bearish-Liste für täglich. Natürlich braucht niemand einen Kalman-Filter, um zu sehen, dass AN täglich bärisch ist. Aber es wurde bullisch auf H4. Ich würde dies übersetzen: Zeit für die Bären, um Profit zu nehmen. Es ist auch bullisch auf H1. Wenn es auf H1 bärisch wird, würde ich versuchen, eine technische Gelegenheit zu finden, gegen H4 zu kämpfen, um in die nächste Swing auf D1 einzutreten. Natürlich werde ich zu spät auf H1 und sicher auch zu früh auf H4. Aber es ist besser als ein 300 Pip SL auf D1 gegeben, dass ich nicht wissen kann, ob diese Bewegung nicht die erste Etappe einer Umkehrung ist. Leider ist es sehr schwer, die Gültigkeit dieses Ansatzes objektiv abzuschätzen, um die Geldströmungswährungen zu schätzen. Wie bei jedem Indikator können Sie nicht abschätzen, seine Macht außerhalb des Geltungsbereichs eines Handelssystems mit ihm. Wenn Sie schlechte Ergebnisse bekommen, ist es wegen der indi, des Systems, des Händlers, der bei der Verwendung des Systems fehlschlägt. Wenn die Ergebnisse gut sind, wissen Sie nicht, ob es ist, weil das indi ein gutes Werkzeug ist oder wenn Sie gerade Glück hatten In einem günstigen Marktzustand für das System über die Testperiode. Angehängte Bilder (zum Vergrößern anklicken) Wenn die Ergebnisse gut sind, weißt du nicht, ob es so ist, weil das indi ein gutes Werkzeug ist oder wenn du gerade Glück gehabt hättest, in einem günstigen Marktzustand für das System über die Testperiode zu sein. Das ist genau richtig Ich teste dies ab 13 und ich bekomme sehr gute Ergebnisse. Erfreut. Aber immer noch nicht sehen, ob dies in den letzten vier Monaten wirklich günstig war oder das könnte für einen längeren Zeitraum wirklich funktionieren. Was ist mir sicher, dass mit Filterung Einträge aus und finden eine gute Management-Kontrolle der offenen Positionen. Alles, was eine relativ gute Zinskurve liefern könnte. Gehen durch statistische Arbeit, wo Im hauptsächlich konzentriert sich auf Gewinne von EA6 von jeder Regel. Finden Sie das optimale R: R das ist das Beste ohne zusätzliche Filterung. Danach werde ich versuchen, den kahlköpfigen Teil dort zu finden. Im in der vierten Phase atm, und Im Denken Ill fand bereits einige sehr interessante Einstellungen, die positiv durch diese Reihe von Tests waren. Ich habe viele schlechte Samen getötet, aber hielt nur wenige und Im immer noch verengt es ... nimmt Zeit. Ich kann dieses System nicht stören, da es den ganzen Markt auf einmal nimmt. Ich habe versucht, es in Excel zu tun, aber würde viel Zeit in Anspruch nehmen. Im workaholic, aber das würde Monate dauern, um zu etablieren, dann Monate. Etc Im Gebäude gut benommen Schwein .. Ich frage mich, ob Sie jemals darüber nachgedacht haben, mit Ihrem KF-Messungen als Teil eines Input für ein maschinelles Lernsystem zu bekommen Trading-Signale Einige der Systeme, die ich verwenden, profitieren von ähnlichen Messungen der Währung Stärke Schwäche und haben Anständige Prognosefähigkeiten. Ich mache in der Regel maschinelles Lernen mit R oder einige C-basierte Maschine Lernbibliotheken (libs wie Waffeln oder Hai). Ich sehe, dass Sie möglicherweise ein System hier bauen können, wo die KF als Eingang wirkt und Sie können Prognosen der Trendentwicklung für einen Währungskorb erhalten. Die Idee war, einen Korb von drei quadratisch verlaufenden Paaren zu wählen, indem er die drei stärksten und die drei schwächsten Währungen paare. Die Paarung erfolgt durch die Pflege ihrer Korrelationen. Mit dieser Methode bekomme ich Gewichte für die MM: Sie sind die drei Paare und der Prozentsatz auf den Screenshots. Das Paar aus den verbleibenden zwei Währungen ist wahrscheinlich reichen und sollte vielleicht einem mittleren Reversion-basierten System gegeben werden. Über die Verwendung eines KF, um den Markttrend abzuschätzen, machte ich einen mit Range-Charts. Bisher klassifiziert man 9 Markttrends: extrem hoch, ganz auf, ein bisschen hoch, flach. Extrem nach unten Sie sind farbcodiert. Von hier aus spalte ich die Daten für jede Klasse, um die Wahrscheinlichkeit der Entfernung des Preises aus dem Mittelwert der Klasse zu erhalten: Attached Image (zum Vergrößern anklicken) Das Ergebnis ist schön linear und ich kann die Schätzung des Mittelwerts verbessern. Das ist die grüne Linie und die blaue und rote bandsenveloppes Angehängtes Bild (zum Vergrößern anklicken) Mein Problem ist jetzt, das zu verwenden, um die Belichtung des Systems zu aktualisieren. Hier bin ich jetzt völlig gesperrt. Die Idee war, einen Korb von drei quadratisch verlaufenden Paaren zu wählen, indem er die drei stärksten und die drei schwächsten Währungen paare. Die Paarung erfolgt durch die Pflege ihrer Korrelationen. Mit dieser Methode bekomme ich Gewichte für die MM: Sie sind die drei Paare und der Prozentsatz auf den Screenshots. Allerdings, wenn ich richtig verstehe, was du damit machst, scheint es zu sein, eine Schätzung des aktuellen Trending-Zustandes des Marktes zu erhalten, das wäre vielleicht nicht so nützlich, da du an der Zukunft interessiert bist und nicht in dem bisherigen Zustand (Was gut ist es zu wissen, dass der Markt ist Trending, wenn wenn Sie einen Handel geben wird es aufhören). Ich frage mich, ob Sie versucht haben, maschinelle Lernmethoden zu verwenden - mit Ihren KF-Werten als Inputs - um zu schätzen, was der zukünftige Trend des Marktes sein wird. Was wäre am nützlichsten wäre nicht eine Messung der aktuellen Trending-Zustand des Marktes, sondern eine Wahrscheinlichkeit Schätzung, was die Zukunft Trends Zustand des Marktes wäre. Ich frage mich, ob Ihre KF-basierten Messungen prädiktive Fähigkeiten in Bezug auf zukünftige Markttrends haben. Da Sie eine komplexe Reihe von Marktinteraktionen auswerten, scheint es plausibel, dass dies der Fall sein könnte. Was denkst du, vergib mir, wenn ich etwas missverstehe, vielleicht bekommst du schon zukünftige Vorhersagen und ich vermisse diese Information etwas. Joined Aug 2011 Status: Mitglied 1,132 Beiträge Ich habe nie versucht, den Staat jenseits einer Polynom-Extrapolation vorherzusagen, die absolut keine prädiktive Kraft hat. Der zukünftige Trending-Zustand wird der gleiche sein wie der aktuelle und eine zufällige Drift: linear zunehmende Varianz. Der Trend ist die rote Linie unter dem Diagramm. Die blaue ist die Rate der Veränderung des Trends. Beide osciallte um ihren Mittelwert (0). Beachten Sie, dass die Maßstabseinheit eine Standardabweichung ihrer eigenen Werte ist (orange2 Sigma). Der Trend ist mittlerweile zurückzukehren, aber ich habe nie versucht, einen O-U Prozess zu passen. OK. Eine weitere Zeile auf dem TODO :-) Keine Gier. Keine Angst. Nur Mathe. Mitglieder müssen mindestens 0 Gutscheine haben, um in diesem Thread zu posten. 1 Trader Betrachtung jetzt Forex Factoryreg ist ein eingetragenes Warenzeichen. August 18, 2015 6. Oktober 2015 Die Kalman Filter und Paare Trading Stellen Sie sich dieses Szenario vor. Sie sind ein statistischer Arbitrage-Händler an einem Propeller oder HF. Als solches halten Sie routinemäßig ein Inventar der ETF-Exposition, die Sie sich absichern müssen. In der vergangenen Nacht haben Sie Ihre Übernachthändler angewiesen, die Heckenverhältnisse für eine Matrix von ETF8217 zu berechnen. Am nächsten Morgen, bevor der Markt öffnet, präsentieren Ihre Junior-Händler eifrig ihre Ergebnisse für Ihre Inspektion. Wenn Sie das sehen, was Sie sehen, laden Sie die Heckenverhältnisse in Ihre Handelsplattform und warten auf die offene. Wenn sich der Markt zum Handel öffnet, werden die Absicherungen nach den neuen Verhältnissen neu ausgeglichen. Danach sehst du schrecklich zu, wie deine Hecken nicht wie erwartet ausführen. Was schief gelaufen Jeder gute Händler weiß, dass sie sich anpassen müssen, wenn sich die Marktbedingungen ändern. Warum verlangen wir also aus unseren Handelsmodellen. Die Händler in unserem Beispiel stützten sich auf statische Hedge-Ratios, um ihre Handelslogik zu versorgen. Infolgedessen eröffneten sie sich dem, was als Parameterrisiko bekannt ist. Die Aktualisierung Ihrer Parameter, sobald neue Informationen verfügbar sind, ist eine Möglichkeit, sich vor diesem unterschätzten Handelsrisiko zu schützen. Bei weitem das allgegenwärtigste Modell, um dies in einem Handelsszenario zu erreichen, ist der Kalman Filter. Dies ist sinnvoll, wenn man sich mit einem linearen Modell wie dem Paarhandel beschäftigt, das in seiner einfachsten Form den Rest einer linearen Regression auf den Handel reduziert: Wo ist der aktuelle Preis der ersten Aktie, ist der aktuelle Kurs der zweiten Aktie , Ist unser aktuelles Hedge-Verhältnis und ist der aktuelle Spread-Preis, den wir handeln. Wir konnten auch das Hedge-Verhältnis mit den Log-Änderungen in X und Y anstatt deren Ebenen abschätzen. Dies wäre eher der Fall in einem High Frequency Trading-Szenario, wo alles, was wir interessieren, sind Preisänderungen. Der Kalman Filter erlaubt uns, das Hedge-Verhältnis über die Zeit zu variieren. Angenommen, wir nehmen an, dass das Hedge-Verhältnis einem zufälligen Spaziergang folgt, d. h. Wo ist der gegenwärtige Zustand des Hedge-Verhältnisses, ist der letzte Zustand und ist zufälliges weißes Rauschen mit dem Mittelwert von Null und der Flüchtigkeit. Der Kalman-Filter wurde für die Schätzung des 8220hidden state8221 eines linearen Gaußschen Modells wie Pairs Trading entwickelt. Der Filter basiert auf einem System von Gleichungen: Ist der aktuelle versteckte Zustand (zB unser Hedge-Verhältnis), ist die Übergangsmatrix (zB die Identitätsmatrix) der letzte Beobachtungsvektor (zB die logarithmische Änderung des Bestandes Y) Späteste Beobachtungsmatrix (z. B. die logarithmische Änderung des Bestandes X) sind Gaußfarbenes Rauschen mit mittlerem Nullpunkt und Abweichungen Let8217s sehen ein konkretes Beispiel des Kalman Filters in Aktion an, um ein besseres Verständnis der beweglichen Teile zu erhalten. Insbesondere wollten wir die Bedeutung Ihrer Wahl hervorheben und. Das Verhältnis dieser beiden Parameter wird als Signal-Rausch-Verhältnis bezeichnet. Wenn klein ist, wird der Filter den größten Teil seines Gewichts für die nächste Schätzung auf den Zustand der letzten Schätzung legen (d. h. der Filter wird seinen gegenwärtigen Zustand über neue Informationen begünstigen). Wenn das umgekehrte wahr ist, passt sich der Filter sehr schnell auf neue Informationen zu Lasten seines vorherigen Zustandes an. Die folgende Tabelle zeigt den Effekt gut. Jede Zeile repräsentiert die aktuelle8217s aktuelle Schätzung des Hedge-Verhältnisses zwischen ETF8217s SPY und EEM mit unterschiedlichen Werten für konstante Konstante. Je höher das Signal-Rausch-Verhältnis, desto schneller passt sich das Modell an neue Informationen an: Python hat eine einfache und effektive Implementierung des Kalman Filters namens pykalman. Wir haben kostenlose Intraday-Bestandsdaten für die SPY und EEM heruntergeladen, mit der getgoogledata-Funktion, die wir zuvor geteilt haben. Um dies für dich selbst zu implementieren, kannst du unten folgen. Der erste Schritt besteht darin, die benötigten Module zu importieren: Als nächstes können wir die Aktienkurse herunterladen und in Log-Änderungen umwandeln: Jetzt lassen Sie die Datenmenge in die Stichproben ein, um den Anfangszustand des Filters zu schätzen: Jetzt können wir jeden Filter mit einem anderen ausführen Signal-Rausch-Verhältnis: Dies ist eine lose gekoppelte Fortsetzung unserer bisherigen Post, die Erstellung eines stat arb-Paares Handel Für ein gut geschriebenes Beispiel, wie man ein Spread-Modell mit einem Intercept sowie ein Hedge-Verhältnis verwenden, schauen Sie sich TheAlgoEngineer. Interessiert an Ressourcen für Pairs Trading Wollen Sie lernen, wie man soziale Datenquellen wie Google Trends, StockTwits, Twitter und Estimize Machen Sie sicher, laden Sie unser Buch Intro zu Social Data für Trader Folgen Sie Blog per Email Post Navigation Aktuelle Beiträge Aktuelle Kommentare KategorienKalman Filter - Basierte Paare Handelsstrategie Im QSTrader Zuvor auf QuantStart haben wir die mathematischen Grundlagen von State Space Models und Kalman Filters berücksichtigt. Sowie die Anwendung der pykalman-Bibliothek auf ein Paar von ETFs, um ein Hedge-Verhältnis dynamisch anzupassen, als Grundlage für eine mittlere revertierende Handelsstrategie. In diesem Artikel werden wir eine Handelsstrategie diskutieren, die ursprünglich von Ernest Chan (2012) 1 und von Aidan OMahony bei Quantopian 2 getestet wurde. Wir werden das Python-basierte Open-Source-QSTrader-Backtesting-Framework nutzen, um die Strategie umzusetzen. QSTrader wird die schwere Aufhebung der Positionsverfolgung, Portfolio-Handling und Datenaufnahme durchführen, während wir uns ausschließlich auf den Code konzentrieren, der die Handelssignale erzeugt. Die Handelsstrategie Die Paire-Trading-Strategie wird auf ein paar Exchange Traded Funds (ETF) angewendet, die sowohl die Performance der variabel verzinslichen US-Staatsanleihen verfolgen. Sie sind: Das Ziel ist es, eine Mittelrückkehrstrategie aus diesem Paar von ETFs zu bauen. Die synthetische Verbreitung zwischen TLT und IEI ist die Zeitreihe, die wir eigentlich für Sehnsucht oder Kurzschluss interessieren. Der Kalman-Filter wird verwendet, um das Hedging-Verhältnis zwischen den beiden dynamisch zu verfolgen, um die Spalte stationär zu halten (und damit das Mittel zurückzukehren). Um die Handelsregeln zu erstellen, muss man feststellen, wann der Spread sich zu weit von seinem erwarteten Wert entfernt hat. Wie bestimmen wir, was zu weit ist Wir könnten einen Satz von festen Absolutwerten nutzen, aber diese müssten empirisch bestimmt werden. Dies würde einen weiteren freien Parameter in das System einführen, das eine Optimierung erfordern würde (und eine zusätzliche Überbrückungsgefahr). Ein parameterloser Ansatz, diese Werte zu erstellen, besteht darin, ein Vielfaches der Standardabweichung der Ausbreitung zu betrachten und diese als die Grenzen zu verwenden. Aus Gründen der Einfachheit können wir den Koeffizienten des Vielfachen so einstellen, dass er gleich eins ist. Hence we can go long the spread if the forecast error drops below the negative standard deviation of the spread. Respectively we can go short the spread if the forecast error exceeds the positive standard deviation of the spread. The exit rules are simply the opposite of the entry rules. The dynamic hedge ratio is represented by one component of the hidden state vector at time t, thetat, which we will denote as theta0t. This is the beta slope value that is well known from linear regression. Longing the spread here means purchasing (longing) N units of TLT and selling (shorting) lfloor , where lfloor is the floor representing the highest integer less than x. The latter is necessary as we must transact a whole number of units of the ETFs. Shorting the spread is the opposite of this. N controls the overall size of the position. et represents the forecast error or residual error of the prediction at time t, while Qt represents the variance of this prediction at time t. For completeness, the rules are specified here: et lt - sqrt - Long the spread: Go long N shares of TLT and go short lfloor units of IEI et ge - sqrt - Exit long: Close all long positions of TLT and IEI et gt sqrt - Short the spread: Go short N shares of TLT and go long lfloor units of IEI et le sqrt - Exit short: Close all short positions of TLT and IEI The role of the Kalman filter is to help us calculate thetat, as well et and Qt. thetat represents the vector of the intercept and slope values in the linear regression between TLT and IEI at time t. It is estimated by the Kalman filter. The forecast errorresidual et yt - hat t is the difference between the predicted value of TLT today and the Kalman filters estimate of TLT today . Qt is the variance of the predictions and hence sqrt is the standard deviation of the prediction. The implementation of the strategy involves the following steps: Receive daily market OHLCV bars for both TLT and IEI Use the recursive online Kalman filter to estimate the price of TLT today based on yesterdays observations of IEI Take the difference between the Kalman estimate of TLT and the actual value, often called the forecast error or residual error . which is a measure of how much the spread of TLT and IEI moves away from its expected value Long the spread when the movement is negatively far from the expected value and correspondingly short the spread when the movement is positively far from the expected value Exit the long and short positions when the series reverts to its expected value In order to carry out this strategy it is necessary to have OHLCV pricing data for the period covered by this backtest. In particular it is necessary to download the following: TLT - For the period 3rd August 2009 to 1st August 2016 (link here ) IEI For the period 3rd August 2009 to 1st August 2016 (link here ). This data will need to placed in the directory specified by the QSTrader settings file if you wish to replicate the results. Python QSTrader Implementation Since QSTrader handles the position tracking, portfolio management, data ingestion and order management the only code we need to write involves the Strategy object itself. The Strategy communicates with the PortfolioHandler via the event queue, making use of SignalEvent objects to do so. In addition we must import the base abstract strategy class, AbstractStrategy . Note that in the current alpha version of QSTrader we must also import the PriceParser class. This is used to multiply all prices on input by a large multiple (108) and perform integer arithmetic when tracking positions. This avoids floating point rounding issues that can accumulate over the long period of a backtest. We must divide all the prices by PriceParser. PRICEMULTIPLIER to obtain the correct values: The next step is to create the KalmanPairsTradingStrategy class. The job of this class is to determine when to create SignalEvent objects based on received BarEvent s from the daily OHLCV bars of TLT and IEI from Yahoo Finance. There are many different ways to organise this class. Ive opted to hardcode all of the parameters in the class for clarity of the explanation. Notably Ive fixed the value of delta10 and vt10 . They represent the system noise and measurement noise variance in the Kalman Filter model. This could also be implemented as a keyword argument in the init constructor of the class. Such an approach would allow straightforward parameter optimisation. The first task is to set the time and invested members to be equal to None. as they will be updated as market data is accepted and trade signals generated. latestprices is a two-array of the current prices of TLT and IEI, used for convenience through the class. The next set of parameters all relate to the Kalman Filter and are explained in depth in the previous two articles here and here . The final set of parameters include days. used to track how many days have passed as well as qty and curhedgeqty. used to track the absolute quantities of ETFs to purchase for both the long and short side. I have set this to be 2,000 units on an account equity of 100,000 USD. The next method setcorrecttimeandprice is a helper method utilised to ensure that the Kalman Filter has all of the correct pricing information available at the right point. This is necessary because in an event-driven backtest system such as QSTrader market information arrives sequentially. We might be in a situation on day K where weve received a price for IEI, but not TFT. Hence we must wait until both TFT and IEI market events have arrived from the backtest loop, through the events queue. In live trading this is not an issue since they will arrive almost instantaneously compared to the trading period of a few days. However, in an event-driven backtest we must wait for both prices to arrive before calculating the new Kalman filter update. The code essentially checks if the subsequent event is for the current day. If it is, then the correct price is added to the latestprice list of TLT and IEI. If it is a new day then the latest prices are reset and the correct prices are once again added. This type of housekeeping method will likely be absorbed into the QSTrader codebase in the future, reducing the necessity to write boilerplate code, but for now it must form part of the strategy itself. The core of the strategy is carried out in the calculatesignals method. Firstly we set the correct times and prices (as described above). Then we check that we have both prices for TLT and IEI, at which point we can consider new trading signals. y is set equal to the latest price for IEI, while F is the observation matrix containing the latest price for TLT, as well as a unity placeholder to represent the intercept in the linear regression. The Kalman Filter is subsequently updated with these latest prices. Finally we calculate the forecast error et and the standard deviation of the predictions, sqrt . Lets run through this code step-by-step, as it looks a little complicated. The first task is to form the scalar value y and the observation matrix F. containing the prices of IEI and and TLT respectively. We calculate the variance-covariance matrix R or set it to the zero-matrix if it has not yet been initialised. Subsequently we calculate the new prediction of the observation yhat as well as the forecast error et . We then calculate the variance of the observation predictions Qt as well as the standard deviation sqrtQt. We use the update rules derived here to obtain the posterior distribution of the states theta. which contains the hedge ratioslope between the two prices: Finally we generate the trading signals based on the values of et and sqrt . To do this we need to check what the invested status is - either long, short or None. Notice how we need to adjust the curhedgeqty current hedge quantity when we go long or short as the slope theta0t is constantly adjusting in time: This is all of the code necessary for the Strategy object. We also need to create a backtest file to encapsulate all of our trading logic and class choices. The particular version is very similar to those used in the examples directory and replaces the equity of 500,000 USD with 100,000 USD. It also changes the FixedPositionSizer to the NaivePositionSizer. The latter is used to naively accept the suggestions of absolute quantities of ETF units to trade as determined in the KalmanPairsTradingStrategy class. In a production environment it would be necessary to adjust this depending upon the risk management goals of the portfolio. Here is the full code for the kalmanqstraderbacktest. py : As long as QSTrader is correctly installed and the data has been downloaded from Yahoo Finance the code can be executed via the following command in the terminal: Thanks to the efforts of many volunteer developers, particularly ryankennedyio and femtotrader. the code is well-optimised for OHLCV bar data and carries out the backtesting rapidly. Strategy Results One of the latest features to be added to QSTrader is that of the tearsheet developed primarily by nwillemse. This feature is still in an early stage of development but will be demonstrated here. A tearsheet is primarily used within institutional settings as a one pager description of a trading strategy. The TearsheetStatistics class in the QSTrader codebase replicates many of the statistics found in a typical strategy performance report. The top two graphs represent the equity curve and drawdown percentage, respectively. Beneath this are the monthly and yearly performance panels. Finally the equity curve, trade-level and time-based statistics are presented: Click the image for a larger view. The equity curve begins relatively flat for the first year of the strategy but rapidly escalates during 2011. During 2012 the strategy becomes significantly more volatile remaining underwater until 2015 and reaching a maximum daily drawdown percentage of 15.79. The performance gradually increases from the maximum drawdown in late 2013 through to 2016. The strategy has a CAGR of 8.73 with a Sharpe Ratio of 0.75. It also has a long maximum drawdown duration of 777 days - over two years Note that this strategy is carried out gross of transaction costs so the true performance would likely be worse. Next Steps There is a lot of research work necessary to turn this into a profitable strategy that we would deploy in a live setting. Potential avenues of research include: Parameter Optimisation - Varying the parameters of the Kalman Filter via cross-validation grid search or some form of machine learning optimisation. However, this introduces the distinct possibility of overfitting to historical data. Asset Selection - Choosing additional, or alternative, pairs of ETFs would help to add diversification to the portfolio, but increases the complexity of the strategy as well as the number of trades (and thus transaction costs). In future articles we will consider how to carry out these procedures for various trading strategies. References 1 Chan, E. P. (2013) Algorithmic Trading: Winning Strategies and their Rationale . Wiley 2 OMahony, A. (2014) Ernie Chans EWAEWC pair trade with Kalman filter . quantopianpostsernie-chans-ewa-slash-ewc-pair-trade-with-kalman-filter Just Getting Started with Quantitative Trading

Comments

Popular Posts