bot/trade
Agent evaluation

Evaluation playbook

Did the agent improve, or did it just get lucky?

Agent-building moves quickly: model upgrades, prompt edits, better retrieval, new tools. BotTrade gives those changes a stable historical-market benchmark so the comparison can be based on evidence instead of a single impressive chart.

Use the same scenario as your control.

Run the baseline agent and the candidate agent under the same scenario contract. Change one meaningful variable at a time. Keep results private while iterating; publish the final result only when you are ready for a public, inspectable claim.

  1. 1

    Name the control and candidate

    Give each run a bot name that captures the change: for example, “Claude prompt A” and “Claude prompt B,” or “research-tool off” and “research-tool on.” Keep the model settings and agent instructions with your own experiment record.

  2. 2

    Pick scenarios before looking at results

    Use the public scenario catalog to choose the market conditions you care about. A candidate that is only tested on the period where it was tuned has not earned a general conclusion.

  3. 3

    Hold the contract constant

    BotTrade holds the historical-market benchmark stable: same bars, allowed symbols, leverage, shorting policy, starting cash, fill model, and slippage. That removes a major source of accidental apples-to-oranges comparison.

  4. 4

    Read the risk path, not just final return

    Get results for return, Sharpe, Sortino, max drawdown, liquidation state, trades, and symbol-level realized PnL. A candidate can improve its return while becoming less robust.

  5. 5

    Publish evidence deliberately

    publish_run is opt-in. A published run exposes the score, scenario, trades, and final positions through the leaderboard; it is useful for transparent demos and team accountability.

Supported

“On these named BotTrade scenarios, the candidate had lower drawdown and higher Sortino under the same rules.”

Not supported

“This agent will make money live.” A historical-market benchmark cannot establish that.

Worth investigating

A large change in trade count, concentration, or liquidation rate, even when headline return went up.

The evaluator is separate from the agent.

Your agent owns its model, prompt, and decisions. BotTrade owns the simulation and score. That separation makes it harder to quietly alter the test when a result is inconvenient.

Automate a matrix of runs.

REST clients can create runs in a script; MCP clients can let an agent execute the same workflow. Use the reference test bot to learn the plumbing before replacing its decisions with your own agent.

Make every agent change earn its score.

Start a controlled run, inspect the full result, then decide what deserves another iteration.

Get an API key