Saturday 28 January 2017

Mdfa Forex

High-Frequency Financial Trading auf FOREX mit MDFA und R: Ein Beispiel mit dem japanischen Yen Dieser letzte Eintrag von Chris ist besonders in dem Sinne, dass er auf meinem Open-Source-MDFA-Paket (und nicht auf iMetrica) basiert, um Handelssignale zu erzeugen Daher sind die Ergebnisse reproduzierbar. Chris machte eine große Replikation Anstrengung, siehe unten: Mittwoch 20: Ich fügte den R-Code wie von Chris geändert, um zur Replikation zu gehen. Was folgt, ist Chris8217email, schneiden und pastete von meinem Server: "Ich habe gerade die lang erwartete Intro-Tutorial auf, wie man Trading-Signale mit MDFA und R für Hochfrequenz-Daten zu bauen. There8217s nicht zu viele Geheimnisse, zum hier zu verstecken, da, was ich in R mit Ihrem Code tat, ist in erster Linie die gleiche Routine, die ich nehme, um meine Handelssignale in iMetrica zu bauen (außer dass ich Sachen viel viel viel schneller in den letzten8230 und ok dort tun kann Sind nur ein paar kleine geheime Saucen, die I8217m verwenden und noch nicht bereit sind, auslaufen, bis I8217m beschäftigt). Aber soweit dieses Beispiel mit dem Yen geht, sollte alles (sollte) zu Hause mit einer (leicht modifizierten) Version Ihres Codes reproduzierbar sein. Hier ist der Artikel 1. Eine Herausforderung, die ich bei der Erstellung dieser Beispiele konfrontiert, kam aus dem Vergleich mit meinen Ergebnissen, die ich in iMetrica. Leider waren die Ergebnisse zunächst nicht die gleichen. Nachdem ich etwas frustriert wurde, nahm ich die mühevolle Bemühung, herauszufinden, warum meine MDFA-Routinen in C sind anders als Ihre in R. Mine sind in einer viel optimierter und effizienter Weise, um die schnellste Geschwindigkeit zu erreichen codiert (dank einer schnellen Apophenie-Optimierung Paket, um Matrizen zusammenzubauen und Koeffizienten zu lösen). Allerdings sollten die Endergebnisse gleichwertig sein. Nach einem Tag der Navigation durch beide oder unsere MDFA-Implementierungen, fand ich heraus, warum sie nicht gleichwertig sind (und ich änderte sie in Ihrem Code). Hier sind die Unterschiede (die ich mich erinnern kann) aus meiner Implementierung und deiner (ab Release November): 8211 Berechnung der DFTs. Aus irgendeinem Grund, bei der Nullfrequenz, verwenden Sie don8217t den Mittelwert der Daten. Sie setzen es einfach auf Null. Nicht sicher, ob Sie dies auf Unfall oder mit Absicht verlassen, aber ich benutze den Mittelwert. Außerdem teile ich die DFT-Werte mit der Konstanten (Pin) auf, wobei n die Anzahl der Beobachtungen in Zeitreihen sind. 8211 In der Definition des Decay1-Parameters scheinen Sie nicht die tan-Funktionszuordnung zu verwenden. Ich tat. 8211 Der größte Unterschied besteht in der Definition der Glättungsfunktion (definiert durch expweight). Zuerst teilen Sie expweight durch 2, ich teilen durch 10. Nicht ein sehr großes Abkommen. Das große Angebot ist das. Meine Definition der verschobenen Leistungsfunktion ist eine Funktion des Frequenzwertes (also von 0 bis zu 3.14). Yours ist eine Funktion der Position des Frequenzwertindex, zwischen 0 und K. Dies macht einen großen Unterschied. Ich bevorzuge die Definition der Leistungsfunktion in Bezug auf den Häufigkeitswert und nicht den Index. Nachdem ich diese geändert habe waren die Ergebnisse ziemlich gleich, aber nicht genau. Beim Betrachten der endgültigen Matrix (bei der Lösung von Axb für die Koeffizienten) nach Anwendung von Regularisierung und Anpassung scheint es, daß die Werte innerhalb der Matrix A auf einen Faktor von etwa 10 ausgeschaltet sind. Meine Intuition ist, dass die komplexen exp-Funktionen in R und C etwas anders berechnet werden (besserer Genauigkeit, ich weiß nicht). So I8217m nicht sicher, ob dies etwas, was wir jemals in der Lage zu lösen. Aber I8217m nicht beunruhigt, da die Endergebnisse so nah sind. In der Tat, es didn8217t irgendwelche der Trades in meinen Beispielen ich zeigen, sie waren die gleichen in iMetrica. Und das ist das Wichtigste. Sowieso kann ich Ihnen meine Version Ihres Codes senden, wenn Sie wünschen, damit Leute es herunterladen können, um die Beispiele zu versuchen. Oder Sie können diese Änderungen zu betrachten und sie dauerhaft in zukünftigen Versionen von MDFA. Lassen Sie mich wissen, und genießen Sie den Artikel. Du arbeitest zu hart, alter Junge. Ihr Haar wurde R-farbige R-Weberei und R-Bürsten in den Sinn kommt. By the way, ist die Konsistenz in umgekehrter Richtung gemessen: iMetrica sollte in der Lage sein, I-MDFA, die die Referenz ist zu replizieren. Mein MDFA-Code wie von Chris modifiziert (siehe oben Kommentare) DFT. r. I8217m immer arbeitet mit zentrierten Serie daher die DFT in Frequenz Null ist Null (it8217s proportional zum Mittelwert). Chris scheint nicht mit zentrierten Serien zu arbeiten: seine DFT unterscheidet sich von Null in der Frequenz. Null. I-MDFAnew. r. Es scheint, dass die expweight Amplitude-Gewichtung wurde geändert und ich denke, der Lambda-Zerfall Begriff wurde auch geändert. Beachten Sie, dass ich meine letzte I-MDFA-Version nicht ändern kann: Die obigen Änderungen sind nützlich, wenn Sie Chris8217-Ergebnisse replizieren möchten (aber ich bleibe nach meiner Version). Um Replikation durchzuführen, müssen Sie die Daten von ihm verlangen. Lassen Sie eine Antwort Abbrechen replyFigure 1: In-Probe (Beobachtungen 1-250) und Out-of-Probe-Performance des Trading-Signal in diesem Tutorial mit MDFA gebaut. (Top) Der Logarithmus des Yen (FXY) in 15-Minuten-Intervallen und die durch das Trading-Signal erzeugten Trades. Hier schwarze Linie ist ein Kauf (lang), blau ist verkaufen (Short-Position). (Bottom) Die vom Handel erzielten Renditen (in bar), in Prozentgewinn oder - verlust. In meinem vorherigen Artikel über Hochfrequenzhandel in iMetrica auf der FOREXGLOBEX. Ich habe in iMetrica mit dem multidimensionalen Direct Filter Ansatz (MDFA) einige robuste Signalextraktionsstrategien eingeführt, um Hochleistungssignale für den Handel am Devisen - und Futures-Markt zu generieren. In diesem Artikel nehme ich eine kurze Abwesenheit von meiner Welt der Entwicklung von finanziellen Handelssignalen in iMetrica und migrieren in eine uber-populäre Sprache verwendet in der Finanzierung aufgrund seiner üppigen Palette von Paketen, schnelle Daten-Management und Grafik-Handling und von Natürlich die Tatsache, dass es frei (wie in Sprache und Bier) auf fast jedem Computer-Plattform in der Welt. Dieser Artikel gibt ein Intro-Tutorial zur Verwendung von R für den Hochfrequenzhandel auf dem FOREX-Markt unter Verwendung des R-Pakets für MDFA (angeboten von Herrn Doktor Marc Wildi von Bern) und einige Strategien, die I8217v für die Generierung von finanziell robusten Handelssignalen entwickelt hat. Für dieses Tutorial betrachte ich das zweite Beispiel in meinem vorherigen Artikel, wo ich ein Trading-Signal für 15-Minuten-Log-Rückkehr des japanischen Yen (von Öffnung Glocke auf Markt schließen EST) entwickelt. Dies stellte etwas neue Herausforderungen als vorher, da die nahezu offenen Sprungvariationen viel größer sind als jene, die durch stündliche oder tägliche Renditen erzeugt werden. Aber wie ich gezeigt habe, stellten diese größeren Schwankungen auf dem offenen Preis keine Probleme für die MDFA. In der Tat, es nutzte diese Sprünge und machte große Gewinne durch die Vorhersage der Richtung des Sprungs. Abbildung 1 am Anfang dieses Artikels zeigt, dass die Leistung des Filters I im ersten Teil dieses Tutorials in der Probe (Beobachtungen 1-250) und außerhalb der Probe (Beobachtungen 251) läuft. In diesem Tutorial versuche ich, diese Ergebnisse zu replizieren, die ich in iMetrica erstellt habe und erweitere sie ein wenig mit der R-Sprache und der Implementierung der MDFA, die hier verfügbar ist. Die Daten, die wir betrachten sind 15-Minuten-Log-Rückkehr der Yen vom 4. Januar bis 17. Januar und ich habe sie gespeichert als. RData-Datei von ldfxyinsamp gegeben. Ich habe eine zusätzliche erklärende Reihe, die in die. RData Akte eingebettet wird, die I8217m verwenden, um den Preis des Yen vorherzusagen. Darüber hinaus werde ich auch mit pricefxyinsamp, die die Log-Preis von Yen, verwendet, um die Performance (buysells) des Handels-Signal zu berechnen. Die ldfxyinsamp wird als In-Sample-Daten verwendet, um das Filter - und Trading-Signal für FXY zu konstruieren. Um diese Daten zu erhalten, können Sie diese Beispiele zu Hause ausführen, E-Mail senden und I8217ll senden Sie alle erforderlichen. RData-Dateien (die In-Sample und Out-of-Sample-Daten) in einer ZIP-Datei. Wenn wir einen schnellen Blick auf die ldfxyinsamp-Daten werfen, sehen wir Log-Returns des Yen alle 15 Minuten beginnend am Markt geöffnet (Zeitzone UTC). Die Zieldaten (Yen) befinden sich in der ersten Spalte zusammen mit den beiden Erklärungsreihen (Yen und einem anderen mit der Yen-Bewegung integrierten Asset). Gt head (ldfxyinsamp), 1, 2, 3 2013-01-04 13:30:00 0.0000000000 2013-01-04 13:45:00 4.763412d-03 4.763412d-03 0.0033465833 2013-01-04 14:00:00 -8,966599d-05 -8,966599d-05 0,0040635638 2013-01-04 14:15:00 2.597055d-03 2.597055d-03 -0.0008322064 2013-01-04 14:30:00 -7.157556d - 04 -7.157556d-04 0.0020792190 2013-01-04 14:45:00 -4.476075e-04 -4.476075e-04 -0.0014685198 Immer weiter, um mit dem Bau des ersten Handelssignals für den Yen zu beginnen, beginnen wir mit dem Hochladen der Daten Unsere R-Umgebung definieren einige Anfangsparameter für den MDFA-Funktionsaufruf und berechnen dann die DFTs und das Periodogramm für den Yen. Wie ich in meinen früheren Artikeln erwähnt habe, beginnt meine Schritt-für-Schritt-Strategie für den Aufbau von Handelssignalen immer mit einer schnellen Analyse des Periodogramms des Vermögens, auf dem gehandelt wird. Mit dem Schlüssel, um einen Einblick in die Eigenschaften der Asset Trades zu erhalten, ist das Periodogramm ein wesentliches Werkzeug für die Navigation, wie der Extraktor gewählt wird. Hier suche ich prinzipielle Spektralpeaks, die im Zeitbereich entsprechen, wie und wo mein Signal buysell-Trades auslöst. Abbildung 2 zeigt das Periodogramm der 15-minütigen Protokolleinstellungen des japanischen Yen während der Stichprobenperiode vom 4. Januar bis zum 17. Januar 2013. Die Pfeile zeigen auf die spektralen Hauptspitzen, die ich suche und stellt einen Leitfaden für I Wird meine Funktion definieren. Die schwarzen gestrichelten Linien zeigen die beiden Frequenzunterbrechungen an, die ich in diesem Beispiel betrachten werde, das erste Wesen und das zweite an. Beachten Sie, dass beide Cutoffs direkt nach einem spektralen Peak gesetzt werden, was ich sehr empfehlen kann. Im Hochfrequenzhandel auf dem FOREX unter Verwendung von MDFA, wie wir sehen, ist der Trick, den spektralen Peak zu suchen, der für die nahezu offene Veränderung des Preises der Fremdwährung verantwortlich ist. Wir wollen diese spektrale Spitze nutzen, da hier die großen Gewinne im Devisenhandel mit MDFA auftreten werden. Abbildung 2: Periodogramm von FXY (japanischer Yen) mit spektralen Peaks und zwei verschiedenen Frequenzunterbrechungen. In unserem ersten Beispiel betrachten wir die größere Frequenz als Cutoff, indem wir sie auf (die rechte Linie in der Figur des Periodogramms) einstellen. Ich habe dann zunächst die Aktualität und Glätte Parameter und expweight auf 0 zusammen mit der Einstellung aller Regularisierung Parameter auf 0 als auch. Dies wird mir ein Barometer für wo und wie viel die Filter-Parameter einstellen. Bei der Auswahl der Filterlänge haben meine empirischen Untersuchungen über zahlreiche Experimente bei der Erstellung von Handelssignalen mit iMetrica gezeigt, dass eine Auswahl von 8216good8217 zwischen 14 und 15 der gesamten Stichprobenlänge der Zeitreihendaten liegen kann. Natürlich hängt die Länge von der Häufigkeit der Datenbeobachtungen (d. h. 15 Minuten, stündlich, täglich usw.) ab, aber im allgemeinen werden Sie höchstwahrscheinlich niemals mehr als größer als die Größe der Stichprobe benötigen. Andernfalls kann die Regularisierung zu umständlich werden, um effektiv zu handeln. In diesem Beispiel beträgt die gesamte Länge der Stichprobe 335 und somit setze ich die I8217ll für den Rest dieses Tutorials ein. In jedem Fall ist die Länge des Filters nicht der wichtigste Parameter, um beim Aufbau guter Handelssignale zu berücksichtigen. Für eine gute robuste Auswahl der Filterparameter Paare mit entsprechender Erläuterungsreihe sollten sich die Ergebnisse des Trading-Signals im Vergleich zum Beispiel kaum unterscheiden. Wenn ja, dann ist die Parametrierung nicht robust genug. Nach dem Hochladen der In-Sample-Log-Return-Daten zusammen mit dem entsprechenden Log-Preis des Yen zur Berechnung der Trading-Performance gehen wir in R vor, um die Filtereinstellungen für die MDFA-Routine festzulegen und dann den Filter mit Hilfe der IMDFAcomp-Funktion zu berechnen. Dies gibt sowohl die imdfaamp-Objektkoeffizienten, die Frequenzantwortfunktionen als auch die Statistik des Filters zusammen mit dem für jede erläuternde Reihe erzeugten Signal zurück. Wir kombinieren diese Signale, um das endgültige Handelssignal zu erhalten. All dies geschieht in R wie folgt: Die resultierenden Frequenzantwortfunktionen des Filters und die Koeffizienten sind in der folgenden Abbildung aufgetragen. Abbildung 3: Die Frequenzantwortfunktionen des Filters (oben) und der Filterkoeffizienten (unten) Beachten Sie, dass die noch vorhandene Rauschen die Grenzfrequenz überschritten hat. Dies wird durch Erhöhung des expweight smoothness-Parameters bewältigt. Die Koeffizienten für jede erläuternde Reihe zeigen eine gewisse Korrelation in ihrer Bewegung, wenn die Verzögerungen zunehmen. Die Glätte und der Abfall der Koeffizienten lassen jedoch viel zu wünschen übrig. Wir werden dies durch die Einführung von Regularisierungsparametern abhelfen. Die Plots des In-Sample-Trading-Signals und die Performance in-Sample des Signals sind in den beiden folgenden Abbildungen dargestellt. Beachten Sie, dass sich das Handelssignal sehr gut in der Stichprobe verhält. Jedoch können Blicke täuschen. Diese stellare Leistung ist zu einem großen Teil zu einer Filterung Phänomen genannt Overfitting. Man kann daraus schließen, dass Überbeulen der Schuldige ist, indem man einfach die Ungleichheit der Koeffizienten zusammen mit der Zahl der eingefrorenen Freiheitsgrade betrachtet, die in diesem Beispiel etwa 174 (von 174) viel zu hoch ist. Wir wollen diese Zahl bei etwa der Hälfte der Gesamtheit der Freiheitsgrade (Anzahl der erläuternden Reihen x L) erhalten. Abbildung 4: Das Handelssignal und die Log-Return-Daten des Yen. Die In-Sample-Performance dieses Filters demonstriert die Art der Ergebnisse, die wir gerne sehen würden, nachdem die Regularisierung angewendet wurde. Aber jetzt kommt für die ernüchternden Auswirkungen der Überbearbeitung. Wir wenden diese Filterkoeffizienten auf 200 15-minütige Beobachtungen des Yen und der erläuternden Reihe vom 18. Januar bis 1. Februar 2013 an und vergleichen mit den Merkmalen in der Probe. Um dies in R zu tun, laden wir zuerst die Out-of-Sample-Daten in die R-Umgebung und wenden Sie dann den Filter auf die Out-of-Sample-Daten, die ich als xout definiert. Das Diagramm in 5 zeigt das Out-of-Sample-Handelssignal. Beachten Sie, dass das Signal nicht annähernd so glatt ist wie in der Probe. Auch die Überschreitung der Daten in einigen Bereichen ist offensichtlich vorhanden. Obwohl die Out-of-Sample-Overfitting-Eigenschaften des Signals nicht schrecklich misstrauisch sind, würde ich nicht vertrauen diesem Filter zu produzieren stellaren Renditen auf lange Sicht. Abbildung 5. Filter auf 200 15-Minuten-Beobachtungen von Yen out-of-Probe, um Trading-Signal zu erzeugen (blau dargestellt) Nach der vorherigen Analyse der mittlere quadratische Lösung (keine Anpassung oder Regularisierung), jetzt gehen wir auf die Reinigung der Problem der Überbeanspruchung, die in den Koeffizienten bei gleichzeitiger Beruhigung des Rauschens im Stoppband (Frequenzen nach) deutlich wurde. Um die Parameter für die Glättung und die Regularisierung zu wählen, wird zuerst der Glätteparameter zuerst angewendet, da dies im allgemeinen die Koeffizienten während des Handelns als 8216pre8217-Regulator ausgleicht und dann zur Auswahl geeigneter Regularisierungskontrollen vorrückt. Bei Betrachtung der Koeffizienten (Abbildung 3) können wir sehen, dass eine angemessene Glättung notwendig ist, mit nur geringem Zerfall. Um diese beiden Parameter in R auszuwählen, ist eine Option, den Trochaner-Optimierer (hier gefunden) zu finden, um eine passende Kombination zu finden (Ich habe einen geheimen Sauce-Algorithmus, den ich für iMetrica entwickelt habe, um optimale Kombinationen von Parametern bei einem Extraktor und einer Leistungsindikator zu wählen , Obwohl it8217s lange (auch in GNU C) und mühsam zu bedienen, so dass ich in der Regel lieber die Strategie in diesem Tutorial diskutiert). In diesem Beispiel begann ich mit dem Setzen des Lambdasmas auf .5 und dem Abfall auf (.1, .1) zusammen mit einem auf 8.5 eingestellten expweight Smoothness-Parameter. Nachdem ich die Koeffizienten betrachtete, war es noch genügend Glätte, so fuhr ich fort, endlich mehr zu erreichen .63, was den Trick machte. Ich wählte dann lambda auszugleichen die Effekte der Glättung expweight (Lambda ist immer der letzte Ort Tweaking-Parameter). Fig. 6 zeigt die resultierende Frequenzantwortfunktion für beide erklärende Reihen (Yen in rot). Man beachte, daß der grßte spektrale Peak, der unmittelbar vor der Frequenzgrenze gefunden wurde, hervorgehoben und leicht gemildert wird (Wert nahe 0,8 statt 1,0). Die anderen spektralen Peaks unten sind ebenfalls vorhanden. Für die Koeffizienten wurde gerade genug Glättung und Zerfall angewendet, um die Verzögerung, zyklische und korrelierte Struktur der Koeffizienten intakt zu halten, aber jetzt sehen sie viel schöner in ihrer geglätteten Form. Die Zahl der eingefrorenen Freiheitsgrade wurde auf etwa 102 reduziert. Abbildung 6: Die Frequenzantwortfunktionen und die Koeffizienten nach der Regulierung und Glättung wurden angewendet (oben). Die geglätteten Koeffizienten mit leichtem Zerfall am Ende (unten). Die Zahl der eingefrorenen Freiheitsgrade beträgt etwa 102 (von 172). Zusammen mit verbesserten gefrorenen Freiheitsgraden und ohne sichtbare Verwüstung der Überfischung wenden wir diesen Filter out-of-sample auf die 200 Out-of-Probe-Beobachtungen an, um die Verbesserung der Struktur der Filterkoeffizienten zu überprüfen (siehe unten) Fig. 7). Beachten Sie die enorme Verbesserung der Eigenschaften des Handelssignals (verglichen mit Abbildung 5). Das Überschwingen der Daten ist beseitigt und die Gesamtglätte des Signals hat sich deutlich verbessert. Dies ist auf die Tatsache zurückzuführen, dass wir das Vorhandensein von Überfaltung beseitigt haben. Abbildung 7: Out-of-Sample-Handelssignal mit Regularisierung. Bei allen Indikationen eines Filters, der genau die Eigenschaften besitzt, die wir für die Robustheit benötigen, wenden wir jetzt das Handelssignal sowohl in Probe als auch außerhalb der Probe an, um die Buysell-Trades zu aktivieren und die Performance des Handelskontos in bar zu sehen. Wenn das Signal unter Null geht, verkaufen wir (Short-Position) und wenn das Signal über Null steigt, kaufen wir (Long-Position eingeben). Das obere Diagramm von 8 ist der logarithmische Preis des Yen für die 15-Minuten-Intervalle, und die gepunkteten Linien stellen genau dar, wo das Handelssignal erzeugte Geschäfte (Kreuzung null) erzeugt. Die schwarzen gestrichelten Linien repräsentieren einen Kauf (Long-Position) und die blauen Linien zeigen einen Verkauf (und Short-Position). Beachten Sie, dass das Signal alle nah beieinander liegenden Sprünge für den Yen vorhergesagt hat (teilweise dank der erklärenden Serie). Dies ist genau das, was wir streben, wenn wir Regularisierung und Anpassung an den Filter hinzufügen. Die Cash-Rechnung der Trades über die Stichprobenperiode ist nachstehend dargestellt, wobei die Transaktionskosten auf 0,05 Prozent festgelegt wurden. In-Probe, das Signal verdient etwa 6 Prozent in 9 Handelstagen und ein 76 Prozent Handelserfolgsquote. Abbildung 8: In-Sample-Performance des neuen Filters und der generierten Trades. Jetzt für den ultimativen Test, um zu sehen, wie gut der Filter bei der Herstellung eines erfolgreichen Handelssignals durchführt, haben wir den Filter auf die 200 15-minütige Out-of-Probe-Beobachtung des Yen und der erläuternden Reihe vom 18. Januar bis zum 1. Februar angewendet Trades basierend auf dem Nulldurchgang. Die Ergebnisse sind unten in Fig. 9 gezeigt. Die schwarzen Linien repräsentieren die Käufe und blauen Linien die Verkäufe (Shorts). Beachten Sie den Filter ist noch in der Lage, die Nah-zu-offenen Sprünge sogar out-of-Probe durch die Regularisierung vorherzusagen. Der Filter erleidet nur drei winzige Verluste bei weniger als 0,08 Prozent zwischen den Beobachtungen 160 und 180 und einem kleinen Verlust am Anfang, wobei eine Out-of-Sample-Trade-Erfolgsquote mit 82 Prozent und einem ROI von knapp über 4 Prozent gegenüber stand Die 9-Tage-Intervall. Abbildung 9: Out-of-Sample-Performance des regulierten Filters bei 200 Retouren des Yen von 15 Minuten. Der Filter erzielte einen ROI von 4 Prozent über die 200 Beobachtungen und eine Erfolgsquote von 82 Prozent. Vergleichen Sie dies mit den Ergebnissen in iMetrica mit den gleichen MDFA-Parametereinstellungen. In Fig. 10 sind sowohl die In-Probe - als auch die Out-of-Sample-Leistung gezeigt. Die Leistung ist nahezu identisch. Abbildung 10: In-Probe - und Out-of-Sample-Performance des Yen-Filters in iMetrica. Fast identisch mit der Leistung, die in R. erhalten wird. Jetzt nehmen wir einen Stab an der Herstellung eines anderen Handelsfilters für den Yen, nur dieses Mal wollen wir nur die niedrigsten Frequenzen identifizieren, um ein Handelssignal zu generieren, das weniger oft abläuft und nur die größten Zyklen sucht. Wie bei der Leistung des vorherigen Filters wollen wir immer noch auf die Frequenzen abzielen, die für die großen offenen Schwankungen des Yenpreises verantwortlich sein könnten. Um dies zu tun, wählen wir unsere Cutoff zu sein, die effektiv halten die größte drei Spektralpeaks intakt in der Tiefpass-Band von. Für diesen neuen Filter halten wir die Dinge einfach, indem wir fortfahren, die gleichen Regularisierungsparameter zu verwenden, die in dem vorherigen Filter ausgewählt wurden, da sie scheinbar gute Ergebnisse außerhalb des Samples zu erzeugen schienen. Für die neuen Rauschunterdrückungsanforderungen im Stopband und die Phaseneigenschaften im kleineren Durchlaßbereich müssen jedoch die Anpassungsparameter von und expweight angepaßt werden. Somit steigere ich den Glättungsparameter und verringere den Timeliness-Parameter (der nur das Durchlaßband betrifft), um diese Änderung zu berücksichtigen. Die neuen Frequenzantwortfunktionen und Filterkoeffizienten für dieses kleinere Tiefpass-Design sind unten in Fig. 11 gezeigt. Man beachte, daß der zweite spektrale Peak berücksichtigt und nur unter den neuen Änderungen nur leicht beruhigt wird. Die Koeffizienten haben noch die spürbare Glätte und Zerfall bei den größten Verzögerungen. Abbildung 11: Frequenzgangfunktionen der beiden Filter und deren Koeffizienten. Um die Effektivität dieses neuen, niedrigeren Handelsfrequenzdesigns zu testen, wenden wir die Filterkoeffizienten auf die 200 Out-of-Sample-Beobachtungen der 15-minütigen Yen-Log-Returns an. Die Leistung ist unten in Abbildung 12 gezeigt. In diesem Filter sehen wir deutlich, dass es dem Filter noch gelingt, die großen nahen offenen Sprünge im Preis des Yen korrekt vorauszusagen. Während des 9-tägigen Zeitraums werden nur drei Gesamtverluste beobachtet. Die Gesamtleistung ist nicht so ansprechend wie die bisherige Filterkonstruktion, da weniger Abschlüsse mit einem ROI von nahezu 2 Prozent und einer Erfolgsquote von 76 Prozent erzielt werden. Allerdings könnte dieses Design passen die Prioritäten für einen Händler viel empfindlicher auf Transaktionskosten. Abbildung 12: Out-of-sample Leistung des Filters mit unterer Cutoff. Fazit Die Bestätigung und Kreuzvalidierung ist wichtig, so wie es der interessanteste Mensch der Welt sagen wird. Der Punkt dieses Tutorials war, einige der Hauptkonzepte und - strategien zu zeigen, die ich durchmache, wenn ich das Problem des Aufbauens eines robusten und hoch effizienten Handelssignals für irgendein gegebenes Vermögen bei jeder Frequenz erlebe. Ich wollte auch sehen, ob ich ähnliche Ergebnisse mit dem R MDFA Paket als iMetrica Softwarepaket erzielen könnte. Die Ergebnisse endete bis nahezu parallel mit einigen kleinen Unterschiede. Die wichtigsten Punkte, die ich hervorheben wollte, waren das erste Analysieren des Periodogramms, um die wichtigen Spektralpeaks (wie etwa diejenigen, die mit offenen Variationen assoziieren) zu suchen, und um zu zeigen, wie die Wahl des Cutoffs den systematischen Handel beeinflusst. Hier8217s eine schnelle Zusammenfassung auf gute Strategien und Hacks im Auge zu behalten. Zusammenfassung der Strategien für den Aufbau eines Handelssignals mittels MDFA in R: Wie ich bereits erwähnt habe, ist das Periodogramm Ihr bester Freund. Wenden Sie den Cutoff direkt nach jedem Spektralbereich an, den Sie berücksichtigen möchten. Diese Peaks sind, was die Trades zu generieren. Verwenden Sie eine Filterlänge von nicht mehr als 14. Alles, was größer ist, ist unnötig. Beginnen Sie mit der Berechnung des Filters im mittleren quadratischen Sinne, dh ohne jegliche Anpassung oder Regularisierung und genau zu sehen, was genehmigt werden muss, indem man die Frequenzantwortfunktionen und Koeffizienten für jede erläuternde Reihe betrachtet. Eine gute Leistung des Trading-Signals in der Stichprobe (und sogar außerhalb der Stichprobe in den meisten Fällen) ist bedeutungslos, wenn die Koeffizienten keine soliden robusten Eigenschaften sowohl im Frequenzbereich als auch im Lag-Bereich aufweisen. Ich empfehle, beginnend mit Optimierung der Glätte Anpassung Parameter expweight und die Lambdasmooth Regularisierung Parameter zuerst. Anschließend mit nur geringen Anpassungen der Lambdadecay-Parameter fortfahren. Schließlich, als letztes Mittel, die Lambda-Anpassung. Ich habe wirklich nie die Mühe, sich auf lambdacross. Es hat selten in einer bedeutenden Weise geholfen. Da die Daten, die wir zum Targeting und zur Erstellung von Handelssignalen verwenden, log-returns sind, brauchen wir uns nicht mit i1 und i2 zu befassen. Diese sind für die wirklich fortgeschrittenen und Patientensignalextraktoren und sollten nur für die mit iMetrica gelassen werden gelassen werden Wenn Sie irgendwelche Fragen haben oder die Hochfrequenz Yen Daten haben, die ich in diesen Beispielen verwendet habe, fühlen Sie sich frei, mit mir in Verbindung zu treten und I8217ll zu senden Sie Ihnen. Bis zum nächsten Mal, glückliches Extrahieren 8220Geben Sie einen schnellen Blick auf die ldfxyinsamp Daten, sehen wir Log-Rückkehr der Yen alle 15 Minuten beginnend am Markt geöffnet (Zeitzone UTC). Die Zieldaten (Yen) befinden sich in der ersten Spalte zusammen mit den beiden Erläuterungsreihen (Yen und einem anderen Asset, das mit der Bewegung von Yen zusammen integriert ist) .8221 Also in der Datei in der Eingabe verwenden Sie das Log (close-returns) zweimal (col1 Und 2) und ein anderes Asset Können Sie mir mehr über dieses weitere Asset cointegred erzählen. Wie Sie es finden Während es8217s nicht so offensichtlich, um eine Reihe von erläuternden Variablen, die Signal (und Handel) Leistung verbessern wird, entwickelte ich ein Werkzeug namens Fundamentalfrequenzkomponenten-Analyse, die mir helfen, wählen Sie Serien mit starken Lag s Korrelationen bei bestimmten Frequenzen I8217m interessiert Die Methode scheint nach meiner Erfahrung ziemlich gut zu funktionieren. Vielen Dank Chris, haben Sie andere Thread in den kommenden Wochen geplant Ja, ich habe viele neue Ideen für Artikel, und wird bald ein Schreiben. I8217ve beschäftigt waren die letzten paar Monate Verbesserung der Methodik noch mehr, so dass es noch robuster für den Finanzhandel. Das Problem ist, ich beginne zu verschenken zu viele meiner Geheimnisse und wird schließlich verlieren meine Wettbewerbsvorteile, so muss ich ein bisschen kryptisch bleiben Was Ihre Favoriten Zeitrahmen. 15 Minuten Ich denke, 15 Minuten ist ein guter Bereich, je niedriger die Frequenz desto besser und robuster das Signal sein wird. Jedoch in der Praxis I8217m derzeit mit 5 min Rückkehr mit einem proprietären Handelsunternehmen in Chicago auf Index-Futures. Sie filtre die Zeit in Ihren Daten. Sie handeln nur von 13:30 Uhr bis 20:00 Uhr Sie über Nacht Handel


No comments:

Post a Comment