Saturday, October 22, 2016

Trading-Strategie Des Maschinellen Lernens

Es scheint eine grundlegende Trugschluss, dass jemand kommen und lernen einige maschinellen Lernens oder AI-Algorithmen, stellte sie als Black Box sein, schlug zu gehen, und lehnen Sie sich zurück, während sie in Rente gehen. Mein Rat an Sie: Erfahren Statistik und des maschinellen Lernens, dann Sorgen darüber, wie sie zu einem bestimmten Problem anwenden. Es gibt kein freies Mittagessen hier. Datenanalyse ist harte Arbeit. Lesen Sie "The Elements of Statistical Learning" (die pdf ist kostenlos auf der Website zur Verfügung), und starten Sie nicht versuchen, ein Modell zu bauen, bis Sie verstehen, zumindest die ersten 8 Kapiteln. Sobald Sie die Statistik und des maschinellen Lernens zu verstehen, dann müssen Sie lernen, wie man Backtest und bauen ein Handelsmodell, Bilanzierung von Transaktionskosten, etc., die eine ganz andere Gegend ist. Nachdem Sie einen Handgriff auf sowohl die Analyse und die Finanzierung haben, dann wird es etwas auf der Hand, wie es zu beantragen. Die gesamte Punkt dieser Algorithmen wird versucht, einen Weg, um ein Modell, um Daten zu passen und produzieren niedrige Bias und Varianz in der Vorhersage (dh, dass die Ausbildung und Prüfung Vorhersagefehler wird niedrig und ähnlich sein) zu finden. Hier ist ein Beispiel eines Handelssystems mit einer Support-Vektor-Maschine in R. aber nur im Kopf behalten, dass Sie tun werden, sich selbst einen großen Dienst erwiesen, wenn Sie die Zeit, um die Grundlagen, bevor Sie versuchen, etwas zu esoterisch gelten verstehe nicht verbringen. Ich habe vor kurzem über diese Masterarbeit kam: "Ein Roman Algorithmic Trading Framework-Anwendung Evolution und Maschinelles Lernen für die Portfolio-Optimierung" (2012), nur um einen unterhaltsamen Update hinzufügen. Es ist eine umfassende Überprüfung der verschiedenen Maschinenlernansätze verglichen Buy-and-hold. Nach fast 200 Seiten, erreichen sie die grundlegende Schlussfolgerung: "Keine Handelssystem war in der Lage, um die Benchmark zu übertreffen, wenn Sie Transaktionskosten." Unnötig zu sagen, dies nicht bedeutet, dass es nicht getan werden kann (ich habe keine Zeit damit verbracht, die Überprüfung ihrer Methoden, um die Gültigkeit des Ansatzes zu sehen), aber es ist sicherlich bietet noch mehr Beweise für die No-free lunch Satz. Dieser Beitrag wird ausführlich, was ich tat, um ca. machen. 500k von Hochfrequenzhandel von 2009 bis 2010. Da war ich völlig unabhängig handeln und bin nicht mehr läuft mein Programm Im glücklich, alle zu erzählen. Meine Handel war überwiegend im Russel 2000 und DAX-Futures-Kontrakte. Der Schlüssel zu meinem Erfolg, glaube ich, nicht in einem anspruchsvollen finanziellen Gleichung, sondern in der gesamten Entwicklung von Algorithmen, die zusammen viele einfache Komponenten und verwendet maschinellen Lernens, um für eine maximale Rentabilität zu optimieren gebunden. Sie pflegen müssen, um jede anspruchsvolle Terminologie hier wissen, denn wenn ich mein Setup-Programm es war alles auf Intuition. (Andrew Ngs erstaunliche maschinellen Lernens war natürlich noch nicht verfügbar - btw, wenn Sie auf diesen Link, um youll mein aktuelles Projekt genommen werden klicken: CourseTalk, eine Überprüfung vor Ort für MOOCs) Erstens, ich will nur zu zeigen, dass mein Erfolg war nicht nur das Ergebnis von Glück. Meine Programms 1000-4000 Trades pro Tag (Halb langen, halb kurz) und kam nie in die Positionen der mehr als ein paar Verträge zu einer Zeit. Das bedeutete, die zufällige Glück von einem bestimmten Handels ausgemittelt ziemlich schnell. Das Ergebnis wurde ich nie verloren mehr als $ 2000 an einem Tag und einem Monat verlieren nie: (EDIT. Diese Zahlen sind nach der Zahlung Provisionen) Und heres ein Diagramm, um Ihnen einen Eindruck von der Tagesgang zu geben. Hinweis Dies schließt die letzten 7 Monate, weil - wie die Zahlen gestoppt hinauf - ich meine Motivation, sie zu geben hat. Meine Handel Hintergrund Vor der Gründung von meinem Automated Trading Program Id hatte 2 Jahre Erfahrung als ein & ldquo; manuelle & rdquo; Tageshändler. Das war im Jahr 2001 - es war die Anfangszeit des elektronischen Handels und es gab Möglichkeiten für & ldquo; scalpers & rdquo; um gutes Geld zu machen. Ich kann nur beschreiben, was ich tat, wie ähnlich spielt ein Videospiel / Glücksspiel mit einer vermeintlichen Rand. Erfolgreich zu sein bedeutete, die schnell, diszipliniert, und eine gute intuitive Mustererkennung Fähigkeiten. Ich war in der Lage, rund $ 250k zu machen, zahlen sich aus meiner Studentenkredite und haben Geld übrig. Gewinnen! In den nächsten fünf Jahren hätte ich zwei Start-ups zu starten, Abholung einige Programmierkenntnisse auf dem Weg. Es würde nicht bis zum Ende des Jahres 2008, dass ich wieder in den Handel zu bekommen. Mit Geld niedrig aus dem Verkauf von meinem ersten Systemstart, bot Handels Hoffnung ein paar schnelle Geld, während ich herausgefunden, meinen nächsten Schritt. Ein Trading-API Im Jahr 2008 war ich & ldquo; manuell & rdquo; Day-Trading-Futures mit einer Software namens T4. Id gefehlt einige kundenspezifische Auftragserfassung Hotkeys, so dass nach der Entdeckung, T4 hatte eine API, nahm ich die Herausforderung an, das Lernen C # (die Programmiersprache erforderlich ist, um die API zu nutzen), und ging voran und baute mir ein paar Hotkeys. Nachdem ich meine Füße nass mit der API Ich hatte bald größere Ambitionen: Ich wollte, um den Computer zu lehren, für mich zu handeln. Die API bereitgestellt sowohl einen Strom von Marktdaten und eine einfache Möglichkeit, den Befehl, den Austausch zu senden - alles, was ich tun musste, war zu erstellen die Logik in der Mitte. Nachstehend ist ein Screenshot eines T4 Handelsfenster. Was war cool ist, dass, wenn ich mein Programm Arbeits konnte ich den Computer Handels auf diesem genauen gleichen Schnittstelle zu beobachten. Beobachten Echt Bestellungen knallen in die und aus (selbst mit meinem echtes Geld) war sowohl aufregend und beängstigend. Das Design meinen Algorithmus Von Anfang an war mein Ziel, um das Setup eines Systems, so dass ich recht zuversichtlich, Id Geld zu verdienen, bevor irgendwelche Live-Trades jemals machen werden. Um dies zu erreichen ich brauchte, um ein Handelssimulationsframework, das wäre zu bauen - so genau wie möglich - zu simulieren Live-Trading. Während der Handel mit Live-Modus erforderliche Verarbeitungs Markt-Updates strömten über die API, erforderliche Simulationsmodus liest Markt-Updates aus einer Datendatei. Um diese Daten sammeln richte ich die erste Version meines Programms, einfach eine Verbindung zu den API und Rekord Markt-Updates mit Zeitstempeln. Ich landete mit 4 Wochen im Wert von aktuellen Marktdaten zu trainieren und zu testen, mein System auf. Mit einer grundlegenden Rahmen anstelle Ich hatte immer noch die Aufgabe, herauszufinden, wie man ein profitables Handelssystem zu machen. Wie sich herausstellt meinem Algorithmus würde sich in zwei verschiedene Komponenten, die Ill erkunden wiederum brechen: Vorhersage von Kursbewegungen; und Machen profitable Trades Vorhersage von Kursbewegungen Vielleicht ein offensichtlicher Bestandteil jeder Trading-System ist in der Lage, vorherzusagen, wo die Preise bewegen. Und mir war keine Ausnahme. I definiert den aktuellen Preis als Durchschnitt der innen Gebot und innen Angebot und ich das Ziel gesetzt, die Vorhersage, wo der Preis würde in den nächsten 10 Sekunden sein. Mein Algorithmus müsste sich während des Handelstages zu kommen mit dieser Vorhersage von Moment zu Moment. Erstellen Optimierung Indikatoren Ich habe eine Handvoll von Indikatoren, die eine sinnvolle Möglichkeit, kurzfristige Preisbewegungen vorherzusagen, haben bewiesen. Jeder Indikator erzeugt eine Nummer, die entweder positiv oder negativ war. Ein Indikator war nützlich, wenn mehr als oft nicht eine positive Zahl entsprach der Markt nach oben und eine negative Zahl entsprach der Markt hinunter. Mein System erlaubte mir, schnell festzustellen, wie viel Vorhersagekraft jeder Indikator hatte so konnte ich mit einer Menge von verschiedenen Indikatoren, um zu sehen, was funktioniert experimentieren. Viele der Indikatoren wurden Variablen in den Formeln, die sie erzeugt und war in der Lage, die optimalen Werte für diese Variablen indem nebeneinander Vergleich der Ergebnisse mit unterschiedlichen Werten erzielt finden. Die Indikatoren, die am nützlichsten waren waren alle relativ einfach und wurden zu den jüngsten Ereignissen im Markt I wurde der Handel als auch die Märkte korreliert basierenden Wertpapiere. Zu genauen Kursbewegung Vorhersagen Mit Indikatoren, die einfach vorhergesagt eine nach oben oder unten Kursbewegung war nicht genug. Ich musste wissen genau, wie viel Preisbewegung wurde von jedem möglichen Wert jedes Indikators vorhergesagt. Ich brauchte eine Formel, die einen Indikatorwert zu einem Preis Vorhersage umwandeln würde. Um dies zu I Raupen prognostizierten Kursbewegungen in 50 Eimer, die auf den Bereich, der Indikatorwert sank in hing zu erreichen. Dies erzeugte eindeutige Vorhersagen für jede Gruppe, die ich konnte dann in Excel grafisch darzustellen. Wie Sie sehen können die erwarteten Preisänderung zunimmt, wenn die Indikatorwert steigt. Basiert auf einer Grafik wie dies konnte ich eine Formel, um die Kurvenanpassung vorzunehmen. Am Anfang tat ich & ldquo; Kurvenanpassung & rdquo; manuell, sondern schrieb ich bald etwas Code, um diesen Prozess zu automatisieren. Beachten Sie, dass nicht alle Kontrollkurven die gleiche Form hatten. Beachten Sie auch die Eimer wurden logarithmisch verteilt, um so verteilt die Daten darauf hin gleichmäßig. Schließlich beachten Sie, dass negativen Indikatorwerte (und ihre entsprechenden Abwärtspreisvorhersagen) wurden umgedreht und mit den positiven Werten. (Mein Algorithmus up behandelt und unten genau das gleiche.) Die Kombination von Indikatoren für eine einzige Voraussage Eine wichtige Sache zu prüfen war, dass jeder Indikator war nicht völlig unabhängig. Ich konnte nicht einfach nur addieren sich all die Vorhersagen, die jede Anzeige individuell gefertigt. Der Schlüssel war, um herauszufinden, die zusätzliche Vorhersagewert, der jeder Indikator hinaus, was schon vorausgesagt hatte. Dies war nicht zu schwer zu implementieren, aber es hat, dass, wenn ich & ldquo; Kurvenanpassung & rdquo; mehrere Indikatoren gleichzeitig musste ich vorsichtig sein; eine Veränderung würde die Vorhersagen eines anderen Effekts. Um ldquo &; Kurvenanpassung & rdquo; alle Indikatoren in der gleichen Zeit, die ich Setup der Optimierer nur 30% der Weg in Richtung der neuen Vorhersagekurven bei jedem Durchlauf Schritt. Mit dieser 30% Sprung fand ich, dass die Vorhersagekurven würde in ein paar Durchläufen zu stabilisieren. Mit jeder Indikator jetzt gibt uns seinen Mehrpreis Vorhersage konnte ich einfach fügen Sie sie, um eine einzige Vorhersage, wo der Markt in 10 Sekunden betragen herzustellen. Warum die Vorhersage Preise ist nicht genug Man könnte denken, dass mit diesem Vorsprung auf dem Markt Ich war golden. Aber Sie müssen bedenken, dass der Markt setzt sich aus Kauf - und Verkaufsangebote gemacht zu halten - es ist nicht nur ein Marktpreis. Erfolg im Hochfrequenzhandel kommt darauf an, immer gute Preise und seine nicht so einfach. Die folgenden Faktoren machen Schaffung einer profitablen System schwierig: Bei jedem Handel musste ich Provisionen sowohl mein Broker und den Austausch zu zahlen. Der Spread (Differenz zwischen Höchstgebot und das niedrigste Angebot) bedeutete, dass, wenn ich einfach kaufen und verkaufen zufällig Id sein, verlieren eine Menge Geld. Der größte Teil des Marktvolumens war anderen Bots, die nur einen Handel auszuführen würde mit mir, wenn sie dachten, sie einige statistische Kante hatte. Seeing ein Angebot nicht garantieren, dass ich es kaufen. Als meine Kauforder kam zu dem Austausch war es sehr gut möglich, dass das Angebot würde annulliert worden sind. Als kleine Marktteilnehmer gab es keine Möglichkeit, ich könnte auf die Geschwindigkeit alleine konkurrieren. Der Aufbau einer vollständigen Handelssimulation Also musste ich einen Rahmen, der mich zum Backtest und Indikatoren zu optimieren erlaubt. Aber ich musste darüber hinausgehen - ich brauchte ein Framework, das mir erlauben würde, Backtest und ein komplettes Handelssystem zu optimieren; eine, wo ich war Aufträge senden und bekommen in den Positionen. In diesem Fall Id sein, die Optimierung für die gesamte PL und in gewissem Maße durchschnittliche PL pro Trade. Dies wäre schwieriger und in gewisser Weise nicht möglich, genau zu modellieren, aber ich tat es, so gut ich konnte. Hier sind einige der Fragen, die ich zu tun hatte: Wenn ein Auftrag wurde in der Simulation auf den Markt geschickt Ich musste die Verzögerungszeit zu modellieren. Die Tatsache, dass mein System ein Angebot sah, bedeutete nicht, dass es es sofort zu kaufen. Das System würde den Auftrag senden, warten Sie etwa 20 Millisekunden und dann auch nur, wenn das Angebot noch immer da war es, als eine ausgeführte Handels berücksichtigt. Das war ungenau, weil die realen Zeitverzögerung war inkonsistent und nicht gemeldet. Als ich abgegebenen Gebote oder Angebote musste ich auf der Fachausführungsstrom (von der API zur Verfügung gestellt) zu buchen, und verwenden Sie diese, um zu beurteilen, wenn meine Bestellung bekommen würde gegen geführt haben. Um dieses Recht hatte ich die Position meiner Bestellung in der Warteschlange verfolgen zu tun. (Es ist ein First-in-first-out-System.) Auch hier könnte ich nicht tun dies perfekt, aber ich machte eine beste Annäherung. Zu meiner Auftragsausführung Simulation zu verfeinern, was ich tat, war meine Protokolldateien von Live-Trading über die API und vergleichen sie mit Dateien, die von simulierten Handels aus exakt den gleichen Zeitraum produziert einloggen. Ich konnte meine Simulation auf den Punkt, dass es ziemlich genau und für die Teile, die unmöglich zu modellieren waren genau ich mir sicher, die Ergebnisse, die statistisch ähnlich (in den Metriken ich dachte, waren wichtig) waren mindestens Produkten. Machen profitable Trades Mit einem Auftragssimulationsmodell an Ort und Stelle, ich könnte jetzt Bestellungen senden Sie im Simulationsmodus und sehen eine simulierte PL. Aber wie würde mein System, wann und wo zu kaufen und zu verkaufen? Die Kursbewegung Prognosen waren ein Ausgangspunkt, aber nicht die ganze Geschichte. Was ich tat, war, zu schaffen ein Punktesystem für jede der 5 Preisniveaus auf dem Geld - und Briefkurs. Dazu gehörten eine Ebene über dem Inneren Gebot (für eine Kauforder) und eine Ebene unterhalb der Innenseite Angebot (für eine Verkaufsorder). Wenn die Gäste zu einem bestimmten Preisniveau über einer bestimmten Schwelle, die mein System bedeuten würde, sollte eine aktive Geld - / Brief dort war - unter dem Schwellenwert dann alle aktiven Aufträge abgebrochen werden soll. Auf dieser Grundlage war es nicht ungewöhnlich, dass mein System würde ein Angebot auf dem Markt dann sofort blinken stornieren. (Obwohl ich versucht, dies als lästig, wie Heck jedem Blick auf den Bildschirm mit menschlichen Augen zu minimieren. - Mich eingeschlossen) Das Preisniveau Scores wurden auf der Grundlage der folgenden Faktoren berechnet: Die Kursbewegung Vorhersage (, dass wir bereits besprochen). Das Preisniveau in Frage. (Innenspiegel bedeutete größere Kursbewegung Prognosen erforderlich waren.) Die Zahl der Verträge vor meinem Auftrag in der Warteschlange. (Less war besser.) Die Zahl der Verträge hinter meinen Auftrag in der Warteschlange. (Mehr war besser.) Im Wesentlichen war diese Faktoren zu identifizieren, & ldquo; safe & rdquo; Orte zu Geld - / Brief. Die Kursbewegung Vorhersage allein war nicht ausreichend, weil es nicht für die Tatsache, dass bei der Platzierung eines Angebots ich nicht automatisch ausgefüllt Konto - ich bekam nur gefüllt, wenn mir jemand verkauft es. Die Realität war, dass die bloße Tatsache, jemand verkauft, mich zu einem bestimmten Preis verändert die statistischen Chancen des Handels. Die in diesem Schritt verwendeten Variablen waren Gegenstand einer Optimierung. Dies wurde in der gleichen Weise durchgeführt, wie ich optimierten Variablen in den Kursbewegung Indikatoren außer in diesem Fall war ich die Optimierung für die Unterleitung PL. Was mein Programm ignoriert Beim Handel wir als Menschen haben oft starke Emotionen und Vorurteile, die zu suboptimalen Entscheidungen führen kann. Offensichtlich wollte ich nicht, diese Vorurteile zu kodifizieren. Hier sind einige Faktoren mein System ignoriert: Der Preis, den eine Position eingegeben wurde - in einem Handelsbüro seine ziemlich üblich, Gespräch über den Preis, zu dem jemand lang oder kurz ist, als ob das sollte ihre künftige Entscheidungsfindung Effekt zu hören. Dies hat zwar eine gewisse Gültigkeit im Rahmen einer Risikobegrenzungsstrategie es wirklich hat keinen Einfluss auf den weiteren Verlauf der Ereignisse auf dem Markt. Daher mein Programm vollständig diese Informationen ignoriert. Es ist das gleiche Konzept wie ignorieren versunkene Kosten. Zu verkaufen vs. Verlassen einer Long-Position - Normalerweise ein Händler würde unterschiedliche Kriterien haben, die festlegt, wo man eine Long-Position im Vergleich zu, wohin sie gehen kurz zu verkaufen. Aber aus meiner Sicht Algorithmen gab es keinen Grund, einen Unterschied zu machen. Wenn mein Algorithmus erwarten eine Abwärtsbewegung Verkaufs eine gute Idee war, unabhängig davon, ob es noch lange, kurze oder flach. A & ldquo; verdoppeln & rdquo; Strategie - Dies ist eine gemeinsame Strategie wo Käufer und Verkäufer werden mehr Lager in dem Fall, dass es Original-Handel geht gegen sie zu kaufen. Dies führt zu Ihrem durchschnittlichen Kaufpreis niedriger ist, und es bedeutet, wenn (oder wenn) das Lager dreht sich um youll eingestellt werden, dass Sie Ihr Geld zurück in kürzester Zeit zu machen. Meiner Meinung nach das ist wirklich eine schreckliche Strategie, es sei denn youre Warren Buffet. Youre betrogen zu denken, Sie sind gut, weil die meisten Ihrer Trades werden die Gewinner sein. Das Problem ist, wenn Sie verlieren Sie viel zu verlieren. Der andere Effekt ist es macht es schwer zu beurteilen, ob Sie tatsächlich einen Vorteil auf dem Markt oder sind gerade erst glücklich. In der Lage zu überwachen und zu bestätigen, dass mein Programm in der Tat haben eine Kante war ein wichtiges Ziel. Risikomanagement Da mein Algorithmus getroffenen Entscheidungen auf die gleiche Weise, unabhängig davon, wo sie einen Handel eingegeben oder ob es noch lang oder kurz es hat gelegentlich sitzen (und nehmen Sie) einige große Verlust-Trades (neben einigen großen Gewinn-Trades). Aber, sollten Sie nicht denken, es war nicht das Risiko-Management. Risikomanagement I durchgesetzt eine maximale Positionsgröße von 2 Verträge zu einer Zeit, manchmal stieß auf hohes Volumen Tagen. Ich hatte auch eine maximale tägliche Verlustlimit, um gegen unerwartete Marktbedingungen oder einen Fehler in meiner Software zu schützen. Diese Grenzwerte wurden in meinem Code, sondern auch im Backend durch mein Broker durchgesetzt. Wie es der Zufall habe ich nie irgendwelche signifikanten Probleme. Das Ausführen des Algorithmus Von dem Moment an begann ich auf meinem Programm dauerte es ca. 6 Monate, bevor ich es auf den Punkt der Rentabilität und damit begonnen läuft es zu Hause sind. Obwohl fair zu sein eine erhebliche Menge an Zeit wurde eine neue Programmiersprache lernen. Wie ich gearbeitet, um das Programm zu verbessern sah ich, höhere Gewinne für jede der nächsten vier Monate. Jede Woche würde ich mein System umzuschulen, basierend auf der letzten 4 Wochen im Wert von Daten. Ich fand dies traf die richtige Balance zwischen der Erfassung jüngsten Marktverhaltenstrends und die Versicherung meiner Algorithmus hatten genug Daten, um sinnvolle Muster zu etablieren. Da das Training begann, mehr und mehr Zeit ich teilten es aus, so dass er um 8 virtuelle Maschinen mit Amazon EC2 durchgeführt werden konnte. Die Ergebnisse wurden dann auf meinem lokalen Rechner zusammengewachsen. Der Höhepunkt meiner Handel war im Oktober 2009, als ich fast 100k. Danach fuhr ich fort, um die nächsten vier Monate damit verbringen, mein Programm zu verbessern trotz verringerten profitieren jeden Monat. Leider zu diesem Zeitpunkt Ich denke, Id implementiert alle meine besten Ideen, weil nichts, was ich versuchte, schien zu viel. Mit der Frustration nicht in der Lage, Verbesserungen zu machen und nicht mit einem Sinn für Wachstum begann ich darüber nachzudenken, eine neue Richtung. Ich mailte 6 verschiedenen Hochfrequenzhandelsfirmen zu sehen, ob theyd sein Interesse am Kauf meiner Software und mich mieten, um für sie zu arbeiten. Niemand antwortete. Ich hatte ein paar neue Startup-Ideen, die ich an zu arbeiten wollte, so folgte ich nie auf. UPDATE - ich gepostet auf Hacker News und es hat eine Menge Aufmerksamkeit bekommen. Ich möchte nur sagen, dass ich nicht jeden, der versucht, so etwas zu tun, sich jetzt zu befürworten. Sie wollen ein Team von wirklich intelligente Leute mit einer Reihe von Erfahrungen brauchen, um jede Hoffnung auf Wettbewerb haben. Auch wenn ich das tat ich glaube, es war sehr selten für Einzelpersonen zum Erfolg zu erzielen (obwohl ich von anderen gehört.) Es gibt einen Kommentar am Anfang der Seite, die "manipulierte Statistiken" erwähnt und bezieht sich auf mich als & ldquo; Kleinanlegern & rdquo; dass Quants würde ldquo &; genüsslich pflücken & rdquo ;. Dies ist eine eher unglückliche Kommentar, das ist einfach nicht in der Realität. Einstellung, die beiseite theres einige interessante Kommentare: news. ycombinator / item id = 4748624 UPDATE # 2 - Ive schrieb einen Follow-up-FAQ, die einige allgemeine Fragen Ive von Händlern zu diesem Post erhalten Antworten. Machine Learning-basierte Stock Trading Strategies Ein besonderer Dank: Klout / Lithium für das Hosting und Bereitstellung von Video-Aufnahme! Lightning Talk: Verben Datenwissenschaft (Abe Gong, Jawbone) Abstract: Fast alles, was Sie schon gelesen und über Daten Wissenschaft gehört, konzentrierte sich auf Substantive: Algorithmen, Software, Infrastruktur, etc., die Daten von Arbeitnehmern zu verwenden, oder Produkte, die sie machen. Nomen-basierte Texte lehren, Werkzeugen und technischen Fähigkeiten, aber nicht an der Zeit, zu unterrichten. Daher haben sie wenig zu Planung, Termine, Effizienz sagen, und Return on Investment & mdash; Grundbegriffe, die abstrakte Denker aus produktiven Täter zu trennen. Dieses Blitz Vortrag wird mit Gedanken über die Verben der Daten Wissenschaft Auftakt des Abends: Wie, um Ihren Workflow zu arrangieren, um zu erhalten mehr Daten geleistete Arbeit, zu den Fristen. Haupt Diskussion: Machine Learning-basierte Stock Trading Strategies (Dr. Tucker Balch, Lucena Research) Tucker Balch, Ph. D. ist ein Associate Professor für Interactive Computing an der Georgia Tech, und CTO von Lucena Research. Sein Kurs an Coursera, Computational Finance, Teil I um mehr als 100.000 Studenten weltweit übernommen. An der Georgia Tech unterrichtet er Kurse in Artificial Intelligence und Finanzen. Balch hat mehr als 120 wissenschaftliche Publikationen zu Robotik und Maschinelles Lernen Zusammenhang veröffentlicht. Seine Arbeit wurde von CNN und New York Times abgedeckt. Seine graduierte Studenten arbeiten bei Goldman Sachs, Morgan Stanley, Citadel, AQR und Yahoo! Finanzen. A Single SVM-Handelsstrategie Support Vector Machines (SVM) sind an Popularität gewinnt in maschinelles Lernen Handelssysteme. Sie haben Vorteile Neuronale Netze (NN), da sie gewährleistet, um die optimale Lösung zu finden. NN in einer lokalen Minima gefangen, also, während Sie ein Ergebnis mit NN kann man nie sicher, dass es optimal ist sein zu bekommen. Auch wenn NN mit zufälligen Gewichten begonnen youll wahrscheinlich eine andere Gruppe von Gewichten bei jedem Backpropagation auf dem gleichen Satz von Daten führen. SVMs haben ihre Nachteile haben zu. Insbesondere die Auswahl der Hyperparameter. Dies sind die Strafe (C), Gaußsche Breite (g), wenn mit Hilfe eines RBF-Kernel und epsilon Unempfindlichkeit (e), wenn mit Supportvektorregression (SVR). Mein Einsatz von SVMs war bisher, um sie in der Klassifizierung zu verwenden, so muss ich nur noch die C und G-Parameter Ich verwende die Standard RBF-Kernel auswählen. Seine hart genug versucht, vorherzusagen, ob der Markt steigt oder fällt, durch geschweige denn, wie viel. Diese Parameter mit Hilfe eines Rastersuche können wir auswählen. Das bedeutet, dass wir versuchen einfach jede Kombination von Parametern und sehen, was am besten funktioniert. Die Art und Weise werden die Parameter beurteilt wird durch n-fache Kreuzvalidierung. Lies mehr > A Single SVM-Handelsstrategie Support Vector Machines (SVM) sind an Popularität gewinnt in maschinelles Lernen Handelssysteme. Sie haben Vorteile Neuronale Netze (NN), da sie gewährleistet, um die optimale Lösung zu finden. NN in einer lokalen Minima gefangen, also, während Sie ein Ergebnis mit NN kann man nie sicher, dass es optimal ist sein zu bekommen. Auch wenn NN mit zufälligen Gewichten begonnen youll wahrscheinlich eine andere Gruppe von Gewichten bei jedem Backpropagation auf dem gleichen Satz von Daten führen. SVMs haben ihre Nachteile haben zu. Insbesondere die Auswahl der Hyperparameter. Dies sind die Strafe (C), Gaußsche Breite (g), wenn mit Hilfe eines RBF-Kernel und epsilon Unempfindlichkeit (e), wenn mit Supportvektorregression (SVR). Mein Einsatz von SVMs war bisher, um sie in der Klassifizierung zu verwenden, so muss ich nur noch die C und G-Parameter Ich verwende die Standard RBF-Kernel auswählen. Seine hart genug versucht, vorherzusagen, ob der Markt steigt oder fällt, durch geschweige denn, wie viel. Diese Parameter mit Hilfe eines Rastersuche können wir auswählen. Das bedeutet, dass wir versuchen einfach jede Kombination von Parametern und sehen, was am besten funktioniert. Die Art und Weise werden die Parameter beurteilt wird durch n-fache Kreuzvalidierung. Kreuzvalidierung Dies wird am besten mit einem Beispiel erläutert. Wenn wir 1000 markierte Trainingsinstanzen und wir nutzen das 10-fache Kreuzvalidierung, dann für jede Kombination von C, g wir wie folgt vor: Zufällig herausnehmen 10% der Proben. Dies ist unsere Hold-out-Satz von 100 Trainingsinstanzen. Train the SVM auf den verbleibenden 90%, und erstellen Sie ein Modell. Verwenden Sie das Modell, um die accuracyon die Hold-out-Set zu testen. Wiederholen Sie die Übung 10 Mal und nehmen Sie die durchschnittliche Genauigkeit. Das oben genannte ist 10-fache Kreuzvalidierung. Wir konnten dies auf die logische Schlussfolgerung zu nehmen und nur eine einzige Instanz in heraus Hold-out-Set. Dies ist leave-one-out Kreuzvalidierung. Wir würden uns eine möglichst genaue Einschätzung der Parameter-Kombination, aber in der Praxis 10-fache oder sogar 5-fach ist gut genug. Wie können wir also tatsächlich eine Kreuzvalidierung zu tun? Die libSVM Paket csie. ntu. edu. tw/ cjlin / LIBSVM / enthält einige Python-Skripte im Verzeichnis Tools. Youll müssen Python und Gnuplot installieren. Sie können auch deepthought Verfügung verwenden aus deep-thought. co. In den folgenden Beispielen Ill verwenden deepthought. Das erste, was wir brauchen, ist ein paar Daten. Ill Verwendung ein Training mit den folgenden Funktionen gesetzt Hour of Day Durchschnittliche enge Preisunterschied zwischen den bisherigen 30 bar Gleitender Durchschnitt Unterschiede zwischen den früheren 1,2,3,4,5,7,9,13,16,20,25,31,45,55,70,100 Bars mit MA Zeiten von 5, 10, 20, 50 und 100 Das Ziel ist -1 wird der Preis nach unten am Ende der nächsten Bar, 1 für den Preis zu gehen wird am Ende des nächsten Taktes steigen. Sobald Ive setzen diese in der Konfiguration, laufe ich den Befehl um den Trainingssatz zu extrahieren. Ive auch Min-Max-Skalierung. Ill diskutieren Funktion Vorbereitung und Skalierung in einem anderen Artikel. Der obige Befehl wird die Ausbildung von Dateien von allen in der deepthought Konfiguration definiert Modelle erstellen. Nachdem der Befehl abgeschlossen ist eine Datei h4-features. training. data ist das das gleiche Verzeichnis, das ich lief den Befehl von erstellt. Dies ist in libSVM Format, so dass wir die libSVM Tools verwenden können, um das Raster zu suchen, oder die Nutzung Rastersuche in deepthought gebaut laufen. Außerdem erstellt es die Datei h4-features. training. data. csv, die die gleichen Daten, aber im CSV-Format enthält, so dass Sie mit ihm in anderen Tools wie R, Python, Excel etc. spielen Um das Raster-Suche in deepthought laufe ich verwenden Sie den Befehl: Die Ergebnisse sind in der Protokolldatei in dem Ergebnis: ist die prozentuale Genauigkeit: Die (uninteressant) Ergebnisse in der Mitte haben aus Gründen der Kürze entfernt. Wir können sehen, dass die SVM scheint kleiner Gammas zu begünstigen und die C sieht eine sinnvolle Wert sein. Wir sollten besorgt sein, wenn die besten gamma war groß und das C klein, wie es bedeutet wahrscheinlich eine Art von Datenfehlern. Die nächsten, höchsten Werte sind in etwa die gleichen Bereich wie die besten Parameter, der anzeigt, dass die Auswahl der Parameter relativ unempfindlich ist. Wir sollten besorgt sein, wenn die Werte geben das beste Ergebnis waren Ausreißer. Backtesting der Einzel SVM-Strategie Der letzte Schritt ist, um zu beurteilen, wie ein einzelner SVM führt in einem Backtest. In diesem Backtest einfach mit einem +1 Prognose wir kaufen und verkaufen mit einer -1 Vorhersage. Wenn wir lange und wir ein Kaufsignal erhalten wir fügen eine weitere Position zu einer Maximalposition von 10. Im Gegensatz zum Verkauf Signalen. Mit den besten C 128 und Gamma von 0,00195313 wir geschnitten und an der folgenden XML-Codeausschnitt aus dem Netz Suche Log-Datei in die deepthought Konfigurationsdatei: Der Backtest wird mit dem folgenden Befehl ausführen: Die deepthought Backtest arbeitet durch die Schaffung einer Ausbildung in der Nähe der einzelnen Balken, die EURUSD H4 in diesem Fall eingestellt. Wenn die in der Nähe des nächsten Taktes erreicht ist eine Prognose gemacht und Gewerbe eingetragen und / oder geschlossen ist, wird das Modell wieder bereit für die nächste bar umgeschult. Es wird daher kontinuierlich den aktuellen Bedingungen anzupassen, und alle Tests sind aus-Probe, Überanpassung zu vermeiden. Die Ergebnisse des Backtest waren: und eine graphische Darstellung der Pnl (eingezeichnet mit R): Es Art von sieht ok, aber wahrscheinlich nicht etwas, wed Handel ist. Der nächste Artikel wird Ensembles zu diskutieren, um zu sehen, ob wir dieses Ergebnis zu verbessern. Es hängt sehr stark von der individuellen Trading-Strategie und wie vorhersehbar vs zufällig ihre Trading-Strategie ist. Sie könnten alle Eingänge (dh die Information der Händler mit) und die Ausgänge (die Entscheidung der Händler macht) aufnehmen, aber immer noch nicht genug Informationen, um vorherzusagen, was die der Händler als nächstes tun. Sie können in einigen kleinen Teilmengen von häufigen Szenarien in der Lage, vorherzusagen, was sie als nächstes zu tun, die beste Möglichkeit, diese wird mit einem der vielen Feature-Erkennung Algorithmen erkennen und verwenden Sie dann, dass die Händler Verhalten vorherzusagen. Allerdings, wenn es auf eine neue Situation kommt es ist höchst unwahrscheinlich, dass ein Algorithmus in der Lage wäre, den Händler Reaktions korrekt vorherzusagen. In Märkten wie FX, wo der Markt sich ständig verändernden ist diese Art von Situation tritt ständig und Menschenhändler müssen sich anpassen. So dass jeder Algorithmus hätte nicht nur an die Händler lernen aktuellen Stil, sondern auch, wie sein Verhalten würde im Laufe der Zeit ändern. In der Praxis ist es ein ziemlich strittiger Punkt aber, Menschenhändler werden so ziemlich aus dem Markt durch elektronische Handelsalgorithmen wischte (einige menschliche unterstützt). Die Zahl der Menschenhändler, die in FX ist ein kleiner Bruchteil im Vergleich zu noch vor einem Jahrzehnt. Geschrieben 225W vor & bull; Not for Reproduction


No comments:

Post a Comment