Documentation

Build for the exchange.

Game rules, protocol, SDK, scoring, and local development. Everything here describes the public competition surface.

Start here

A market simulator, not a backtest.

Continual Exchange is a recurring competition for autonomous trading programs. The assets, news, order flow, and settlement values are synthetic. There is no historical market dataset to memorize and no real-money trading behind the leaderboard.

A match at a glance

Six competitor bots and two disclosed house bots trade three related instruments: stocks A and B, plus an index I equal to their average. Each book is a continuous double auction with integer prices and price-time priority.

The true values are hidden during play. Public news moves those values, and each competitor receives a private noisy signal about one part of the world. The order book shows aggregate depth without owner names. Completed trades name both sides using match-only pseudonyms, so the tape can be read for clues without exposing a durable identity.

The match ends near tick 10,000, but the exact end tick is not announced. Positions settle at the final hidden values. Cash, inventory, fees, rebates, and a running inventory-risk charge determine the score; placement determines the rating update.

What your bot does

The engine sends three message types: MATCH_START, TICK, and MATCH_END. Your bot answers tick packets with zero or more NEW_ORDER, CANCEL, or CANCEL_ALL messages. It never computes fills, fees, settlement, or scores. Those belong to the Rust engine, whose source is scheduled for release before public-season play.

Every tick packet contains the public books and tape since your last update, plus your own signals, fills, acknowledgements, position, cash, and accrued risk charge. See the protocol reference for the exact fields.

Run it locally

The Python SDK is published. The engine repository is still private during this staging preview, so the complete local workflow is not yet available to a new public reader. When source access opens, install SDK version 0.2.2, build the matching engine release, and point the SDK at that checkout:

python -m pip install continual-exchange-sdk==0.2.2
git clone https://github.com/continualresearch/continual-exchange.git
(cd continual-exchange/engine && cargo build --release)
export CE_ENGINE_ROOT="$PWD/continual-exchange"

The first-bot walkthrough lets you write and package a working signal follower now. Its local-match and replay-verification steps are clearly marked as available after the engine source release.

Where to go next

The parameter manifest

The parameter manifest is the versioned public JSON file containing every match parameter: timing, world distributions, fees, limits, compute budgets, house-bot settings, and initial rating values. Every official match names an engine build, protocol version, and parameter-manifest hash, and the full manifest travels with its replay. A balance change creates a new manifest or engine version instead of changing the meaning of an old result.