Trading mit SVMs: Performance Um ein Gefühl von SVM-Performance im Handel zu bekommen, laufe ich verschiedene Setups auf der S038P 500 historischen Daten von 8230 die 50er Jahre. Das Hauptmotiv hinter der Verwendung dieses Jahrzehnts war, zu entscheiden, welche Parameter variieren und was festhalten, bevor die Durchführung der wichtigsten Tests. Behandeln Sie es als 8220in-sample8221 Test, um zu vermeiden (weiter) Überanpassung. Zuerst die Performance-Chart: S038P 500 Trading Performance Sehr nett Mit den 5 verzögerten täglichen Renditen zeigt ähnliche Leistung der ARMAGARCH-Strategie, die ich sehr vielversprechend fand. Wenn Sie sich fragen, warum ich so über diese Tatsache aufgeregt bin, weil hier sind wir in der Gegend, wo ARMAGARCH am besten ist, und doch haben SVMs vergleichbare Leistung. Die Statistiken sind auch beeindruckend: Während des Schreibens dieses Post, fand ich eine weitere Anstrengung, um SVMs im Handel von Quantum Financier verwenden. Sein Ansatz verwendet RSI unterschiedlicher Länge als Eingang zum SVM, aber es verwendet auch Klassifizierung (Karten die Rückkehr zu zwei Werten, kurz oder lang) anstelle von Regression. Da ich vorhatte, Klassifikation irgendwie zu versuchen, sein Pfosten spornte mich an, ihn zu implementieren und einen zusätzlichen Vergleich durchzuführen, Regression gegen Klassifizierung: S038P 500 SVM Handel 8211 Regression gegen Klassifikation Was kann ich sagen 8211 sie scheinen beide perfekt zu funktionieren. Als Leser in den Kommentaren vorgeschlagen, die Klassifizierung zeigt mehr konsistente Renditen. Mit Blick auf den Tisch, die Einstufung schneiden in der Hälfte der maximale Drawdown, aber interessanter, es didn8217t Verbesserung der Sharpe-Verhältnis deutlich. Nichts schlüssiges hier aber es war eine schnelle Ausführung der schnellsten (in Bezug auf die Laufzeit) Strategien. Es gibt noch eine lange Liste von Themen zu erkunden, nur um Ihnen eine Idee, in keiner bestimmten Reihenfolge: Fügen Sie weitere Funktionen hinzu. Diese Daten gehen meistens auf 1960 zurück, so dass es bald kommt :) Versuchen Sie andere svm-Parameter: andere Regressionen, andere Klassifikationen, andere Kerenls, etc. Dies ist mehr wie ein Stabilitätstest. Versuchen Sie andere Fehlerfunktionen. Der Standardwert ist, den mittleren quadratischen Fehler zu verwenden, aber im Falle von Regression, warum nicht Sharpe Ratio (in-sample) verwenden. Der Regressionsfall ist einfacher, da wir die tatsächlichen returns haben 8211 die Eingabe von tune. control überprüfen. Versuchen Sie längere Zeiträume statt Tage. Wöchentlich ist ein Anfang, aber idealerweise wie zwei oder drei Tage zu implementieren. Variieren Sie die Loopback-Periode. Verwenden Sie mehr Klassen mit Klassifizierung: große Tage, mittlere Tage, etc. Dies wird Zeit in Anspruch nehmen. Wie immer sind Feedback und Kommentare willkommen. 1) Haben Sie Sharpe-Verhältnisse für SVM-Regression vs SVM-Klassifizierung durch Augapfel des Diagramms, Klassifizierung scheint, bessere risikoadjustierte Renditen zu geben. 2) Haben Sie gehört, der Caret-Paket (caret. r-forge. r-project. org/index. html) Es scheint bereits eine Menge der Arbeit, die ich sehe, Sie verwenden in Ihrem bestehenden Code enthalten. Ein weiterer großer Vorteil ist, dass Sie ML Lernen algo (z. B. neuronale Netze) leicht austauschen können, ohne alles neu zu kodieren. Sehr interessantes Blog 1) Guter Punkt, schneide es den Drawdown, aber nicht die Sharpe Ratio deutlich 8211 Ich habe den Beitrag aktualisiert. 2) Vielen Dank für die Aufstockung der Caret-Paket, das ist das zweite Mal höre ich über es, so über die Zeit, um einen genaueren Blick nehmen :) Sieht ziemlich vielversprechend, sicherlich viel zu lernen. Teilen Sie Ihren Code Die Ergebnisse sind wirklich beeindruckend. I8217m versuchen, einen SVM-Klassifikator etwas ähnliches zu bauen, aber ich möchte mehr Parameter als Preise verwenden. Obwohl, vielleicht das isn8217t so hilfreich, weil es scheint, Preise allein bieten prädiktiven Wert. Vielen Dank. Ich plane auch, mehr als nur Preise zu verwenden, aber diese Art von Daten ist für die 50er Jahre nicht verfügbar. Im Allgemeinen sind die 50s auf dem S038P 500 ziemlich voraussagend. Komplexere Modelle werden voraussichtlich benötigt werden. Überprüfen Sie die vorherige Post (quintuitive / 2012/11/30 / Trading-mit-Support-Vektor-Maschinen-svm /) in der Serie 8211 gibt es einen Link zu dem Code verwendet, basierend auf dem e1071-Paket. Da ich den Code gepostet habe, zog ich in das Caret-Paket, das eine einheitliche Schnittstelle zu vielen Modellen gibt. Sieht auch so gut aus. Klingt gut, danke für den Austausch. Alles Gute. Ich versuche auch, SVM-SVR zu verwenden, um nahe Preis der Aktien vorherzusagen, dh: Indexwert als CAC40 DJ usw.. Meine Idee ist sehr einfach und einfach, ich lade die Daten auf einer Vermittlerweb site, ich habe Zugang von 3 Jahren Der vorliegenden Daten. Die Antwort ist der enge Wert des Index, ich nehme an, dass die Merkmale des Vortages eine Auswirkung des nahen Wertes der nächsten Tage haben, dh. Hallo ihr Lieben, ich glaube nicht, dass es so ist, wie ich es mir vorgestellt habe. Ich habe ein Beispiel meiner Datenstruktur hier: openinglag1 highestlag1 smallestlag1 closing (Antwort) volume lag1 3950.59 3959.2 3936.33 4013.97 589818 Schließlich habe ich einen 764 Datensatz, den ganzen Datensatz i, der benutzt, um das svr zu trainieren, und ich prognostiere die nächsten Tage als Ich erwähnte oben. Meine Fragen sind, wie kann ich vorhersagen, zum Beispiel die nächsten 5days Ist meine Datenstruktur rechts Nicht glücklich mit der rollenden Vorhersage in svmComputeForecasts Sehen, was es für modelPeriod8217weeks8217 zum Beispiel macht. Eine Alternative ist, wöchentliche Prognosen direkt im Voraus zu tun. Mit anderen Worten, fassen Sie die Daten in Wochen (oder drei / vier Tag-Chunks), und rufen Sie svmComputeForecasts mit 8216days8217 auf diesem Satz. Jede Vorhersage gilt für den gesamten Zeitraum. Soweit ich weiß, kann man nicht nur eine fünftägige probabilistische Vorhersage mit SVMs machen (dies ist mit ARMA-Techniken machbar). Hoffe, das hilft, Ivan Hi, I8217ve genießen Sie Ihre Beiträge und haben eine Frage. Ich frage mich, welche Art von Verbesserung, die Sie beim Umzug von der einfachen ARMA-Modell in die ARMA-GARCH-Modell Haben Sie getestet anderen Rolling-Fenster Trainingsparameter Auch haben Sie festgestellt, dass die kurze Seite viel von einem Unterschied gemacht (dh ist es viel / Besser oder schlechter) als lange nur Hallo, ich habe einige dieser Fragen in einem späteren Post: quintuitive / 2012/12/27 / armagarch-Erfahrungen /. Das Hinzufügen weiterer Statistiken zum ARMAGARCH-Tutorial ist sicherlich auf meiner Liste, aber es wird Zeit brauchen. Alle diese Analysen können mit dem Indikator (quintuitive / wp-content / uploads / 2012/08 / gspcInd3.csv) zusammen mit der GSPC von Yahoo durchgeführt werden. Der Indikator ist bereits ausgerichtet 8211 keine Notwendigkeit zu verzögern. Sehr beeindruckend. Allerdings haben Sie versucht, mit zufälligen Wald 8211 es behauptet, überlegen zu SVM, wie es für implizite nicht-lineare Effekte und Interaktionsbegriffe unter den exogenen Variablen ermöglicht. Auch es whittles die exogene Variable zu den wichtigsten Spielmachern und sein ziemlich schnelles außerdem besonders mit Ihrem Datensatz. Hallo und vielen Dank für die frühere Antwort. Eine Sache I8217m ein bisschen verwirrt ist, dass auf der ARMAGARCH Post (quintuitive / 2012/08/22 / arma-Modelle-for-trading /) Sie erwähnen 18,87 CAGR und BampH sieht aus etwa 7 CAGR aus Augapfel der Chart. Doch in der Tabelle oben zeigen Sie, 30.88 und 15.4 für ARMAGARCH bzw. BH. Ist es ein anderer Zeitrahmen oder bin ich etwas vermissen etwas Dank wieder. Trading mit Support Vector Machines (SVM) Schließlich haben alle Sterne ausgerichtet und ich kann zuversichtlich einige Zeit für Back-Testing von neuen Handelssystemen und Support Vector Machines SVM) sind die neuen 8220toy8221, die mich beschäftigt für eine Weile halten wird. SVMs sind ein bekanntes Werkzeug aus dem Bereich der überwachten Machine Learning. Und sie werden sowohl für die Klassifizierung als auch für die Regression verwendet. Weitere Einzelheiten entnehmen Sie bitte der Literatur. Es scheint mir, dass die intuitive Anwendung für den Handel Regression ist, so let8217s durch den Aufbau eines SVM-Regressionsmodell zu starten. Nach unseren Erfahrungen mit ARMAGARCH-Modellen werden wir zunächst versuchen, die Rendite anstatt der Preise zu prognostizieren. Ebenso verwenden wir in unseren ersten Tests nur die Renditen der letzten 5 Tage als Merkmale, die die Rückkehr eines bestimmten Tages bestimmen. Wir beginnen mit der Geschichte von 500 Tagen als Trainingsset. In mathematischer Hinsicht haben wir für das Trainingsset N Merkmale, für jedes haben wir M Proben. Wir haben auch M Antworten. Bei einer Reihe von Merkmalswerten, der linken Matrix, wird das SVM trainiert, um den Antwortwert zu erzeugen. In unserem spezifischen Beispiel haben wir fünf Spalten (Merkmale), wobei jede Spalte den Rückgaben mit einer unterschiedlichen Verzögerung (von 1 bis 5) entspricht. Wir haben 500 Proben und die entsprechenden Antworten. Sobald das SVM auf diesem Set trainiert ist, können wir es mit Sätzen von fünf Funktionen, entsprechend den Renditen für die fünf vorherigen Tage, und die SVM wird uns mit der Antwort, die die prognostizierte Rendite wird. Nach dem Training des SVM auf den letzten 500 Tagen werden wir die Renditen für die Tage 500, 499, 498, 497 und 496 verwenden (diese sind die Eingabe, um die prognostizierte Rendite für Tag 501 zu erhalten.) Aus allen verfügbaren Paketen In R, entschied ich mich für die e1071-Paket zu wählen. Eine zweite Wahl war die kernlab-Paket, das ich noch planen, in der Zukunft zu versuchen. So habe ich versucht, ein paar Strategien. Ich habe versucht etwas sehr ähnlich dem ARMAGARCH Ansatz 8211 der Ich war ziemlich überrascht, diese Strategie besser als die ARMAGARCH (dies ist das Heimatland der ARMAGARCH und ich wäre sehr glücklich gewesen, nur mit vergleichbarer Leistung) zu sehen. Als nächstes versuchte ich, die gleichen fünf Funktionen, aber versuchen, die beste Teilmenge auszuwählen. Die Auswahl wurde mit einem gierigen Ansatz, beginnend mit 0-Funktionen, und interaktive Hinzufügen der Funktion, die den Fehler minimiert minimiert. Dieser Ansatz verbessert die Dinge weiter. Endlich habe ich versucht, einen anderen Ansatz mit etwa Ein Dutzend Funktionen. Die Funktionen enthalten Rückkehr über verschiedene Zeit (1 Tag, 2 Tage, 5 Tage, etc.), einige Statistiken (Mittelwert, Median, sd, etc.) und Volumen. Ich habe die gleiche gierige Ansatz, um Funktionen zu wählen. Dieses endgültige System zeigte auch eine sehr gute Leistung, aber es dauerte eine Hölle von einer Zeit zu laufen. Zeit, diesen Beitrag zu beenden, müssen die Back-Testergebnisse warten. Bis dahin können Sie mit dem vollständigen Quellcode selbst spielen. Hier ist ein Beispiel für die Verwendung: Hi In Windows doesn8217t Arbeit wegen Multicore-Problem. Eine weitere Sache, die ich don8217t verstehen, ist in diesen Zeilen der Code rets reflektiert retsindex (data) data dataindex (rets) Meiner Meinung nach ist es8217s effektiver, serie smth wie mydtret lt-aa. exclude (merge (rets, data) Und habe nur ein Argumentobjekt zu funktionieren Aufruf anstelle von 2 Interessante Arbeit, danke Mike Argh, Windows 8211 Ich benutze es selten in letzter Zeit. Er überrascht noch, da die parallele Paket ist Teil der Basis R Verteilung jetzt. Hoffentlich wird es bald adressiert werden In der Zwischenzeit, wie über nicht mit parallelen Ausführung Auch gibt es andere Pakete, die parallele Ausführung, aber das wäre mehr Arbeit. Sie haben Recht über die Merge 8211 Ich frage mich immer noch, warum ich es auf diese Weise dieses Mal getan :) I8217m Empfangen von Fehlern. Nun ist der Fehler gt data svmFeatures (tt), c (1,2) Fehler in match. fun (FUN). Objekt 8216skewness8217 nicht gefunden Aber wenn ich manuelles Datenobjekt mache, bekomme ich Fehler in der Vorhersage svmComputeOneForecast lt-Funktion im Zusammenhang mit Dimensionen und samplingquotcrossquot It039s schwierig für mich, Schiefereien zu debuggen kommt aus dem PerformanceAnalytics-Paket, das Sie von CRAN installieren müssen. Das Hinzufügen von Anforderungen (PerformanceAnalytics) als erste Zeile von svmFeatures sollte das erste Problem ansprechen. Jetzt ist ein Fehler in merge. xts (res, xts (naztrim (lag (rolmean, k 21, align 8220right8221) Länge von 8216dimnames8217 2 nicht gleich Array-Umfang scheint es, dass in Windows-Code braucht eine Menge von Änderungen Mike, ich habe nie gemeint, der Code direkt verwendet werden (bis jetzt war ich Bereitstellung nur Snippets), aber ich bin überrascht, dass R auf Windows so hässlich ist. Nicht sicher what8217s Ihr Ziel, sondern um die Strategien Leistung zu analysieren, können Sie die Indikator-Serie, die bereits berechnet. It8217s nur reine akademische Interesse an SVM. Ich arbeitete mit Clustern, PCA und ich bin gespannt, wie SVM tut die gleiche Arbeit. Fenster eine Menge Fehler sind auf Objekte mit Daten wie xts ist verwandt Oder Daten-Frames. Unix ist besser, aber alle Broker geben API für Windows. Einige von ihnen in Java und nur das können wir von UNIX. I don8217t wie win Architektur aber it8217s eine Gewohnheit bereits und ich don8217t haben Zeit, um OS zu ändern Ich habe eine Warnung von svmFeatures, die ich weiß, wie man fix (calling sd auf einem xts / zoo-Objekt interessante Umwandlung in eine Matrix), aber keine Probleme. Läuft: Danke I8217ll versuchen. Eine Frage, wenn Sie don8217t Meinung Warum verwenden Sie mit der Funktion cetSymbols aus quantmod Paket Ich benutze CallVer Beispiel SPY lt-getSymbols (039SPY039, auto. assign FALSE) Sie haben viel zu berechnen und erhalten Sie verbrauchen Gedächtnis und braucht Zeit, um Objekte zu erhalten Name als String var Der gleiche Fehler I8217m mit R 2.15.1 Aber I8217m überrascht mit diesem Ergebnis vor Anruf gt head (data) 1 Funktion (8230, list character (), Paket NULL, lib. loc NULL, 2 verbose getOption (8220verbose8221 ), Envir. GlobalEnv) 3 4 fileExt lt - Funktion (x) 5 db lt - grepl (quot ... (gzbz2xz) quot, x) 6 ans lt - sub (quot, quotquot, x) Es scheint, dass Daten reserviert Wort Und jetzt weiß ich nicht, was los ist Funktionen Funktion
Comments
Post a Comment