Algorithmisches Trading System Architecture Bisher habe ich in diesem Blog über die konzeptionelle Architektur eines intelligenten algorithmischen Handelssystems sowie die funktionalen und nicht-funktionalen Anforderungen eines algorithmischen Produktionssystems geschrieben. Seitdem habe ich eine Systemarchitektur entworfen, von der ich glaube, dass sie diese architektonischen Anforderungen erfüllen kann. In diesem Beitrag werde ich beschreiben die Architektur nach den Richtlinien der ISO / IEC / IEEE 42010 Systeme und Software Engineering Architektur Beschreibung Standard. Nach dieser Norm muss eine Architekturbeschreibung enthalten: Mehrere standardisierte architektonische Ansichten (z. B. in UML) enthalten und die Rückverfolgbarkeit zwischen Entwurfsentscheidungen und architektonischen Anforderungen beibehalten Softwarearchitekturdefinition Es gibt noch keinen Konsens darüber, was eine Systemarchitektur ist. Im Rahmen dieses Artikels wird sie als die Infrastruktur definiert, innerhalb der Anwendungskomponenten, die funktionalen Anforderungen genügen, spezifiziert, implementiert und ausgeführt werden können. 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 nicht erfüllen, wenn nicht funktionale Anforderungen unbefriedigt bleiben. Um dieses Konzept zu veranschaulichen, betrachten Sie das folgende Szenario: ein algorithmisches Handelssystem, das Sie soeben gekauft / gebaut haben, macht hervorragende Handelsentscheidungen, ist aber völlig inoperabel mit den Organisationen Risikomanagement und Buchhaltungssysteme. Würde dieses System Ihren Erwartungen entsprechen Konzeptionelle Architektur Eine konzeptionelle Sicht beschreibt hochrangige Konzepte und Mechanismen, die im System auf höchster Granularität existieren. 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 Aspektreferenz werden Architekturen und Muster verwendet. Architektonische Muster sind bewährte, generische Strukturen, um spezifische Anforderungen zu erfüllen. Architektonische Aspekte sind Querschnittsaufgaben, die sich über mehrere Komponenten erstrecken. Ereignisgetriebene Architektur - eine Architektur, die Ereignisse erzeugt, erkennt, konsumiert und reagiert. Ereignisse umfassen Echtzeitbewegungen, komplexe Ereignisse oder Trends und Handelsereignisse, z. B. Einreichung einer Bestellung. Dieses Diagramm veranschaulicht die konzeptionelle Architektur des algorithmischen Handelssystems Referenzarchitekturen Um eine Analogie zu verwenden, ähnelt eine Referenzarchitektur den Blaupausen für eine tragende Wand. Dieses Blau-Druck kann für mehrfache Gebäudeentwürfe wiederverwendet werden, unabhängig davon, welches Gebäude gebaut wird, da es einen Satz von allgemein auftretenden Anforderungen erfüllt. Ähnlich definiert eine Referenzarchitektur eine Vorlage, die generische Strukturen und Mechanismen enthält, die verwendet werden können, um eine konkrete Softwarearchitektur zu konstruieren, die spezifischen Anforderungen genügt. Die Architektur für das algorithmische Handelssystem verwendet eine raumbasierte Architektur (SBA) und einen Model View Controller (MVC) als Referenzen. Gute Vorgehensweisen wie der Betriebsdaten-Speicher (ODS), das Extrakt-Transformations - und Belastungsmuster (ETL) und ein Data Warehouse (DW) werden ebenfalls verwendet. Modellansicht-Controller - ein Muster, das die Darstellung von Informationen von der Benutzerinteraktion mit ihr trennt. Raumbasierte Architektur - spezifiziert eine Infrastruktur, in der lose gekoppelte Verarbeitungseinheiten miteinander über einen gemeinsamen assoziativen Speicher mit dem Namen Space interagieren (siehe unten). Strukturansicht Die Strukturansicht einer Architektur zeigt die Komponenten und Unterkomponenten des algorithmischen Handelssystems. Es zeigt auch, wie diese Komponenten auf physische Infrastruktur eingesetzt werden. Die in dieser Ansicht verwendeten UML-Diagramme umfassen Komponentendiagramme und Bereitstellungsdiagramme. Im Folgenden finden Sie eine Übersicht der Implementierungsdiagramme des algorithmischen Handelssystems und der Verarbeitungseinheiten in der SBA-Referenzarchitektur sowie zugehörige Komponentendiagramme für die einzelnen Schichten. Architectural Tactics Nach dem Software Engineering Institute ist eine architektonische Taktik ein Mittel zur Befriedigung einer Qualitätsanforderung durch Manipulation eines Aspekts eines Qualitätsattributmodells durch architektonische Designentscheidungen. Ein einfaches Beispiel, das in der algorithmischen Handelssystemarchitektur verwendet wird, ist, einen operativen Datenspeicher (ODS) mit einer kontinuierlichen Abfragekomponente zu manipulieren. Diese Komponente würde das ODS kontinuierlich analysieren, um komplexe Ereignisse zu identifizieren und zu extrahieren. Folgende Taktiken werden in der Architektur verwendet: Das Disruptormuster im Ereignis - und Auftragswarteschlange Gemeinsamer Speicher für die Ereignis - und Auftragswarteschlangen Ununterbrochene Abfragesprache (CQL) auf dem ODS Datenfilterung mit dem Filterentwurfsmuster auf eingehenden Daten Vermeidungsalgorithmen auf allen Eingehende und ausgehende Verbindungen Active Queue Management (AQM) und explizite Staubenachrichtigung Rohstoffrechenressourcen mit Upgradefähigkeit (skalierbar) Aktive Redundanz für alle Single Points of Fail Indexierung und optimierte Persistenzstrukturen im ODS Planen Sie regelmäßige Datensicherungs - und Bereinigungsskripts für ODS Transaktionshistorie auf allen Datenbanken Prüfsummen für alle Aufträge, um Fehler zu erkennen Annotieren von Ereignissen mit Zeitstempeln, um veraltete Ereignisse zu überspringen Bestellen von Validierungsregeln zB Maximale Handelsmengen Automatisierte Händlerkomponenten verwenden eine Speicher-Datenbank für die Analyse Zwei-Stufen-Authentifizierung für Benutzerschnittstellen, die eine Verbindung zu den ATs herstellen Verschlüsselung auf Benutzerschnittstellen und Verbindungen zu den ATs Observer-Entwurfsmuster für das MVC zur Verwaltung von Ansichten Die obige Liste ist nur ein paar Design Entscheidungen, die ich bei der Gestaltung der Architektur identifiziert habe. Es ist nicht eine vollständige Liste der Taktiken. Da das System entwickelt wird, sollten zusätzliche Taktiken auf mehreren Ebenen der Granularität eingesetzt werden, um funktionale und nicht-funktionale Anforderungen zu erfüllen. Unten sind drei Diagramme, die das Disruptor-Designmuster, das Filterentwurfsmuster und die kontinuierliche Abfragekomponente beschreiben. Verhaltensansicht Diese Ansicht einer Architektur zeigt, wie die Komponenten und Schichten miteinander interagieren sollen. Dies ist hilfreich bei der Erstellung von Szenarien zum Testen von Architekturentwürfen und zum Verständnis des Systems von Ende zu Ende. Diese Ansicht besteht aus Sequenzdiagrammen und Aktivitätsdiagrammen. Aktivitätsdiagramme, die den internen Prozess der algorithmischen Handelssysteme zeigen und wie Händler mit dem algorithmischen Handelssystem interagieren sollen, sind nachfolgend dargestellt. Technologien und Rahmenbedingungen Der letzte Schritt beim Entwerfen einer Softwarearchitektur besteht darin, mögliche Technologien und Rahmenbedingungen zu identifizieren, die zur Verwirklichung der Architektur genutzt werden könnten. Grundsätzlich ist es sinnvoll, bestehende Technologien auszuschöpfen, sofern sie sowohl funktionale als auch nicht funktionale Anforderungen adäquat erfüllen. Ein Framework ist eine realisierte Referenzarchitektur, z. B. 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 hochleistungsfähige Computational Finance Modellierung unterstützen. Man kann bis zu 50x Performance-Verbesserungen in der Ausführung von Monte Carlo Simulationen auf der GPU anstelle der CPU erreichen. 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 Apache Hadoop - für den Fall, dass pervasive Logging ist eine Anforderung, dann die Verwendung von Hadoop bietet eine interessante Lösung für die Big-Data-Problem. Hadoop kann in einer Clusterumgebung eingesetzt werden, die CUDA-Technologien unterstützt. AlgoTrader - eine Open-Source-algorithmische Handelsplattform. AlgoTrader könnte an Stelle der automatisierten Händlerkomponenten eingesetzt werden. FIX Engine - eine eigenständige Anwendung, die die Financial Information Exchange (FIX) - Protokolle einschließlich FIX, FAST und FIXatdl unterstützt. Obwohl es sich nicht um eine Technologie oder ein Framework handelt, sollten Komponenten mit einer API (Application Programming Interface) aufgebaut werden, um die Interoperabilität des Systems und seiner Komponenten zu verbessern. Fazit Die vorgeschlagene Architektur wurde entwickelt, um sehr allgemeine Anforderungen für algorithmische Handelssysteme zu erfüllen. Im Allgemeinen werden algorithmische Handelssysteme durch drei Faktoren kompliziert, die bei jeder Implementierung variieren: Abhängigkeiten von externen Unternehmen und Exchange-Systemen Herausfordernde nicht-funktionale Anforderungen und sich entwickelnde architektonische Zwänge Die vorgeschlagene Softwarearchitektur muss daher im Einzelfall von Fall zu Fall angepasst werden Um spezifische organisatorische und regulatorische Anforderungen zu erfüllen sowie regionale Zwänge zu überwinden. Die algorithmische Handelssystemarchitektur sollte nur als Bezugspunkt für Einzelpersonen und Organisationen betrachtet werden, 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. Die Vor-und Nachteile der automatisierten Handelssysteme Händler und Investoren können genaue Eintrag zu drehen. Exit - und Money-Management-Regeln in automatisierte Handelssysteme, die es Computern ermöglichen, die Trades auszuführen und zu überwachen. Eine der größten Attraktionen der Strategieautomatisierung ist, dass es einige der Emotionen aus dem Handel nehmen kann, da Trades automatisch platziert werden, sobald bestimmte Kriterien erfüllt sind. Dieser Artikel wird Leser vorstellen und erklären einige der Vor-und Nachteile, sowie die Realitäten der automatisierten Handelssysteme. (Für das zugehörige Lesen, siehe Die Macht der Programm-Trades.) Was ist ein automatisiertes Handelssystem Automatisierte Handelssysteme, auch als mechanische Handelssysteme, algorithmischen Handel bezeichnet. Automatisierte Handels - oder Systemhandel erlauben es den Händlern, spezifische Regeln für Handels - und Exits festzulegen, die, sobald sie programmiert sind, automatisch über einen Computer ausgeführt werden können. Die Handelsein - und - ausgangsregeln können auf einfachen Bedingungen, wie einem gleitenden Durchschnittsübergang, basieren. Oder es können komplizierte Strategien sein, die ein umfassendes Verständnis der für die Benutzerhandelsplattform spezifischen Programmiersprache oder das Fachwissen eines qualifizierten Programmierers erfordern. Automatisierte Handelssysteme erfordern typischerweise die Verwendung von Software, die mit einem Direktzugriffsvermittler verknüpft ist. Und alle spezifischen Regeln müssen in dieser Plattform-proprietären Sprache geschrieben werden. Die Plattform TradeStation nutzt beispielsweise die Programmiersprache EasyLanguage, die NinjaTrader-Plattform dagegen die NinjaScript-Programmiersprache. Abbildung 1 zeigt ein Beispiel für eine automatisierte Strategie, die drei Trades während einer Trading-Sitzung ausgelöst hat. Abbildung 1: Ein Fünf-Minuten-Chart des ES-Kontrakts mit einer automatisierten Strategie. Einige Handelsplattformen verfügen über Strategie-Assistenten, die es Anwendern erlauben, aus einer Liste allgemein verfügbarer technischer Indikatoren eine Reihe von Regeln zu erstellen, die dann automatisch gehandelt werden können. Der Nutzer könnte zum Beispiel festlegen, dass ein langer Handel eingegeben wird, sobald der 50-Tage-Gleitende Durchschnitt über dem 200-Tage-Gleitenden Durchschnitt bei einem Fünf-Minuten-Chart eines bestimmten Handelsinstruments überschreitet. Benutzer können auch die Art der Bestellung (zB Markt oder Limit) eingeben und wenn der Handel ausgelöst wird (zB am Ende der Leiste oder in der nächsten Leiste geöffnet) oder die Standard-Eingänge der Plattform verwenden. Viele Händler jedoch wählen ihre eigenen benutzerdefinierten Indikatoren und Strategien zu programmieren oder arbeiten eng mit einem Programmierer, um das System zu entwickeln. Während dies in der Regel erfordert mehr Aufwand als mit dem Plattform-Assistenten, ermöglicht es eine viel größere Flexibilität und die Ergebnisse können mehr belohnen. (Leider gibt es keine perfekte Anlagestrategie, die den Erfolg garantieren wird.) Weitere Informationen finden Sie unter Verwenden von technischen Indikatoren zur Entwicklung von Handelsstrategien.) Sobald die Regeln festgelegt sind, kann der Computer die Märkte überwachen, um Kauf - oder Verkaufschancen basierend auf dem Handel zu finden Strategiespezifikationen. Abhängig von den spezifischen Regeln, sobald ein Trade eingegeben wird, Aufträge für Schutz Stop Verluste. Nachlaufende Stopps und Gewinnziele automatisch generiert. In schnelllebigen Märkten kann dieser sofortige Auftragseingang den Unterschied zwischen einem geringen Verlust und einem katastrophalen Verlust für den Fall darstellen, in dem sich der Handel gegen den Händler bewegt. Vorteile von automatisierten Trading-Systemen Es gibt eine lange Liste von Vorteilen auf mit einem Computer überwachen die Märkte für Handelschancen und führen die Trades, einschließlich: Minimize Emotions. Automatisierte Handelssysteme minimieren Emotionen während des gesamten Handelsprozesses. Indem Emotionen in Schach gehalten werden, haben Händler normalerweise eine einfachere Zeit, an dem Plan festzuhalten. Da die Handelsaufträge automatisch ausgeführt werden, sobald die Handelsregeln erfüllt sind, können die Händler den Handel nicht zögern oder in Frage stellen. Zusätzlich zu helfen, Händler, die Angst, den Auslöser zu ziehen sind, kann automatisiertes Handel Bombardierung diejenigen, die geeignet sind, zu übertreiben Kauf und Verkauf an jeder wahrgenommenen Gelegenheit. Fähigkeit zum Backtest. Backtesting wendet Handelsregeln auf historische Marktdaten an, um die Durchführbarkeit der Idee zu bestimmen. Beim Entwerfen eines Systems für automatisierten Handel müssen alle Regeln absolut sein, ohne Raum für Interpretation (der Computer kann nicht erraten, dass es genau gesagt werden muss, was zu tun ist). Trader können diese präzisen Regeln anwenden und sie auf historischen Daten testen, bevor sie Geld im Live-Handel riskieren. Sorgfältiges Backtesting ermöglicht es Tradern, eine Trading-Idee auszuwerten und zu verfeinern und die Systemerwartung zu bestimmen, die der durchschnittliche Betrag, den ein Trader erwarten kann, pro Risikoeinheit zu gewinnen (oder zu verlieren). (Wir bieten einige Tipps für diesen Prozess, die helfen können, Ihre aktuellen Handelsstrategien neu zu finden. Für mehr, siehe Backtesting: Interpretation der Vergangenheit.) Preserve Disziplin. Da die Handelsregeln etabliert sind und die Handelsausführung automatisch erfolgt, wird Disziplin auch in volatilen Märkten bewahrt. Disziplin ist oft verloren durch emotionale Faktoren wie Angst vor dem Verlust eines Verlustes oder der Wunsch, eke aus ein wenig mehr Gewinn aus einem Handel. Automatisiertes Trading hilft sicherzustellen, dass Disziplin beibehalten wird, weil der Handelsplan genau gefolgt wird. Darüber hinaus wird der Pilot-Fehler minimiert, und eine Bestellung zum Kauf von 100 Aktien wird nicht falsch eingegeben werden als Kauf von 1.000 Aktien zu verkaufen. Erzielen Sie Konsistenz. Eine der größten Herausforderungen im Handel ist, den Handel zu planen und den Handel zu planen. Selbst wenn ein Handelsplan das Potenzial hat, rentabel zu sein, ändern Händler, die die Regeln ignorieren, jegliche Erwartung, die das System hätte. Es gibt keinen solchen Handelsplan, der 100 der Zeitverluste gewinnt, sind ein Teil des Spiels. Aber Verluste können psychologisch traumatisierend sein, so dass ein Trader, der zwei oder drei verlieren Trades in einer Reihe könnte entscheiden, den nächsten Handel zu überspringen. Wenn dieser nächste Handel ein Gewinner gewesen wäre, hat der Händler bereits jede Erwartung des Systems zerstört. Automatisierte Handelssysteme ermöglichen es Tradern, Konsistenz durch den Handel des Plans zu erreichen. (Es ist unmöglich, Katastrophe ohne Handelsregeln zu vermeiden. Für weitere, siehe 10 Schritte zum Aufbau eines gewinnbringenden Handelsplans.) Verbesserte Order Entry Speed. Da Computer sofort auf sich verändernde Marktbedingungen reagieren, können automatisierte Systeme Aufträge generieren, sobald die Handelskriterien erfüllt sind. Erste-oder aus einem Handel ein paar Sekunden früher kann einen großen Unterschied in den Handel Ergebnis zu machen. Sobald eine Position eingegeben wird, werden alle anderen Aufträge automatisch generiert, einschließlich Schutzstopp-Verluste und Gewinnziele. Märkte können sich schnell bewegen, und es ist demoralisierend, dass ein Trade das Gewinnziel erreicht oder vor einem Stop-Loss-Level vorbeifährt, bevor die Aufträge sogar eingegeben werden können. Ein automatisiertes Handelssystem verhindert, dass dies geschieht. Diversifizieren Handel. Automatisierte Handelssysteme erlauben dem Benutzer, mehrere Konten oder verschiedene Strategien gleichzeitig zu handeln. Dies hat das Potenzial, Risiken über verschiedene Instrumente zu verbreiten und gleichzeitig eine Absicherung gegen Verlustpositionen zu schaffen. Was unglaublich anspruchsvoll für einen Menschen zu erreichen ist, wird effizient von einem Computer in einer Angelegenheit von Millisekunden ausgeführt. Der Computer ist in der Lage, für Trading-Chancen über eine Reihe von Märkten zu scannen, Aufträge zu generieren und Trades zu überwachen. Nachteile und Realitäten von automatisierten Handelssystemen Automatisierte Handelssysteme haben viele Vorteile, aber es gibt einige Abstriche und Realties, denen die Händler bewusst sein sollten. Mechanische Ausfälle. Die Theorie hinter automatisierten Trading macht es einfach: die Software einrichten, die Regeln programmieren und beobachten, wie sie handeln. In Wirklichkeit jedoch ist das automatisierte Trading eine anspruchsvolle Handelsmethode, aber nicht unfehlbar. Abhängig von der Handelsplattform konnte sich ein Handelsauftrag auf einem Computer und nicht auf einem Server befinden. Was bedeutet, dass, wenn eine Internetverbindung verloren geht, eine Bestellung nicht auf den Markt geschickt werden. Es könnte auch eine Diskrepanz zwischen den theoretischen Trades, die durch die Strategie und die Auftragseingangsplattform Komponente, die sie in echte Trades macht erzeugt. Die meisten Händler sollten eine Lernkurve bei der Verwendung von automatisierten Handelssystemen erwarten, und es ist allgemein eine gute Idee, mit kleinen Handelsgrößen zu beginnen, während der Prozess verfeinert wird. Überwachung. Obwohl es toll wäre, den Computer einzuschalten und den Tag zu verlassen, benötigen automatisierte Handelssysteme eine Überwachung. Dies liegt daran, das Potenzial für mechanische Ausfälle, wie Konnektivitätsprobleme, Leistungsverluste oder Computerabstürze, und System-Macken. Es ist möglich, dass ein automatisiertes Handelssystem Anomalien erlebt, die zu fehlerhaften Aufträgen, fehlenden Aufträgen oder doppelten Aufträgen führen können. Wenn das System überwacht wird, können diese Ereignisse schnell erkannt und behoben werden. Über-Optimierung. Obwohl nicht spezifisch für automatisierte Handelssysteme, Händler, die Backtesting-Techniken verwenden können Systeme, die auf Papier großartig aussehen und führen schrecklich in einem Live-Markt. Über-Optimierung bezieht sich auf übermäßige Kurvenanpassung, die einen Handelsplan erzeugt, der im realen Handel unzuverlässig ist. Es ist z. B. möglich, eine Strategie zu optimieren, um außergewöhnliche Ergebnisse auf den historischen Daten, auf denen sie getestet wurde, zu erzielen. Händler gehen manchmal falsch davon aus, dass ein Handelsplan nahe 100 profitable Geschäfte haben sollte oder nie einen Drawdown erleben sollte, um ein tragfähiger Plan zu sein. Als solche können die Parameter angepasst werden, um einen nahezu perfekten Plan zu schaffen, der vollständig ausfällt, sobald er auf einen Live-Markt angewendet wird. (Diese Überoptimierung schafft Systeme, die nur auf Papier gut aussehen.) Weitere Informationen finden Sie unter Backtesting und Forward Testing: Die Bedeutung von Correlation.) Serverbasierte Automatisierung Händler haben die Möglichkeit, ihre automatisierten Handelssysteme über einen serverbasierten Handel auszuführen Plattform wie Strategy Runner. Diese Plattformen bieten häufig kommerzielle Strategien zum Verkauf an, ein Assistent, so dass Händler ihre eigenen Systeme entwerfen können oder die Möglichkeit, vorhandene Systeme auf der Server-basierten Plattform zu hosten. Gegen eine Gebühr kann das automatisierte Handelssystem alle Trades mit allen auf ihrem Server befindlichen Aufträgen scannen, ausführen und überwachen, was zu einer schnelleren und zuverlässigeren Auftragserfassung führt. Schlussfolgerung Obwohl ein Ppealing für eine Vielzahl von Faktoren, sollten automatisierte Handelssysteme nicht als Ersatz für sorgfältig ausgeführten Handel. Mechanische Ausfälle können auftreten, und als solche erfordern diese Systeme eine Überwachung. Serverbasierte Plattformen können eine Lösung für Händler bieten, die das Risiko von mechanischen Ausfällen minimieren möchten. (Für verwandte Erkenntnisse, siehe Day Trading-Strategien für Anfänger.)
Comments
Post a Comment