Tuesday 21 February 2017

Wie Zu Bauen Hochfrequenz Trading System

Hochfrequenz-Trading-System-Design und Prozess-Management Hochfrequenz-Trading-System-Design und Prozess-Management Berater: Roy E. Welsch. Abteilung: Systemdesign und Managementprogramm. Herausgeber: Massachusetts Institute of Technology Datum der Herausgabe: 2009 Handelsunternehmen sind heutzutage sehr stark auf Data Mining, Computermodellierung und Softwareentwicklung angewiesen. Financial Analysts erfüllen viele ähnliche Aufgaben wie die in der Software-und Fertigungsindustrie. Allerdings hat die Finanzbranche noch nicht in vollem Umfang verabschiedet High-Standard-Systeme Engineering Frameworks und Prozess-Management-Ansätze, die erfolgreich in der Software-und Fertigungsindustrie waren. Viele der traditionellen Methoden des Produktdesigns, der Qualitätskontrolle, der systematischen Innovation und der kontinuierlichen Verbesserung, die in Ingenieurdisziplinen gefunden werden, können auf den Finanzbereich angewendet werden. Diese Arbeit zeigt, wie das Wissen aus Ingenieurdisziplinen das Design und Prozessmanagement von Hochfrequenz-Handelssystemen verbessern kann. Hochfrequenz-Handelssysteme sind rechnerisch. Diese Systeme sind automatische oder halbautomatische Softwaresysteme, die von Natur aus komplex sind und ein hohes Maß an Konstruktionsgenauigkeit erfordern. Der Entwurf eines Hochfrequenz-Handelssystems verbindet mehrere Felder, darunter quantitative Finanzen, Systemdesign und Software-Engineering. In der Finanzbranche, wo mathematische Theorien und Handelsmodelle relativ gut recherchiert sind, ist die Fähigkeit, diese Entwürfe in echten Handelspraktiken umzusetzen, eines der Schlüsselelemente der Wettbewerbsfähigkeit einer Wertpapierfirma. Die Fähigkeit, Investmentideen effizient und effizient in leistungsfähige Handelssysteme zu verwandeln, kann einer Investmentfirma einen enormen Wettbewerbsvorteil verschaffen. (Fortsetzung) Diese Diplomarbeit enthält eine detaillierte Studie, die sich aus Hochfrequenzsystemen, Systemmodellen und - grundsätzen sowie Prozessmanagement zusammensetzt Für die Systementwicklung. Besonderes Augenmerk wird auf Backtesting und Optimierung gelegt, die als die wichtigsten Bestandteile beim Aufbau eines Handelssystems gelten. Diese Forschung baut System-Engineering-Modelle, die den Entwicklungsprozess zu führen. Es verwendet auch experimentelle Handelssysteme zur Überprüfung und Validierung von Grundsätzen, die in dieser Arbeit behandelt werden. Schließlich kommt diese These zu dem Schluss, dass systemtechnische Grundlagen und Rahmenbedingungen der Schlüssel zum Erfolg für die Durchführung hochfrequenter Handelssysteme oder quantitativer Investitionssysteme sein können. Thesis (S. M.) - Massachusetts Institut für Technologie, System Design und Management-Programm, 2009. Cataloged aus PDF-Version der Arbeit. Enthält bibliographische Hinweise (S. 78-79). Schlüsselwörter: System Design and Management Program. Mein KontoBasics of Algorithmic Trading: Konzepte und Beispiele Ein Algorithmus ist ein spezifischer Satz von klar definierten Anweisungen zur Durchführung einer Aufgabe oder eines Prozesses. Algorithmischer Handel (automatisierter Handel, Black-Box-Handel oder einfach algo-Handel) ist der Prozess der Verwendung von Computern programmiert, um eine definierte Reihe von Anweisungen für die Platzierung eines Handels folgen, um Gewinne mit einer Geschwindigkeit und Häufigkeit, die unmöglich ist, Menschlichen Händler. Die definierten Regelsätze basieren auf Timing, Preis, Menge oder jedem mathematischen Modell. Neben den Gewinnchancen für den Trader macht algo-trading die Märkte liquider und macht den Handel systematischer, indem er emotionale menschliche Auswirkungen auf die Handelsaktivitäten ausschließt. Angenommen, ein Trader folgt diesen einfachen Handelskriterien: Kaufe 50 Aktien einer Aktie, wenn der 50-Tage-Gleitende Durchschnitt über dem 200-Tage-Gleitdurchschnitt liegt. Verkaufe Aktien der Aktie, wenn der 50-Tage-Gleitende Durchschnitt unter den 200-Tage-Gleitender Durchschnitt fällt Unter Verwendung dieses Satzes von zwei einfachen Anweisungen ist es einfach, ein Computerprogramm zu schreiben, das automatisch den Aktienkurs (und die gleitenden Durchschnittsindikatoren) überwacht und die Kauf - und Verkaufsaufträge platziert, wenn die definierten Bedingungen erfüllt sind. Der Händler muss nicht mehr eine Uhr für Live-Preise und Grafiken, oder legen Sie die Aufträge manuell zu halten. Das algorithmische Handelssystem tut es automatisch, indem er die Handelschance korrekt identifiziert. (Mehr zu den gleitenden Durchschnitten finden Sie unter: Einfache Bewegungsdurchschnitte machen Trends aus.) Algo-trading bietet die folgenden Vorteile: Handel zu bestmöglichen Preisen ausgeführt Sofortige und genaue Auftragsabwicklung (dadurch hohe Chancen bei der Ausführung auf gewünschten Ebenen) Trades Timing korrekt und sofort, um signifikante Preisänderungen zu vermeiden Reduzierte Transaktionskosten (siehe nachfolgendes Beispiel für die Implementierungsminderung) Gleichzeitige automatisierte Überprüfung mehrerer Marktbedingungen Reduziertes Risiko für manuelle Fehler bei der Platzierung der Trades Backtest den Algorithmus auf der Grundlage verfügbarer historischer und Echtzeitdaten Reduziert Möglichkeit von Fehlern durch menschliche Händler auf der Grundlage emotionaler und psychologischer Faktoren Der größte Teil des heutigen Algo-Handels ist der Hochfrequenzhandel (HFT), der versucht, eine große Anzahl von Aufträgen mit sehr schnellen Geschwindigkeiten auf mehrere Märkte und mehrere Entscheidungen zu setzen Parameter, basierend auf vorprogrammierten Anweisungen. Algo-Trading wird in vielen Formen von Handels - und Investitionsaktivitäten eingesetzt, darunter: mittel - bis langfristige Anleger oder Buy-Side-Gesellschaften (Pensionskassen) , Investmentfonds, Versicherungsgesellschaften), die zwar in großen Mengen kaufen, die Aktienpreise aber nicht mit diskreten, großvolumigen Investitionen beeinflussen wollen. Kurzfristige Händler und Verkaufsseitenteilnehmer (Marktmacher, Spekulanten und Arbitrageure) profitieren von automatisierter Handelsausführung, algo-Handelshilfen, um genügend Liquidität für Verkäufer auf dem Markt zu schaffen. Systematische Trader (Trendfolger, Paare Händler, Hedgefonds etc.) finden es viel effizienter, ihre Handelsregeln zu programmieren und das Programm automatisch handeln zu lassen. Algorithmischen Handel bietet einen systematischeren Ansatz für den aktiven Handel als Methoden auf der Grundlage einer menschlichen Händler Intuition oder Instinkt. Algorithmische Handelsstrategien Jede Strategie für den algorithmischen Handel erfordert eine identifizierte Chance, die in Bezug auf ein verbessertes Ergebnis oder eine Kostensenkung rentabel ist. Die folgenden handelsstrategien werden im algo-handel verwendet: Die gebräuchlichsten algorithmischen handelsstrategien folgen den trends bei gleitenden durchschnitten. Kanal Ausbrüche. Preisniveaubewegungen und damit zusammenhängende technische Indikatoren. Dies sind die einfachsten und einfachsten Strategien, um durch den algorithmischen Handel zu implementieren, da diese Strategien keine Prognosen oder Preisvorhersagen beinhalten. Trades werden basierend auf dem Auftreten von wünschenswerten Trends initiiert. Die einfach und unkompliziert durch Algorithmen implementiert werden können, ohne in die Komplexität der Vorhersageanalyse einzutreten. Das oben genannte Beispiel für 50 und 200 Tage gleitenden Durchschnitt ist ein beliebter Trend nach Strategie. (Für mehr über Tendenzhandelsstrategien siehe: Einfache Strategien zur Aktivierung von Trends.) Der Kauf eines dualen börsennotierten Wertpapiers zu einem niedrigeren Kurs in einem Markt und der gleichzeitigen Veräußerung zu einem höheren Preis in einem anderen Markt bietet die Preisdifferenz als risikofreien Gewinn Oder Arbitrage. Der gleiche Vorgang kann für Aktien gegen Futures-Instrumente repliziert werden, da Preisunterschiede von Zeit zu Zeit bestehen. Die Implementierung eines Algorithmus zur Identifizierung solcher Preisunterschiede und die Platzierung der Aufträge ermöglicht profitable Chancen in effizienter Weise. Die Indexfonds haben definierte Perioden des Ausgleichs festgelegt, um ihre Bestände auf ihre Benchmark-Indizes zu bringen. Dies schafft profitable Chancen für algorithmische Händler, die auf erwarteten Trades, die 20-80 Basispunkte Gewinne in Abhängigkeit von der Anzahl der Aktien im Index-Fonds, kurz vor dem Index Fonds Rebalancing bieten zu profitieren. Solche Trades werden über algorithmische Handelssysteme für rechtzeitige Ausführung und beste Preise initiiert. Viele bewährte mathematische Modelle, wie die delta-neutrale Trading-Strategie, die den Handel auf Kombination von Optionen und die zugrunde liegenden Sicherheit ermöglichen. Wo Trades zum Ausgleich von positiven und negativen Deltas platziert werden, so dass das Portfolio-Delta auf Null gehalten wird. Die mittlere Reversionsstrategie basiert auf der Idee, dass die hohen und niedrigen Preise eines Vermögenswertes ein temporäres Phänomen sind, das periodisch auf ihren Mittelwert zurückgeht. Ermittlung und Definition einer Preisspanne und Implementierung Algorithmus auf der Grundlage, dass Trades automatisch platziert werden, wenn der Preis für Asset Pausen in und aus der definierten Bereich ermöglicht. Die volumengewogene durchschnittliche Preisstrategie bricht einen großen Auftrag auf und gibt dynamisch bestimmte kleinere Stücke des Auftrags auf den Markt ab, indem sie spezifische historische Volumenprofile verwendet. Ziel ist es, die Order in der Nähe des volumengewichteten Durchschnittspreises (VWAP) auszuführen und damit den Durchschnittspreis zu nutzen. Die zeitgewichtete durchschnittliche Preisstrategie bricht einen großen Auftrag auf und gibt dynamisch bestimmte kleinere Stücke des Auftrags auf dem Markt unter Verwendung gleichmäßig geteilter Zeitschlitze zwischen einer Anfangs - und einer Endzeit frei. Ziel ist es, die Order in der Nähe des Durchschnittspreises zwischen der Start - und Endzeit durchzuführen, wodurch die Marktwirkung minimiert wird. Solange der Handelsauftrag nicht vollständig gefüllt ist, setzt dieser Algorithmus fort, Teilaufträge entsprechend der definierten Teilnahmequote und entsprechend dem auf den Märkten gehandelten Volumen zu senden. Die zugehörige Schrittstrategie sendet Aufträge zu einem benutzerdefinierten Prozentsatz der Marktvolumina und erhöht oder verringert diese Beteiligungsquote, wenn der Aktienkurs auf benutzerdefinierte Ebenen ankommt. Die Implementierungs-Defizit-Strategie zielt darauf ab, die Ausführungskosten eines Auftrags durch den Handel auf dem Real-Time-Markt zu minimieren, wodurch die Kosten der Bestellung gespart und die Opportunitätskosten der verzögerten Ausführung profitieren. Die Strategie wird die angestrebte Beteiligungsquote erhöhen, wenn sich der Aktienkurs positiv entwickelt und sinkt, wenn der Aktienkurs sich negativ bewegt. Es gibt einige spezielle Klassen von Algorithmen, die versuchen, Ereignisse auf der anderen Seite zu identifizieren. Diese Sniffing-Algorithmen, die beispielsweise von einem Sell-Market-Hersteller genutzt werden, haben die eingebaute Intelligenz, um die Existenz von Algorithmen auf der Buy-Seite eines großen Auftrags zu identifizieren. Eine solche Erkennung durch Algorithmen hilft dem Marktmacher, große Orderchancen zu identifizieren und ihm zu ermöglichen, durch das Ausfüllen der Aufträge zu einem höheren Preis zu profitieren. Dies wird manchmal als Hightech-Front-Run bezeichnet. (Für mehr über Hochfrequenzhandel und betrügerische Praktiken, siehe: Wenn Sie Aktien kaufen, sind Sie in HFTs beteiligt.) Technische Anforderungen für Algorithmic Trading Die Umsetzung der Algorithmus mit einem Computer-Programm ist der letzte Teil, mit Backtesting clubbed. Die Herausforderung besteht darin, die identifizierte Strategie in einen integrierten EDV-gestützten Prozess umzuwandeln, der Zugang zu einem Handelskonto für die Auftragserteilung hat. Die folgenden werden benötigt: Programmierkenntnisse, um die erforderliche Handelsstrategie zu programmieren, angeheuerte Programmierer oder vorgefertigte Handelssoftware Netzwerkkonnektivität und Zugang zu Handelsplattformen, um die Aufträge zu vergeben Zugang zu Marktdatenfeeds, die durch den Algorithmus auf Gelegenheitsmöglichkeiten überwacht werden Bestellungen Die Fähigkeit und Infrastruktur, Backtest System einmal gebaut, bevor es live auf realen Märkten Erhältliche historische Daten für Backtesting, abhängig von der Komplexität der Regeln in Algorithmen implementiert Hier ist ein umfassendes Beispiel: Royal Dutch Shell (RDS) ist in Amsterdam gelistet (AEX) und der London Stock Exchange (LSE). Erstellen Sie einen Algorithmus, um Arbitrage-Chancen zu identifizieren. Hier sind einige interessante Beobachtungen: AEX-Geschäfte in Euros, während LSE in Sterling Pfund handelt Wegen der einstündigen Zeitverschiebung, öffnet AEX eine Stunde früher als LSE, gefolgt von beiden Börsen, die gleichzeitig für die nächsten paar Stunden gehandelt werden und dann nur im LSE Handel Die letzte Stunde als AEX schließt Können wir erkunden die Möglichkeit des Arbitrage-Handels auf der Royal Dutch Shell-Aktien auf diesen beiden Märkten in zwei verschiedenen Währungen aufgeführt Ein Computer-Programm, das aktuelle Marktpreise lesen können Preis-Feeds von LSE und AEX A forex Rate Feed für GBP-EUR-Umrechnungskurs Auftragsvergabe, die den Auftrag an den richtigen Austausch weiterleiten kann Rücktestfähigkeit auf historische Preisvorschübe Das Computerprogramm sollte folgende Schritte ausführen: Lesen Sie den eingehenden Preisvorschub des RDS-Bestands von beiden Börsen mit den verfügbaren Wechselkursen . Wandeln Sie den Preis einer Währung in einen anderen um. Wenn es eine ausreichend große Preisdiskrepanz gibt (Rabatt auf die Maklergebühren), die zu einer rentablen Chance führt, dann legen Sie den Kaufauftrag auf den günstigeren Devisenumtausch und Verkaufsauftrag auf höherer Kurswährung an Erwünscht, wird die Arbitrage Profit folgen Einfach und leicht Aber die Praxis der algorithmischen Handel ist nicht so einfach zu pflegen und auszuführen. Denken Sie daran, wenn Sie einen Algo-generierten Handel platzieren können, so können die anderen Marktteilnehmer. Infolgedessen schwanken die Preise in Milli - und sogar Mikrosekunden. In dem obigen Beispiel, was passiert, wenn Ihr Kaufhandel ausgeführt wird, aber verkaufen Handel nicht, wie die Verkaufspreise ändern sich durch die Zeit Ihre Bestellung trifft den Markt Sie werden am Ende sitzen mit einer offenen Position. So dass Ihre Arbitrage-Strategie wertlos. Es gibt zusätzliche Risiken und Herausforderungen: zum Beispiel Systemausfallrisiken, Netzwerkkonnektivitätsfehler, Zeitverzögerungen zwischen Handelsaufträgen und Ausführung und vor allem unvollständige Algorithmen. Je komplexer ein Algorithmus ist, desto strenger ist das Backtesting, bevor es in die Tat umgesetzt wird. Quantitative Analyse einer Algorithmen-Performance spielt eine wichtige Rolle und sollte kritisch untersucht werden. Seine spannende für die Automatisierung von Computern mit einer Vorstellung, um Geld zu machen mühelos gehen. Aber man muss sicherstellen, dass das System gründlich getestet wird und die erforderlichen Grenzen gesetzt sind. Analytische Händler sollten das Lernen von Programmierungs - und Gebäudesystemen selbst in Erwägung ziehen, um sicherzustellen, dass die richtigen Strategien in narrensicherer Weise umgesetzt werden. Vorsichtige Nutzung und gründliche Prüfung von algo-trading kann profitable Chancen zu schaffen. Dieser Beitrag wird detailliert, was ich getan haben, um ca. 500k von Hochfrequenz-Handel von 2009 bis 2010. Da ich völlig unabhängig handelte und nicht mehr läuft mein Programm Irsquom glücklich, alles zu erzählen. Mein Handel war überwiegend in Russel 2000 und DAX-Futures-Kontrakten. Der Schlüssel zu meinem Erfolg war, glaube ich, nicht in einer ausgefeilten finanziellen Gleichung, sondern in der Gesamt-Algorithmus-Design, das viele einfache Komponenten und benutzte Maschine Lernen, um für maximale Rentabilität zu optimieren gebunden. Sie müssen nicht wissen, jede anspruchsvolle Terminologie hier, weil, wenn ich mein Programm Setup war alles auf Intuition basiert. (Andrew Ngrsquos erstaunliche Maschine Lernkurs war noch nicht verfügbar - btw wenn Sie klicken, dass Link yoursquoll zu meinem aktuellen Projekt genommen werden: CourseTalk, ein Review-Site für MOOCs) Zuerst möchte ich nur zeigen, dass mein Erfolg war nicht einfach das Ergebnis von Glück. Mein Programm machte 1000-4000 Trades pro Tag (halb lang, halb kurz) und nie in Positionen von mehr als ein paar Verträge auf einmal bekommen. Dies bedeutete das zufällige Glück von einem bestimmten Handel gemittelt ziemlich schnell. Das Ergebnis war, ich habe nie mehr als 2000 an einem Tag verloren und hatte nie einen verlierenden Monat: (EDIT. Diese Zahlen sind nach Bezahlung Provisionen) Und herersquos ein Diagramm, um Ihnen ein Gefühl für die tägliche Variation. Beachten Sie dies schließt die letzten 7 Monate aus, weil - als die Figuren aufhörten zu gehen - verlor ich meine Motivation, sie einzutragen. Mein Handel Hintergrund Vor der Einrichtung meiner automatisierten Handelsprogramm Irsquod hatte 2 Jahre Erfahrung als ldquomanualrdquo Day Trader. Dies war wieder im Jahr 2001 - es war die frühen Tage des elektronischen Handels und es gab Möglichkeiten für ldquoscalpersrdquo gutes Geld zu machen. Ich kann nur beschreiben, was ich tat so ähnlich wie ein Videospiel spielen mit einer vermeintlichen Kante. Erfolgreich zu sein bedeutete, schnell zu sein, diszipliniert zu sein, und hatte eine gute intuitive Mustererkennung Fähigkeiten. Ich konnte rund 250k zu machen, meine Studenten Darlehen auszahlen und haben Geld übrig. Win In den nächsten fünf Jahren würde ich starten zwei Start-ups, Abholung einige Programmierkenntnisse auf dem Weg. Es wouldnrsquot sein bis spätes 2008, dass ich zurück in den Handel erhalten würde. Mit Geld, das vom Verkauf meiner ersten Inbetriebnahme niedrig läuft, lieferte Handel Hoffnungen von etwas schnellem Bargeld, während ich meinen folgenden Zug herausfand. Im Jahr 2008 war ich ldquomanuallyrdquo Day Trading Futures mit Software namens T4. Irsquod wünschte einige benutzerdefinierte Reihenfolge Eingabe Hotkeys, so dass nach der Entdeckung T4 hatte eine API, nahm ich auf die Herausforderung des Lernens C (die Programmiersprache erforderlich, um die API verwenden) und ging voran und baute mir einige Hotkeys. Nachdem ich meine Füße nass mit der API hatte ich bald größere Anstrengungen: Ich wollte den Computer lehren, für mich zu handeln. Die API stellte sowohl einen Strom von Marktdaten und eine einfache Möglichkeit, Aufträge an die Börse zu senden - alles, was ich tun musste, war die Logik in der Mitte zu schaffen. Unten ist ein Screenshot eines T4-Handelsfensters. Was war cool ist, dass, wenn ich mein Programm arbeiten konnte ich konnte den Computer-Handel auf dieser exakt gleichen Schnittstelle zu sehen. Es war spannend und beängstigend, echte Aufträge zu sehen, die rein und raus gingen (von selbst mit meinem echten Geld). Das Design meines Algorithmus Von Anfang an war es mein Ziel, ein System so zu gründen, dass ich zuversichtlich sein konnte, dass Irsquod Geld verdiene, bevor es irgendwelche Live-Trades macht. Um dies zu erreichen, musste ich ein Handels-Simulations-Framework erstellen, das - so genau wie möglich - den Live-Handel simulieren würde. Während der Handel im Live-Modus erforderlich Verarbeitung Marktaktualisierungen durch die API gestreamt, erforderte Simulation-Modus Markt-Updates aus einer Datei. Um diese Daten zu sammeln, richte ich die erste Version meines Programms ein, um einfach eine Verbindung zur API herzustellen und Marktaktualisierungen mit Zeitstempeln aufzuzeichnen. Ich landete mit 4 Wochen im Wert von aktuellen Marktdaten zu trainieren und testen mein System auf. Mit einem grundlegenden Rahmen an Ort und Stelle hatte ich noch die Aufgabe, herauszufinden, wie man ein profitables Handelssystem zu machen. Wie sich herausstellt, würde mein Algorithmus in zwei unterschiedliche Komponenten zerfallen, die Irsquoll wiederum erforscht: Predicting Preisbewegungen und Making profitable Trades Predicting Preisbewegungen Vielleicht eine offensichtliche Komponente eines jeden Handelssystems ist in der Lage zu prognostizieren, wo die Preise bewegen wird. Und meine war keine Ausnahme. Ich definiert den aktuellen Preis als den Durchschnitt des Innenangebots und Innenangebot und ich habe das Ziel der Vorhersage, wo der Preis wäre in den nächsten 10 Sekunden. Mein Algorithmus müsste mit dieser Vorhersage Moment-für-Moment über den Handelstag kommen. Erstellen von Amp-Optimierung Indikatoren Ich habe eine Handvoll von Indikatoren, die eine aussagekräftige Fähigkeit, kurzfristige Preisbewegungen vorherzusagen erwiesen haben. Jeder Indikator produzierte eine Zahl, die entweder positiv oder negativ war. Ein Indikator war nützlich, wenn mehr als oft nicht eine positive Zahl mit dem Markt stieg und eine negative Zahl entsprach mit dem Markt sinkt. Mein System erlaubte mir, schnell zu bestimmen, wieviel prädiktive Fähigkeit jeder Indikator hatte, also konnte ich mit vielen verschiedenen Indikatoren experimentieren, um zu sehen, was funktionierte. Viele der Indikatoren hatten Variablen in den Formeln, die sie produzierten, und ich war in der Lage, die optimalen Werte für diese Variablen zu finden, indem wir nebeneinander Vergleiche von Ergebnissen mit unterschiedlichen Werten erzielten. Die Indikatoren, die am nützlichsten waren, waren alle relativ einfach und basierten auf den jüngsten Ereignissen auf dem Markt, auf dem ich handelte, sowie auf den Märkten der korrelierten Wertpapiere. Machen genaue Preisverschiebung Vorhersagen Indikatoren, die einfach prognostiziert eine aufwärts oder abwärts Preis Bewegung wasnrsquot genug. Ich musste genau wissen, wie viel Preisbewegung von jedem möglichen Wert eines jeden Indikators vorhergesagt wurde. Ich brauchte eine Formel, die einen Indikatorwert in eine Preisvorhersage umwandeln würde. Um dies zu erreichen, verfolgte ich vorhergesagte Preisbewegungen in 50 Eimern, die von der Reichweite abhingen, die der Indikatorwert fiel. Dieses erzeugte einzigartige Vorhersagen für jeden Eimer, den ich damals in Excel grafisch darstellen konnte. Wie Sie sehen können, steigt die erwartete Preisänderung mit steigendem Indikatorwert. Ausgehend von einem Diagramm wie diesem konnte ich eine Formel an die Kurve anpassen. Am Anfang habe ich diese ldquocurve fittingrdquo manuell, aber ich bald schrieb einige Code, um diesen Prozess zu automatisieren. Beachten Sie, dass nicht alle Anzeigekurven die gleiche Form hatten. Auch die Eimer wurden logarithmisch verteilt, um die Datenpunkte gleichmäßig zu verteilen. Schließlich ist zu beachten, dass negative Indikatorwerte (und ihre entsprechenden Preissenkungen) umgedreht und mit den positiven Werten verknüpft wurden. (Mein Algorithmus behandelte oben und unten genau dasselbe.) Kombinieren von Indikatoren für eine einzige Vorhersage Wichtig zu beachten war, dass jeder Indikator nicht völlig unabhängig war. Ich couldnrsquot einfach nur addieren Sie alle Vorhersagen, dass jeder Indikator individuell gemacht. Der Schlüssel war, um herauszufinden, die zusätzlichen prädiktiven Wert, dass jeder Indikator hatte über das, was bereits vorhergesagt wurde. Dieses wasnrsquot zu schwierig zu implementieren, aber es bedeutete, dass, wenn ich ldquocurve fittingrdquo mehrere Indikatoren gleichzeitig war, musste ich vorsichtig sein zu ändern, würde man die Vorhersagen eines anderen. Um alle möglichen Indikatoren gleichzeitig anzupassen, setze ich den Optimierer ein, um nur 30 des Weges zu den neuen Vorhersagekurven mit jedem Durchlauf Schritt zu machen. Mit diesem 30 Sprung fand ich, dass sich die Vorhersagekurven innerhalb einiger Pässe stabilisieren würden. Mit jedem Indikator jetzt geben uns itrsquos zusätzliche Preisvorhersage könnte ich einfach addieren sie bis zu einer einzigen Vorhersage, wo der Markt in 10 Sekunden wäre zu produzieren. Warum die Vorhersage der Preise ist nicht genug Sie könnten denken, dass mit diesem Rand auf dem Markt war ich golden. Aber Sie müssen bedenken, dass der Markt aus Angeboten und Angeboten besteht - itrsquos nicht nur ein Marktpreis. Erfolg im Hochfrequenzhandel kommt, um immer gute Preise und itrsquos nicht so einfach. Die folgenden Faktoren machen die Schaffung eines rentablen Systems schwierig: Bei jedem Handel musste ich Provisionen an meinen Broker und die Börse bezahlen. Die Ausbreitung (Differenz zwischen dem Höchstgebot und dem niedrigsten Angebot) bedeutete, dass, wenn ich einfach zufällig kaufen und verkaufen sollte Irsquod eine Tonne Geld verlieren würde. Die meisten des Marktvolumens waren andere Bots, die nur einen Handel mit mir ausführen würden, wenn sie dachten, sie hätten einen statistischen Vorteil. Ein Angebot zu sehen, konnte nicht garantieren, dass ich es kaufen konnte. Als meine Bestellung an die Börse gekommen war, war es sehr möglich, dass dieses Angebot storniert worden wäre. Als kleiner Marktspieler gab es keine Möglichkeit, mit der Geschwindigkeit allein zu konkurrieren. Aufbau einer vollen Handelssimulation So hatte ich einen Rahmen, der mir erlaubt, Indikatoren zu hinterfragen und zu optimieren. Aber ich musste darüber hinausgehen - ich brauchte einen Rahmen, der es mir erlaubte, ein vollständiges Handelssystem zu testen und zu optimieren, wo ich Aufträge abschickte und in Positionen eintrat. In diesem Fall Irsquod optimieren für insgesamt PampL und zu einem gewissen Grad durchschnittliche PampL pro Handel. Das wäre schwieriger und in mancher Hinsicht unmöglich, genau zu modellieren, aber ich tat, so gut ich konnte. Hier sind einige der Probleme, mit denen ich zu tun hatte: Wenn eine Bestellung an den Markt in der Simulation gesendet wurde, musste ich die Verzögerungszeit modellieren. Die Tatsache, dass mein System ein Angebot sah, bedeutete nicht, dass es es sofort kaufen konnte. Das System würde den Auftrag senden, etwa 20 Millisekunden warten und dann nur dann, wenn das Angebot noch da war, wurde es als ausgeführter Handel betrachtet. Dies war ungenau, weil die reale Verzögerungszeit war inkonsistent und nicht gemeldet. Als ich Angebote oder Angebote platzierte, musste ich mir den Handelsausführungsstrom anschauen (der von der API zur Verfügung gestellt wurde) und diese nutzen, um festzustellen, wann meine Bestellung ausgeführt worden wäre. Um dies zu tun, musste ich die Position meiner Bestellung in der Warteschlange verfolgen. (Itrsquos ein first-in first-out System.) Wieder könnte ich das nicht perfekt tun, aber ich habe eine beste Annäherung. Um meine Auftragsausführungssimulation zu verfeinern, was ich tat, war, meine Protokollakten vom Phasenhandeln durch die API zu nehmen und sie zu den Protokollakten zu vergleichen, die durch simulierten Handel von der exakt gleichen Zeitperiode erzeugt wurden. Ich war in der Lage, meine Simulation auf den Punkt zu bringen, dass es ziemlich genau war und für die Teile, die unmöglich waren, genau zu modellieren, sorgte ich mindestens zu Ergebnissen, die statistisch ähnlich waren (in den Metriken, die ich für wichtig halte). Profitables Handeln Mit einem Auftragssimulationsmodell konnte ich nun Aufträge im Simulationsmodus senden und einen simulierten Pampl sehen. Aber wie würde mein System wissen, wann und wo zu kaufen und zu verkaufen Die Preisprognosen waren ein Ausgangspunkt, aber nicht die ganze Geschichte. Was ich tat, war ein Scoring-System für jedes der 5 Preisniveaus auf das Angebot und Angebot zu schaffen. Diese beinhalteten eine Stufe über dem Innenangebot (für einen Kaufauftrag) und eine Ebene unter dem Innenangebot (für einen Verkaufsauftrag). Wenn die Punktzahl bei irgendeinem gegebenen Preisniveau über einem bestimmten Schwellenwert lag, was bedeutet, daß mein System einen aktiven Bidoffer dort haben sollte - unterhalb der Schwelle sollten dann alle aktiven Aufträge abgebrochen werden. Basierend auf diesem war es nicht ungewöhnlich, dass mein System würde ein Gebot auf dem Markt blinken dann sofort abbrechen. (Obwohl ich versuchte, diese als itrsquos ärgerlich als Heck zu jedermann mit Blick auf den Bildschirm mit menschlichen Augen - einschließlich mich zu minimieren.) Die Preisniveau-Scores wurden auf der Grundlage der folgenden Faktoren berechnet: Die Preisprognose (die wir früher besprochen). Das Preisniveau in Frage. (Innenstufen bedeuteten höhere Kursbewegungsvorhersagen waren erforderlich.) Die Anzahl der Verträge vor meiner Bestellung in der Warteschlange. (Weniger war besser.) Die Anzahl der Verträge hinter meiner Bestellung in der Warteschlange. (Mehr war besser.) Im Wesentlichen diese Faktoren dienten dazu, ldquosaferdquo Orten zu bidoffer zu identifizieren. Die Preisbewegungsvorhersage allein war nicht adäquat, weil sie nicht die Tatsache berücksichtigte, dass ich bei der Abgabe eines Gebots nicht automatisch gefüllt war - ich wurde nur gefüllt, wenn mir jemand verkaufte. Die Realität war, dass die bloße Tatsache, dass jemand zu einem bestimmten Preis an mich verkaufte, die statistischen Quoten des Handels änderte. Die Variablen, die in diesem Schritt verwendet wurden, waren alle einer Optimierung unterworfen. Dies geschah auf die gleiche Weise wie ich Variablen in den Kursbewegungsindikatoren optimierte, außer in diesem Fall optimierte ich für untere Zeile PampL. Was mein Programm ignoriert Beim Handel als Menschen haben wir oft starke Emotionen und Vorurteile, die zu weniger als optimalen Entscheidungen führen können. Natürlich wollte ich diese Vorurteile nicht kodifizieren. Hier sind einige Faktoren, die mein System ignoriert: Der Preis, dass eine Position eingegeben wurde - In einem Handelsbüro Itrsquos ziemlich häufig, um Gespräche über den Preis zu hören, bei denen jemand lang oder kurz ist, als ob das ihre zukünftige Entscheidungsfindung Wirkung sollte. Dies hat zwar eine gewisse Gültigkeit als Teil einer Risikominderungsstrategie, hat aber keinen Einfluss auf den künftigen Marktverlauf. Daher ignorierte mein Programm diese Informationen vollständig. Itrsquos das gleiche Konzept als Ignorieren versunkenen Kosten. Going Short vs austreten eine lange Position - Typischerweise würde ein Trader haben verschiedene Kriterien, die bestimmt, wo eine lange Position zu verkaufen, wo man kurz gehen zu verkaufen. Aber aus meiner Algorithmen Sicht gab es keinen Grund, eine Unterscheidung zu machen. Wenn mein Algorithmus erwartet eine Abwärtsbewegung Verkauf war eine gute Idee, unabhängig davon, ob es war derzeit lang, kurz, oder flach. Eine ldquodoubling uprdquo Strategie - Dies ist eine gemeinsame Strategie, wo die Händler kaufen mehr Lager für den Fall, dass es ursprünglichen Handel geht gegen sie. Dies führt zu Ihren durchschnittlichen Kaufpreis niedriger und es bedeutet, wenn (oder wenn) der Bestand dreht sich um Ihr Geld eingestellt werden, um Ihr Geld zurück in kürzester Zeit zu machen. Meiner Meinung nach ist dies wirklich eine schreckliche Strategie, es sei denn, deinsquore Warren Buffet. Yoursquore versuchte zu denken, dass es dir gut geht, weil die meisten deiner Trades Gewinner sind. Das Problem ist, wenn Sie verlieren verlieren Sie große. Der andere Effekt ist es macht es schwer zu beurteilen, wenn Sie tatsächlich eine Kante auf dem Markt haben oder einfach nur Glück haben. In der Lage zu überwachen und zu bestätigen, dass mein Programm hat in der Tat eine Kante war ein wichtiges Ziel. Da mein Algorithmus Entscheidungen auf die gleiche Weise getroffen hat, unabhängig davon, wo er in ein Handelsregister eingegangen ist oder ob es kurz oder lang war, setzte es gelegentlich einige große Verlusthandels (und einige große Gewinntrades) ein. Aber Sie sollten nicht denken, es gibt kein Risikomanagement. Um das Risiko zu bewältigen, erzwang ich eine maximale Positionsgröße von 2 Verträgen zu einer Zeit, gelegentlich stieß auf hohe Volumetage. Ich hatte auch eine maximale tägliche Verlustgrenze zum Schutz gegen alle unerwarteten Marktbedingungen oder einen Bug in meiner Software. Diese Grenzen wurden in meinem Code, sondern auch im Backend durch meine Broker durchgesetzt. Wie es passiert habe ich nie irgendwelche Probleme festgestellt. Den Algorithmus ausführen Von dem Moment an, als ich anfing, an meinem Programm zu arbeiten, benötigte ich ungefähr 6 Monate, bevor ich es zum Punkt der Rentabilität erhielt und anfing, es lebend zu laufen. Obwohl fair zu sein, eine erhebliche Menge an Zeit war das Erlernen einer neuen Programmiersprache. Während ich arbeitete, um das Programm zu verbessern, sah ich erhöhte Gewinne für jeden der folgenden vier Monate. Jede Woche würde ich mein System auf der Grundlage der vorherigen 4 Wochen Wert von Daten umschulen. Ich fand, dass dies die richtige Balance zwischen der Erfassung der jüngsten Markt Verhaltenstendenzen und versicherte, mein Algorithmus hatte genug Daten, um sinnvolle Muster. Als das Training begann mehr und mehr Zeit teilte ich es aus, so dass es von 8 virtuellen Maschinen mit amazon EC2 durchgeführt werden könnte. Die Ergebnisse wurden dann auf meiner lokalen Maschine koalesziert. Der Höhepunkt meines Handels war Oktober 2009, als ich fast 100k machte. Danach habe ich weiterhin die nächsten vier Monate zu versuchen, mein Programm trotz sinkenden Gewinn jeden Monat zu verbessern. Leider an diesem Punkt Ich denke Irsquod implementiert alle meine besten Ideen, weil nichts, was ich versucht schien, viel zu helfen. Mit der Frustration, nicht in der Lage, Verbesserungen und nicht mit einem Gefühl des Wachstums zu machen, begann ich darüber nachzudenken, eine neue Richtung. Ich emailed 6 verschiedene Hochfrequenzhandelsfirmen, um zu sehen, wenn theyrsquod am Kauf meiner Software interessiert sein und mich anstellen, um für sie zu arbeiten. Niemand antwortete. Ich hatte einige neue Startup Ideen, die ich arbeiten wollte, so dass ich nie verfolgt. UPDATE - Ich habe dies auf Hacker News gepostet und es hat viel Aufmerksamkeit bekommen. Ich möchte nur sagen, dass ich niemanden dafür plädiere, so etwas jetzt selbst zu tun. Sie brauchen ein Team von wirklich intelligenten Menschen mit einer Reihe von Erfahrungen, um jede Hoffnung auf Konkurrenz haben. Selbst wenn ich das tat, glaube ich, es war sehr selten für Einzelpersonen, Erfolg zu erzielen (obwohl ich von anderen gehört hatte). Es gibt einen Kommentar am Anfang der Seite, die manipulierte Statistiken erwähnt und bezieht sich auf mich als ein ldquoretail investorrdquo, die quants Würde ldquogleefully wählen offrdquo. Das ist ein ziemlich unglücklicher Kommentar thatrsquos einfach nicht in Wirklichkeit basiert. Einstellung, die beiseite therersquos einige interessante Kommentare: news. ycombinatoritemid4748624 UPDATE 2 - Irsquove gepostet eine Follow-up-FAQ, dass einige häufige Fragen beantwortet Irsquove von Händlern über diesen Beitrag erhalten.


No comments:

Post a Comment