CME Market Maker

Un algorithme de tenue de marché par apprentissage profond pour le marché à terme de Chicago, avec pour objectif un desk de tenue de marché automatisé.

En test
  • Python
  • C#
  • Rust
  • MBO
  • Apprentissage profond
  • Tenue de marché
  • Simulateur d’exécution
  • Données Chaque ordre

    Plusieurs années de données du CME, l’un des plus grands marchés à terme du monde.

  • Méthode Apprentissage profond

    Avec l’appui de l’analyse statistique ; les schémas sont appris à partir d’exemples réels du marché.

  • Critère d’évaluation Résultat net

    Après tous les coûts, sur une gamme de conditions de vitesse et de frais.

  • Technologie 3 langages, 3 rôles
    PythonModèles d’apprentissage
    C#Reconstitution et simulateur
    RustLecteur de données brutes

Introduction

Tout marché financier repose sur une hypothèse silencieuse : chaque fois que quelqu’un veut acheter ou vendre, une contrepartie est prête. Cette contrepartie, c’est le teneur de marché : un intervenant qui affiche en même temps un prix d’achat et un prix de vente, achète un peu moins cher et vend un peu plus cher, et gagne en répétant ce petit écart sur un très grand nombre de transactions. Il n’a pas besoin de savoir dans quel sens ira le prix. Son risque est d’avoir traité du mauvais côté juste avant un mouvement important.

Nous avons confié ce travail à un algorithme qui l’a appris du marché lui-même.

Le projet CME Market Maker a rassemblé plusieurs années de données du CME, l’un des plus grands marchés à terme du monde, au niveau de chaque ordre individuel. À partir de ces données, avec l’apprentissage profond et l’analyse statistique, nous sommes parvenus à un algorithme de tenue de marché qui est testé au sein d’une reconstitution fidèle de la bourse elle-même. L’objectif est un desk de tenue de marché automatisé qui gère le capital avec cet algorithme, et non selon le jugement humain du moment.

Rapports du simulateur

Ce projet comprend deux rapports complets du simulateur d’exécution, un par marché. Chaque rapport présente 25 scénarios croisant cinq niveaux de latence de transmission des ordres, de zéro à une milliseconde, avec cinq niveaux de frais. Les deux rapports sont téléchargeables et peuvent être examinés indépendamment de notre analyse.

  • GC Contrats à terme sur l’or
    • Déc. 2019 à juil. 2026période de test
    • 1 608jours de bourse
    • 1 905 921transactions simulées dans le scénario de base
    • 25 scénarios5 niveaux de latence × 5 niveaux de frais

    Un fichier HTML autonome, 7,6 Mo, en cinq langues

  • NQ Contrats à terme sur le Nasdaq-100
    • Mai 2017 à juin 2026période de test
    • 2 310jours de bourse
    • 2 792 780transactions simulées dans le scénario de base
    • 25 scénarios5 niveaux de latence × 5 niveaux de frais

    Un fichier HTML autonome, 8,2 Mo, en cinq langues

Il s’agit de résultats de simulation sur des données de marché enregistrées (un backtest), et non de trading réel ; ils ne constituent aucune garantie pour l’avenir. Chaque rapport montre aussi les scénarios perdants.

À l’intérieur de la plateforme

Ce sont de vraies captures d’écran des outils du projet, et non des maquettes. Chaque vue montre les mêmes données de marché ordre par ordre sous un angle différent. Cliquez sur l’image pour l’agrandir.

CME · Limit orders
Carte thermique des ordres en attente à chaque prix, avec la trajectoire du prix et les bulles des transactions Ruban des événements de marché sur trois pistes : enregistrement brut, après l’interpréteur, et moteur Graphique de prix à un tick avec marqueurs d’événements

Le volume des ordres en attente à chaque prix et à chaque instant sous forme de carte thermique, la trajectoire du prix par-dessus, et des bulles qui marquent les transactions.

18 442 942 événements, parcourables un par un, sur trois pistes : les enregistrements MBO bruts, les mêmes enregistrements après l’interpréteur, et les nœuds et événements d’ordres dans le moteur.

Un graphique de prix à un tick avec des marqueurs d’événements sur chaque tick. En dézoomant, on passe des ticks à une minute, puis jusqu’à quatre heures.

Approche

L’algorithme apprend à partir des données de marché et est mesuré au sein d’une reconstitution de ce même marché. Le travail a été mené en trois étapes :

  1. Des données brutes à l’image complète du marché

    L’écran de trading ne présente qu’une synthèse du marché. Nous traitons chaque message enregistré par la bourse pour reconstituer, à chaque instant, la liste des ordres en attente. Nous obtenons ainsi le volume disponible à chaque niveau de prix et la priorité de chaque ordre dans la file d’attente.

  2. De l’image du marché à l’algorithme

    En apprentissage profond, l’ordinateur apprend des schémas à partir d’exemples réels au lieu de suivre des règles écrites à la main. Avec l’appui de l’analyse statistique, notre algorithme apprend à distinguer les situations favorables et défavorables à une transaction de teneur de marché. Il détermine où placer un ordre, quelles transactions éviter et quand suspendre la cotation.

  3. De l’algorithme à l’exécution testée

    Une bonne décision doit aussi être exécutable sur le marché réel. Dans notre simulateur, les ordres de l’algorithme atteignent la bourse avec un délai, prennent leur tour dans la file d’attente et influent sur le marché, exactement comme ils le feraient dans la réalité. Le critère d’évaluation est le résultat financier net après tous les coûts.

Points clés

  • Un savoir qui réside dans le système, et et non dans la tête des gens.

    La tenue de marché traditionnelle repose sur l’intuition de traders expérimentés, et ce savoir se perd avec leur départ. Notre algorithme a appris ce qu’il sait des données de marché elles-mêmes. Les connaissances acquises sont conservées dans le système, les résultats sont reproductibles et le modèle peut être réentraîné.

  • Une cotation sélective plutôt qu’une présence permanente.

    Nous avons évalué une cotation bilatérale systématique en intégrant les coûts réels : elle s’est révélée déficitaire. Sans sélection, le teneur de marché s’expose à la sélection adverse, en étant exécuté juste avant une évolution défavorable du prix. L’algorithme vise précisément à distinguer les transactions à rechercher de celles à éviter.

  • Un résultat qui tient aussi à l’exécution.

    De nombreuses stratégies sont rentables sur le papier mais pas en pratique, parce que leur test suppose qu’un ordre est exécuté immédiatement au prix affiché. Dans notre simulateur, un ordre suit le même chemin que sur le marché réel, et l’exactitude de la simulation a été vérifiée par rapport à une reconstitution indépendante réalisée à partir des données brutes de la bourse.

  • Distinguer les résultats robustes des effets du hasard.

    Les modèles d’apprentissage peuvent mémoriser le passé sans avoir rien appris sur l’avenir. Pour l’éviter, l’algorithme est toujours mesuré sur des périodes qu’il n’a pas vues pendant l’entraînement, périodes agitées comprises. Chaque constat est aussi confronté à des données délibérément privées de tout schéma significatif, et s’il y apparaît aussi, il est écarté.

  • Évaluer les besoins d’infrastructure avant d’investir.

    Dans ce domaine, la vitesse à laquelle un ordre atteint la bourse et les frais de chaque transaction déterminent la frontière entre profit et perte, et améliorer l’un ou l’autre coûte cher. Nous testons l’algorithme sur toute une gamme de ces conditions à la fois. Ainsi, avant tout engagement financier, on sait clairement dans quelles conditions le plan est justifié.

  • Des rapports standard et lisibles.

    Le résultat de chaque test est présenté sur une page, avec les mesures et les appellations usuelles du secteur, en cinq langues. Un investisseur ou son conseiller peut lire et évaluer le résultat indépendamment de nous.

Feuille de route

  1. Réalisé

    L’infrastructure de données, la reconstitution du marché, l’algorithme de tenue de marché, le simulateur d’exécution et le système de rapports sont construits.

  2. En cours

    Aujourd’hui, nous mesurons l’algorithme dans un test pluriannuel, sous diverses conditions de vitesse et de frais et sur plus d’un marché.

  3. Ensuite

    Viendront ensuite la connexion aux données en direct, le déploiement à proximité de la bourse et une période d’essai avec un capital limité.

  4. Dernière étape

    La dernière étape est la tenue de marché avec du capital réel, sous la forme d’un desk automatisé.

Technologie

Les modèles d’apprentissage sont construits en Python et entraînés sur un processeur graphique. Le moteur de reconstitution du marché et le simulateur d’exécution sont écrits en C#, et le lecteur de données brutes en Rust. Une modification n’est acceptée qu’après avoir été comparée à la version précédente et avoir réussi les tests automatisés.