Hochfrequenz Trading System Design Und Prozess Management


Algorithmische Trading System Architecture. Previously auf diesem Blog habe ich über die konzeptionelle Architektur eines intelligenten algorithmischen Handelssystems sowie die funktionalen und nicht-funktionalen Anforderungen eines produktion algorithmischen Handelssystems geschrieben Seitdem habe ich eine Systemarchitektur entworfen, die ich glauben könnte Genügen diese architektonischen Anforderungen In diesem Beitrag werde ich die Architektur nach den Richtlinien der ISO IEC IEEE 42010 Systeme und Software Engineering Architektur Beschreibung Standard Nach dieser Norm eine Architektur Beschreibung muss. Contain mehrere standardisierte architektonische Ansichten zB in UML und. Hain Traceability zwischen Designentscheidungen und architektonische Anforderungen. Softwarearchitekturdefinition. Es gibt noch keinen Konsens darüber, was ein System s Architektur ist Im Kontext dieses Artikels ist es definiert als die Infrastruktur, in der Anwendungskomponenten, die funktionale Anforderungen erfüllen, spezifiziert, eingesetzt werden können und Durchgeführt Funktionale Anforderungen sind die erwarteten Funktionen des Systems und seiner Komponenten Nicht-funktionale Anforderungen sind Maßnahmen, durch die die Qualität des Systems gemessen werden kann. Ein System, das seine funktionalen Anforderungen voll erfüllt, kann die Erwartungen noch nicht erfüllen, wenn nicht funktionale Anforderungen unbefriedigt bleiben Um dieses Konzept zu veranschaulichen, betrachten Sie das folgende Szenario, ein algorithmisches Handelssystem, das Sie gerade gekauft haben, macht hervorragende Handelsentscheidungen, ist aber mit den Organisationen nicht inoperabel. Risikomanagement und Buchhaltungssysteme Wäre dieses System Ihren Erwartungen zu erfüllen. Konzeptuelle Architektur. Eine konzeptionelle Sicht beschreibt hoch Level-Konzepte und Mechanismen, die im System auf höchster Granularität vorhanden sind Auf dieser Ebene folgt das algorithmische Handelssystem einer ereignisgesteuerten Architektur EDA, die über vier Schichten aufgebrochen ist, und zwei architektonische Aspekte Für jede Schicht und Aspekt werden Referenzarchitekturen und - muster verwendet Architektonische Muster sind bewährte, generische Strukturen für die Erreichung spezifischer Anforderungen Architektonische Aspekte sind Querschnitts-Sorgen, die mehrere Komponenten umfassen. Event getriebene Architektur - eine Architektur, die produziert, erkennt, verbraucht und reagiert auf Ereignisse Ereignisse beinhalten Echtzeit-Marktbewegungen, komplexe Ereignisse oder Trends und Trading-Events zB die Einreichung eines Auftrags. Dieses Diagramm veranschaulicht die konzeptionelle Architektur des algorithmischen Handelssystems. Referenzarchitekturen. Um eine Analogie zu verwenden, ist eine Referenzarchitektur ähnlich den Blaupausen für eine tragende Wand Dieser Blue-Print kann sein Wiederverwendet für mehrfache Gebäudeentwürfe unabhängig davon, welches Gebäude gebaut wird, da es einen Satz von häufig vorkommenden Anforderungen erfüllt. Ähnlich definiert eine Referenzarchitektur eine Schablone, die generische Strukturen und Mechanismen enthält, die verwendet werden können, um eine konkrete Softwarearchitektur zu konstruieren, die spezifische Anforderungen erfüllt Die Architektur für das algorithmische Handelssystem verwendet eine raumbasierte Architektur SBA und eine Modellansicht-Controller MVC als Referenzen Gute Praktiken wie der Betriebsdatenspeicher ODS, das Extrakttransformations - und Last-ETL-Muster sowie ein Data Warehouse DW werden ebenfalls verwendet. Modellansicht Controller - ein Muster, das die Darstellung von Informationen aus der Benutzer-Interaktion mit it. Space-basierte Architektur trennt - spezifiziert eine Infrastruktur, in der lose gekoppelte Verarbeitungseinheiten miteinander über einen gemeinsam genutzten assoziativen Speicher interagieren, der nachstehend als Space bezeichnet wird. Spacebasierte architektonische konzeptionelle Ansicht Model View Controller Originalbild. Strukturelle Ansicht Die Strukturansicht einer Architektur zeigt die Komponenten und Unterkomponenten des algorithmischen Handelssystems Es zeigt auch, wie diese Komponenten auf der physischen Infrastruktur bereitgestellt werden. Die in dieser Ansicht verwendeten UML-Diagramme beinhalten Komponentendiagramme und Bereitstellung Diagramme Im Folgenden finden Sie eine Galerie der Bereitstellungsdiagramme des gesamten algorithmischen Handelssystems und der Verarbeitungseinheiten in der SBA-Referenzarchitektur sowie zugehörige Komponentendiagramme für jeden der Schichten. Ein systemuelles Trading-System Hochwertiges Deployment-Diagramm SBA-Verarbeitungseinheiten-Deployment-Diagramm Auftragsabwicklung Layer-Komponentendiagramm Automatisierte Trader-Event-Processing-Komponenten-Diagramm Datenquelle und Pre-Processing-Layer-Komponentendiagramm MVC-basiertes User Interface-Komponenten-Diagramm. Architectural Tactics. Nach dem Software-Engineering-Institut ist eine architektonische Taktik ein Mittel, um eine Qualitätsanforderung zu erfüllen, indem sie einen Aspekt von manipuliert Ein Qualitätsattributmodell durch architektonische Designentscheidungen Ein einfaches Beispiel, das in der algorithmischen Handelssystemarchitektur verwendet wird, manipuliert einen operativen Datenspeicher ODS mit einer kontinuierlichen Abfragekomponente Diese Komponente würde die ODS kontinuierlich analysieren, um komplexe Ereignisse zu identifizieren und zu extrahieren. Folgende Taktiken werden in der Architektur. Das Disruptor-Muster in der Veranstaltung und Auftragswarteschlangen. Shared Speicher für die Veranstaltung und Auftragswarteschlangen. Continuous Abfrage Sprache CQL auf der ODS. Data-Filterung mit dem Filter-Design-Muster auf eingehende Daten. Kongestion Vermeidung Algorithmen auf alle eingehenden und ausgehenden Verbindungen. Active Queue Management AQM und explizite Staus Notification Modity Rechenressourcen mit Kapazitäten für Upgrade skalierbar. Aktiv Redundanz für alle einzelnen Punkte des Versagens. Indexation und optimierte Persistenzstrukturen in der ODS. Schedule regelmäßige Datensicherung und Clean-up-Skripte für ODS. Transaction Histories auf allen Datenbanken. Checksums für alle Aufträge, um Fehler zu erkennen. Enotieren Sie Ereignisse mit Zeitstempeln, um veraltete Ereignisse zu überspringen. Order Validierungsregeln zB maximale Handelsmengen. Automatisierte Trader-Komponenten verwenden eine In-Memory-Datenbank für die Analyse. Zwei Bühnenauthentifizierung für Benutzeroberflächen, die mit den ATs verbinden. Verschlüsselung auf Benutzerschnittstellen und Verbindungen zum ATs. Observer-Design-Muster für die MVC, um Ansichten zu verwalten. Die obige Liste sind nur einige Designentscheidungen, die ich bei der Gestaltung der Architektur identifiziert habe. Es ist keine vollständige Liste der Taktiken Wie das System ist Entwickelte zusätzliche Taktiken sollten über mehrere Ebenen der Granularität eingesetzt werden, um funktionale und nicht-funktionale Anforderungen zu erfüllen. Im Folgenden finden Sie drei Diagramme, die das Disruptor-Designmuster, das Filterdesign-Muster und die kontinuierliche Abfragekomponente beschreiben. Kontinuierliche Abfrage Komponenten-Diagramm Disruptor-Design-Muster-Klassendiagramm Quelle Filter Design-Muster-Klassendiagramm. Behavioural View. This Ansicht einer Architektur zeigt, wie die Komponenten und Ebenen miteinander interagieren sollten Dies ist nützlich bei der Erstellung von Szenarien für das Testen von Architektur-Designs und für das Verständnis des Systems von Ende zu Ende Diese Ansicht besteht aus Sequenz Diagramme und Aktivitätsdiagramme Aktivitätsdiagramme, die den internen Prozess des algorithmischen Handelssystems zeigen und wie Händler mit dem algorithmischen Handelssystem interagieren sollen, sind nachfolgend dargestellt: Eine systematische Trader-Interaktion End-to-End-Algorithmus-Handelsprozess. Technologien und Frameworks. Der letzte Schritt in Entwerfen einer Softwarearchitektur ist es, potenzielle Technologien und Frameworks zu identifizieren, die zur Realisierung der Architektur genutzt werden könnten. Grundsätzlich ist es besser, die bestehenden Technologien zu nutzen, vorausgesetzt, dass sie sowohl funktionale als auch nicht funktionale Anforderungen adäquat erfüllen. Ein Framework ist eine realisierte Referenzarchitektur ZB JBoss ist ein Framework, das die JEE-Referenzarchitektur realisiert. Die folgenden Technologien und Frameworks sind interessant und sollten bei der Implementierung eines algorithmischen Handelssystems berücksichtigt werden. CUDA - NVidia verfügt über eine Reihe von Produkten, die eine leistungsstarke Computational Finance-Modellierung unterstützen. Man kann bis zu 50x erreichen Leistungsverbesserungen bei der Ausführung von Monte Carlo Simulationen auf der GPU statt der CPU. Apache River - River ist ein Tool-Kit zur Entwicklung verteilter Systeme Es wurde als Rahmen für den Aufbau von Anwendungen auf der Grundlage der SBA-Muster verwendet. Apache Hadoop - in der Event, dass das Pervasive Logging eine Voraussetzung ist, dann bietet die Verwendung von Hadoop eine interessante Lösung für das Big-Data-Problem. Hadoop kann in einer Clusterumgebung eingesetzt werden, die CUDA-Technologien unterstützt. AlgoTrader - eine Open Source Algorithmische Handelsplattform AlgoTrader könnte potenziell in der Ort der automatisierten Trader components. FIX Engine - eine eigenständige Anwendung, die die Financial Information Exchange FIX-Protokolle einschließlich FIX, FAST und FIXatdl unterstützt. Während nicht eine Technologie oder ein Framework, sollten Komponenten mit einer API zur Anwendungsprogrammierung integriert werden, um die Interoperabilität zu verbessern Des Systems und seiner Komponenten. Die vorgeschlagene Architektur wurde entworfen, um sehr generische Anforderungen zu erfüllen, die für algorithmische Handelssysteme identifiziert wurden. Im Allgemeinen werden algorithmische Handelssysteme durch drei Faktoren kompliziert, die mit jeder Implementierung variieren. Dependenzen auf externen Unternehmens - und Austauschsystemen. Fragens nicht funktionale Anforderungen Und. Erweiterte architektonische Zwänge. Die vorgeschlagene Softwarearchitektur müsste daher von Fall zu Fall angepasst werden, um spezifische organisatorische und regulatorische Anforderungen zu erfüllen sowie regionale Einschränkungen zu überwinden. Die algorithmische Handelssystemarchitektur sollte als gesehen werden Nur ein Bezugspunkt für Einzelpersonen und Organisationen, die ihre eigenen algorithmischen Handelssysteme entwerfen wollen. Für eine vollständige Kopie und Quellen verwendet, laden Sie bitte eine Kopie meines Berichts Vielen Dank. Hochfrequenz Trading System Design und Prozessmanagement. Hochfrequenz Trading System Design und Prozess Management. und Roy E Welsch. Department System Design und Management-Programm. Publisher Massachusetts Institute of Technology. Date Issue 2009.Trading Unternehmen heutzutage sind sehr abhängig von Data Mining, Computer-Modellierung und Software-Entwicklung Finanzanalysten führen viele ähnliche Aufgaben, die in Software Und verarbeitenden Industrien Allerdings hat die Finanzindustrie noch nicht vollständig verabschiedet High-Standard-Systeme Engineering Frameworks und Prozess-Management-Ansätze, die in der Software-und Fertigungsindustrie erfolgreich waren Viele der traditionellen Methoden für Produkt-Design, Qualitätskontrolle, systematische Innovation und kontinuierliche Verbesserungen in Ingenieurdisziplinen können auf den Finanzbereich angewendet werden Diese Arbeit zeigt, wie das Wissen aus Ingenieurdisziplinen das Design und das Prozessmanagement von Hochfrequenz-Handelssystemen verbessern kann Hochfrequenz-Handelssysteme sind berechnungsbasiert Diese Systeme sind automatisch oder halbautomatisch Software-Systeme, die inhärent komplex sind und ein hohes Maß an Designgenauigkeit erfordern Der Entwurf eines Hochfrequenz-Handelssystems verbindet mehrere Felder, einschließlich quantitativer Finanzierung, Systemdesign und Software-Engineering In der Finanzbranche, wo mathematische Theorien und Handelsmodelle relativ gut recherchiert sind , Die Fähigkeit, diese Entwürfe in echten Handelspraktiken umzusetzen, ist eines der Schlüsselelemente der Wettbewerbsfähigkeit der Wertpapierfirma Die Fähigkeit, Investitionsideen in leistungsfähige Handelssysteme effektiv und effizient umzuwandeln, kann einer Investmentfirma einen großen Wettbewerbsvorteil geben. Diese These bietet Eine detaillierte Studie aus Hochfrequenz-Handelssystem-Design, Systemmodellierung und - prinzipien und Prozessmanagement für die Systementwicklung Besonderes Augenmerk wird auf Backtesting und Optimierung gelegt, die als die wichtigsten Teile beim Aufbau eines Handelssystems angesehen werden. Diese Forschung baut System-Engineering-Modelle, die Leitfaden für den Entwicklungsprozess Es nutzt auch experimentelle Handelssysteme, um die in dieser Arbeit angesprochenen Prinzipien zu überprüfen und zu validieren. Schließlich kommt diese These zu dem Schluss, dass systemtechnische Prinzipien und Rahmenbedingungen der Schlüssel zum Erfolg für die Implementierung von Hochfrequenzhandel oder quantitativen Anlagesystemen sein können. Thesis SM - Massachusetts Institute of Technology, System Design und Management-Programm, 2009 katalogisiert aus PDF-Version der Arbeit Inklusive bibliographischen Referenzen p 78-79.Keywords System Design und Management-Programm. Diese Post wird detailliert, was ich getan habe, um ca. 500k aus Hochfrequenz-Handel von 2009 zu machen Bis 2010 Da ich völlig unabhängig handelte und nicht mehr mein Programm laufe, bin ich glücklich, alles zu erzählen Mein Handel war meistens in Russel 2000 und DAX-Futures-Kontrakten. Der Schlüssel zu meinem Erfolg, glaube ich, war nicht in einer anspruchsvollen finanziellen Gleichung, sondern Eher in der Gesamt-Algorithmus-Design, die viele einfache Komponenten zusammengebunden und maschinelles Lernen für optimale Profitabilität zu optimieren Sie gewann t müssen jede anspruchsvolle Terminologie hier wissen, denn wenn ich mein Programm Setup war es alle auf Intuition Andrew Ng s erstaunliche Maschine Lernkurs basiert War noch nicht verfügbar - btw, wenn du auf diesen Link klickst, wirst du zu meinem aktuellen Projekt CourseTalk, einer Rezensionsseite für MOOCs, gehen. Zuerst möchte ich nur zeigen, dass mein Erfolg nicht einfach das Ergebnis des Glücks war. Mein Programm machte 1000-4000 Trades pro Tag halb lang, halb kurz und nie in Positionen von mehr als ein paar Verträge zu einer Zeit Dies bedeutete das zufällige Glück von jedem einzelnen Handel gemittelt ziemlich schnell Das Ergebnis war ich nie verloren mehr als 2000 an einem Tag und niemals Hatte einen verlorenen Monat. BEARBEITEN Diese Zahlen sind nach Bezahlung von Provisionen. Und hier sa Diagramm, um Ihnen ein Gefühl der täglichen Variation Hinweis, dass dies schließt die letzten 7 Monate, weil - da die Zahlen gestoppt steigen - ich meine Motivation verloren, um sie zu betreten. Meine Trading-Hintergrund. Prior Um mein automatisiertes Handelsprogramm einzurichten Ich hatte 2 Jahre Erfahrung als manueller Tag Trader Dies war wieder im Jahr 2001 - es war die frühen Tage des elektronischen Handels und es gab Möglichkeiten für Skalierer, gutes Geld zu machen Ich kann nur beschreiben, was ich tat So ähnlich wie ein Videospiel spielen mit einer vermeintlichen Kante Als erfolgreich zu sein, war schnell, diszipliniert und mit einer guten intuitiven Muster Anerkennung Fähigkeiten konnte ich rund 250k machen, bezahlen meine Studenten Darlehen und haben Geld über Win. Over verlassen In den nächsten fünf Jahren würde ich zwei Startups starten und dabei einige Programmierkenntnisse auf dem Weg abholen. Es würde bis spätestens 2008 sein, dass ich wieder in den Handel zurückkehren würde. Mit dem Geld, das von dem Verkauf meines ersten Startpreises niedrig ist, gehandelt angebotenen Hoffnungen auf etwas schnell Bargeld, während ich herausgefunden meine nächste move. In 2008 war ich manuell Tag Handel Futures mit Software namens T4 Ich wollte einige benutzerdefinierte Bestellung Eintrag Hotkeys, so nach der Entdeckung T4 hatte eine API, nahm ich auf die Herausforderung des Lernens C die Programmiersprache Musste die API benutzen und ging weiter und baute mir einige Hotkeys. Nachdem ich meine Füße nass mit der API hatte, hatte ich bald größere Bestrebungen, die ich dem Computer beibringen wollte, für mich zu handeln. Die API stellte sowohl einen Strom von Marktdaten als auch einen einfachen Weg zur Verfügung Um Aufträge an den Austausch zu schicken - alles was ich tun musste, war die Logik in der Mitte zu schaffen. Below ist ein Screenshot eines T4 Trading Fensters Was war cool war das, als ich mein Programm arbeitete, konnte ich den Computerhandel darauf anschauen Genaue gleiche Schnittstelle Das Aufpassen von echten Befehlen, die in und aus sich selbst mit meinem echten Geld auftauchen, war sowohl spannend als auch beängstigend. Das Design meines Algorithmus. Von Anfang an war mein Ziel, ein System so einzurichten, dass ich vernünftig zuversichtlich war, dass ich vorher Geld verdiene Jemals machen alle Live-Trades Um dies zu erreichen, brauchte ich, um ein Trading-Simulation-Framework, das - so genau wie möglich - simulieren Live-Trading. While Handel im Live-Modus erforderlich Verarbeitung Marktaktualisierungen durch die API gestreamt, Simulations-Modus erforderlich Lesung Markt Updates von einem Datendatei Um diese Daten zu sammeln, setze ich die erste Version meines Programms ein, um einfach eine Verbindung zur API herzustellen und Marktaktualisierungen mit Zeitstempeln aufzuzeichnen. Ich habe mit 4 Wochen im Wert von aktuellen Marktdaten gearbeitet, um mein System zu trainieren und zu testen. Mit einem Grundrahmen in Platz Ich hatte immer noch die Aufgabe herauszufinden, wie man ein profitables Trading-System machen Wie sich herausstellt, würde mein Algorithmus in zwei verschiedene Komponenten zerfallen, die ich später erforschen werde. Predicting Preisbewegungen und. Making profitable Trades. Predicting Preisbewegungen. Vielleicht ist ein offensichtlicher Bestandteil eines jeden Handelssystems in der Lage zu prognostizieren, wo die Preise verschieben werden Und meine war keine Ausnahme Ich habe den aktuellen Preis als der Durchschnitt der Innen-Bid und Insider-Angebot definiert und ich habe das Ziel der Vorhersage, wo der Preis wäre in Die nächsten 10 Sekunden Mein Algorithmus müsste diese Vorhersage Moment für jeden Moment während des Trading Day. Creating Optimierung Indikatoren. Ich habe eine Handvoll von Indikatoren, die eine sinnvolle Fähigkeit, kurzfristige Preisbewegungen vorhersagen Jeder Indikator produziert Eine Zahl, die entweder positiv oder negativ war Ein Indikator war nützlich, wenn mehr als oft nicht eine positive Zahl mit dem Markt überging und eine negative Zahl entsprach mit dem Markt nach unten. Mein System erlaubte mir schnell zu bestimmen, wie viel prädiktive Fähigkeit jeder Indikator Hatte so 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 konnte die optimalen Werte für diese Variablen finden, indem sie nebeneinander Vergleiche der erzielten Ergebnisse machten Mit unterschiedlichen Werten. Die Indikatoren, die am nützlichsten waren, waren alle relativ einfach und basierten auf den jüngsten Ereignissen auf dem Markt, den ich handelte, sowie die Märkte der korrelierten Wertpapiere. Making genaue Preis bewegen Vorhersagen. Haben Indikatoren, die einfach vorhergesagt, up oder down Preisbewegung war nicht genug, ich musste genau wissen, wie viel Preisbewegungen von jedem möglichen Wert jedes Indikators vorhergesagt wurde. Ich brauchte eine Formel, die einen Indikatorwert auf einen Preisvorhersage umwandeln würde. Um dies zu erreichen, habe ich die vorhergesagten Preisbewegungen in 50 Eimern verfolgt Hing von der Reichweite, dass der Indikator Wert fiel in Dies produziert einzigartige Vorhersagen für jeden Eimer, dass ich dann in der Lage, Grafik in Excel Wie Sie sehen können, die erwartete Preisänderung erhöht, wie der Indikator Wert erhöht. Basiert auf einem Diagramm wie dies war ich In der Lage, eine Formel zu machen, um die Kurve anzupassen Im Anfang habe ich diese Kurve passend manuell, aber ich schrieb bald einen Code, um diesen Prozess zu automatisieren. Hinweis, dass nicht alle Indikator Kurven die gleiche Form haben Auch beachten Sie die Eimer wurden logarithmisch verteilt, so wie Um die Daten gleichmäßig zu verbreiten Schließlich bemerken Sie, dass negative Indikatorwerte und ihre entsprechenden Abwärtspreisvorhersagen umgedreht wurden und mit den positiven Werten kombiniert wurden. Mein Algorithmus behandelte genau die gleichen Binärindikatoren für eine einzelne Vorhersage. Wichtig war, dass jeder Indikator war nicht ganz unabhängig Ich konnte nicht einfach nur addieren 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 Dies war nicht schwer zu implementieren, aber es bedeutete Dass, wenn ich Kurve passend mehrere Indikatoren zur gleichen Zeit musste ich vorsichtig ändern, würde man die Vorhersagen von einem anderen zu beeinflussen. Um zu konvertieren alle Indikatoren zur gleichen Zeit Ich setze den Optimierer zu Schritt nur 30 der Weg In Richtung der neuen Vorhersagekurven mit jedem Durchlauf Mit diesem 30 Sprung fand ich, dass sich die Vorhersagekurven innerhalb einiger Pässe stabilisieren würden. Mit jedem Indikator, der uns jetzt eine zusätzliche Preisvorhersage gibt, könnte ich sie einfach addieren, um eine einzige Vorhersage zu erzeugen, wo die Markt wäre in 10 Sekunden. Warche Vorhersage Preise ist nicht genug. Sie könnten denken, dass mit diesem Rand auf dem Markt war ich golden Aber Sie müssen im Hinterkopf behalten, dass der Markt besteht aus Angeboten und Angeboten - es ist nicht nur ein Marktpreis Erfolg in Hochfrequenz-Handel kommt auf gute Preise und es ist nicht so einfach. Die folgenden Faktoren machen die Schaffung eines rentablen System schwierig. Mit jedem Handel musste ich Provisionen sowohl für meine Makler und die Börse bezahlen Höchstgebot und niedrigstes Angebot bedeutete, dass ich, wenn ich einfach zufällig kaufen und verkaufen würde, eine Tonne Geld verlieren würde. Die meisten der Marktvolumen waren andere Bots, die nur einen Handel mit mir ausführen würden, wenn sie dachten, sie hätten einen statistischen Rand. Ein Angebot zu sehen, garantierte nicht, dass ich es kaufen konnte. Zu der Zeit, als mein Kaufauftrag an die Börse kam, war es sehr möglich, dass dieses Angebot abgebrochen wäre. Als ein kleiner Marktspieler gab es keinen Weg, den ich auf die Geschwindigkeit allein konkurrieren konnte Eine vollständige Trading-Simulation. So hatte ich einen Rahmen, der mir erlaubt, Backtest und Optimierung Indikatoren Aber ich musste darüber hinaus - ich brauchte ein Framework, das mir erlauben würde, backtest und optimieren ein volles Handelssystem ein, wo ich war Bestellungen und bekommen In Positionen In diesem Fall würde ich für die Gesamt-PL und bis zu einem gewissen Grad durchschnittlichen PL pro Handel optimieren. Dies wäre schwieriger und in gewisser Weise unmöglich, genau zu modellieren, aber ich tat so gut wie ich konnte Hier sind einige der Probleme, die ich hatte Beschäftigen sich. Wenn ein Auftrag an den Markt in der Simulation geschickt 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, ca. 20 Millisekunden warten und Dann nur dann, wenn das Angebot noch da war, wurde es als ein ausgeführter Handel angesehen. Dies war ungenau, weil die reale Verzögerungszeit inkonsistent und nicht gemeldet war. Als ich Angebote oder Angebote platzierte, musste ich den von der API bereitgestellten Handelsausführungsstrom betrachten und diese nutzen Um zu beurteilen, wann meine Bestellung hätte hingerichtet werden können Um dies zu tun, musste ich die Position meiner Bestellung in der Warteschlange verfolgen. Es war ein erstes erstes System. Ich konnte das nicht perfekt machen, aber ich habe eine optimale Annäherung gemacht. Um meine Auftragsausführungs-Simulation zu verfeinern, was ich tat, war meine Log-Dateien aus dem Live-Trading über die API und vergleichen sie mit Log-Dateien, die von simulierten Trading aus der gleichen Zeitspanne produziert wurde, konnte ich meine Simulation auf den Punkt, dass es hübsch war Genaue und für die Teile, die unmöglich waren, genau zu modellieren, stellte ich sicher, dass ich zumindest Resultate erzähle, die in den Metriken statistisch ähnlich waren, die ich für wichtig hielt. Profitables Handeln. Mit einem Auftragssimulationsmodell konnte ich jetzt im Simulationsmodus Bestellungen senden Und sehen Sie eine simulierte PL Aber wie würde mein System wissen, wann und wo zu kaufen und zu verkaufen. Die Preis bewegen Prognosen waren ein Ausgangspunkt, aber nicht die ganze Geschichte Was ich tat, war ein Scoring-System für jedes von 5 Preisniveaus auf dem Gebot und Angebot Diese beinhalten eine Ebene über dem Innengebot für einen Kaufauftrag und eine Ebene unterhalb des Innenangebots für einen Verkaufsauftrag. Wenn die Punktzahl zu einem bestimmten Preisniveau über einer bestimmten Schwelle lag, würde das mein System ein aktives Angebot bieten - unterhalb der Schwelle, dann sollten alle aktiven Aufträge abgesagt werden. Basierend darauf war es nicht ungewöhnlich, dass mein System ein Gebot auf dem Markt blinkt und dann sofort abbrechen würde. Obwohl ich versuchte, das zu minimieren, da es nervig ist, wie jemand, der auf den Bildschirm schaut Mit menschlichen Augen - einschließlich mich. Die Preisniveau-Scores wurden auf der Grundlage der folgenden Faktoren berechnet. Die Preisbewegungsvorhersage, die wir früher besprochen haben. Das Preisniveau in Frage Inneren Ebenen bedeutete größere Preisbewegungsvorhersagen erforderlich waren. Die Anzahl der Verträge vor Meine Bestellung in der Warteschlange Weniger war besser. Die Anzahl der Verträge hinter meiner Bestellung in der Warteschlange Mehr war besser. Essentiell diese Faktoren dienten dazu, sichere Orte zu bieten bieten Angebot Die Preisbewegung Vorhersage allein war nicht ausreichend, weil es nicht für die Tatsache verantwortlich war Dass ich bei der Abgabe eines Gebotes nicht automatisch gefüllt war - ich bin nur gefüllt, wenn mir jemand dort verkauft wurde. Die Realität war, dass die bloße Tatsache, dass jemand, der mir zu einem bestimmten Preis verkaufte, die statistischen Chancen des Handels veränderte. Die Variablen, die in diesem verwendet wurden Schritt waren alle der Optimierung unterworfen Dies geschah genau so wie ich die Variablen in den Preisbewegungsindikatoren optimierte, außer in diesem Fall optimierte ich für die untere Zeile P L. Was mein Programm ignoriert. Wenn wir als Menschen handeln, haben wir oft starke Emotionen Und Verzerrungen, die zu weniger als optimalen Entscheidungen führen können Klar, dass ich diese Vorurteile nicht kodifizieren wollte Hier sind einige Faktoren, die mein System ignoriert hat. Der Preis, den eine Position eingegeben hat - In einem Handelsbüro ist es ziemlich üblich, Konversation über den Preis zu hören Was jemand lang oder kurz ist, als ob das seine künftige Entscheidungsfindung beeinflussen würde. Während dies eine gewisse Gültigkeit als Teil einer Risikominderungsstrategie hat, hat es wirklich keinen Einfluss auf den zukünftigen Verlauf der Ereignisse auf dem Markt. Daher hat mein Programm diese Information völlig ignoriert Das gleiche Konzept wie ignoriert versunkenen Kosten. Going kurz vs verlassen eine lange Position - Typischerweise würde ein Händler haben unterschiedliche Kriterien, die bestimmt, wo man eine lange Position zu verkaufen, um zu gehen, um zu gehen, aber aus meiner Algorithmen Perspektive gab es keinen Grund, einen Unterschied zu machen Wenn Mein Algorithmus erwartete einen Abwärtsbewegungsverkauf war eine gute Idee, egal ob es derzeit lang, kurz oder flach war. Verdoppelung der Strategie - Dies ist eine gemeinsame Strategie, bei der Händler mehr Lager kaufen werden, falls dort der ursprüngliche Handel gegen sie geht Dies führt dazu, dass Ihr durchschnittlicher Kaufpreis niedriger ist und es bedeutet, wann oder wenn der Bestand um sich herum dreht, werden Sie gesetzt, um Ihr Geld zurück in kürzester Zeit zu machen. Meiner Meinung nach ist das wirklich eine schreckliche Strategie, wenn Sie nicht Warren Buffet Sie wieder in das Denken ausgetrickst Sie sind gut, weil die meisten Ihrer Trades werden Gewinner Das Problem ist, wenn Sie verlieren Sie verlieren groß Der andere Effekt ist es macht es schwer zu beurteilen, wenn Sie tatsächlich eine Kante auf dem Markt haben oder sind nur immer glücklich In der Lage zu überwachen und Bestätigen Sie, dass mein Programm in der Tat eine Kante war ein wichtiges Ziel. Seit mein Algorithmus Entscheidungen auf die gleiche Weise, unabhängig davon, wo es einen Handel trat oder wenn es derzeit lang oder kurz war es gelegentlich sitzen und nehmen einige große verlieren Trades in Zusätzlich zu einigen großen Gewinnen Trades Aber Sie sollten nicht denken, es war kein Risiko-Management. Um das Risiko zu verwalten, habe ich eine maximale Position Größe von 2 Verträge zu einem Zeitpunkt, gelegentlich gestoßen auf hohe Volumen Tage Ich hatte auch eine maximale tägliche Verlustgrenze Um gegen irgendwelche unerwarteten Marktbedingungen oder einen Bug in meiner Software zu schützen Diese Grenzen wurden in meinem Code aber auch im Backend durch meinen Makler erzwungen. Wie es passiert ist, habe ich niemals irgendwelche signifikanten Probleme erlebt. Das Ausführen des Algorithmus. Von dem Moment an, als ich anfing, an meinem zu arbeiten Programm dauert es mir etwa 6 Monate, bevor ich es auf den Punkt der Rentabilität und begonnen, es zu leben, obwohl, um fair zu sein, eine erhebliche Menge an Zeit war das Erlernen einer neuen Programmiersprache Als ich arbeitete, um das Programm zu verbessern, sah ich erhöhte Gewinne für jeden von Die nächsten vier Monate. Jede Woche würde ich mein System auf der Grundlage der vorherigen 4 Wochen im Wert von Daten umkreisen Ich fand, dass dies die richtige Balance zwischen der Erfassung der jüngsten Markt Verhaltens-Trends und versichert mein Algorithmus hatte genug Daten, um sinnvolle Muster zu etablieren Als die Ausbildung begann zu nehmen Mehr und mehr Zeit habe ich es aufgeteilt, so dass es von 8 virtuellen Maschinen mit amazon EC2 durchgeführt werden konnte. Die Ergebnisse wurden dann auf meiner lokalen Maschine verschmolzen. Der Höhepunkt meines Handels war Oktober 2009, als ich fast 100k machte. Danach ging ich weiter Verbringen die nächsten vier Monate versuchen, mein Programm trotz gesunkenen Profit jeden Monat zu verbessern Leider zu diesem Zeitpunkt Ich denke, ich d implementiert alle meine besten Ideen, weil nichts, was ich versucht schien viel zu helfen. Mit der Frustration nicht in der Lage, Verbesserungen zu machen und nicht mit Ein Gefühl des Wachstums begann ich darüber nachzudenken, eine neue Richtung Ich per E-Mail 6 verschiedene Hochfrequenz-Handelsfirmen zu sehen, ob sie sich daran interessiert, meine Software zu kaufen und mich einzustellen, um für sie zu arbeiten Niemand antwortete ich hatte einige neue Startup-Ideen, die ich arbeiten wollte Also habe ich niemals nachgeholt. UPDATE - ich habe das auf Hacker News gepostet und es hat viel Aufmerksamkeit bekommen, ich möchte nur sagen, dass ich niemanden befürworte, der versucht, so etwas selbst zu tun. Du brauchst ein Team von wirklich klugen Leuten Mit einer Reihe von Erfahrungen, um irgendeine Hoffnung auf Konkurrenz zu haben Selbst wenn ich dies tat, glaube ich, dass es sehr selten für Einzelpersonen war, um Erfolg zu erzielen, obwohl ich von anderen gehört hatte. Es gibt einen Kommentar an der Oberseite der Seite, die manipulierte Statistiken erwähnt Bezieht sich auf mich als Retail-Investor, dass Quants würde gerne abholen Dies ist ein ziemlich unglücklicher Kommentar, dass s einfach nicht in der Realität basiert Einstellung, dass beiseite gibt es einige interessante Kommentare. UPDATE 2 - Ich habe eine Follow-up-FAQ, die einige gemeinsame beantwortet Fragen, die ich von Händlern über diesen Beitrag erhalten habe.

Comments

Popular posts from this blog

Forex Ringgit

Exponentiell Gewichtete Gleitende Durchschnitt Halbwertszeit

Mercado Forex Portugal