Rithmic R|API+ MBO & Trade Data Bridge - ZeroMQ PUB/SUB bridge system
Project description
Rithmic MBO & Trade Data Bridge
A high-performance market data bridge that connects to Rithmic via R|API+ (.NET) and publishes MBO (Market-by-Order) and Trade data over ZeroMQ. Designed for low-latency algorithmic trading and RL (Reinforcement Learning) environments.
Architecture
sequenceDiagram
participant Client as Client Application (WSL2/Linux/Python)
participant Publisher as Rithmic Bridge Publisher (Windows)
participant Rithmic as Rithmic Infrastructure (R|API+)
Note over Publisher, Rithmic: Connects via Plugin Mode (Port 56000)
Publisher->>Rithmic: Subscribe(Symbol, Exchange)
Rithmic-->>Publisher: Market Data (MBO/Trade)
Publisher-->>Client: ZeroMQ PUB (Stream Data)
Client->>Publisher: ZeroMQ REQ (Dynamic Subscription)
Features
- Dynamic Subscription: Subscribe to symbols on-the-fly without restarting the server.
- MBO Support: Real-time Order Book reconstruction (Level 3 data).
- ZeroMQ Distribution: Publish data to multiple clients over the network (e.g., from Windows to WSL2).
- Python Library: Ready-to-use
RithmicClientclass for easy integration. - Low Latency: Optimized queue management and data serialization.
Prerequisites
- Windows 10/11 (for the Publisher)
- R | API+ (.NET) from Rithmic
- R | Trader Pro (for Plugin Mode connection)
- Python 3.10+
Installation
1. R | API+ (.NET) Setup
This project requires the Rithmic API library rapiplus.dll. Redistribution of this DLL is prohibited.
- Request the API: Visit https://www.rithmic.com/api-request and request the R | API (.NET).
- Installation: Place the
rapiplus.dllfrom the downloaded package into the standard Rithmic path:C:\Program Files (x86)\Rithmic\Rithmic Trader Pro\rapiplus.dll
2. Install the Bridge
pip install rithmic-bridge
# Recommended for local editable CLI usage
uv tool install --editable .
Quick Start
1. Launch the Publisher (Windows)
Launch the publisher in R|API mode. You can provide credentials via command-line arguments:
uvx rithmic-bridge publish --mode rapi --user YOUR_USER --password YOUR_PASS --symbol GCJ6 --exchange COMEX
Note: Use --mode dummy for testing without a Rithmic account.
2. Use the Client Library (Client/WSL2)
from rithmic_bridge.client.library import RithmicClient
# Connect to the publisher on Windows
client = RithmicClient(host="192.168.x.x")
# Define callbacks
def on_mbo(event):
print(f"MBO: {event.price} x {event.size}")
def on_trade(event):
print(f"TRADE: {event.price} @ {event.size}")
client.on_mbo(on_mbo)
client.on_trade(on_trade)
client.connect()
client.subscribe("GCJ6", "COMEX")
# Keep the script running
import time
while True:
time.sleep(1)
3. CLI Client
You can also use the built-in CLI client for quick monitoring:
uvx rithmic-bridge client --host 192.168.x.x --symbol GCJ6 --exchange COMEX
Configuration
The system can be configured via command-line arguments (recommended) or a .env file.
| Argument | Description | Default |
|---|---|---|
--mode |
rapi or dummy |
dummy |
--user |
Rithmic username | - |
--password |
Rithmic password | - |
--symbol |
Default symbol | GCJ6 |
--exchange |
Exchange | COMEX |
--bind |
ZMQ bind address | tcp://*:5555 |
--dll-dir |
Path to rapiplus.dll |
(Standard paths) |
Development
We use uv for dependency management.
git clone https://github.com/akivajp/rithmic-bridge
cd rithmic-bridge
uv sync
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rithmic_bridge-1.0.1.tar.gz.
File metadata
- Download URL: rithmic_bridge-1.0.1.tar.gz
- Upload date:
- Size: 128.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60076d7e3a365cec5636fab614ac31c47823277189859590d4043a8f175d397c
|
|
| MD5 |
9b8ba1ca62b20871ee3e5cff1b7e1da3
|
|
| BLAKE2b-256 |
b7af4c2277806f5cecca3eb35ffb9ef1b313d4253a1870b308f6059abce6a8e2
|
File details
Details for the file rithmic_bridge-1.0.1-py3-none-any.whl.
File metadata
- Download URL: rithmic_bridge-1.0.1-py3-none-any.whl
- Upload date:
- Size: 53.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
359bc96dbc018565183e2d6473f6225c4b72cb208772c4990ece595adf6f7520
|
|
| MD5 |
3d66133d1e21fc726b2a8a5d4362fbeb
|
|
| BLAKE2b-256 |
0914f33178a2eac63c6a5ac08417eab0e464692a8dd51354189769c50971da75
|