GARCH Verbesserte Nelder Mead MT4 Einführung in GARCH Verbesserte Nelder Mead Algorithmus GARCH ist die kurze Initiale für Generalized Autoregressive Conditional Heteroskedasticity und es ist die Volatilität Vorhersage Modell häufig in der Finanzindustrie verwendet. GARCH-Modell wurde zum ersten Mal in der Arbeit des dänischen Wirtschaftswissenschaftlers Tim Peter Bollerslev im Jahr 1986 erschienen. Der Nobelpreisträger 2003, Robert F. Engle, brachte auch viel zur Verfeinerung des GARCH-Modells mit Tims Arbeit bei. Unser GARCH INM Prädiktor nahm die ursprüngliche Methode von Nelder Mead für GARCH Modellbau. Das ursprüngliche Nelder Meads-Verfahren verfehlt jedoch gelegentlich die Konvergenz und deshalb haben wir die ursprüngliche Nelder-Mead-Methode verbessert, indem wir den Zwischenschritt ARMA (Autoregressive Moving Average) vor dem GARCH-Schritt einbeziehen. Wie GARCH INM Prädiktor für den Handel verwenden Der gesamte Zweck der GARCH INM Prädiktor ist die Handelsleistung zu verbessern. Hier sind einige Tipps. Unser GARCH INM Prädiktor verwendet Punkt als Basiseinheit. Daher kann die vorhergesagte Volatilität eine skalierbare Händlerperspektive für zukünftige Volatilitäten liefern. Zum Beispiel, wenn GARCH 1120 Punkt (112 Pips) für aktuelle Kerze mit 95 Konfidenzintervall vorhergesagt, dann könnten Sie erwarten, dass es 95 der Chance für den aktuellen Markt innerhalb der 112 Pips Bereich bleiben. Die Erkennung von Anomalien ist auch eine weitere wichtige Funktion bei GARCH. Wenn die Preisspanne für den aktuellen Markt außerhalb der vorhergesagten Volatilität liegt (95 Konfidenzintervall), dann ist dies das Anomalieereignis mit 5 Wahrscheinlichkeit, aufzutreten. Die Volatilität ist sehr eng mit dem Trend verbunden. Steigende Volatilität oft sagen Ihnen Beginn der Trend. Filtern Out Range-Markt mit unserem GARCH INM Prädiktor, können Sie zielen auf Trend-Markt. Mathematische Beschreibung der GARCH GARCH INM Prädiktor verwendet Standard-GARCH (1, 1) - Modell. Seine mathematische Beschreibung bezieht sich einfach auf die Varianz der Zeitreihe auf die vorhergehende Varianz und die vorherige quadrierte Rückkehr. In der mathematischen Notation wäre dies: Abweichung bei t omega alpha quadrierte Rückkehr bei t-1 beta Abweichung bei t-1 bei Zeitreihe-Rückkehr y bei t mittlerem Fehler und t Zeit Beschreibung für Eingangsparameter NumberOfObs: Anzahl der Beobachtungen (Datenpunkt) Für die Berechnung verwendet werden. Wir empfehlen mindestens 1000 Datenpunkte. UseHighLow: Bei Verwendung des High-Low-Modus (true) wird der Bereich mit High-Low berechnet. Wenn UseHighLow false, dann schließen vorherige schließen wird verwendet, um Bereich zu berechnen. Wir empfehlen die Voreinstellung für Ihren Handel. ConfidenceInterval: Konfidenzintervall für GARCH-Vorhersage. Wir bieten 90, 95 und 99 Konfidenzintervall. Dieses Vertrauensintervall bietet Ihnen ein probabilistisches Gefühl für die zukünftige Marktpalette. SafetyFactor: Sicherheitsfaktor wird für zusätzliche Sicherheit des Handelsbetriebs hinzugefügt. Sicherheitsfaktor sollte größer als 1. Wenn Sicherheitsfaktor 1, dann ist die vorhergesagte Volatilität gleich der ursprünglichen GARCH-Volatilität. Wenn Sicherheitsfaktor 1,5, dann die vorhergesagte Volatilität haben 50 sicherer Marge über die ursprüngliche GARCH-Volatilität. Hinweis zu GARCH Nelder Mead Dieser GARCH-Indikator ist ein Versuch, fortgeschrittene wissenschaftliche Methode in der Praxis des realen Handels zu bringen. Die Parameterschätzung des GARCH-Algorithmus ist unter den erfahrenen Statistikern besonders schwierig und irreführend. Hier geben wir den selbstoptimierenden GARCH-Algorithmus für begeisterte Wissenschaftler. Dieses ist freie Software und deshalb können wir Ihnen begrenzten Kundendienst auf unserem GARCH Nelder Mead anbieten. Anstatt dieses, genießen Sie bitte dieses freie aber leistungsfähige Handelssystem. Wenn GARCH-Parameter innerhalb akzeptabler Genauigkeit ist, um seine wahren Parameter, dann können Sie wirklich leistungsfähige Volatilität Predition Tool für Ihre Strategie. Autor, Finance Engineer hat eine jahrzehntelange Erfahrung im Bau Handel und Anlage-System mit fortgeschrittenen mathematischen und wissenschaftlichen Methoden. ARIMAGARCH Trading-Strategie auf dem SampP500 Aktienmarkt mit R In diesem Artikel möchte ich Ihnen zeigen, wie die Anwendung aller gewonnenen Erkenntnisse in Die vorherige Zeitreihe Analyse Beiträge zu einer Handelsstrategie auf dem SampP500 US-Aktienmarkt-Index. Wir werden sehen, dass wir durch die Kombination der ARIMA - und GARCH-Modelle langfristig einen Buy-and-Hold-Ansatz deutlich übertreffen können. Strategie-Überblick Die Idee der Strategie ist relativ einfach, aber wenn du mit ihm experimentieren willst, schlage ich vor, die vorherigen Beiträge auf Zeitreihenanalyse zu lesen, um zu verstehen, was Sie ändern würden Die Strategie wird auf einer rollenden Grundlage durchgeführt: Für jedes Tag, n werden die vorangegangenen k Tage der differenzierten logarithmischen Renditen eines Börsenindex als Fenster für die Anpassung eines optimalen ARIMA - und GARCH-Modells verwendet. Das kombinierte Modell wird verwendet, um eine Vorhersage für den nächsten Tag Rückkehr zu machen. Wenn die Vorhersage negativ ist, wird die Aktie beim vorigen Schließen kurzgeschlossen, wenn sie positiv ist, ist sie sehnlich. Wenn die Vorhersage die gleiche Richtung wie der Vortag ist, dann wird nichts geändert. Für diese Strategie habe ich die maximal verfügbaren Daten von Yahoo Finance für den SampP500 verwendet. Ich habe k500 genommen, aber dies ist ein Parameter, der optimiert werden kann, um die Leistung zu verbessern oder reduzieren Drawdown. Der Backtest wird in einer geradlinigen vektorisierten Weise unter Verwendung von R durchgeführt. Es wurde noch nicht in dem Python-ereignisgesteuerten Backtester implementiert. Daher würde die Performance, die in einem echten Handelssystem erzielt wird, wahrscheinlich etwas geringer sein, als Sie hier erreichen könnten, aufgrund von Provisionen und Schlupf. Strategie Umsetzung Zur Umsetzung der Strategie werden wir einige der Code, den wir zuvor in der Zeitreihe Analyse Artikel-Serie sowie einige neue Bibliotheken einschließlich Rugarch erstellt haben. Die mir von Ilya Kipnis bei QuantStrat Trader vorgeschlagen wurde. Ich gehe die Syntax Schritt für Schritt durch und präsentiere dann die vollständige Implementierung am Ende sowie einen Link zu meinem Datensatz für das ARIMAGARCH-Kennzeichen. Ive eingeschlossen das Letztere, weil es mich ein paar Tage auf meinem dekstop PC genommen hat, um die Signale zu erzeugen Sie sollten in der Lage sein, meine Resultate in der Gesamtheit zu replizieren, da der Code selbst nicht zu komplex ist, obwohl es einige Zeit dauert, zu simulieren, wenn Sie Führen Sie es in voller Höhe. Die erste Aufgabe besteht darin, die notwendigen Bibliotheken in R zu installieren und zu importieren: Wenn Sie bereits die Bibliotheken installiert haben, können Sie sie einfach importieren: Damit werden die Strategien für den SampP500 angewendet. Wir können quantmod verwenden, um Daten ab 1950 für den Index zu erhalten. Yahoo Finance nutzt das Symbol GPSC. Wir können dann die differenzierten logarithmischen Renditen des Schlusskurses des SampP500 erstellen und den anfänglichen NA-Wert ausstreifen: Wir müssen einen Vektor erstellen, um unsere Prognosewerte zu bestimmten Terminen zu speichern. Wir setzen die Länge foreLength gleich der Länge der Handelsdaten, die wir minus k haben, die Fensterlänge: In diesem Stadium müssen wir jeden Tag in den Handelsdaten durchlaufen und ein passendes ARIMA - und GARCH - Modell in das Rollfenster von Länge k. Angesichts der Tatsache, dass wir versuchen, 24 separate ARIMA passt und passen ein GARCH-Modell, für jeden Tag kann die Indikator kann eine lange Zeit zu generieren. Wir verwenden den Index d als Schleifenvariable und Schleife von k auf die Länge der Handelsdaten: Wir erstellen dann das Rollfenster, indem wir die SampP500-Renditen nehmen und die Werte zwischen 1d und kd wählen, wobei k500 für diese Strategie gilt: Wir verwenden die Dieselbe Prozedur wie im ARIMA-Artikel, um alle ARMA-Modelle mit p in und q in, mit Ausnahme von p, q0, zu durchsuchen. Wir wickeln den arimaFit-Aufruf in einem R tryCatch-Ausnahmebehandlungsblock um sicherzustellen, dass, wenn wir keine Anpassung für einen bestimmten Wert von p und q erhalten, wir ihn ignorieren und zur nächsten Kombination von p und q übergehen. Beachten Sie, dass wir den integrierten Wert von d0 setzen (dies ist ein anderer d zu unserem Indexierungsparameter) und als solche passen wir wirklich zu einem ARMA-Modell. Eher als ein ARIMA. Das Looping-Verfahren wird uns das am besten passende ARMA-Modell im Sinne des Akaike Information Criterion zur Verfügung stellen, das wir dann für unser GARCH-Modell verwenden können: Im nächsten Codeblock werden wir die Rugarch-Bibliothek verwenden GARCH (1,1) - Modell. Die Syntax dafür erfordert, dass wir ein ugarchspec Spezifikationsobjekt aufbauen, das ein Modell für die Varianz und den Mittelwert annimmt. Die Varianz empfängt das GARCH (1,1) - Modell, während der Mittelwert ein ARMA (p, q) - Modell annimmt, wobei p und q oben gewählt sind. Wir wählen auch die gesendete Verteilung für die Fehler. Sobald wir die Spezifikation ausgewählt haben, führen wir die eigentliche Anpassung von ARMAGARCH mit dem Befehl ugarchfit aus, der das Spezifikationsobjekt, die k Rückkehr des SampP500 und einen numerischen Optimierungslöser übernimmt. Wir haben uns für Hybrid entschieden. Die verschiedene Löser versucht, um die Wahrscheinlichkeit der Konvergenz zu erhöhen: Wenn das GARCH-Modell nicht konvergiert, dann setzen wir einfach den Tag, um eine lange Vorhersage zu erzeugen, was eindeutig eine Vermutung ist. Wenn jedoch das Modell konvergiert, geben wir die Datums - und Morgenvorhersagerichtung (1 oder -1) als String aus, an welchem Punkt die Schleife geschlossen ist. Um die Ausgabe für die CSV-Datei vorzubereiten, habe ich einen String erstellt, der die Daten durch ein Komma getrennt mit der Prognose-Richtung für den folgenden Tag enthält: Der vorletzte Schritt ist die Ausgabe der CSV-Datei auf den Datenträger. Dies ermöglicht es uns, die Indikator zu nehmen und es in alternative Backtesting-Software für die weitere Analyse verwenden, wenn dies gewünscht: Es gibt jedoch ein kleines Problem mit der CSV-Datei, wie es jetzt steht. Die Datei enthält eine Liste von Daten und eine Vorhersage für die Richtung von morgen. Wenn wir diese in den darunter liegenden Backtest-Code laden würden, würden wir tatsächlich eine Vorausschau-Bias einführen, da der Vorhersagewert Daten darstellen würde, die zum Zeitpunkt der Vorhersage nicht bekannt waren. Um dies zu berücksichtigen, müssen wir lediglich den vorhergesagten Wert um einen Tag verschieben. Ich habe dies mit Python einfacher gefunden. Da ich nicht annehmen möchte, dass du irgendwelche speziellen Bibliotheken (wie Pandas) installiert hast, hielt Ive es zu reinem Python. Hier ist das kurze Skript, das dieses Verfahren ausführt. Stellen Sie sicher, dass es im gleichen Verzeichnis wie die Datei "forecasts. csv" ausgeführt wird: An dieser Stelle haben wir nun die korrigierte Indikatordatei, die in forecastsnew. csv gespeichert ist. Da dies eine beträchtliche Menge an Zeit zur Berechnung benötigt, stellte Ive die vollständige Akte hier zur Verfügung, damit Sie sich herunterladen können: Strategie-Ergebnisse Nachdem wir unsere CSV-Indikator-Datei generiert haben, müssen wir ihre Performance mit Buy amp Hold vergleichen. Zuerst lesen wir das Kennzeichen aus der CSV-Datei und speichern es als spArimaGarch: Wir erstellen dann einen Schnittpunkt der Daten für die ARIMAGARCH-Prognosen und den ursprünglichen Satz von Renditen aus dem SampP500. Wir können dann die Rendite für die ARIMAGARCH-Strategie berechnen, indem wir das Prognosezeichen (oder -) mit der Rendite selbst multiplizieren: Wenn wir die Renditen aus der ARIMAGARCH-Strategie haben, können wir Eigenkapitalkurven sowohl für das ARIMAGARCH-Modell als auch für Buy amp Hold erstellen. Schließlich kombinieren wir sie zu einer einzigen Datenstruktur: Schließlich können wir den Xyplot-Befehl verwenden, um beide Eigenkapitalkurven auf demselben Grundstück darzustellen: Die Eigenkapitalkurve bis zum 6. Oktober 2015 ist wie folgt: Wie Sie sehen können, über 65 Jahre Periode hat die ARIMAGARCH-Strategie den Buy amp Hold deutlich übertroffen. Allerdings können Sie auch sehen, dass die Mehrheit der Gewinn zwischen 1970 und 1980. Beachten Sie, dass die Volatilität der Kurve ist sehr minimal bis Anfang der 80er Jahre, an welcher Stelle die Volatilität steigt deutlich und die durchschnittlichen Renditen sind weniger beeindruckend. Die Eigenkapitalkurve verspricht für die gesamte Periode eine sehr gute Performance. Allerdings wäre diese Strategie wirklich handelbar Zunächst einmal können wir die Tatsache, dass die ARMA-Modell wurde nur im Jahr 1951 veröffentlicht. Es war nicht wirklich weit verbreitet, bis die 1970er Jahre, wenn Box amp Jenkins diskutiert es in ihrem Buch. Zweitens wurde das ARCH-Modell bis Anfang der 80er Jahre von Engle nicht entdeckt und GARCH selbst wurde 1986 von Bollerslev veröffentlicht. Drittens wurde dieser Backtest tatsächlich an einem Börsenindex durchgeführt und ist kein physisch handelbares Instrument. Um Zugang zu einem solchen Index zu erhalten, wäre es notwendig gewesen, SampP500-Futures oder einen replizierten Exchange Traded Fund (ETF) wie SPDR zu handeln. Daher ist es wirklich so angebracht, solche Modelle auf eine historische Serie vor ihrer Erfindung anzuwenden. Eine Alternative ist, die Anwendung der Modelle auf neuere Daten zu beginnen. In der Tat können wir die Performance in den letzten zehn Jahren betrachten, vom 1. Januar 2005 bis heute: Wie Sie sehen können, bleibt die Eigenkapitalkurve unterhalb einer Buy amp Hold Strategie für fast 3 Jahre, aber während des Börsencrash von 2008/2009 Es ist außerordentlich gut. Dies macht Sinn, weil es wahrscheinlich ist, eine signifikante serielle Korrelation in diesem Zeitraum und es wird gut durch die ARIMA und GARCH Modelle erfasst werden. Sobald sich der Markt nach dem Jahr 2009 wieder erholt hat und in den scheinbar stochastischeren Trend eintritt, beginnt die Modellleistung wieder zu leiden. Beachten Sie, dass diese Strategie leicht auf verschiedene Börsenindizes, Aktien oder andere Anlageklassen angewendet werden kann. Ich ermutige Sie dringend, die Erforschung anderer Instrumente auszuprobieren, da Sie wesentliche Verbesserungen der hier präsentierten Ergebnisse erhalten können. Nächste Schritte Nachdem wir nun über die ARIMA - und GARCH-Modellfamilie diskutiert haben, möchte ich die Analyse der Zeitreihenanalyse fortsetzen, indem ich Langzeitgedächtnisprozesse, Zustandsraummodelle und kointegrierte Zeitreihen betrachte. Diese nachfolgenden Bereiche der Zeitreihen werden uns Modelle vorstellen, die unsere Prognosen über die hier vorgestellten Ives hinaus verbessern können, was unsere Handelsergeb - nisse deutlich erhöhen und / oder das Risiko reduzieren wird. Hier ist die vollständige Auflistung für die Indikatorgenerierung, Backtesting und Plotten: Und die Python-Code auf Prognosen. csv vor dem Reimporting gelten: Jeder benutzte ARMA GARCH Modelle im Devisenhandel Ich erforsche derzeit mit ARMA GARCH, um die nächste Tagesposition vorherzusagen. Im Moment habe ich einige Modelle in den letzten zwei Wochen. Es wird einige Zeit dauern, bis ich fertig, so dass ich dachte, ich würde fragen, die Forex-Fabrik-Community, wenn jemand hat diese noch erkundet Looks, um einige gute Ergebnisse auf der SPY in einem Beitrag habe ich auf Quintuitive / 2012/08/2 gelesen haben. S-for-trading / und frage mich, ob jemand in der Lage war, das gleiche Ergebnis mit Währungspaaren Ill versuchen und posten Sie meine Ergebnisse, wenn sie fertig sind Computing. Mitglied seit Oct 2008 Status: PIP Slayer. Ich wünschte, ich könnte em 268 Beiträge Für den zweiwöchigen Test sieht es toll aus Der Test versuchte, die nächsten Tage zurückzugeben und kehrte entweder ein 1, 0 oder -1, dann basierend auf diesem Wert würde ein Handels-kurz oder kein Handel zu öffnen. Das Armagarm-Modell betrachtet die letzten 40 Balken und wählt das Arma-Modell mit dem niedrigsten AIC. Dann wenden Sie ein Garch 1,1 für die Volatilität. Die blaue Linie stellt die Schlusskursrenditen der EURUSD-4-Stunden-Chart dar, als ob Sie einen langen Handel kaufen und halten würden. Die grüne Linie repräsentiert ARMAGARCH Modell, in dem ein Long - oder Short-Trade erworben wurde. Dies ist nur etwa zwei Wochen 72 Bars Wert der Daten analysiert sieht vielversprechend aus. Angehängte Bild (zum Vergrößern anklicken) Nicht sicher, warum so lange dies gehen um vielleicht, da ich die Geschichte so viel erhöht. Seine Vorhersage jede Bar und dann wieder jede Bar. Läuft durch eine Reihe von Arima-Modellen (0,0) - gt (5,5), so dass jeder Balken erzeugt etwas wie 35 Modelle und pickt die beste Passform von denen auf der Grundlage der AIC. Dann passt ein garch (0,0), nur um sicherzustellen, dass die Volatilität war dort und von zu tun, um zusätzliche Berechnungen Ich dont Zyklus durch Aufträge für garch zu halten. Ziemlich schwere Berechnungsweise erzeugt den Backtest. Auch läuft in Linux zu nutzen. Hallo Nach ein paar Monaten der Arbeit haben Sie kommen mit etwas Interresting Id wie einen anderen Versuch zu geben, die AR (F) (I) MA - () GARCH Modelle aber Im immer blockiert auf die große Anzahl von Proben erforderlich (wie 10000 für ARFIMA). Ich interessiere mich für Mesuring nicht Prognose. Meine Wavelet-Zerlegung gibt mir schlechte Ergebnisse, wenn die volatily plötzlich variiert dann dauert es einige Zeit (immer zu lang), um wieder zu konvergieren. Id wie zu sehen, wenn ich die beiden Methoden kombinieren können (dont wissen, wie noch). Keine Gier. Keine Angst. Nur Mathe. Ich möchte mit Ihnen teilen, was ich mit ARMA-Modell und die Residual-Analyse des Modells zu tun. Ich arbeite an EURUSD, und ich versuche, einen Weg zu finden, um Ordnung basierend auf ARMA-Modellierung zu platzieren. Sammeln von Daten, Datentransformation und Modellanpassung: Ich sammle jedes EOD Close des EURUSD-Instruments, und ich berechne die Protokolldifferenzierung, um diese Zeitreihe in einem stationären Prozess zu transformieren. Dann, mit Box Jenkins, passe ich die Parameter des ARMA-Modells. Attached Image (zum Vergrößern anklicken) Attached Image (zum Vergrößern anklicken) Nach dem Modell analysiere ich die Residuen des Modells. Der Prozess der Modellresiduen ist ein stationärer Prozess und folgt einer Normalverteilung. Angehängtes Bild (zum Vergrößern anklicken)
No comments:
Post a Comment