What you're looking at open as a page ↗
This is a real trading system, not a mock-up. The same C++ binaries that trade US Treasuries on BrokerTec and hedge on CME in production are running here end to end, on one box: two market-data handlers decode synthetic MDP 3.0 multicast feeds exactly as they decode the exchanges', one trader consumes both books, and orders go out through the real iLink3 gateways to two venue simulators:
FiMakerCmeUbHedged quotes the cash bond off the toy model and hedges every fill in ZN through a FiSymbolWatcher
+ the manual strategy you drive
Drop copy never feeds the trader: it is the venue's own record of every execution, used downstream for positions, risk and audit. Both venues use the same drop-copy protocol (CME's FIX 4.2 drop copy — BrokerTec runs on Globex), so one client binary serves both. Everything on this path runs in the container: the broker, the two drop copies, the position server and the risk server are the production components.
- The maker carries no alpha. Its "model" is three hand-written coefficients on a trend and a book-imbalance feature — enough to show how a strategy is composed (samplers → variables → model → strategy), not to make money. It quotes passively around its target price and never crosses the spread.
- You trade against it. The order pad sends real orders through the same gateway. Post inside the spread and watch the maker re-quote; hit its quote and you'll see the fill on both sides of the tape.
- Shared sandbox. Everyone here shares one manual strategy and its account: orders are capped at 5 lots and 8 ticks from the mid, resting orders expire after 60 s, "cancel" clears the whole visitor book, and the visitor position is flattened after two idle minutes. Nothing you do can reach the gateways or the simulator's lifecycle.
- Two venues, one book of risk. Every cash fill on BrokerTec is hedged in the 10-year note future on CME (about 12 contracts per $1mm lot, DV01-neutral) — the same cash-versus-futures setup the desk runs, on a synthetic future that tracks the cash book plus a mean-reverting basis.
- Prices are UST-style 32nds on a 1/64 grid; 1 lot = $1mm face, so 1 tick ≈ $156. The future trades in 1/64 too, 1 contract = $100k face.
BrokerTec order book —
CME order book · hedge leg —
After every cash fill the maker (FiMakerCmeUbHedged) drives the account's DV01-weighted risk back to zero by
quoting passively in the 10-year note future through a FiSymbolWatcher on CME — about 12 contracts per $1mm lot.
The future is synthetic and tracks the cash book at the DV01 ratio (β ≈ 0.85: a point in the 10-year moves ZN 0.85 points, so the
hedge ratio is a true hedge here) plus a mean-reverting basis; it is decoded by the real cme_md,
and the hedge orders go through the real iLink3 gateway cme_gw into cme_me, the venue simulator.
Cash plus hedge is what production runs on BrokerTec + CME.
Post-trade · drop copy → Kafka → positions → risk —
Kafka topics single-node broker in the container
| topic | messages | last | lag |
|---|
Positions position server · from the two trade topics
| symbol | position | SOD | updated |
|---|
Risk risk server · DV01 per tenor bucket
| tenor | DV01 $ | net position | gross | updated |
|---|
Drop-copy fills newest first · as published on trades.btec / trades.cme
Every fill the two venue simulators report reaches this panel by the production route, not from the trader:
btec_me and cme_me send a FIX 4.2 drop copy to btec_dropcopy / cme_dropcopy,
which publish one JSON per execution to Kafka; position_server nets them per symbol (cash in $1mm lots, futures in contracts)
and publishes positions.fixed_income; risk_server weights each position by its DV01 ($763 per cash lot,
$65 per ZN contract — the table on the Reference data tab) and publishes risk.positions: one lot hedged with 12
contracts nets to about −$17 per bp, which is what "hedged" means here.
Send an order
shared sandbox · your id—