Paper mode lets you run the complete AI Trading MCP pipeline — Telegram feed, Claude decision loop, engine validation, position lifecycle — against live Binance market data without risking a single cent. Price feeds (OHLCV candles and order book) are fetched in real time from Binance viaDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/backtest-kit/ai-trading-mcp/llms.txt
Use this file to discover all available pages before exploring further.
ccxt, but every fill, take-profit hit, and stop-loss trigger is simulated inside the backtest-kit engine. No Binance API keys are required.
Launch Command
--paper
Activates the paper broker. The engine runs all fill logic internally — no exchange credentials needed.
--entry
Points to the strategy file. The bundled
manual.strategy.ts registers no signal logic — entries come exclusively from the Claude agent.--ui
Starts the dashboard server on port 60050. View portfolio state, open positions, PnL history, and the full MCP audit trail from any browser.
What Happens at Startup
Engine initialises persistence
Live state directories under
dump/ are created. Signals, positions, and session data survive process restarts.13 background loops start
One
Live.background() call is issued for every symbol in CC_SYMBOL_LIST. The default whitelist is 13 pairs: BTCUSDT, POLUSDT, ZECUSDT, HYPEUSDT, DOGEUSDT, SOLUSDT, PENGUUSDT, TRXUSDT, HBARUSDT, NEARUSDT, FARTCOINUSDT, ETHUSDT, PUMPUSDT.MCP HTTP bridge starts on :60051
serve() (called in config/setup.config.ts) opens the HTTP bridge on 127.0.0.1:60051. The stdio MCP server (npx @backtest-kit/mcp) forwards every get_status, open_position, and close_position call here.The Paper Module
modules/paper.module.ts registers the ccxt-exchange schema with a public-only Binance client — no apiKey or secret fields, no authenticated endpoints:
singleshot-wrapped client powers all four exchange schema methods used by the engine:
| Method | What it calls |
|---|---|
getCandles | exchange.fetchOHLCV — real Binance OHLCV candles |
getOrderBook | exchange.fetchOrderBook — live bid/ask depth |
formatPrice | roundTicks(price, tickSize) when tick size is available; falls back to exchange.priceToPrecision |
formatQuantity | roundTicks(quantity, stepSize) when step size is available; falls back to exchange.amountToPrecision |
How Paper Fills Work
When the agent callsopen_position, the engine computes entry cost, take-profit, and stop-loss engine-side. modules/paper.module.ts registers no broker adapter — it only supplies an addExchangeSchema with the public ccxt Binance client. All fill logic is handled entirely by the backtest-kit engine’s internal simulation using the live candle and order-book data the exchange schema provides. No orders are placed on Binance. The position, its unrealized PnL, and every state transition are written to dump/data/ so the full lifecycle survives a restart.
Dashboard: Port 60050
Portfolio State
Per-symbol cards showing current price, open position direction, entry price, unrealized PnL, and queued signals.
Audit Trail Viewer
Every
get_status response is dumped to dump/mcp/<minute-stamp>.md with attached chart images. The UI renders these dumps so you can replay exactly what the agent saw before each decision.Why Use Paper Mode
Paper mode is the right starting point for every new setup because it exercises the entire system end-to-end:- The Telegram scraper connects, authenticates, and begins fetching posts.
- The MCP feed assembles portfolio state + last 15 posts (text and images) into a single
get_statusresponse. - The engine validates
open_positioncalls against the symbol whitelist and existing positions. - The audit trail writes every byte the agent saw to disk.
- The dashboard lets you verify positions and history visually.