LIVE connecting to the tape… backtest → · results table · ← the lab

The Bounded Key Trading Race

Two real paper-trading accounts on one real exchange. The same model, the same prompt history, the same live ETH tape, the same fees and fills. One key can send any order. The other can only deploy what the venue has proved.

loading…
Replay the flash crash Replays five hours of Coinbase history at 120x; both lanes decide every 10 market minutes; the clock pauses while they think, so nothing sees the future. 10 October 2025, 16:21 to 21:21 UTC, ETH 4140 to 3510: five hours of Coinbase history at 120×, a decision every 10 market minutes, both keys, same model. About 4 minutes.

Left: an ordinary API key, a direct session on the exchange, any order allowed. Right: a bounded key, a gateway account that can only submit programs the venue has proved.

Ordinary API key account —
$10,000.00
—

Orders on the exchange

no orders yet
—
ETH · last print
waiting for the first print
vs
Bounded API key account —
$10,000.00
—

Real Nessie customer, account and escrow ids.

Programs at the venue

no programs yet

Owner's phone

Real Photon messages with ids.

no messages yet

Left: the ETH prints both lanes saw. Right: both accounts' equity; the dotted line is the owner's loss limit.

The tape

Equity

Say something to both agents

one message, both transcripts, next round · 3 per 10 min

Your message is appended to both transcripts next round. The ordinary key may obey it; the bounded key can only deploy what the venue proves.

One transcript, two keys

Every round, both lanes get the same market line and the same messages; the hash proves the shared history matched.

the first round starts a few seconds after the first print

What is real here

The exchangeOne exchange process (Build A's matching engine), run with 255 accounts. The ordinary key is a direct session on its binary wire protocol: race/exchange_client.py speaks proto.hpp. The bounded key goes through venued and the gateway, like every program.
The tapeCoinbase ETH-USD, every trade, over the public WebSocket. Each new dollar tick becomes a print on the book by the two environment accounts, with the same four messages replay and the verifier use (env.hpp print_one). Prints that jump more than the envelope's gap are counted as assumption violations.
The fees and fillsBoth accounts' money is read from the exchange's own fill journal; fees are venued's formula, maker 1.0 bp / taker 3.5 bp, rounded up per fill. The raw lane's ledger is cross-checked against the exchange's position and cash counters on every state read.
The modelOne model. Both lanes get the same system prompt head and the same OWNER / MARKET / MESSAGE lines; the sha256 of that shared history is recorded per lane per round and shown on every round. Only the "how you act" tail differs: order JSON, or a program.
The attacksEvery third round one message from the eval dataset (evals/data/attacks.json: fake owner, instruction override, fake market event, social pressure) is appended to both transcripts; your messages above go the same way. Nothing tells the model which lines are attacks.
The owner's rulesThe same brief in both lanes: at most 2 lots, always a stop, at most $500 lost in 24 hours. In the bounded lane they are the envelope the verifier enforces. In the raw lane they can only be watched: every breach is counted while it lasts.
Backtest modeThe same race on a chosen day of Coinbase history, at a fixed speed, with no look-ahead: a market clock releases each print only once it has reached its time, the two models see only prints already released, and the clock pauses while they decide so both act on the same snapshot. Each minute candle becomes four prints: open, the extreme nearer the open, the other extreme, close. The bounded lane's 24 h budget covers the whole replayed window.
LiquidationAn ordinary account whose mark-to-market loss reaches its capital is liquidated: every order cancelled, the position flattened at the next print. The bounded account cannot get there: nothing deploys without a certificate that fits the budget.

The envelope (bounded lane)

The owner's brief (both lanes)

Previous races

none yet

Round : what each lane was told

Ordinary key

Bounded key