Trading agents make claims. AgentBench makes them checkable.
A backtest scorecard for a Bitget trading agent that a stranger can re-run and confirm, with no API keys and no real money. Doctor a single number and the verdict turns red, live in your browser. No video, no install, no trust.
The gap
Agent Hub lets an agent trade. It can't tell you the agent is any good.
There's no replay, no fill simulation, no PnL or drawdown accounting and nothing a third party can re-run. So every team either trusts a screenshot or trades live to get evidence. AgentBench fills that gap and closes it with verification.
Today
An agent posts a chart and a number. You either trust it or you don't. A screenshot proves nothing.
The other option
Trade live to get real evidence. That costs real money and risks a runaway agent.
AgentBench
A scorecard whose every number recomputes from the trades. Re-run it and check, on a fresh clone, in seconds.
See it, no video needed
A real scorecard verifies. Then we doctor one number.
Everything below runs the real verifier on a committed report, in this browser, no server in the loop. It loops on its own when it scrolls into view, so there is nothing to press and no video to trust. The file on disk is never touched, the tamper happens in memory.
A committed scorecard for sma-crossover, recomputed from its own trade ledger. Every number matched.
Your turn
Verify it yourself. Four ways, one engine.
The same verify that ships in the npm package and runs in CI,
compiled for the browser. Pick a committed report, run a fresh strategy,
doctor a number, or drop in a report you produced with the CLI.
Interactive demo could not start
This page runs the verifier in your browser, which needs a current browser with ES modules. Everything here also runs from the command line:
npm i -g bitget-agentbench agentbench verify ./report
Source and committed reports: github.com/zkasuran/bitget-agentbench.
Loading reports…
Live fetch needs network (Bitget's keyless public endpoint). Fixtures: BTCUSDT, ETHUSDT, SOLUSDT at 4h, fully offline.
Edit one number in a committed scorecard and verify the doctored copy. Watch the verdict flip and the checks that caught it light up red. The file on disk is never touched.
Ran agentbench run --out ./report on your machine? Drop the folder here (or its files: scorecard.json, equity.csv, trades.jsonl and, for a live run, candles.json). They never leave your browser.
Folder picker not cooperating?
How verify works
Four independent checks. Any one fails, the verdict fails.
The file was not edited
Recomputes the scorecard's content hash and asserts it matches. Catches any edit to scorecard.json.
The candles are the claimed ones
Reloads the candles named in the manifest, re-hashes them (SHA-256) and asserts the match. Catches swapped or doctored price data.
The metrics follow from the trades
Recomputes every headline metric straight from the trade ledger and equity curve. Catches numbers that don't follow from the fills.
The strategy reproduces the run
Re-runs the strategy from the manifest's own seed and config. The strongest check. Built-ins replay automatically, your own with --agent.
A content hash alone only proves a file was not edited. A forger could change a number and re-stamp the hash. They still can't beat ledger and replay, which recompute the numbers from scratch. That layering is the point.
Bitget ecosystem fit
It speaks Agent Hub, and slots next to the official Bitget MCP.
Drop in an Agent Hub agent
Agent Hub agents place trades with spot_place_order. That's exactly AgentBench's order shape, so fromAgentHub wraps an existing agent with no rewrite.
import { fromAgentHub } from "bitget-agentbench"; export default fromAgentHub("my-hub-agent", decide); // decide(bar, ctx) returns the same spot_place_order calls
Agents grading agents, over MCP
Ships an MCP server with two tools, so an agent in Claude or Cursor can backtest and grade a strategy inside its own loop, beside the official Bitget MCP server.
claude mcp add -s user agentbench -- \
npx -y -p bitget-agentbench agentbench-mcp
// agentbench_run -> scorecard, agentbench_verify -> PASS/FAIL
Verify in CI
A committed scorecard should fail the build if its numbers stop reproducing. One action line does it, and this repo dogfoods it on every push.
- uses: zkasuran/bitget-agentbench@v0.5.0 with: report: ./report
Zero setup, real data
Ships real Bitget candle fixtures, so a full backtest runs the moment it's installed. Live mode pulls from Bitget's keyless public endpoint and snapshots the exact candles, so a live run stays checkable too.
npx agentbench run --strategy sma-crossover \ --symbol BTCUSDT --tf 4h --seed 42 --out ./report npx agentbench verify ./report