Monday 6 February 2017

Architektur Von Algo Trading System

Systemarchitektur Die Architektur von AlgoTrader setzt sich aus den folgenden Komponenten zusammen. Der AlgoTrader Server stellt die Infrastruktur für alle darauf laufenden Strategien zur Verfügung. Der AlgoTrader Server verfügt über die zentrale Esper Complex Event Processing (CEP) Engine. Er ist verantwortlich für alle Domänenmodellobjekte und deren Persistenz in der Datenbank. Für die Verarbeitung von Live - und historischen Marktdaten stehen unterschiedliche Marktdatenadapter zur Verfügung. Auf der anderen Seite stehen Adapter für verschiedene Execution-Broker und Börsen zur Verfügung, die für die Platzierung von Aufträgen und die Ausführung von Hinweisen verantwortlich sind. Der AlgoTrader Server bietet darüber hinaus Geschäftskomponenten für Portfolio-Management, Performance-Messung, Risikomanagement, Money Management, Options-Pricing, Abstimmung, Forex-Hedging und Parameteroptimierung. Auf dem AlgoTrader Server können beliebig viele Strategien eingesetzt werden. AlgoTrader hat eine ereignisgetriebene Architektur, die eine dedizierte Esper CEP-Engine pro Strategie nutzt. Eine Strategie kann eine beliebige Anzahl von SQL-ähnlichen Esper-Anweisungen für die zeitbasierte Marktdatenanalyse und Signalerzeugung bereitstellen. Esper-Anweisungen können beliebig viele prozedurale Aktionen aufrufen, z. B. die Platzierung einer Position oder die Schließung einer Position, die in Java codiert sind. Die Kombination von Esper-Anweisungen und Java-Code bietet einen best-of-both-worlds-Ansatz. Zur Verwaltung und Überwachung des Systems existieren vier verschiedene GUI-Clients. Das neue AlgoTrader HTML5 Frontend bietet handelsbezogene Funktionen wie Charting, Order, Positionen amp Marktdaten. Der AlgoTrader Eclipse-Client ist die Standard-Strategieentwicklungsumgebung. Der EsperHQ-Client verwaltet den Esper CEP-Motor. Der Grails-Client ist ein generischer Client für die Referenzdatenverwaltung. Für produktive Installationen und Bereitstellung verwendet AlgoTrader Docker. Einführung AlgoTrader 3.0 8211 Der leistungsstärkste AlgoTrader Yet Apr-07-2016 AlgoTrader 3.0 wurde veröffentlicht. Diese Version enthält das neue HTML5 Frontend, One-Click-Implementierung mit Docker, drei neue Execution-Algorithmen und einen Excel-basierten Back-Test-Bericht AlgoTrader One-Click-Installation von Docker vorstellen Mar-15-2016 AlgoTrader 3.0 führt One-Click-Tradingstrategie-Installationen ein Docker BILANZ Artikel zum Thema Hochfrequenzhandel Feb-02-2016 AlgoTrader GmbH Geschäftsführer Andy Flury im Interview mit der BILANZ zum Thema Hochfrequenzhandel AlgoTrader Lizenzbestimmungen DIE BEDINGUNGEN DIESER ENDBENUTZERLIZENZVEREINBARUNG (8220AGREEMENT8221) BENUTZEN SIE DIE NUTZUNG DER SOFTWARE, WENN SIE UND DIE LIZENZVERTRAG HABEN EINE SEPARATE SCHRIFTLICHE LIZENZVEREINBARUNG FÜR DIE VERWENDUNG DER SOFTWARE AUSGEFÜHRT. Der Lizenzgeber ist bereit, die Software nur für Sie zu lizenzieren, wenn Sie alle Bedingungen dieser Vereinbarung akzeptieren. Mit der Unterzeichnung dieses Vertrags oder durch Herunterladen, Installieren oder Verwenden der Software haben Sie angegeben, dass Sie diese Vereinbarung verstehen und alle ihre Bedingungen akzeptieren. Wenn Sie nicht alle Bedingungen dieser Vereinbarung akzeptieren, ist der Lizenzgeber nicht bereit, die Software für Sie zu lizenzieren, und Sie dürfen die Software nicht herunterladen, installieren oder verwenden. 1. GRANT DER LIZENZ a. Evaluation Verwendung und Entwicklung Use License. Der Lizenzgeber gewährt Ihnen eine persönliche, nicht exklusive, nicht übertragbare Lizenz, ohne das Recht zur Unterlizenzierung für die Dauer dieses Vertrages, die Software ausschließlich für die Nutzung der Software zu verwenden Evaluation Verwendung und Entwicklung Verwendung. Drittanbieter-Softwareprodukte oder - module, die vom Lizenzgeber bereitgestellt werden, dürfen ausschließlich mit der Software verwendet werden und unterliegen der Zustimmung zu den von Dritten zur Verfügung gestellten Bedingungen. Wenn die Lizenz endet, müssen Sie die Software nicht mehr verwenden und alle Instanzen deinstallieren. Alle Rechte, die Ihnen hier nicht ausdrücklich eingeräumt werden, bleiben vom Lizenzgeber. Der Entwickler darf die Software oder jegliche abgeleitete Arbeit (einschließlich der eigenen internen Geschäftszwecke von Developer8217) nicht kommerziell nutzen. Das Kopieren und Weiterverteilen der Software - oder Entwickleranwendung in irgendeiner Form an Ihre direkten oder indirekten Kunden ist verboten. B. Produktion Nutzungslizenz. Vorbehaltlich der Einhaltung der Bedingungen dieses Vertrages einschließlich der Zahlung der anwendbaren Lizenzgebühr gewährt Ihnen der Lizenzgeber für die Dauer dieses Vertrags eine nicht ausschließliche und nicht übertragbare Lizenz ohne das Recht zur Unterlizenzierung für die Dauer dieses Vertrags : (A) die Software ausschließlich für eigene interne geschäftliche Zwecke zu verwenden und zu reproduzieren (8220Production Use8221) und (b) eine angemessene Anzahl von Kopien der Software nur für Sicherungszwecke zu erstellen. Diese Lizenz beschränkt sich auf die spezifische Anzahl von CPUs (falls von der CPU lizenziert) oder Instanzen von Java Virtual Machines (falls Lizenzen von Virtual Machine), für die Sie eine Lizenzgebühr bezahlt haben. Die Verwendung der Software auf einer größeren Anzahl von CPUs oder Instanzen von Java Virtual Machines erfordert die Zahlung einer zusätzlichen Lizenzgebühr. Von dem Lizenzgeber gelieferte Softwareprodukte oder Module des Drittanbieters dürfen ausschließlich mit der Software verwendet werden. C. Keine anderen Rechte. Ihre Rechte an der Software und die Nutzung der Software beschränken sich auf die in diesem Abschnitt ausdrücklich gewährten Rechte. Sie dürfen die Software nicht weiter nutzen. Mit Ausnahme der in diesem Abschnitt ausdrücklich genehmigten Lizenz gewährt Ihnen der Lizenzgeber keine weiteren Rechte oder Lizenzen, implizit, estoppel oder anderweitig. ALLE RECHTE, DIE NICHT AUSDRÜCKLICH GEWÄHRT WERDEN, SIND DURCH DEN LIZENZNEHMER ODER SEINEN LIEFERANTEN VORBEHALTEN. 2. EINSCHRÄNKUNGEN Soweit nicht ausdrücklich in Ziffer 1 vorgesehen, sind Sie nicht berechtigt: (a) zu modifizieren, zu übersetzen, zu disassemblieren, abgeleitete Werke der Software zu erstellen oder die Software zu kopieren, (b) zu vermieten, zu verleihen, zu übertragen, Software in irgendeiner Form an eine Person (c) die Bereitstellung, Offenlegung, Weitergabe oder Bereitstellung oder Nutzung der Software durch Dritte (d) Veröffentlichung von Benchmark - oder Leistungstests, die auf der Software oder einem Teil davon oder ( E) entfernen Sie alle proprietären Hinweise, Etiketten oder Markierungen auf der Software. Sie werden die Software nicht auf Einzelpersonen oder auf OEM-Basis (Original Equipment Manufacturer) verteilen. 3. EIGENTUM Die zwischen den Parteien vereinbarte Software ist und bleibt das alleinige und ausschließliche Eigentum des Lizenzgebers, einschließlich aller Rechte an geistigem Eigentum. ein. Für den Fall, dass Sie die Software unter der Lizenz gemäß Abschnitt 1 (a) verwenden, bleibt dieses Abkommen für die Dauer der Evaluierungs - oder Entwicklungsperiode gültig. B. Für den Fall, dass Sie die Software unter der Lizenz gemäß Abschnitt 1 (b) verwenden, bleibt diese Vereinbarung in Kraft entweder (a) für eine Laufzeit von einem Jahr, wenn sie als Jahresabonnement erworben wird oder (b) unbefristete Lizenz. Eine Jahresabonnementlizenz verlängert sich automatisch um ein Jahr, wenn sie nicht mit einem Monat vorher gekündigt wird. Diese Vereinbarung wird ohne vorherige Ankündigung automatisch gekündigt, wenn Sie eine Bestimmung dieser Vereinbarung verletzen. Bei Kündigung müssen Sie die Software unverzüglich verlassen und alle Kopien der Software in Ihrem Besitz oder Ihrer Kontrolle zerstören. 5. UNTERSTÜTZUNGSDIENSTLEISTUNGEN Wenn Sie diese Lizenz einschließlich Support-Services erworben haben, umfassen diese Wartungsfreigaben (Updates und Upgrades), telefonische Unterstützung sowie E-Mail - oder Web-Support. ein. Der Lizenzgeber wird kommerziell vernünftige Anstrengungen unternehmen, um ein Update bereitzustellen, das entworfen ist, um einen gemeldeten Fehler zu lösen oder zu umgehen. Wenn ein solcher Fehler in einer Wartungsfreigabe behoben wurde, muss der Lizenznehmer die entsprechende Wartungsfreigabe installieren und implementieren, andernfalls kann die Aktualisierung in Form eines vorläufigen Fixes, einer Prozedur oder einer Routine bereitgestellt werden, bis eine Wartungsfreigabe mit dem permanenten Update verwendet wird ist verfügbar. B. Während der Lizenzvertragslaufzeit stellt der Lizenzgeber dem Lizenznehmer Wartungsfreigaben zur Verfügung, wenn der Lizenzgeber in der Regel solche Wartungsfreigaben für seine Kunden verfügbar macht. Wenn eine Frage auftaucht, ob ein Produktangebot ein Upgrade oder ein neues Produkt oder eine neue Funktion ist, ist die Meinung von Licensor8217 maßgebend, vorausgesetzt der Lizenzgeber behandelt das Produktangebot als neues Produkt oder Feature für seine Endkunden. C. Die Licensor8217s Verpflichtung Support Services zur Verfügung zu stellen konditioniert auf die folgenden: (a) Der Lizenznehmer macht angemessene Anstrengungen, die Fehler nach Rücksprache mit dem Lizenzgeber (b) der Lizenznehmer zur Korrektur der Lizenzgeber mit ausreichenden Informationen und Ressourcen zur Verfügung stellt, die Fehler entweder an der Licensor8217s Website zu korrigieren (C) Der Lizenznehmer installiert unverzüglich alle Wartungsfreigaben und (d) der Lizenznehmer beschafft, installiert und verwahrt alle Geräte, die Kommunikation und den Zugriff auf das Personal, die Hardware und jede zusätzliche Software, die an der Ermittlung des Fehlers beteiligt ist Schnittstellen und sonstiger Hardware, die für den Betrieb des Produkts erforderlich sind. D Der Lizenzgeber ist nicht verpflichtet, Support Services in den folgenden Situationen zur Verfügung zu stellen: (a) das Produkt geändert wurde, verändert oder beschädigt werden (es sei denn, unter der direkten Aufsicht des Lizenzgeber) (b) der Fehler durch Licensee8217s Fahrlässigkeit verursacht wird, Hardware-Defekt (C) der Fehler durch Software verursacht wird, die nicht durch den Lizenzgeber lizenziert wurde (d) Der Lizenznehmer hat keine Wartungsfreigabe (en) installiert und implementiert, sodass das Produkt eine Version ist, die von der Lizenzgeber oder (e) Der Lizenznehmer hat die Lizenzgebühren oder Support Services Gebühren nicht bezahlt. Darüber hinaus ist der Lizenzgeber nicht verpflichtet, Support-Services für Software-Code von dem Client selbst auf der Grundlage des Produkts geschrieben zu stellen. D. h. Der Lizenzgeber behält sich das Recht vor, die Support Services einzustellen, falls der Lizenzgeber nach alleinigem Ermessen feststellt, dass die fortgesetzte Unterstützung eines Produkts nicht mehr wirtschaftlich praktikabel ist. Der Lizenzgeber wird dem Lizenznehmer mindestens drei (3) Monate vor der schriftlichen Kündigung einer solchen Streichung von Support-Services gewähren und alle nicht aufgelaufenen Support Services-Gebühren zurückerstatten, die der Lizenznehmer in Bezug auf das betroffene Produkt vorausbezahlt haben kann. Der Lizenzgeber ist nicht verpflichtet, jegliche Version des Produkts oder der zugrundeliegenden Plattform von Drittanbietern (einschließlich aber nicht beschränkt auf Software, JVM, Betriebssystem oder Hardware), für die das Produkt unterstützt wird, zu unterstützen oder zu verwalten, außer (i) der jeweils aktuellen Version des Produkt und zugrunde liegende Plattform von Drittanbietern und (ii) die beiden unmittelbar vorangegangenen Versionen des Produkts und des Betriebssystems für einen Zeitraum von sechs (6) Monaten nach ihrer ersten Überlassung. Der Lizenzgeber behält sich das Recht vor, die Leistung der Support Services auszusetzen, wenn der Lizenznehmer innerhalb von dreißig (30) Tagen nach Fälligkeit einen Betrag zahlt, der dem Lizenzgeber gemäß dem Vertrag zu zahlen ist. 6. GARANTIE a. Der Lizenzgeber garantiert, dass die Software in der Lage ist, in Übereinstimmung mit den funktionalen Spezifikationen in der zutreffenden Dokumentation für einen Zeitraum von 90 Tagen nach dem Datum, an dem Sie die Software installieren, in allen wesentlichen Belangen durchzuführen. Im Falle einer Verletzung dieser Gewährleistung hat der Lizenzgeber nach eigenem Ermessen die Software zu korrigieren oder die Software kostenlos zu ersetzen. Das Vorstehende ist Ihre alleinige und ausschließliche Rechtsbehelfe und die Licensor8217s alleinige Haftung für einen Verstoß gegen diese Garantien. Die vorstehend beschriebenen Garantien erfolgen ausschließlich für Sie und für Sie. Die Garantien gelten nur, wenn (a) die Software ordnungsgemäß installiert und verwendet wurde und die Bedienungsanleitung (c) die neuesten Aktualisierungen auf die Software angewendet wurde und (c) keine Änderungen, Ergänzungen oder Änderungen vorgenommen wurden Von anderen Personen als dem Lizenzgeber oder dem bevollmächtigten Vertreter des Lizenzgebers vorgenommen worden ist. 7. HAFTUNGSAUSSCHLUSS Sofern nicht gemäß § 6 VORGESEHEN (a), DER LIZENZGEBER AUSDRÜCKLICH ALLE GARANTIEN, AUSDRÜCKLICH ODER IMPLIZIT, EINSCHLIESSLICH DER IMPLIZIERTEN GARANTIEN DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NONINFRINGEMENT UND GARANTIEN IN DIE SICH VON austeilt NATÜRLICH ODER NUTZUNG DES HANDELS. KEINE RATSCHLÄGE ODER INFORMATIONEN, OB EINE MÜNDLICHE ODER SCHRIFTLICHE HINWEISE, DIE VON DEM LIZENZNEHMER ODER ANDEREN ANDEREN INHALTEN WERDEN, WIRD JEDE GARANTIE, DIE NICHT AUSDRÜCKLICH IN DIESER VEREINBARUNG GESETZT WERDEN KÖNNEN. Der Lizenzgeber übernimmt keine Gewähr, dass das Softwareprodukt Ihren Anforderungen entspricht oder unter Ihren speziellen Nutzungsbedingungen funktioniert. Der Lizenzgeber übernimmt keine Gewähr dafür, dass der Betrieb des Softwareprodukts sicher, fehlerfrei oder unterbrechungsfrei ist. SIE MÜSSEN BESTIMMEN, WENN DAS SOFTWAREPRODUKT IHRE ANFORDERUNGEN FÜR SICHERHEIT UND UNUNTERBRECHUNGSFÄHIGKEIT ENTHÄLT. SIE BEHALTEN SOLLTE VERANTWORTLICHKEIT UND ALLE HAFTUNG FÜR JEGLICHE VERLUSTE, DIE DURCH FEHLER DES SOFTWAREPRODUKTS ZUR ERFÜLLUNG IHRER ANFORDERUNGEN ANGEFÜHRT SIND. DER LIZENZNEHMER WIRD NICHT INNERHALB ALLER UMSTÄNDE VERANTWORTLICH ODER HAFTBAR FÜR DEN VERLUST VON DATEN AUF EINER COMPUTER - ODER INFORMATIONSSPEICHERVORRICHTUNG. 8. HAFTUNGSAUSSCHLUSS DIE LICENSOR8217S HAFTUNG FÜR SIE VON ALLE KLAGE und unter allen THEORIES Haftungs WERDEN begrenzt und wird die Lizenzgebühr von Ihnen an die LIZENZGEBER FÜR DIE SOFTWARE BEZAHLT NICHT ÜBERSCHREITEN. IN KEINEM FALL WIRD DIE LIZENZ HAFTUNG FÜR BESONDERE, ZUFÄLLIGE, EXEMPLARISCHE, STRAF oder Folgeschäden (einschließlich entgangener Nutzung, Daten, GESCHÄFT ODER GEWINNE) ODER FÜR DIE KOSTEN DER ERSATZPRODUKTEN BESCHAFFUNG AUS ODER IN VERBINDUNG MIT DIESER VEREINBARUNG ODER DER VERWENDUNG ODER DER LEISTUNG DER SOFTWARE, OB EINE SOLCHE HAFTUNG ENTSTEHT VON ANSPRÜCHEN AUF DER GRUNDLAGE VERTRAG, GARANTIE, SCHULD (EINSCHLIESSLICH NACHLÄSSIGKEIT), dessen Vertreter oder nicht und OB DIE LIZENZGEBER ÜBER DIE MÖGLICHKEIT SOLCHER VERLUSTE WURDE ODER BESCHÄDIGUNG. DIE VORGESEHENEN EINSCHRÄNKUNGEN WERDEN ÜBERLEGEN UND SELBST GELTEN, WENN DIESE VEREINBARUNG GEGEN BESCHRÄNKTE RECHTSMITTEL GEFUNDEN IST, DASS IHREN WESENTLICHEN ZWECK VERLETZT HAT. FALLS die zuständige Gerichtsbarkeit DIE FÄHIGKEIT LICENSOR8217S LIMITS ALLE GARANTIEN ZU LEHNEN WIRD DIESE HAFTUNGSAUSSCHLUSS GILT Bis zur äußersten Grenze zulässig ist. 9. ALLGEMEINES Sollte eine Bestimmung dieses Vertrages für ungültig oder undurchsetzbar gehalten werden, bleibt der Rest dieses Vertrages in Kraft und Wirkung. Soweit ausdrückliche oder stillschweigende Beschränkungen nach geltendem Recht nicht zulässig sind, bleiben diese ausdrücklichen oder stillschweigenden Beschränkungen in dem durch diese anwendbaren Gesetze maximal zulässigen Umfang gültig. Diese Vereinbarung ist die vollständige und ausschließliche Vereinbarung zwischen den Parteien in Bezug auf den Gegenstand dieser Vereinbarung und ersetzt und ersetzt alle früheren Vereinbarungen, Mitteilungen und Vereinbarungen (sowohl schriftlich als auch mündlich) zu diesem Thema. Die Vertragspartner sind unabhängige Vertragspartner und haben weder die Befugnis, den anderen Vertragspartner zu binden oder anderweitige Verpflichtungen einzugehen. Keiner der beiden Parteien, die ihre Rechte aus diesem Abkommen ausüben oder vollstrecken, wird als Verzicht auf diese Rechte fungieren. Alle in einer Bestellung oder einem anderen Bestelldokument enthaltenen Bedingungen, die mit den Bedingungen dieses Vertrages unvereinbar oder ergänzend sind, werden vom Lizenzgeber zurückgewiesen und gelten als null und nicht mehr. Diese Vereinbarung wird in Übereinstimmung mit den Gesetzen der Schweiz interpretiert und ausgelegt, und zwar ohne Rücksicht auf Kollisionsnormen. Die Parteien vereinbaren hiermit die ausschließliche Zuständigkeit und Gerichtsstand der in Zürich, Schweiz ansässigen Gerichte zur Beilegung von Streitigkeiten aus oder im Zusammenhang mit diesem Vertrag. 10. BEGRIFFSBESTIMMUNGEN 8220Beurteilung Use8221 bedeutet, dass die Software ausschließlich zur Bewertung und Erprobung für neue Anwendungen, die für Ihre Produktion bestimmt sind, verwendet wird. 8220Produktion Use8221 bedeutet, dass die Software nur für interne geschäftliche Zwecke verwendet wird. Die Verwendung des Produkts umfasst nicht das Recht, die Software für die Unterlizenzierung, den Wiederverkauf oder die Verbreitung zu vervielfältigen, einschließlich, ohne darauf beschränkt zu sein, die Nutzung der Software als Teil eines ASP-, VAR-, OEM-, Distributor - oder Wiederverkäufervertrages. 8220Software8221 bedeutet die Software Licensor8217s und alle seine Komponenten, Dokumentation und Beispiele, die vom Lizenzgeber enthalten sind. 8220Error8221 bedeutet entweder (a) ein Versagen des Produkts, mit den in den Unterlagen enthaltenen Spezifikationen übereinzustimmen, was dazu führt, dass das Produkt nicht verwendet oder eingeschränkt werden kann, und (b) ein Problem, das neue Verfahren und Klarstellungen erfordert , Zusätzliche Informationen und Anfragen für Produktverbesserungen. 8220Maintenance Release8221 bedeutet Upgrades und Updates für das Produkt, die den Lizenznehmern gemäß den in Abschnitt 5 definierten Standard-Supportdiensten zur Verfügung gestellt werden. 8220Update8221 bedeutet entweder eine Softwareänderung oder eine Ergänzung, die beim Erstellen oder Hinzufügen zum Produkt den Fehler korrigiert oder a Verfahren oder Routine, die, wenn sie im regulären Betrieb des Produkts beobachtet werden, die praktische nachteilige Wirkung des Fehlers auf den Lizenznehmer beseitigen. 8220Upgrade8221 bedeutet eine Überarbeitung des Produkts, das der Lizenzgeber seinen Endbenutzern in der Regel während des Support Services Term veröffentlicht, um neue Funktionen hinzuzufügen oder die Kapazität des Produkts zu erhöhen. Upgrade umfasst nicht die Freigabe eines neuen Produkts oder zusätzliche Features, für die es eine separate Gebühr. Wie sieht eine algorithmische Handelssystem-Architektur aussehen Es gibt tatsächlich nur 3 große Blöcke in einem Algo-Trading-System. 1. Market Data Handler (z. B. FAST-Handler) 2. Strategie-Modul (z. B. crossOver-Strategie) 3. Order Router (z. B. FIX Router) können Sie Risikotests entweder am Strategy Module oder dem Order Router Module oder beides hinzufügen. So lange Ihr Datenfluss ist richtig, sollten Sie gut zu gehen. Denken Sie daran, dass Sie ein ATS für minimale Latenz entwickeln, und das Hinzufügen von mehr Ebenen oder Komplexität wird auf Kosten der Latenz kommen. Minimal ATS-Architektur Und wenn Sie die Glocken und Pfeifen hinzufügen, würde es wie die folgenden aussehen: Wenn Sie auch an der Nitty-Gritty der Umsetzung der oben genannten Architektur interessiert sind, sollten Sie die folgenden Dinge im Auge behalten. Vermeiden Sie locksmutexes. Wenn Sie es verwenden müssen, versuchen Sie es durch lockless Strukturen mit Atomkernen ersetzen. Es gibt mehrere Bibliotheken für locklose Datenstrukturen (z. B. libcds, Concurrency-Kit usw.). C-11 unterstützt std :: atomar. Und Sie sollten danach streben, sie zu benutzen. Vermeiden Sie, was in QuickFIX getan wird. Seine geschrieben für Sicherheitselektivität Wiederverwendbarkeit als Objekt (Sperren) Erstellung und Vernichtung wird für jeden Aufruf einer Nachricht an den Router durchgeführt. Sicherlich keine Möglichkeit, eine Latenz sensible Code schreiben. Keine Laufzeitspeicherbelegung. Laufzeitpfad sollte maßgeschneiderte und sperrenfreie Speicherverwaltung mit vorab zugewiesenem Speicherpool verwenden. Die gesamte Initialisierung kann in Konstruktoren durchgeführt werden. Feste Verbindung. Threading-Modell, IO-Modell und Speicher-Management sollte so konzipiert, zusammen zu arbeiten, um eine optimale Gesamtleistung zu erzielen. Dies geht gegen das OOP-Konzept der losen Kopplung, aber es ist notwendig, um Laufzeitkosten des dynamischen Polymorphismus zu vermeiden. Verwenden Sie Vorlagen. In der gleichen Vene, würde ich auch vorschlagen, dass Sie auf C-Templatierung, um Flexibilität des Codes zu erreichen. OSHardware-Optimierung: Schließlich sollten Sie mit Linux RT Kernel und Solarflare Netzwerkkarte mit OpenOnLoad Treiber für die Erreichung minimale Latenz arbeiten. Können Sie weiter schauen, um die CPU zu isolieren und führen Sie Ihr Programm auf, dass bestimmte Kern. Und schließlich die öffentliche API, die Sie benötigen, um strategischen Entwicklern auszusetzen. Ich möchte, dass dies die minimale Menge, die die gesamte Komplexität dieser bestimmten Austauschstation verkapseln würde. Class OrderRowOrd (OrderInfo) 0 virtual bool sendRplOrd (OrderInfo) 0 virtuelles bool sendCxlOrd (OrderInfo) 0 virtualBut bedeutet dies, dass die OrderInfo-Klasse ALLE Angaben benötigen, die für den destinationexchange erforderlich sind. In der Regel erfordert der Austausch die gleiche Art von Informationen, aber wie Sie entlang gehen und unterstützen mehr AustauscheDestinationen würden Sie sich hinzufügen, mehr Variablen in dieser Klasse. Im Folgenden sind die wichtigen Fragen, die Sie sich stellen müssen: 1. Multi-Prozess-Architektur oder Multi-Thread-Architektur. Ob ein monolithischer Prozess mit mehreren Threads zu bauen, oder schreiben Sie mehrere Prozesse. Die Kosten für mehrere Prozesse ist die Nachricht übergeben Latenz, während die Kosten für mehrere threaded einzigen Prozess ist, dass jeder Fehler kann das gesamte System zu senken. 2. Nachrichtenübergabe: Während Sie aus einer Vielzahl von Optionen wählen können, sind Sie durch Latenzbetrachtung eingeschränkt. Am schnellsten IPC wäre Shared Memory, aber dann, wie würden Sie tun, die Synchronisation verbringen einige Zeit mit diesen beiden Fragen, weil sie den Baustein, auf dem Ihre Architektur steht. Bearbeiten: FIX und FAST Bezüglich populäres Standardprotokoll ist FIX zum Senden von Aufträgen und FAST für Marktdaten. Having said, dass die meisten Börsen haben ihre eigene native Protokoll, das schneller als FIX ist, weil FIX ist in der Regel auf der Oberseite ihres nativen Protokolls implementiert. Aber sie unterstützen immer noch FIX erhöht die Geschwindigkeit der Bereitstellung. Auf der anderen Seite, während FIX von den meisten Börsen übernommen wird, genießt FAST nicht so viel Akzeptanz. Wenn überhaupt, würde es nur eine Handvoll Austausch geben. Die meisten von ihnen senden entweder über FIX selbst (niedrige Latenzzeit) oder verwenden Sie ihre eigenen nativen binären Protokoll. z. B. In Indien, NSE, BSE und MCXMCXSX, alle drei Börsen gibt Ihnen FIX-Protokoll zusätzlich zu nativen Protokoll, aber nur BSE gibt Ihnen FAST für Marktdaten. Und das ist auch von FAST auf native mit Einführung von EOBI. Können Sie die gleiche Sache an andere Börsen extrapolieren. Wie John erwähnt, ist OMS der Crux von jeder Handelsplattform und Sie sollten von der Erforschung darüber beginnen. Sie müssen Zeit verbringen, um Ihre Handelslebenszyklus, Ereignisse und Eigenschaften zu bestimmen, die Sie auf dem OMS einbetten möchten und die, die Sie Ihre Algo-Maschine behandeln möchten. Metcetera bietet eine Open-Source-OMS, ich haven039t verwendet es persönlich aber it039s einer der wenigen auf dem Markt. Die nächste Sache, die Sie betrachten sollte, ist die Bereitstellung einer Schnittstelle zu Quelldaten in und schieben Sie es aus. Dies ist für ein Kundenauftragseingabesystem, um die Auftragsdetails zu werfen und Algo-Motor, um es zu quellen. Viele Sell Side OMS039s verwenden eine Kombination von proprietären Programmen in JavaC mit FIX geschrieben. FIX-Protokoll ermöglicht es Ihnen, Echtzeit über Systeme in einem vereinfachten amp-vordefinierten Nachrichtenformat zu kommunizieren, das von der FIX-Protokollgemeinschaft festgelegt wird. Gehen Sie zu der FIX-Protokoll-Organisation gt Homepage, um mehr darüber zu lesen. Betrachtet auch Open Source FIX Engine. Eine Open-Source-Implementierung der FIX-Engine. Als nächstes kommt eine Marktdaten-Schnittstelle, um Echtzeit-Zeitsicherheits-Marktinformationen zu liefern, Daten, die von HighLowOpenClose zu Best BidBest Ask, Total gehandeltes Volumen, Letzter Preis, Letztes Volumen, Gebotsanfragen, Ask-Anführungszeichen usw. reichen Strategie, die Sie implementieren möchten. Ich glaube, Interactive Broker bietet einen Echtzeit-Daten-Feed über FIX. Exchange-Konnektivität ist die nächste, wo Ihr Algo interpretiert die Signale, erstellen Sie eine Bestellung und Routen zu einem Exchange oder ECN. Entwickeln sie im eigenen Haus könnte hart sein, wie Sie benötigen, um auszutauschen Exchange-Mitgliedschaft, zertifizieren Sie Ihre Plattform und zahlen einen regulären Mitgliedsbeitrag. Ein billiger Weg ist, eine Broker-API (wie IB) zu verwenden und Route der Reihenfolge durch sie. Historische Daten sind ebenso von wesentlicher Bedeutung, wie man das aktuelle Marktverhalten mit seinen historischen Werten vergleichen möchte. Parameter wie durchschnittlicher Spread, VWAP-Profile, durchschnittliches Tagesvolumen usw. können erforderlich sein, um die Entscheidungsfindung zu beeinflussen. Sie können es auf Datenbank (bevorzugt), aber wenn Geschwindigkeit der Essenz dann laden Sie es auf dem Server-Cache, wenn Sie Ihr Programm beginnen. Sobald Ihre Peripherie-Systeme eingerichtet sind, können Sie die Entwicklung Ihrer Algo-Programm, wie Sie es funktionieren wollen. Diese grundlegende Infrastruktur ermöglicht es Ihnen, einen übergeordneten Algo-Auftrag einzugeben, Marktdaten zu lesen, auf die Signale zu reagieren, aber untergeordnete Aufträge zu generieren und sie auf das Austauschauftragsbuch und die historischen Daten zu setzen, um die Entscheidungsfindung zu beeinflussen. Das OMS hält die Verknüpfung zwischen der übergeordneten Amp-Kinderreihenfolge, deren Echtzeitstatus und Aktualisierungen durch die Algo - oder Exchange-Konnektivitätsplattform. Was Sie in den Algo implementieren wollen, ist völlig bis zu Ihnen. Algorithmic Trading Systemanforderungen Derzeit nehme ich eine Klasse über Software-Architekturen. Für diese Klasse wählt jeder Schüler ein System, definiert seine architektonischen Anforderungen und entwirft eine Lösung, die diese Anforderungen erfüllen kann. Ich wählte ein algorithmisches Handelssystem wegen der technologischen Herausforderung und weil ich liebe Finanzmärkte. Algorithmische Handelssysteme (ATs) verwenden computergestützte Algorithmen, um Handelsentscheidungen zu treffen, Bestellungen zu übermitteln und Aufträge nach der Einreichung zu verwalten. In den letzten Jahren ATs haben an Popularität gewonnen und nun für die Mehrheit der Trades durch internationale Börsen gestellt. Es wird zwischen dem programmierten Handel und dem algorithmischen Handel unterschieden. Der programmierte Handel beinhaltet das Zerschlagen von Großaufträgen in Pakete kleinerer Aktien. In diesem Artikel wird der programmierte Handel als Sicherheitsanforderung eines ATs betrachtet. Algorithmische Trading Systems Einführung Im Allgemeinen gibt es fünf Arten von Marktteilnehmern: Einzelhandels-Investoren, proprietären Händlern, Market Maker, Buy-Side-Institutionen und Sell-Side-Institutionen. ATs werden am meisten von proprietären Buy-Side-Institutionen verwendet, aber diese Dynamik ändert sich. Der algorithmische Handel als Dienst (ATAAS) ermöglicht dem Privatanleger den algorithmischen Handel (siehe Anhang). Dieser Artikel beschreibt die architektonischen Anforderungen für eine ATs von einem proprietären Buy-Side-Institution verwendet. Auf der obersten Ebene hat ein ATs drei Funktionen: Entscheidungen zu treffen, Handelsaufträge zu erstellen und diese Aufträge nach der Einreichung zu verwalten. Darunter befinden sich eine Vielzahl detaillierter funktionaler Anforderungen, von denen einige durch die Architektur befriedigt werden können. Einführung in die Softwarearchitektur Eine Menge Debatte umgibt noch die Definition dessen, was eine Softwarearchitektur ist. Im Rahmen dieses Artikels wird Softwarearchitektur als die Infrastruktur definiert, in der Anwendungskomponenten, die Benutzerfunktionalität bereitstellen, spezifiziert, implementiert und ausgeführt werden können. Ein Softwaresystem sollte seine funktionalen und nicht-funktionalen Anforderungen erfüllen. Funktionsanforderungen legen die Funktionen der Systemkomponenten fest. Nicht funktionale Anforderungen erfordern Maßnahmen, durch die die Systemleistung gemessen wird. Ein Software-System, das seine funktionalen Anforderungen erfüllt, kann den Erwartungen der Anwender, z. B. Eine ATs, die Trades einreichen kann, aber nicht rechtzeitig, würde finanzielle Verluste verursachen. Die Softwarearchitektur stellt grundsätzlich eine Infrastruktur bereit, die die nicht funktionalen Anforderungen erfüllt und innerhalb der Komponenten, die funktionalen Anforderungen genügen, implementiert und ausgeführt werden können. Algorithmische Trading System Anforderungen können daher breit in funktionale und nicht-funktionale Anforderungen aufgeteilt werden. Funktionsanforderungen Unter den handlungsorientierten Entscheidungsgrundlagen gibt es drei Anforderungen: Holen Sie sich Marktdaten - laden, filtern und speichern Sie strukturierte und unstrukturierte Daten. Strukturierte Daten umfassen Echtzeit-Marktdaten von Reuters oder Bloomberg, die unter Verwendung eines Protokolls übertragen werden, z. B. FIX. Unstrukturierte Daten enthalten Nachrichten - und Social-Media-Daten. Handelsstrategie definieren - neue Handelsregeln und Strategien festlegen. Die Handelsregel besteht aus einem Indikator, einer Ungleichung und einem numerischen Wert, z. B. PE-Verhältnis lt 10. Die Handelsregeln sind in einen Entscheidungsbaum gegliedert, um eine Handelsstrategie zu definieren (siehe unten). Analysieren Sie Wertpapiere gegen Handelsstrategie - für jede Sicherheit, erhalten Sie Daten und filtern Sie es durch die Handelsstrategie zu bestimmen, welche Sicherheit zu kaufen. Zusätzlich: für jede offene Position bestimmen, welche Sicherheit zu verkaufen. Hinweis: Diese Anforderung kann variieren. Unterhalb der Create Trading Order Top Level Anforderung gibt es zwei High-Level-Anforderungen: Holen Sie sich Trade-Informationen - für jede Entscheidung, erhalten Sie das Sicherheitssymbol, Preis, Menge, etc. Erstellen Sie den Handel bestellen - für jede Entscheidung, geben Sie eine Order-Typ und fügen Sie Handelsinformationen . Es gibt sechs Ordertypen: Long, Short, Market, Limit, Stop und Conditional. Unter der obersten Anforderung des Managements befinden sich drei hohe Anforderungen: Verwalten von ausstehenden Aufträgen - für jede Bestellung bestätigen und bestätigen Sie, dass die Bestellung Route Bestellungen abgibt - jede Bestellung an eine Börse, einen dunklen Pool oder eine Brokerage weiterleiten Jeder übergebene Auftrag, wenn Auftrag zusammengebracht wird, dann verursachen eine geöffnete Position. Wenn Auftrag nicht zusammengebracht wird, stoppen Sie diesen Auftrag. Dieses Diagramm zeigt, wie eine Handelsstrategie als Entscheidungsbaum von Handelsregeln definiert werden könnte. Nicht-funktionale Anforderungen Es gibt viele nicht-funktionale Anforderungen, die zwischen einander ausgetauscht werden, z. B. Erhöhte Leistung kommt häufig zu erhöhten Gesamtbetriebskosten. Nicht-funktionale algorithmische Handelssystem Anforderungen umfassen, Skalierbarkeit - ist die Fähigkeit eines Systems zu bewältigen und unter einer erhöhten oder expandierenden Arbeitsbelastung. Ein ATs sollte in Bezug auf die Anzahl der Dateneinspeisungen in Prozessen, die Anzahl der ausgetauschten Transaktionen und die Wertpapiere, die es handeln kann, skalierbar sein. Leistung - ist die Menge an Arbeit durch ein System im Vergleich zu der Zeit und Ressourcen, die für diese Arbeit erforderlich. Ein ATs sollte schnelle Antwortzeiten (zurück zum Markt) und hohe Verarbeitung und Netzwerkdurchsatz haben. Modifizierbarkeit - ist die Leichtigkeit, mit der das System geändert werden kann. Ein AT sollte leicht modifizierbare Handelsstrategien und Datenverarbeitung haben Zuverlässigkeit - ist die Genauigkeit und Zuverlässigkeit eines Systems, um korrekte Ausgänge für die Eingänge zu erzeugen, die es empfängt. Da Fehler und Fehler in einem ATs zu riesigen Verlusten und Geldbußen führen können, ist die Zuverlässigkeit entscheidend. Siehe das Ritter Hauptstadt Debakel für Beweise dafür. Auditability - ist die Leichtigkeit, mit der das System auditiert werden kann. Aktuelle hochkarätige Fälle von ATs gehen Haywire haben ATs im Rampenlicht für Wirtschaftsprüfungsgesellschaften gesetzt. Sie sollten daher sowohl aus finanzieller als auch aus Compliance - und IT-Sicht auditierbar sein. Sicherheit - ist die Sicherheit einer Organisation gegen kriminelle Aktivitäten wie Terrorismus, Diebstahl oder Spionage. Weil Handelsstrategien geschützte sind und wertvolles geistiges Eigentum darstellen, müssen sie gesichert werden. Zusätzlich zum Schutz der ATs von gejagten, sollten Aufträge mit programmierten Handelsstrategien verschleiert werden. Fehlertoleranz - ist die Fähigkeit eines Systems, nach einem Fehler oder Ausfall weiter zu funktionieren. Dies ist vergleichbar mit der Zuverlässigkeit, mit der Ausnahme, dass die ATs weiterhin zuverlässig sein, auch nach einem Fehler, um finanzielle Verluste zu vermeiden. Interoperabilität - ist die Leichtigkeit, mit der das System in der Lage ist, mit einer Vielzahl von verwandten Systemen zu arbeiten. Dies ist für eine ATs wichtig, die für die Anbindung an Auftragsmanagementsysteme, Portfolioverwaltungssysteme, Risikomanagementsysteme, Buchhaltungssysteme und sogar Bankensysteme erforderlich ist. Architektonischer Geltungsbereich Der architektonische Geltungsbereich ist der von der Architektur unterstützte Dienstleistungsbereich, der von Komponenten verarbeitet wird, um deren funktionalen und nicht funktionalen Anforderungen gerecht zu werden. Eine detailliertere Aufgliederung dieses architektonischen Geltungsbereichs ist im detaillierten Anforderungsdokument enthalten. Auf hohem Niveau müssten die folgenden Services von der Architektur bereitgestellt werden: Eine modifizierbare Datenvorverarbeitungsumgebung, die mehrere Datenströme, Filter für irrelevante Daten und zeitliche Datenpartitionierung unterstützt. Eine verteilte Verarbeitungsumgebung, die mehrere Verarbeitungseinheiten unterstützt (Cluster), Echtzeit-Performance-Monitoring, ein nachrichtenorientiertes Kommunikations-Framework, Scheduling von temporären Datensätzen, Lastverteilung und Datenreplikation Individuelle Verarbeitungseinheiten - die In-Memory-Warteschlangen und komplexe Ereignisverarbeitung (auf Zeitdaten) (SAN) - unterstützt die zeitliche Datenaggregation, die kontinuierliche Abfrage und Protokollierung (für Audit Trails) Eine Datenwiederherstellungs - (DR) - Umgebung - repliziert das SAN - und Auftragsverwaltungssystem Eine Integrationsumgebung, die eine Standard-API für Komponenten und Verbindungen zur Verfügung stellt Interne und externe Komponenten zueinander Ein Auftragsmanagementsystem, das gleichzeitige Eingangsströme, passive Redundanz und Lastausgleich, ACID-Kriterien für Aufträge, einen Audit Trail unterstützt und repliziert wird. Eine Systemnutzungsumgebung, die mehrere Benutzerprofile unterstützt und eine Voll verwaltetes Frontend für das algorithmische Handelssystem Zugriffs - und Integrationsanforderungen Zugriffsanforderungen beschreiben, wie Benutzer auf die Systemkomponenten zugreifen können. Ein algorithmisches Handelssystem sollte drei Schnittstellen offenlegen: eine Schnittstelle, um neue Handelsregeln, Handelsstrategien und Datenquellen zu definieren, eine Backend-Schnittstelle für Systemadministratoren, um Cluster hinzuzufügen und die Architektur zu konfigurieren sowie eine schreibgeschützte Audit-Schnittstelle zur Überprüfung von IT-Kontrollen und Benutzerrechte. Voraussetzungen für die Integration zwischen Komponenten und externen Systemen werden Integrationsanforderungen genannt. Das algorithmische Handelssystem sollte dateibasierte Integration, Nachrichtenbasierte Integration und Datenbankintegration unterstützen. Folgende Anforderungen sollten durch die Architektur erfüllt werden: Datenbankintegration - Unterstützung von ODBC, JDBC, ADO und XQC Dateibasierte Integration - Unterstützung von CSV-, XML - und JSON-Dateien Nachrichtenbasierte Integration - Unterstützung von FIX. SCHNELL. Und FIXatdl Architectural constraints Die blauen Punkte zeigen die physischen Standorte, in denen die Netzwerklatenz minimiert wird und die roten Punkte die physikalischen Standorte großer Finanzbörsen zeigen. Um die Performance des algorithmischen Handelssystems zu maximieren, sollte man das System an Orten unterbringen, die die Netzwerklatenz minimieren. Quelle: MIT open press: dspace. mit. eduhandle1721.16285 Architektonische Zwänge sind Faktoren, die die Leistung der zu errichtenden Architektur einschränken. Die beiden Einschränkungen, die ich hier erwähnen will, sind physikalische Netzwerkzwänge und regulatorische Einschränkungen. Physische Netzwerkeinschränkungen werden durch schlechte Telekommunikationsnetze auf ein System gestellt. Um diese Einschränkung abzuschwächen, sollte das System aufgebaut werden, in dem die Netzwerklatenz minimiert wird. Eine weitere Möglichkeit, Netzwerk-Einschränkungen zu mildern, besteht darin, das algorithmische Handelssystem mit der Börse zu koordinieren. Dass gesagt worden ist, führt die Entscheidung zur Ko-Lokalisierung zusätzliche Verarbeitungs - und Platzbeschränkungen ein. Regulatorische Einschränkungen werden durch Gesetze und Vorschriften eingeführt, die meistens länder - und austauschspezifisch sind. Dies ist ein zunehmend wichtiger Faktor bei der Konzeption und Implementierung eines algorithmischen Handelssystems, da der algorithmische Handel nach dem Flash-Crash 2010 mehr reguliert wird. Grundsätzlich sollten ATs mindestens die Anforderungen der SECs bezüglich System Compliance und Integrität (SCI), der EMEA Richtlinien für algorithmische Handelssysteme, der algorithmischen ISO 9000 Standards (AT9000) und der International Financial Reporting Standards (IFRS) . Schlussfolgerung Algorithmische Handelssystemarchitekturen werden durch die strengen nicht funktionalen Anforderungen des Systems und der breiten Palette von regulatorischen und Compliance-Anforderungen für das automatisierte Trading kompliziert. Aufgrund dieser Komplexität sollte sorgfältig auf die Konzeption und Implementierung der Systemarchitektur geachtet werden. Bei der Gestaltung einer Open-Source-algorithmischen Handelsarchitektur möchte ich darauf hinweisen, dass architektonische Anforderungen, die oft übersehen werden, zu Beginn der Gestaltung solcher Systeme. Die in diesem Dokument festgelegten Anforderungen sind unwahrscheinlich vollständig und werden sich im Laufe der Zeit unweigerlich entwickeln. Die zweite Tranche dieses Artikels wird mein Design für eine Software-Architektur, die die oben genannten Anforderungen. Für weitere Informationen über algorithmischen Handel, wenden Sie sich bitte an mich wenden. Um eine Kopie des Berichts herunterzuladen, klicken Sie bitte hier. Eine vollständige Liste der Quellen finden Sie im Bericht ATAAS-Dienstleister umfassen, sind aber nicht beschränkt auf: Quantopian - Benutzer definieren quantitative Handelsstrategien in Python und können sie zurücktesten. Benutzer können diese Strategien auch auf Live-Märkten ausführen. Quantopian hat vor kurzem eine Investition von 6,7 Millionen USD erhalten, um ihre Dienstleistungen zu erweitern. EquaMetrics - mit RIZM-Benutzern visuell bauen neue algorithmische Handelsstrategien, Back-Test dieser Strategien und führen diese Strategien auf Live-Märkten. EquaMetrics hat vor kurzem angekündigt, neue Finanzierung für RIZM im Wert von 4,5 Millionen USD. Brokerage - einige Broker erlauben Tradern, Trading-Bots zu schaffen, die automatisch ihre Handelsstrategien ausführen.


No comments:

Post a Comment