02 · Les APIs Rithmic en détail¶
Trois interfaces de programmation, plus un mode de fonctionnement particulier. Le choix entre elles détermine le langage, l'architecture et le coût du projet.
Vue d'ensemble¶
| API | Transport | Langages | Latence annoncée | Cible |
|---|---|---|---|---|
| R|API+ | binaire propriétaire | C++, .NET | granularité microseconde | Applications de bureau, plateformes |
| R|Protocol API | WebSocket + Protocol Buffers | tous | sous-milliseconde | Web, mobile, cloud, Python |
| R|Diamond API | connexion directe passerelle | C++ | < 250 µs de bout en bout | HFT professionnel |
Ces caractéristiques sont documentées par Ironbeam, courtier intégrant Rithmic (Ironbeam).
Comment choisir en une phrase
Pour un bot retail en Python : R|Protocol API. Les deux autres n'ont de sens que si vous écrivez en C++ ou si vous visez une latence que votre hébergement ne permet pas de toute façon.
R|API+¶
Un ensemble de bibliothèques C++ et .NET distribuées sous licence à des clients professionnels. Elles fournissent des données de marché temps réel non throttlées, des données tick historiques, des barres d'une minute historiques, ainsi que l'exécution et la gestion d'ordres.
Fonctionnalités notables :
- ordres côté serveur : stops suiveurs, brackets et OCO restent actifs même si la connexion du client tombe. C'est une propriété importante pour un bot retail : elle protège contre la panne de la machine du trader ;
- types de barres personnalisés (temps, tick, volume, range) calculés côté Rithmic ;
- horodatage à granularité microseconde.
Inconvénient décisif pour la plupart des lecteurs : le développement en C++ ou .NET, et une distribution sous licence orientée professionnels.
R|Protocol API¶
C'est la voie moderne et la seule réellement praticable en Python.
Spécification. Une interface « wire line » pour communiquer avec la plateforme d'exécution R|Trade. Les applications peuvent être écrites dans n'importe quel langage, sur n'importe quel système d'exploitation supportant les WebSockets et les Google Protocol Buffers.
Mécanique.
- Vous recevez un jeu de fichiers
.protodécrivant les messages. - Vous les compilez dans votre langage (
protoc). - Vous ouvrez une connexion WebSocket vers une passerelle Rithmic.
- Vous vous authentifiez avec vos identifiants plus un nom d'application
(
RITHMIC_APP_NAME) qui vous est attribué. - Vous ouvrez une session par plant (ticker, order, history, PnL).
Chaque message protobuf porte un template_id qui identifie son type. Le
protocole est requête/réponse pour les commandes, et push pour les flux.
Le nom d'application n'est pas cosmétique
Rithmic identifie les applications par leur nom déclaré. Une application non
conforme ou usurpant un nom est refusée en production. Les variables
d'environnement standard utilisées par les bibliothèques clientes sont
RITHMIC_APP_NAME, RITHMIC_DEMO_USER, RITHMIC_DEMO_PW,
RITHMIC_DEMO_URL.
R|Diamond API¶
Le haut du panier : connexions directes aux passerelles orientées bourse, avec des temps de transit annoncés inférieurs à 250 microsecondes entre la réception de la donnée et l'exécution de l'ordre.
Hors sujet pour ce rapport
Cette API ne présente d'intérêt qu'associée à une colocation et à une stratégie dont l'horizon est la microseconde. Avec un VPS Chicago à 0,52 ms, l'écart entre R|Protocol et R|Diamond est noyé dans le bruit du réseau. Payer pour Diamond sans colocation, c'est acheter une voiture de course pour rouler dans les embouteillages.
Le Plugin Mode¶
Mode de fonctionnement où votre application se connecte via une session déjà ouverte par une plateforme (typiquement R|Trader Pro), au lieu d'ouvrir sa propre session. Facturé environ 20 $/mois par login chez EdgeClear (EdgeClear).
Intérêt : économiser un identifiant utilisateur et des frais de données supplémentaires, tout en gardant une plateforme graphique ouverte pour la supervision humaine — ce qui a une importance directe pour la conformité aux règles des prop firms (voir Règles des prop firms).
La procédure d'accès¶
C'est un point souvent flou, alors qu'il conditionne le calendrier du projet.
1. Contacter Rithmic
→ nom, société, adresse, téléphone, email, API souhaitée
→ réception du dev kit (.proto, docs, exemples)
2. Développer contre Rithmic Test
→ aucune conformance requise
→ données CME réelles disponibles
3. Soumettre l'application à la revue de conformance
→ obligatoire pour Rithmic 01 (production) et Paper Trading
→ obligatoire pour tout FCM ID
4. Recevoir les identifiants de production
Cette séquence est décrite par Ironbeam et confirmée par les documentations des bibliothèques clientes (Ironbeam).
Le piège de l'ordre des opérations
L'erreur la plus coûteuse consiste à développer autour d'une API avant d'avoir confirmé que le courtier, le FCM, le type de compte, la bourse et le package de données visés la supportent (LP Futures).
Traduit pour un lecteur en prop firm : écrivez un mail à votre prop firm avant d'écrire une ligne de code, en demandant explicitement si l'accès R|Protocol API est autorisé sur le type de compte visé, en évaluation et en financé, et à quel tarif.
Les bibliothèques clientes open source¶
Aucune n'est officielle. Toutes enveloppent R|Protocol API.
| Bibliothèque | Langage | État | Notes |
|---|---|---|---|
async_rithmic |
Python 3.10+ | active, MIT | Async, reconnexion automatique, multi-comptes |
pyrithmic |
Python | ancêtre d'async_rithmic | Moins maintenu |
rithmic-rs |
Rust | active | Clients par plant, stratégies de reconnexion |
async_rithmic¶
C'est le choix par défaut pour un bot Python. Fonctionnalités annoncées par le projet :
- architecture asynchrone (
asyncio) ; - reconnexion automatique résiliente aux coupures réseau, avec backoff et logique de retry configurables ;
- retry automatique des requêtes lentes, avec nombre d'essais et durée configurables ;
- gestion multi-comptes ;
- barres temporelles historiques et temps réel ;
- flux de ticks et de meilleur bid/ask ;
- flux de profondeur L2 : tous les bids/asks sur plusieurs niveaux de prix.
Ce que la bibliothèque ne fait pas
Ses auteurs le précisent explicitement : elle gère la connectivité et le streaming avec Rithmic, mais ne résout pas les problèmes de plus haut niveau — gestion des pannes, correction sous charge. L'idempotence des ordres, la réconciliation d'état après reconnexion et la logique d'arrêt d'urgence sont à votre charge. C'est l'objet du chapitre Mise en production et supervision.
Le MBO n'est pas dans la bibliothèque Python
async_rithmic documente le streaming de profondeur L2. Le flux MBO
(L3) est une capacité de Rithmic exposée dans R|API+ et exploitée par des
plateformes comme Bookmap ; il n'apparaît pas dans les fonctionnalités
annoncées de la bibliothèque Python.
Concrètement : un bot Python via async_rithmic travaille en L1 + L2 +
trades, ce qui est suffisant pour toutes les stratégies décrites dans ce
rapport (cf.
MBP, MBO et niveaux de données).
Vérifiez l'état courant de la bibliothèque avant de fonder une stratégie sur
la position en file.
Comparaison avec les alternatives¶
| API | Transport | Points forts | Pour qui |
|---|---|---|---|
| Rithmic R|Protocol | WebSocket + protobuf | Order flow, MBO, faible latence | Bots order flow |
| CQG Web API | WebSocket | Accès marchés large, FIX, analytics | Intégrations entreprise |
| Ironbeam xAPI | REST + WebSocket | API native du courtier, simple | Bots Python simples |
| Trading Technologies | .NET / C++ SDK | Exécution institutionnelle, drop copy | Professionnels |
Synthèse de LP Futures : Rithmic est désigné comme le choix des applications d'order flow, Ironbeam xAPI comme le plus simple en REST/WebSocket.
Résumé¶
- R|Protocol API (WebSocket + protobuf) est la seule voie praticable en Python.
- R|API+ vise C++/.NET ; R|Diamond n'a de sens qu'en colocation.
- Le Plugin Mode permet de coexister avec R|Trader Pro pour la supervision.
- L'accès exige un dev kit, un développement sur Rithmic Test, puis une revue de conformance.
async_rithmiccouvre L1/L2 et l'exécution ; pas le MBO.- Confirmez auprès de votre prop firm avant d'écrire du code.
Chapitre précédent : Rithmic, panorama · Chapitre suivant : Accéder à Rithmic via une prop firm