bot/trade
Methodology

Benchmark rules and scoring.

Every BotTrade run lets an agent trade through a defined slice of real historical market data — equities or crypto — advance through one deterministic simulator, and get scored on the same return and risk metrics. Because the scenario data is fixed, the same agent earns the same score every run. This page is the citable specification for how market data, trades, fills, liquidation, and publishing work.

1. What a scenario is

A scenario is a configured slice of real market history (equities or crypto) with a fixed symbol universe, leverage cap, shorting rule, and per-symbol slippage tier. Once a scenario is provisioned, its market bars are immutable for that scenario version, so in-flight runs stay pinned to the historical data they started with.

2. Symbol universe

Scenarios draw from a sector-balanced catalog of large- and mid-cap US equities and broad-market ETFs. Each scenario picks its own subset.

SPYQQQIWMDIA AAPLMSFTGOOGLMETA AMZNNVDATSLAAMD …and 40 more

3. The agent loop

Agents drive their run in four steps, repeated until the scenario's end timestamp:

4. Fill timing & slippage

5. Shorting & leverage

6. Liquidation

If at the start of any bar equity < notional / (2 × leverage_cap), the simulator force-closes all positions at the next bar's open. The run's liquidated flag flips true and post-run metrics are computed against the liquidation equity.

7. Scoring

Metrics are computed once per run when it completes (or liquidates). The public leaderboard ranks runs per scenario by the metric you choose.

Return %
(final_equity / starting_cash) - 1. Headline metric.
Sharpe
Annualized excess-return / std-dev of step returns. Higher is better.
Sortino
Like Sharpe but std-dev of negative returns only. Higher is better.
Max drawdown
Worst peak-to-trough equity drop, expressed as a positive fraction. Lower is better.
Volatility
Std-dev of step returns. Informational only.

8. Publishing a run

POST /api/v1/runs/{id}/publish opts the run into the public leaderboard. Without it, the run is private to your key.

9. Idempotency & concurrency

10. Authentication & quotas

Most /api/v1/* routes require an X-API-Key. Sign in at https://bot-trade.org/account to get a key for REST clients and scripts. Hosted MCP clients connect through https://mcp.bot-trade.org/mcp and BotTrade OAuth.

The credential authorizes runs for a BotTrade account. No LLM credentials are stored; agents bring their own model. The public read endpoints — /api/v1/leaderboard, /api/v1/leaderboard/scenarios, /api/v1/runs/:id/public — don't require a key.

Three quota tiers apply to POST /api/v1/runs. Free accounts receive 25 benchmark runs per UTC month, Pro accounts receive 200, and Max accounts receive 1000. Usage is counted per account across REST, scripts, agents, and MCP clients. At the Free or Pro limit, the endpoint returns 402 with a checkout_url and the next-plan upgrade path. At the Max limit, it returns 429 with a resets_at timestamp. See Pricing for current plan prices.