La technologie et la finance constituent le cœur de l'activité d'ABC arbitrage. Chez nous, l'ingénierie logicielle dépasse la simple fonction de support pour devenir un moteur clé de notre innovation. Avec plus de 70% d’ingénieurs, ce que nous faisons est hautement technique à tous les niveaux : finance, logiciel, système, réseau, etc. Des défis complexes et variés auxquels nous faisons face quotidiennement, pour concevoir et exploiter nos outils, afin de répondre aux besoins d’analyse, de recherche et de trading.
ABC arbitrage
Technologies et outils
Backend
Python
60%Redis
30%C#
100%Cassandra
70%C++
10%InfluxDB
100%Winforms
30%SQL Server
100%
Frontend
Dashboards by Keen IO
10%Windows Presentation Foundation
100%
Devops
Amazon S3
60%Azure
30%GitHub
30%GitLab
100%Ansible
80%Kubernetes
80%VMware vSphere
20%AWS
60%AWS Batch
20%FluxCD
50%
ZeroLog ⚙️
Librairie de logging haute performance zero-alloc qui a été développée spécialement pour être utilisée dans les composants les plus critiques de notre plateforme de trading, où les contraintes de latence rendent impossible l’usage de librairies plus connues (ex. : log4net).
Zebus ⚙️
Depuis près de 15 ans, le messaging est au cœur de notre architecture orientée service. Zebus est un service bus peer-to-peer open source développé et maintenu par les équipes d’ABC. Il est conçu autour des principes de CQRS, et s’appuie entre autres sur Zmq et Cassandra.
Disruptor.NET ⚙️
Disruptor.NET est un portage en C# de la célèbre bibliothèque Java de communication inter-threads haute performance. Après avoir contribué à une mise à jour majeure (v2.10.0 à v3.3.4), l'équipe d'ABC arbitrage assure désormais officiellement la maintenance du projet.
Organisation et méthodologies
Notre équipe de développement est organisée en deux catégories.
La première concerne les membres affectés aux Business Units (BU), où ils travaillent en étroite collaboration avec des quants pour créer ou améliorer des stratégies de trading.
La seconde concerne des projets spécifiques priorisés tous les quadrimestres. Ces projets, de quelques semaines à quelques mois, impliquent 2 à 5 développeurs et offrent une autonomie dans l'organisation (daily stand-ups, sprints, etc.).
Bien que les équipes BU soient généralement stables, il est possible de passer d'une organisation à l'autre chaque quadrimestre pour favoriser une flexibilité et une diversité d'expérience au sein de l'équipe.
Projets et défis techniques
StrategyService
Les automates de trading qui exécutent nos stratégies d’arbitrages sont entièrement développés en C#. Nous avons conçu notre premier service low-latency en .NET il y a plus de 10 ans, et depuis, nous continuons de faire évoluer notre plateforme de trading en nous appuyant sur la technologie .NET. Nous utilisons des techniques de programmation bas-niveau et du code zero-allocation pour garantir la stabilité de nos latences, et nous nous appuyons sur le Disruptor pour la communication inter-threads. L’ensemble des inputs de nos stratégies sont journalisés dans des “trading dumps”, ce qui nous permet de les rejouer a posteriori pour des besoins d’investigation, d’optimisation ou de recherche.
DumpReplayService
Notre équipe a récemment mené à bien un projet visant à utiliser des ressources AWS pour rejouer les “trading dumps”. Ces fichiers binaires, capturant les événements d’une session de trading, sont stockés localement puis uploadés sur S3. En utilisant la même version du code que celle employée lors de la session live, il est possible de reconstituer l'état interne de la stratégie et d'extraire des indicateurs pour optimiser son comportement. Ce processus nécessite de traiter de gros volumes de données. Cependant, grâce à l'élasticité du cloud, nous exécutons ces traitements en parallèle. Le déploiement réussi de ce projet démontre notre expertise en solutions technologiques innovantes et scalables.
Processus de recrutement
Le recrutement d’un développeur chez ABC se déroule en plusieurs phases.
D’abord, on propose au candidat de réaliser un homework sans contrainte de temps, qui lui permet de montrer sa capacité à résoudre un problème hors contexte d’entretien, dans un environnement de travail qui lui est familier.
Suivent ensuite deux entretiens techniques: le premier en visioconférence avec un développeur senior, et le second sur site avec deux autres seniors de l’équipe. Ce second entretien est plus complet: présentation du CV, tests pratiques, présentation de l’entreprise, des projets, de la stack, du poste, etc.
Le processus se termine par un dernier entretien avec un membre de l'équipe RH et le management.