Langsame Orderausführung bei einer kleinen Prop-Trading-Firma: Messen Sie die Zeiten jeder Order, um die Verzögerung zu finden, und wenden Sie sich dann an ein Engineering-Unternehmen, einen Hosting-Anbieter oder den Broker.
Langsame Ausführung behebt derjenige, dem der Abschnitt des Orderpfads gehört, auf dem die Zeit verloren geht; die erste Aufgabe ist also, diesen Abschnitt zu finden. Versehen Sie jede Order an den Punkten, die Sie einsehen können, mit Zeitstempeln, und die größte Lücke zeigt Ihnen, an wen Sie sich wenden: an Ihre Entwickler oder ein Engineering-Unternehmen bei Verzögerungen in Ihrer Software, an einen Hosting-Anbieter, wenn es an der Entfernung liegt, an den Broker bei Verzögerungen auf seiner Seite.
Die kurze Antwort: Bevor Sie jemanden beauftragen, erfassen Sie für jede Order den Zeitpunkt der Entscheidung, des Versands, der Bestätigung durch den Broker und der Ausführung, und messen Sie den Round Trip im Netzwerk zum Broker. Eine Lücke, bevor die Order Ihren Server verlässt, ist Arbeit für Ihre Entwickler oder ein Engineering-Unternehmen, ein langsames Netzwerk ist eine Frage des Hostings, und eine Lücke innerhalb des Brokers ist Sache des Brokers oder ein Grund, sich anders anzubinden.
Was bedeutet „unsere Orderausführung ist zu langsam“?
Hinter der Beschwerde können vier Probleme stecken, und für jedes ist jemand anderes zuständig.
- Jede Order ist langsam. Die Verzögerung ist an einem ruhigen Morgen etwa genauso groß wie zur Markteröffnung. Das deutet auf Kosten hin, die bei jeder Order anfallen, etwa die Entfernung, die Art Ihrer Anbindung an den Broker oder langsame Arbeit, die Ihre eigene Software erledigt, bevor eine Order hinausgeht
- Orders sind schnell, bis im Markt viel los ist. Zur Markteröffnung oder bei Nachrichten springt die Verzögerung nach oben. Irgendwo warten Orders in einer Warteschlange: hinter einem Programm, das nicht hinterherkommt, einem Nachrichtenlimit oder einer Maschine, die mit anderer Arbeit beschäftigt ist
- Orders kommen rechtzeitig an, werden aber spät ausgeführt. Eine Limit-Order ruht im Orderbuch, bis jemand gegen sie handelt, und in einem schnellen Markt läuft der Preis davon. Zeitstempel zeigen, ob die Order zu spät kam. Welcher Preis verfügbar war, können sie nicht zeigen
- Der Bildschirm hinkt hinterher. Wenn die Kurse auf dem Trading-Bildschirm verzögert ankommen, klicken Trader zu spät und geben der Ausführung die Schuld. Das ist ein Marktdatenproblem, das ein eigener Artikel in diesem Blog behandelt
Auseinanderhalten lassen sich diese vier Fälle nur mit Zeitstempeln echter Orders und der Kurse, auf die sie reagiert haben. Nutzen Sie die Beschwerden der Trader, um die Tage auszuwählen, die Sie prüfen.
Wo bleiben die Millisekunden zwischen unserem System und der Börse?
Auf dem Hinweg durchläuft eine Order vier Abschnitte, und die Bestätigung kommt vom Broker zurück, manchmal erst, nachdem die Börse die Order angenommen hat.
- Ihre Seite. Die Strategie oder der Trader entscheidet, die Order wird erstellt, Ihre eigenen Prüfungen laufen, und die Order wird gesendet. Verzögerungen entstehen durch Arbeit vor dem Senden, Programmpausen, Netzwerkeinstellungen oder eine ausgelastete Maschine. Diesen Teil können Ihre Entwickler oder ein Engineering-Unternehmen ändern
- Die Leitung. Die Order läuft von Ihrem Server zum Zugangspunkt des Brokers. Die Verzögerung entsteht hier durch Entfernung, Routing im Internet und zusätzliche Hops wie ein VPN. Verkürzen kann sie ein Hosting- oder Colocation-Anbieter oder ein Netzwerkingenieur
- Der Broker. Sein Gateway nimmt die Order an, führt seine Prüfungen durch und leitet sie an die Börse weiter. Verzögerungen entstehen in den eigenen Systemen des Brokers und durch seine vorgeschriebenen Prüfungen. Ändern kann sie nur der Broker; Sie entscheiden, wie Sie sich anbinden und welchen Broker Sie nutzen
- Die Börse. Die Matching-Engine nimmt die Order an und schickt die Bestätigung zurück. Hier vergeht wenig Zeit: Nasdaq nennt für sein 10G-Hochgeschwindigkeitsnetz in der Colocation einen Round Trip von der Order bis zur Bestätigung von unter 50 Mikrosekunden. Diesen Teil ändert niemand, den Sie beauftragen können; Sie können nur näher heranrücken
In den USA sind die Prüfungen des Brokers nicht optional. SEC Rule 15c3-5 verpflichtet einen Broker mit Marktzugang, „die Eingabe von Orders zu verhindern, die angemessene, vorab festgelegte Kredit- oder Kapitalschwellen überschreiten“, und Orders abzulehnen, „die angemessene Preis- oder Größenparameter überschreiten“. Dieselbe Regel stellt diese Kontrollen „unter die direkte und ausschließliche Kontrolle des Brokers oder Dealers“. Sie können einen Broker fragen, wie lange seine Prüfungen dauern, aber die Regel erlaubt ihm nicht, sie abzuschalten.
Wie finden wir heraus, wo die Zeit verloren geht?
Erfassen Sie für jede Order vier Zeitstempel:
- Entscheidung: Die Strategie oder der Trader hat beschlossen, die Order zu senden
- Versand: Die Order hat Ihren Server verlassen
- Bestätigung: Die Meldung des Brokers, dass er die Order angenommen hat, ist auf Ihrem Server eingetroffen
- Ausführung: Die Ausführungsmeldung ist eingetroffen
Die Strecke von der Entscheidung bis zum Versand liegt in Ihrer Software. Vom Versand bis zur Bestätigung sind es die Leitung und der Broker, hin und zurück, dazu die Börse, falls der Broker auf sie wartet. Fragen Sie den Broker, wie er das handhabt. Bei einer Order, die im Orderbuch ruht, ist die Zeit von der Bestätigung bis zur Ausführung überwiegend Sache des Marktes.
Messen Sie eine weitere Zahl: den Round Trip im Netzwerk von Ihrem Server bis zum Zugangspunkt des Brokers. Er zeigt Ihnen, wie viel der Zeit zwischen Versand und Bestätigung auf die Leitung entfällt.
FIX ist ein Nachrichtenstandard für den Handel, gepflegt von der FIX Trading Community. Wenn Sie darüber angebunden sind, tragen die Nachrichten des Brokers zwei Zeitstempel: einen für den Zeitpunkt, zu dem die Nachricht gesendet wurde, und einen für den Zeitpunkt, zu dem das gemeldete Ereignis eintrat. Die FIX-Spezifikation nennt diese Felder SendingTime und TransactTime, und der Broker kann Ihnen sagen, wessen Uhr jedes davon setzt. Neben Ihren eigenen Zeitstempeln zeigen sie, welcher Teil des Round Trips auf wessen Seite stattfand.
Ihre Zeitstempel mit denen des Brokers zu vergleichen, funktioniert nur, wenn beide Uhren richtig gehen. FINRA Rule 6820 verlangt von Broker-Dealern, die an den Consolidated Audit Trail melden, ihre Geschäftsuhren auf höchstens 50 Millisekunden Abweichung von der Atomuhr des NIST zu synchronisieren. Nach EU-Regeln muss ein Mitglied eines Handelsplatzes, das algorithmischen Hochfrequenzhandel betreibt, seine Uhren auf höchstens 100 Mikrosekunden Abweichung von UTC synchronisieren. Eine Uhr, die um 50 Millisekunden danebenliegen darf, kann keine Verzögerung von wenigen Millisekunden verorten.
Versand und Bestätigung werden beide an Ihrer eigenen Uhr abgelesen, die Zeit dazwischen braucht also keine Synchronisation. Fangen Sie dort an. Ist dieser Round Trip kurz und fühlen sich Orders trotzdem langsam an, sehen Sie sich Ihre eigene Software an. Ist er lang, prüfen Sie zuerst, ob Ihr Programm pausiert oder ausgelastet war, als die Antwort eintraf; war es das nicht, geht die Zeit außerhalb Ihrer Software verloren.
Sehen Sie sich dann die langsamsten Orders an. Sortieren Sie die Orders einer Woche nach Round Trip und notieren Sie die Zeit, die nur eine von hundert Orders überschreitet; machen Sie dasselbe für die ersten Minuten nach der Markteröffnung und rund um vorab angekündigte Nachrichten. Ein Durchschnitt verdeckt die Momente, über die sich Trader beschweren.
Was kann die Ausführung bei einer kleinen Prop-Firma bremsen?
Prüfen Sie zuerst diese sechs Ursachen.
- Die API des Brokers läuft über ein Programm, das Sie selbst betreiben müssen. Interactive Brokers zum Beispiel beschreibt, dass seine TWS API auf der „Verbindung zur Trader Workstation oder zum IB Gateway“ beruht, sodass jede Order zuerst eines dieser Programme durchläuft. Seine Dokumentation setzt ein Standardlimit von „50 Anfragen pro Sekunde“ je Client-Verbindung und warnt, dass oberhalb dieser Rate in manchen Fällen „einige Orders in eine Warteschlange gestellt und verzögert werden können“. Für diesen Fall schlägt Interactive Brokers den Wechsel auf seine FIX API vor. Wenn hier Ihr Engpass liegt, fragen Sie den Broker, wie Sie sich sonst anbinden können
- Der Server steht weit weg von dort, wohin die Orders gehen. Ein Rechner im Büro oder eine weit entfernte Cloud-Region zahlt die Entfernung bei jeder Order doppelt, hin und zurück, und keine Codeänderung beseitigt sie. Für die kürzeste Entfernung bietet Nasdaq Kunden die Möglichkeit, „ihre Server und Geräte im Nasdaq Data Center unterzubringen“. Bevor Sie für Colocation bezahlen, messen Sie den Round Trip im Netzwerk von Ihrem Server bis zum Zugangspunkt des Brokers
- Vor dem Senden läuft langsame Arbeit. Die Order in eine Datenbank zu schreiben, darauf zu warten, dass eine Logzeile auf der Platte landet, oder einen anderen Dienst zu fragen, ob der Trade erlaubt ist, fügt jeder Order eine Wartezeit hinzu. Ist die Datenbank oder die Platte ausgelastet, wächst die Wartezeit. Halten Sie, was die Order braucht, im Speicher und schreiben Sie Datensätze erst, nachdem die Order gesendet wurde
- Netzwerkeinstellungen halten kleine Nachrichten zurück. Eine Order ist eine kleine Nachricht. Laut dem Linux-Handbuch werden ausgehende Daten gepuffert, „bis eine ausreichende Menge zum Senden vorhanden ist“, es sei denn, eine Socket-Option namens TCP_NODELAY ist gesetzt. Ihre Entwickler können prüfen, ob sie gesetzt ist
- Das Programm pausiert. Manche Garbage Collectors halten das ganze Programm an, während sie Speicher aufräumen. Selbst der Garbage Collector von Go, der den Großteil seiner Arbeit erledigt, während das Programm läuft, hat „kurze Stop-the-World-Pausen“, und der Leitfaden zum Go Garbage Collector führt sie unter den möglichen Latenzquellen auf. Kommt eine Pause, während eine Order gesendet wird, geht die Order verspätet hinaus. Charts, Backtests oder Reports auf derselben Maschine wirken ähnlich, denn die Order wartet auf den Prozessor
- Der eigene Pfad des Brokers ist langsam. Sein Gateway, seine Prüfungen und sein Routing liegen im Weg jeder Order, und Sie können nicht hineinsehen. Sie können fragen, wo sein Zugangspunkt liegt, welche Anbindungsarten er anbietet, welche Nachrichtenlimits für Ihr Konto gelten und ob er seine eigenen Zeitstempel für Ihre Orders herausgibt
Wie wird jede Ursache behoben, und wie groß ist der Aufwand?
- Zwischen Entscheidung und Versand vergeht bei jeder Order viel Zeit. Nehmen Sie langsame Arbeit aus dem Orderpfad und prüfen Sie die Netzwerkeinstellungen. Der Aufwand ist eine Änderung an Ihrem Code, manchmal eine einzige Einstellung
- Die Zeit zwischen Entscheidung und Versand springt in hektischen Momenten nach oben. Finden Sie heraus, worauf die Order wartet: eine Pause, eine Warteschlange, eine geteilte Maschine. Der Aufwand ist eine Änderung am Code oder am Hosting oder ein Neubau des Orderpfads, wenn das Design selbst Warteschlangen erzeugt
- Zwischen Versand und Bestätigung vergeht bei jeder Order viel Zeit. Rücken Sie den Server näher an den Zugangspunkt des Brokers oder wechseln Sie die Anbindungsart. Rechnen Sie mit einem Hosting-Vertrag und einem Umzug oder mit Integrationsarbeit für eine neue Anbindung
- Die Zeit zwischen Versand und Bestätigung springt mit dem Volumen nach oben. Finden Sie das Limit, an das Sie stoßen, beim Broker oder in Ihrer eigenen Anbindung. Unter Umständen braucht es nur ein Gespräch mit dem Broker oder weniger Nachrichten von Ihrer Seite
- Zwischen Bestätigung und Ausführung vergeht viel Zeit. Sehen Sie sich den Ordertyp und den Markt an. Das ist keine technische Aufgabe
Beheben Sie zuerst die günstigste bestätigte Ursache und heben Sie einen Neubau für den Schluss auf. Schreiben Sie das System nicht neu und wechseln Sie nicht den Broker, bevor jemand die Zeiten einer Order gemessen hat, denn die Verzögerung kann woanders liegen.
Wer kann uns helfen, die langsame Orderausführung zu beheben?
Wer helfen kann, hängt davon ab, wohin die Zeit geht.
- Ihr Broker. Nur er kann seine eigene Seite einsehen und ändern. Fragen Sie nach seinen Zeitstempeln für Ihre Orders, seinen Limits und seinen Anbindungsoptionen
- Ein Hosting- oder Colocation-Anbieter oder das Connectivity-Team der Börse. Sie vermieten Stellfläche nahe am Zugangspunkt des Brokers oder der Börse und verkaufen die Netzwerkleitungen dorthin
- Der Anbieter Ihrer Trading-Plattform, wenn Sie über eine lizenzierte Plattform handeln. Nur der Anbieter kann ihr Innenleben ändern, legen Sie ihm also Ihre Zeitstempel vor
- Ein Engineering-Unternehmen, das an Handelssystemen arbeitet. Es misst den gesamten Weg und ändert oder baut dann die Teile auf Ihrer Seite neu, etwa den Orderpfad, die Risikoprüfungen und die Anbindung an den Broker
- Ihre eigenen Entwickler, falls Sie welche haben. Mit den vier Zeitstempeln kann ein fähiger Entwickler jede Ursache auf Ihrer Seite des Weges prüfen
Stellen Sie jedem, den Sie beauftragen wollen, zuerst vier Fragen:
- Messen Sie, bevor Sie eine Lösung vorschlagen, und was genau versehen Sie mit Zeitstempeln?
- Trennt der Bericht unsere Seite, die Leitung und den Broker, und zeigt er die langsamsten Orders, nicht nur den Durchschnitt?
- Zu jeder Zahl, die Sie nennen: bei welchem Perzentil, unter welcher Last, an welchem Datum?
- Wenn sich herausstellt, dass die Verzögerung beim Broker liegt, was sagen Sie uns dann?
Lautet die Antwort auf die letzte Frage trotzdem, Ihr System neu zu bauen, suchen Sie weiter.
Wo passt amBrain ins Bild?
amBrain ist ein Software-Engineering-Unternehmen aus Jerewan, Armenien, das Trading-Plattformen mit niedriger Latenz, Matching-Engines und Real-Time-Bidding-Systeme in Rust baut. amBrain diagnostiziert langsame Trading-, Wett- und AdTech-Systeme: Die laufende Plattform wird durchgängig vermessen, und der Bericht benennt, wohin die Zeit geht.
amBrain baut Infrastruktur für den algorithmischen Handel: Orderausführung, Marktdaten und Pre-Trade-Risikokontrollen. Seine Arbeit im Trading umfasst die Entwicklung von Trading-Terminals, Order-Management-Systeme und die Börsenanbindung über das FIX-Protokoll. amBrain übernimmt Projekte, die bei einem anderen Team ins Stocken geraten sind, und bringt sie in Produktion. Drei Formate: vollständige Umsetzung, ein dediziertes Team oder in Ihr Team eingebettete Entwickler.
Wenn Sie am Anfang stehen, erfassen Sie die vier Zeitstempel an einem normalen und an einem hektischen Tag. Legen Sie sie jedem vor, an den Sie sich wenden, ob amBrain oder jemand anderem, damit das erste Gespräch bei der Frage ansetzt, wohin die Zeit geht.
Häufige Fragen
- Wird die Ausführung schneller, wenn wir unser System in Rust neu schreiben? Nur wenn die Zeit in Ihrer Software verloren geht, und nur in dem Teil, den die Order durchläuft. Rust gibt Garantien für Speichersicherheit, „ohne einen Garbage Collector zu benötigen“, womit Garbage-Collection-Pausen als Ursache wegfallen. Gegen eine ausgelastete Maschine, die Entfernung oder den Broker hilft das nicht
- Können wir messen, ohne unseren Code zu ändern? Ja, wenn Ihr System ausgehende Orders und eingehende Bestätigungen bereits mit Uhrzeit protokolliert: Der Round Trip vom Versand bis zur Bestätigung steht in diesen Logs
- Bekommen wir mit schnellerer Ausführung bessere Preise? Das kann niemand versprechen. Tempo verkürzt die Zeit zwischen einer Entscheidung und dem Eintreffen der Order; der Preis, den Sie bekommen, hängt auch von der Liquidität, vom Ordertyp und davon ab, was der Markt in der Zwischenzeit tut