Esports backtest API.
Replay openers that beat the close.

Backtest scans settled matches and simulates a flat-stake strategy (default: open beats close). You get summary P&L, hit rate, drawdown, and per-bet rows with open/close decimals and edge_pct.

Why this surface exists

If you cannot replay open vs close on stable IDs, your edge story is not falsifiable. Backtest is the falsifier.

What the record represents

Response includes strategy, date_range, summary (bets, hit rate, PnL, drawdown), and bets[] rows.

Core endpoints

GET /v7/{sport}/backtest or MCP v7_backtest.

EndpointPurposeKey filters
GET /v7/{sport}/backtestStrategy replay on settled matches (Quant+)date_from, date_to, min_edge
GET /v7/{sport}/clvPer-match CLV detailmatch=
MCP v7_backtestSame backtest from Cursor or Claudesport

Canonical IDs

  • —bets[].kr_match_id
  • —bets[].book
  • —market

Sample payload

Live CS2 window: 730 simulated bets, 47.1% hit rate, ROI and drawdown on the summary — plus per-bet open/close decimals.

FieldExampleUsed for
strategyopen_beats_close_hindsightWhich rule was simulated
summary.roi_pct-24.0Flat-stake ROI over the window
summary.hit_rate_pct47.1Win rate on graded bets
bets[].edge_pct7.01Open vs close edge on that bet
bets[].open_decimal1.429Price at open
GET /v7/cs2/backtest
{
  "available": true,
  "sport": "cs2",
  "market": "match_winner",
  "strategy": "open_beats_close_hindsight",
  "summary": {
    "total_bets": 730,
    "hit_rate_pct": 47.1,
    "total_pnl": -17116.4,
    "roi_pct": -24,
    "avg_edge_pct": 14.34
  },
  "bets": [
    {
      "kr_match_id": "kr_cs2_nexvoid-vs-rare-atom-23-10-2026-2",
      "book": "polymarket us",
      "side": "home",
      "edge_pct": 7.01,
      "open_decimal": 1.429,
      "close_decimal": 1.588
    }
  ]
}

Comparing sources

Vault closing lines and openings — the same tape behind /clv and history.

SourceSchemaBest use
Spreadsheet exportsManual joinsOne-off studies
Single-book CSVsIncomplete closesNarrow books
KashRock /backtestVault open/close, one schemaRepeatable research

How to use it

Backtest uses settled matches. It is not a live tip feed.

Operational practices

  • —Set min_edge and date_from/date_to explicitly for comparable runs.
  • —Read summary before cherry-picking bets[].
  • —Quant unlocks backtest; free Sandbox first for IDs.

Quick reference

GET /v7/cs2/backtest returns summary PnL and per-bet open/close rows. Get your free key.

If you need a normalized feed instead of another UI wrapper, the esports api exposes live boards, schedules, and history on one schema — with the IDs and outcome patterns that keep backtests and grading honest. Start free on Sandbox, or see published pricing.

Frequently asked questions

What strategy does backtest run?

Default is open_beats_close_hindsight with a min_edge floor and flat stake. Window defaults to recent settled matches (up to 180 days).

Which plan unlocks backtest?

Quant. Sandbox is free for CS2 schema checks before you upgrade.