Quand le carnet d'ordres des écrans de trading se fige ou saute dans un marché agité, c'est en général le flux de données de marché qui est en cause. Il perd des mises à jour à la réception, assemble mal le carnet ou l'envoie trop lentement à des centaines d'écrans. Mesurez d'abord votre heure la plus chargée, puis testez chaque société sur un enregistrement de cette journée.
Si le carnet d'ordres de vos écrans de trading se fige, saute ou affiche des prix impossibles dans un marché agité, le défaut se trouve en général à l'un de trois endroits. Des mises à jour se perdent là où arrive le flux de la bourse, le carnet est mal assemblé, ou il atteint trop lentement des centaines d'écrans. Mesurez votre heure la plus chargée avant d'engager qui que ce soit, puis testez chaque société que vous envisagez sur un enregistrement de cette journée.
La réponse courte : une bourse numérote chaque mise à jour qu'elle envoie. Un système bien conçu repère aussitôt un numéro manquant, marque le carnet comme périmé et le reconstruit. Les problèmes commencent quand le trou passe inaperçu ou que la reconstruction prend plusieurs secondes, ou quand une seule connexion lente retient tous les traders. Enregistrez le flux de votre journée la plus chargée et faites de son rejeu le test que chaque société doit réussir : avant d'acheter un produit, et comme critère de réussite de la première phase quand une équipe construit pour vous.
À lire aussi
Cela se produit aux moments les plus chargés, comme une annonce de banque centrale ou l'ouverture du marché. Le carnet à l'écran s'arrête une seconde ou deux, puis saute. Des ordres annulés restent visibles. Parfois, le prix le plus élevé proposé par un acheteur dépasse le prix le plus bas demandé par un vendeur : on parle alors de carnet croisé. Sur une seule bourse, en dehors des enchères d'ouverture et de clôture, de tels ordres s'exécuteraient aussitôt. Un carnet croisé pour une seule bourse sur votre écran signifie donc que votre copie de ce carnet est fausse.
Le support reçoit alors les captures d'écran de deux traders qui voient des carnets différents pour le même instrument. Ou un trader conteste le prix auquel un ordre a été exécuté, parce que l'écran en affichait un autre.
Le flux du carnet d'ordres d'une bourse est une suite de petits changements : un ordre ajouté, un ordre annulé, une transaction. Votre système part d'une copie complète du carnet, appelée instantané (snapshot), et applique les changements dans l'ordre. Chaque changement est numéroté, ce qui permet de repérer celui qui manque. La spécification de Nasdaq pour son flux TotalView-ITCH 5.0 indique que le flux « se compose d'une série de messages séquencés », c'est-à-dire numérotés dans l'ordre.
Dans un marché agité, le flux de changements augmente brusquement. Certains se perdent en route ou dans vos propres serveurs, et d'autres arrivent dans le désordre. Si le système ne voit pas le trou, il applique tout ce qui arrive et affiche un carnet qui ne correspond plus à celui de la bourse. S'il remarque le trou mais met plusieurs secondes à se rétablir, l'écran reste figé.
Les bourses s'attendent à ce que leurs clients perdent des mises à jour. La documentation de CME Group pour son flux MDP 3.0 indique qu'après un trou, « il faut partir du principe que tous les carnets tenus dans le système du client peuvent ne plus refléter l'état correct le plus récent ».
Il y a trois endroits, et chacun demande sa propre correction. Les ingénieurs appellent le troisième le fan-out, parce qu'un seul flux de mises à jour se déploie en éventail vers de nombreux écrans. L'article technique dont le lien figure plus haut les détaille tous les trois.
Le premier endroit est la réception, là où arrive le flux de la bourse. Certaines bourses offrent des moyens de récupérer les données perdues. L'un des protocoles de diffusion de Nasdaq, MoldUDP64, permet aux récepteurs de « détecter les paquets manqués et de les redemander ». CME envoie son flux en double, sur des lignes appelées A et B, et diffuse un flux distinct d'instantanés pour remettre les carnets à jour. Rien de tout cela n'aide si votre système ne remarque pas le trou.
Ensuite, le carnet est assemblé, et le danger est ici un changement appliqué deux fois, dans le désordre ou par-dessus le mauvais instantané. Binance, une bourse crypto, détaille dans son guide les étapes exactes pour raccorder un instantané au flux en direct. Un carnet construit sans elles affiche toujours des prix et a l'air correct, mais les prix sont faux.
Vient enfin le fan-out, où le carnet part vers des centaines de sessions de traders, une par écran connecté. Un trader sur une connexion mobile faible, ou un terminal qui s'est bloqué, lit les mises à jour lentement. Si le serveur attend cette session, toutes les autres attendent aussi. Laisser grossir sans limite les mises à jour en attente pour cette session ne vaut pas mieux, car le serveur manque de mémoire et tombe en panne pour tout le monde.
Dans un système bien conçu, le serveur met les mises à jour en ordre une seule fois et envoie le même résultat à chaque session. Une session qui prend du retard reçoit soit l'image la plus récente du carnet, en sautant les étapes intermédiaires, soit une déconnexion dont le serveur indique la raison, et l'écran se reconnecte alors avec une copie à jour. Un flux peut casser à plusieurs endroits à la fois.
Prenez votre heure la plus chargée du mois dernier et relevez-en les chiffres suivants :
Enregistrez ensuite le flux brut d'une journée chargée exactement tel qu'il est arrivé, avec l'heure d'arrivée de chaque paquet. Rejouer cet enregistrement à vitesse réelle et plus vite, c'est le test que vous faites passer à chaque société de votre liste et que vous répétez après chaque correction.
Le logiciel qui reçoit le flux d'une bourse et tient le carnet s'appelle un feed handler. Vous avez trois voies, et vos mesures devraient en désigner une. Les deux dernières peuvent se combiner.
Corrigez le feed handler que vous avez quand les mesures désignent un défaut clair, comme des trous qui passent inaperçus ou une reconstruction lente, et que les personnes qui connaissent le code sont toujours là.
Un feed handler tout fait est un logiciel sous licence qui se connecte à une bourse, repère les trous et remet à votre système un carnet correct et à jour. Un flux managé va plus loin : un fournisseur de données de marché se connecte aux bourses, et vous recevez de lui un seul flux dans un seul format.
Reconstruisez la couche qui envoie les données aux traders quand la réception fonctionne mais que les problèmes persistent. Les traders voient toujours des carnets différents, une session lente ralentit toutes les autres, ou vous prévoyez de servir beaucoup plus de sessions qu'aujourd'hui.
Soumettez chaque société de votre liste aux cinq mêmes tests :
amBrain construit des infrastructures de trading algorithmique : exécution des ordres, données de marché et contrôles de risque pre-trade.
Une ligne du site web d'amBrain indique : « Développement de terminaux de trading, systèmes de gestion des ordres et intégration des places de marché via le protocole FIX. »
amBrain diagnostique les systèmes lents dans le trading et l'ad tech : la plateforme en fonctionnement est mesurée de bout en bout, et le rapport indique où passe le temps.
amBrain développe des logiciels depuis 2019. Elle décrit son équipe en une ligne : « Une équipe pouvant aller jusqu'à 40 personnes, dont environ 75 % de seniors. » Elle travaille en trois formats : la prestation complète, une équipe dédiée ou des ingénieurs intégrés à votre équipe. Le client conserve la pleine propriété du produit et du code, à l'exception des composants réutilisables d'amBrain.
Cet article n'est pas une étude de cas et ne décrit aucun travail réalisé pour un client. Il ne cite aucun chiffre de latence pour les systèmes qu'amBrain a construits, et aucun prix ni délai.
Si amBrain figure sur votre liste restreinte, posez-lui les cinq mêmes questions qu'à toutes les autres sociétés, et faites de votre enregistrement le critère de réussite de tout travail convenu.
Apportez votre architecture actuelle et le mode de défaillance qui vous inquiète : nous les passerons en revue ensemble en une demi-heure.