Une introduction au monde du séquenceur
Salut les connaisseurs en technologie. Je m'appelle Aiden et j'ai passé les 4 dernières années à travailler en tant que recruteur Java sur le marché Front Office couvrant principalement Hong Kong et Sydney. Au cours de ces années, j'ai trouvé une passion pour un marché au sein de Java qui est Java à faible latence et plus particulièrement l'architecture de séquenceur.
Depuis ma jeunesse, j'étais un champion du 100 mètres dans le Warwickshire où j'ai toujours apprécié les vitesses élevées, alors quand j'ai commencé à apprendre comment fonctionnaient les systèmes de trading, la faible latence était une chose qui - ironiquement ou peut-être naturellement - a attiré mon attention.
Grâce au réseautage avec les ingénieurs et les responsables du trading, j'ai développé ces connaissances en faible latence et plus précisément sur le fonctionnement des séquenceurs. Cela m'a permis de me connecter avec les développeurs Java les plus rapides au monde et de m'engager avec des banques d'investissement.
J'ai vu des entreprises qui implémentent un séquenceur obtenir moins de 10 microsecondes sur leur moteur avec plus de 2 millions de transactions par seconde.
Ce blog expliquera pourquoi nous devrions utiliser Java au lieu de C++ pour une faible latence, comment le séquenceur est né et qui étaient les personnes clés dans la croissance du séquenceur. Bien sûr, cela ne pouvait pas se limiter à mon opinion personnelle à ce sujet et aux informations que j'avais recueillies au cours de mes années de travail.
Ce blog est idéalement destiné aux professionnels de l'informatique et aux cadres qui travaillent sur des systèmes de trading à haut débit et aux passionnés qui commencent ou souhaitent l'implémenter dans leurs systèmes de trading.
Commençons!
La première étape avant même de parler de séquenceur est évidente : pourquoi utiliseriez-vous même Java pour une faible latence ?
C'est généralement le premier casse-tête pour tout architecte ou responsable commercial. Lorsqu'ils décident pour la première fois du langage et du framework à utiliser, la plupart des architectes doivent tenir compte de quelques éléments tout en examinant les performances. Parmi ceux-ci, il y aurait la latence (délai de mise sur le marché d'une transaction), le débit (combien de commandes le système peut traiter) sans sacrifier l'un ou l'autre, et la main- d'œuvre pour le construire. Le choix évident pour beaucoup - en ce qui concerne la latence et le débit - serait de coder en C++, car le code est plus proche du matériel et donc meilleur pour les performances, par rapport à Java.
Java s'exécute généralement au-dessus du matériel en utilisant une machine virtuelle Java (JVM) qui peut normalement causer de nombreux problèmes de mémoire, entraînant un ralentissement des performances.
Pour lutter contre cela, le gourou Java Martin Thompson, l'ingénieur qui a construit le LMAX Disruptor, a cru en Jackie Steward (pilote de voiture de course) qui a inventé le terme « Sympathie mécanique » .
« Il n'est pas nécessaire d'être ingénieur pour être pilote de course, mais il faut avoir des sympathies mécaniques ».
C'est là qu'un ingénieur doit appliquer une compréhension du matériel à la création du logiciel. En comprenant la mécanique de la machine, un ingénieur peut obtenir les meilleures performances du système.
En codant Java avec les bonnes structures de données, les bonnes techniques de mémoire, les décisions réseau et la bonne conception architecturale, les équipes peuvent se rapprocher ou égaler les niveaux de performance C++. Le choix d'un protocole de datagramme utilisateur (UDP) et de la multidiffusion permet au séquenceur de diffuser des données vers plusieurs récepteurs de la manière la plus efficace possible. Cela permet ensuite au réseau d'accélérer la latence sur un système à thread unique, ce qui rend l'architecture propre et permet à tous les nœuds du système de recevoir exactement le même ensemble de messages.
Une autre raison pour laquelle Java est plus populaire dans les banques est qu'il y a plus de main- d'œuvre et qu'il est donc plus facile pour l'équipe d'embaucher des ingénieurs.
C++ est toujours une partie très spécialisée du marché, et cela cause généralement des maux de tête à tout responsable du recrutement en termes de recherche des bons talents, de les retenir et de ne pas payer le toit pour même les avoir.
Comme la plupart des banques utilisent Java, l'embauche dans ce langage prend tout son sens lorsque l'on examine tous les facteurs nécessaires à la création d'une plateforme de trading à faible latence réussie.
L'idéal serait de faire du code en Java et d'apprendre aux développeurs à avoir une sympathie mécanique et à apprendre les techniques mentionnées précédemment qui permettront des performances optimales lors de la construction du système.
Cela m'amène à vouloir écrire sur la conception architecturale qui a été utilisée pour le premier système de trading électronique jamais construit sans intervention humaine et sur une architecture qui me passionne : l'architecture Island ECN Sequencer.
Sequencer est un bus de messagerie intergiciel de multidiffusion UDP à thread unique qui multidiffuse essentiellement tous les messages en une séquence de nombres. L'architecture est entièrement déterministe, ce qui signifie que chaque nœud voit tous les messages dans le même ordre et que tous les événements peuvent être relus sur un seul flux produisant exactement le même état via des machines à états finis. Il est considéré comme une conception simple, mais il s'agit encore aujourd'hui de l'architecture la plus rapide pour les entreprises, même si elle a plus de 20 ans.
La prochaine partie détaillera ses origines et comment le séquenceur est passé de Broad Street à tout le monde avec les meilleurs échanges cryptographiques, les banques d'investissement, les teneurs de marché (les plus grands, les plus rapides et les plus rentables) et les acheteurs entreprises pour l'ensemble de leurs systèmes mondiaux.
Séquenceur de Levine et influence ECN de l'île
Revenons au début des années 90 à Wall Street où l'ancien décrocheur Josh Levine travaillait chez Datek Securities (maintenant connu sous le nom de TD Ameritrade).
Les traders de Datek sont devenus prospères et populaires pour leur pratique - créée par Levine - de contourner les teneurs de marché qui mettaient toujours à jour leurs cotations à la main au NASDAQ. Cela a bien sûr profité à Datek et à ses commerçants, jusqu'à ce que le NASDAQ le découvre et pénalise l'entreprise.
Patterson dans Darkpools mentionne :
"Les teneurs de marché du Nasdaq, et les vagues de nouvelles règles et d'obstacles que la NASD n'arrêtait pas d'imposer, étaient une source constante d'anxiété et d'indignation chez Datek. Les teneurs de marché ont systématiquement ignoré les ordres SelectNet de Datek, s'éloignant de leurs cotations affichées, entraînant souvent des opportunités manquées ou, pire, des pertes importantes alors que les commerçants, luttant pour sortir de leurs positions sur un marché en évolution rapide, étaient laissés à l'abandon.
Levine a vu une opportunité et a décidé de lancer officiellement sa propre boutique en 1996, Island ECN. Island a été enregistré au 6ème étage du 50 Broad Street (New York) et c'est là que le framework du séquenceur a officiellement commencé.
Désormais, Levine pourrait essentiellement contourner les teneurs de marché du NASDAQ en créant le bus de messagerie du séquenceur qui correspondrait à tous les ordres d'achat et de vente, puis exécuterait une transaction sans aucune intervention humaine. Levine avait construit le moteur sur FoxPro et fonctionnait sur DOHS (vous pouvez trouver son code FoxPro ici. ).
En construisant un système capable de faire cela, Levine est devenu la figure la plus importante des marchés modernes.
Étant un gars qui ne voulait pas être célèbre et essayait de rester privé de l'attention, Levine s'est enfermé dans son bureau et a consacré son temps à créer un système rapide, simple et évolutif. Fondamentalement, quelque chose qui pourrait supporter tout ce que n'importe qui lui lancerait. À la fin des années 1990, Island ECN prenait 10% de toutes les actions négociées sur le NASDAQ et exécutait 257 140 transactions quotidiennes (comparativement à 28 446 en 1997). C'était un énorme problème pour le NASDAQ car ils voyaient un volume massif de transactions de ce nouveau concurrent, qui rapportait les transactions au NASDAQ. Cependant, cela a entraîné une ponction sur la liquidité du NASDAQ car ils ne bénéficiaient pas de ces transactions.
Au cours de ces années, Island avait construit une grande équipe d'ingénieurs autour de Levine qui se composait de William Stirling, Mike Blum , Jonathan Ross et sans doute l'ingénieur le plus important étant Brian Nigito . (EX Tradescape). Levine le considérait comme son protégé et dirait que Nigito était un meilleur programmeur que lui.
Au début des années 2000, Island ne pouvait plus répondre aux demandes, ce qui a conduit Instinet à acquérir Island en 2002 pour 508 millions de dollars . Cela a entraîné le départ de Levine car il ne voulait pas rejoindre une entreprise rivale qu'il a toujours méprisée.
En 2003, finalement, l'équipe Island s'est séparée et Nigito est parti pour diriger la charge de 36 hommes chez Instinet (Inet) - en étroite collaboration avec Constantine Sokoloff, Nigito a repensé le moteur FoxPro de Levine en Java . À l'époque, Jonathan Ross était le CTO d'INET , et il est important de mentionner qu'il était une personne clé dans la conduite du séquenceur au NASDAQ et au CHI-X avec Nigito. À ce jour, l'INET ECN du Nasdaq utilise toujours l'architecture du séquenceur qui traite des milliards de messages par jour.
De l'autre côté, Stirling et Blum sont partis et ont rejoint UBS, qui est devenue en 2004 la première banque d'investissement à mettre en œuvre l'architecture insulaire.
Ils ont construit les fondations mondiales d'UBS pour les systèmes Equities à Stanford, qui sont d'ailleurs encore utilisés aujourd'hui (et cela fait partie de leur technologie de base à faible latence).
Après quelques années, en 2009, ils sont tous les deux partis pour développer l'architecture de séquenceurs ailleurs et sont devenus respectivement le CTO de Teza et Getco (KCG), ici Blum a rejoint son ancien collègue de l'île Nigito.
L'influence de Blum ne s'est pas arrêtée là puisqu'en 2017, il est devenu associé chez Goldman Sachs, où il a rejoint son compatriote insulaire Steve Lui pour diriger le projet de séquenceur Atlas au sein de l'équipe Electronic Trading. Goldman a investi des millions de dollars américains afin d'améliorer l'activité actions et Blum a mentionné « L'un des objectifs était d'améliorer les performances de l'entreprise sur les ordres commerciaux qui durent d'une microseconde (un millionième de seconde) à environ 30 secondes, des ordres de courte durée que le la banque peut avoir lutté avec dans le passé . Dans certains cas, les transactions qui ont pris des centaines de millisecondes se produiront plus rapidement que 100 microsecondes ».
Avec Goldman Sachs devenant la 2e banque d'investissement à mettre en œuvre l'architecture de Island à l'échelle mondiale, les entreprises de cryptographie et d'autres banques d'investissement ont maintenant commencé à emboîter le pas, en particulier dans l'APAC. Avec la zone Crypto maintenant et ayant un grand nombre de développeurs, j'ai vu un afflux de non-insulaires se développer, ce qui me fait penser que cette architecture - qui est si ancienne - continuera à se répandre et à être apprise au cours des prochaines années à venir .
Séquenceur toujours pas au rendez-vous
Cependant, le bus de messagerie du séquenceur est toujours une niche dans le monde de la fintech car de nombreuses plateformes de trading ne l'utilisent pas. La principale raison est qu'il est difficile d'obtenir une architecture correcte car vous avez besoin d'une équipe de professionnels du séquenceur pour la construire. Ceux-ci sont difficiles à trouver et signifient que vous entrez dans un marché de niche qui sera coûteux et prendra beaucoup de temps s'il est construit en interne. Il faut beaucoup de temps pour faire mûrir un système aussi complexe, plein de pièces mobiles et de cas d'angle.
Deuxièmement, de nombreux gestionnaires préfèrent s'attaquer au débit plutôt qu'à la latence et estiment qu'un système de négociation multithread serait mieux adapté pour gérer des produits plus tactiles et ne voudront donc pas emprunter la voie du séquenceur à un seul thread. Le perturbateur LMAX de Thompson est un choix populaire pour les systèmes de trading multithread, mais cela peut entraîner des pièges multithread si courants pour les développeurs et éliminer le déterminisme. L'approche monothread fournit un code plus robuste et sans bogue.
De plus, même entreprendre cet investissement reviendrait à repartir de zéro, ce qu'une banque hésiterait à faire car cela lui coûterait des millions. Pour une entreprise qui détient la majeure partie de la part de marché, vous pouvez imaginer pourquoi elle hésiterait à la changer. Si ce n'est pas cassé, pourquoi le réparer ?
Pour réduire légèrement le risque sur les investissements avec le temps de mise sur le marché, de nombreuses banques et entreprises de cryptographie utilisent des fournisseurs sous licence à faible latence qui peuvent faire fonctionner leur réseau et leurs moteurs en quelques mois. Il y en a d'anciens que les banques utilisaient, tels que : Tibco et Solace, qui sont lents mais populaires auprès des banques. Il s'agit de bus de messagerie génériques et non d'un réseau UDP multidiffusion fiable.
L'avenir
Pour conclure, il est évident que la croissance des séquenceurs dans le monde du commerce a été tributaire des gars de Island ECN et a connu quelques ondulations de croissance supplémentaire au cours des 20 dernières années. En ce qui concerne le marché actuel, avec la montée en puissance de la crypto et de plus en plus de banques mettant en œuvre un séquenceur depuis GS, je pense qu'il va doubler dans les années à venir.
Levine a créé quelque chose de si simple et rapide et ce n'est que maintenant que les sociétés commerciales commencent à l'adopter. Si vous voyez à quel point l'investissement a porté ses fruits pour ces entreprises qui peuvent gérer des millions de commandes par seconde en sous-micro java, vous feriez également l'investissement dans l'embauche d'un plus grand bassin de programmeurs Java actifs, les entreprises peuvent avoir la main-d'œuvre pour obtenir commencé sur le marché.
De plus, il y a quelques fournisseurs de séquenceurs que je peux vous présenter, et cela vous permettra ensuite d'être opérationnel dans les 6 mois et donc de ne pas avoir besoin d'embaucher les gars de base pour cela. De plus, l'investissement des banques suit des cycles, mais si vous êtes actuellement au sommet et décidez de ne pas investir, vous ne serez que laissé pour compte par la concurrence. Le potentiel du séquenceur de Levine est infini. Cela a commencé au 60th Broad Street et je crois que ce séquenceur peut aller plus loin que le trading et un jour nous le verrons dans l'espace.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































