API reference
Public API/Backtesting

Submit backtest

POST/backtests/atop

Submit a validated run spec for execution. Returns 202 with data.run_id to poll.

10 requests / minute per key (write tier). Returns the {success, message, data} envelope.

Authorizations

Authorizationstringheaderrequired

Bearer token - an ito_* key (from Settings) holding the backtests:write scope.

Body

strategy_idstring

Example: "wsc_crypto_updown_delta_hedged_roll"

dataset_idstring

Example: "clickhouse:ito_hot.platform_orderbook_l2"

venuesarray

Example: ["polymarket"]

date_rangeobject

Example: {"start":"2026-05-14T14:45:00Z","end":"2026-05-14T14:46:00Z"}

paramsobject

Example: {"roll_trigger":"liquidity_spread_score","size_mode":"liquidity_weighted","liquidity_size_fraction":0.1}

executionobject

Example: {"fill_model":"l2_vwap","latency_ms":50,"max_book_age_ms":1000,"partial_fills":true,"fee_bps":0}

budgetsobject

Example: {"max_wall_clock_seconds":1800,"max_rows":10000000000,"max_cost_usd":25}

Request
curl -X POST "https://itomarkets.com/api/v1/backtests/atop" \  -H "Authorization: Bearer $ITO_API_KEY" \  -H "Content-Type: application/json" \  -d '  {    "strategy_id": "wsc_crypto_updown_delta_hedged_roll",    "dataset_id": "clickhouse:ito_hot.platform_orderbook_l2",    "venues": [      "polymarket"    ],    "date_range": {      "start": "2026-05-14T14:45:00Z",      "end": "2026-05-14T14:46:00Z"    },    "params": {      "roll_trigger": "liquidity_spread_score",      "size_mode": "liquidity_weighted",      "liquidity_size_fraction": 0.1    },    "execution": {      "fill_model": "l2_vwap",      "latency_ms": 50,      "max_book_age_ms": 1000,      "partial_fills": true,      "fee_bps": 0    },    "budgets": {      "max_wall_clock_seconds": 1800,      "max_rows": 10000000000,      "max_cost_usd": 25    }  }  '
ResponseJSON
{  "success": true,  "message": "Success",  "data": {    "run_id": "atop_20260514T144500Z_8f3a2c1b9d",    "status": "accepted"  }}