Le 1er août 2012, Knight Capital Group, une entreprise de trading haute fréquence, a connu un désastre financier sans précédent aux premières heures de l'ouverture de la bourse. Quelque chose a très mal tourné dans le code qui avait été introduit pendant la nuit. Il s'agissait d'un algorithme de négociation à haute fréquence conçu pour acheter et vendre des quantités massives d'actions dans un court laps de temps. La combinaison d'un mauvais timing et de mauvais ordres a conduit à des résultats désastreux. Knight Capital Group est une société américaine de services financiers d'envergure mondiale qui exerce des activités de tenue de marché, d'exécution électronique, de vente et de négociation institutionnelles. En 2012, Knight était le plus grand négociateur d'actions américaines, avec une part de marché d'environ 17 % sur le New York Stock Exchange (NYSE) ainsi que sur le Nasdaq Stock Market.
Il a fallu 17 ans de travail acharné pour faire de Knight Capital Group l'une des principales maisons de courtage de Wall Street. Et tout a failli s'arrêter en moins d'une heure. Ce qui est arrivé à Knight le matin du 1er août 2012 est le cauchemar de tout chef d'entreprise : une simple erreur humaine, facilement repérable a posteriori mais presque impossible à prévoir, a menacé de mettre fin à l'entreprise.
Chez Knight, un nouveau logiciel de négociation contenait une faille qui n'est devenue apparente qu'après l'activation du logiciel à l'ouverture de la Bourse de New York (NYSE) ce jour-là. Le logiciel erroné a entraîné Knight dans une frénésie d'achat, s'emparant de 150 actions différentes pour un coût total de plusieurs milliards de dollars, le tout au cours de la première heure d'ouverture de la bourse.
Selon les règles de la bourse, Knight aurait dû payer ces actions trois jours plus tard. Cependant, il n'y avait aucun moyen de payer, étant donné que les transactions n'étaient pas intentionnelles et qu'elles n'avaient aucune source de financement. Les seules alternatives étaient d'essayer de faire annuler les transactions ou de vendre les actions nouvellement acquises le même jour.
Knight a tenté de faire annuler les transactions. La présidente de la Securities and Exchange Commission (SEC), Mary Schapiro, a refusé de le faire pour la plupart des actions en question, et cette décision semble avoir été la bonne. Des règles ont été établies après le "flash crash" de mai 2010 pour déterminer quand les transactions doivent être annulées. La frénésie d'achat de Knight n'a pas fait grimper le prix des actions achetées de plus de 30 %, le seuil d'annulation, sauf pour six actions. Ces transactions ont été annulées. Dans les autres cas, les transactions ont été maintenues
Des délais serrés pour les développeurs
Les développeurs ont été chargés de porter leur robot HFT (High-frequency, en français, transactions à haute fréquence) sur un service API NYSE à venir, dont la mise en service a été annoncée moins de 33 jours plus tard. Ils ont donc entamé un sprint de 80 heures par semaine. Le robot HFT était écrit en C++. Pour ne pas avoir à recompiler une seule fois, l'architecte en chef a décidé de conserver exactement la même classe et la même signature de méthode pour leur méthode PowerPeg::trade(), qui était leur robot de test automatisé qu'ils utilisaient depuis 2003. Cela signifiait également qu'ils n'avaient pas à mettre à jour le WSDL (Web Services Description Language, un langage de description fondé sur XML) pour les clients qui utilisaient le robot.
Ils ont supprimé l'ancien code mort et mis en place le nouveau code. Un code qui faisait appel à une logique réelle, au lieu du code de test, qui était conçu, par défaut, pour acheter l'offre la plus élevée qui lui était faite.
Ils l'ont testé, ils ont écrit des tests unitaires, tout semblait bon. Ils ont donc décidé de le déployer à 8 heures EST, 90 minutes avant l'ouverture du marché. Les testeurs d'assurance qualité l'ont testé en production et ont donné le feu vert. Tout le monde était très heureux. Ils avaient réussi. Ils avaient respecté le délai serré et déployé l'application avec seulement 90 minutes d'avance...
Ils se sont immédiatement rendus à une réunion de sprint standup puis à une réunion de sprint retro. Conformément à la politique de leur bureau, ils ont laissé leurs téléphones (en sourdine) à leur bureau.
« Tuez les serveurs !!! »
Pendant la rétro, les marchés ont ouvert à 9:30 EDT, et le nouveau bot a simplement commencé à acheter l'offre la plus élevée pour tous les titres de sa liste d'achat. Les marchés n'ont pas réagi de manière très...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Quelles leçons les autres entreprises peuvent-elles tirer de cet événement ? Pensez à la manière dont votre propre entreprise gère les risques liés aux bogues logiciels et à la qualité du code.