# Backtesting Arena — API Reference (agent-readable)

> Index of all agent-readable pages: https://tradingstrategies.work/llms.txt
> How to connect an MCP client: https://tradingstrategies.work/agents.md
> OAuth discovery for MCP clients (RFC 9728): `/.well-known/oauth-protected-resource` and `/.well-known/oauth-protected-resource/api/mcp` serve the same document; the `401` on `POST /api/mcp` carries `WWW-Authenticate … resource_metadata=…`. The authorization server named there publishes RFC 8414 metadata with dynamic client registration.
> Machine-readable spec: https://tradingstrategies.work/openapi.json (OpenAPI 3.1)

Full endpoint reference for the Public API — moved here from the compact `/llms.txt` index (2026-09-03) so the index stays cheap to read. Content is authoritative and maintained alongside the endpoints.

## Public API Endpoints (no authentication required)

A subset of platform data is available through public endpoints — no signup, no API keys, fair-use rate limits via cache. Machine-readable JSON. The full Public API is live across three channels: authenticated REST + MCP server (Bearer-token, Free tier available) and x402 pay-per-call (USDC on Base, no account). **Developer landing page with curl examples, JSON response samples and use-cases: [tradingstrategies.work/api](https://tradingstrategies.work/api)**.

All public endpoints return `Access-Control-Allow-Origin: *` and `X-Backtesting-Arena: v1` headers.

- [Arena Pulse Today](https://tradingstrategies.work/api/arena-pulse/today): Daily 0-100 heat score for the crypto market, aggregated from 8 components (Bullmarket gauge, Fear & Greed, MVRV Z-score, 200-WMA distance, Mayer Multiple, Altcoin Season, funding rates, Hash Ribbons). Daily update at 07:55 UTC. 5-min cache.
- [Arena Pulse History](https://tradingstrategies.work/api/arena-pulse/history?days=30): N-day history of Arena Pulse scores for trend analysis. Default 30 days, max 365.
- [BTC Cycle Snapshot](https://tradingstrategies.work/api/btc-cycle): Current BTC cycle phase (accumulation / recovery / expansion / distribution / overheated) plus 9 component indicators (Pi-Cycle Top/Bottom, Mayer, Weekly RSI, MA200W, halving position, Fear & Greed, BTC dominance, mining difficulty). Optional `?days=N` for historical chart data.
- **ETH / SOL Cycle** (`GET /api/v1/alt-cycle/latest?asset=ETH|SOL`, or the MCP connector tool `arena_get_cycle` with `asset=ETH|SOL`): Per-coin cycle read built from the transferable price-derived indicators (Mayer, Weekly-RSI, 200-week-MA distance) with renormalized weights. BTC-native indicators (halving, dominance, mining, hash-ribbons, F&G, Pi-Cycle, on-chain) are returned explicitly as `not_applicable` rather than faked. Point-in-time scored, with a same-composition percentile block. Descriptive only, not a signal.
- [Fear & Greed Index](https://tradingstrategies.work/api/fear-greed): Server-side proxy to alternative.me Fear & Greed Index. GDPR-compliant — your browser never directly contacts alternative.me. Returns full historical series.
- [OpenAPI Spec](https://tradingstrategies.work/openapi.json): Machine-readable OpenAPI 3.1 specification — directly importable in LangChain, AutoGen, CrewAI or Vercel AI SDK.
- [API Skill Card](https://tradingstrategies.work/skill.md): Capability overview in markdown for AI-agent discovery.

## Authenticated /api/v1/* Endpoints (Bearer key required — Free tier available)

Plus a broader authenticated API. Get a Free-tier key at [/dashboard/account/api-keys](https://tradingstrategies.work/dashboard/account/api-keys), then pass `Authorization: Bearer sk-arena-...`:

- **Strategy + Universe Catalog**: `GET /api/v1/strategies` (25 strategies with key, name, tagline, plan, asset-class support, primary indicators — **call before `/backtests/run`** to discover valid strategy keys; `asset_class` = `crypto` default or `tokenized_rwa` for tokenized equities/ETFs/gold), `GET /api/v1/strategy/performance?strategy=X&asset=Y` (aggregated per-(strategy, asset) performance — run_count, avg_cagr, avg_win_rate, avg_drawdown, vs_buy_hold), `GET /api/v1/strategy/filter-effect?strategy=X&asset=Y` (per-(strategy, asset) filter-effect: baseline + per-variant deltas + best_by_cagr + not_applicable_filters), `GET /api/v1/strategy/performance-by-regime?strategy=X&asset=Y` (backtest split by macro regime sweet_spot/late_cycle_warning/crisis/recovery + recommendation for the current live regime — "should I trade this now?"), `GET /api/v1/universes` (4 pre-curated crypto universes: crypto-top-10/50/100/250), `GET /api/v1/universes/{id}` (universe detail with full pair list), `GET /api/v1/signals/{strategy}/{pair}/{timeframe}` (current live signal state, daily cron-computed).
- **Universe-Backtest (async)**: `POST /api/v1/backtests/universe` runs one strategy on up to 50 pairs at once. Returns `job_id` + `poll_url`; client polls `GET /api/v1/jobs/{job_id}` until status='completed'. Quotas: Pro 5/Tag, Power 50/Tag. Pair-selection via `universe_id` (pre-curated) or `pairs[]` (explicit, max 50). [API Pro tier]
- **Validate before you execute**: `POST /api/v1/validate` — honest, look-ahead-aware backtest validation for agentic stacks. Send a named catalog strategy (`type=rules`), a timestamped BUY/SELL `signal_list`, or a `trade_list` with the prices you claim you got. Returns an EVIDENCE verdict — `insufficient_evidence` / `anecdote` / `failed_oos` / `passed_oos` — plus metrics, flags and caveats. NOT a buy/sell recommendation. Checks: realistic next-bar fills (look-ahead / fill-optimism detection), net of cost, out-of-sample split, and a hard sample gate (under 30 round-trips is always "anecdote"). No strategy IP stored. The tool an agent calls *before* `place_order`. MCP tool: `validate_strategy`. [API Pro tier]
- **Produce, don't just consume — the backtest flywheel**: every authenticated backtest (`POST /api/v1/backtests/run`, MCP `arena_run_backtest`) is persisted into the platform's evidence library and sharpens the aggregated surfaces the next query reads (Strategy Insights, Edge Library, sentiment) — agent runs count exactly like human runs. x402-anonymous runs stay ephemeral (no persistence, no attribution). Example producer prompts for an agent: "Backtest RSI/SMA on SOLUSDT daily with the 200-week-MA filter — does the filter help net of costs?" · "Compare Supertrend vs Golden Cross on ETHUSDT weekly since 2020" · "Run rsi2_meanreversion on BTCUSDT daily and report whether it survives the Deflated-Sharpe gate" · "Backtest golden_cross across the crypto-top-50 universe and count how many pairs beat buy & hold."
- **On-Chain Series**: 65 series (64 distinct quantities — one is an alias, see below) — Bitcoin Research Kit (bitview.space) plus the bgeometrics-backed HODL-Waves bands and five in-house derivations (SSR, Coinbase Premium, thermocap_ratio, delta_price, top_price) — full history since 2009-01-03 (HODL Waves since 2011). Groups: pilot, sentiment, mining, supply, cointime, activity (the former `cohort` wallet-size series now live in `supply` with axis `by: wallet_size`). Examples: `GET /api/v1/onchain/series` (catalog), `GET /api/v1/onchain/series/mvrv/latest`, `GET /api/v1/onchain/series/sth_sopr_24h/history?from=2024-01-01`. Available: mvrv, realized_price, sth_sopr_24h, lth_sopr_24h, puell_multiple, nupl + STH/LTH cohorts, reserve_risk (price ÷ cumulative HODL bank, ~1e-6 scale, ceilings fall structurally across cycles — compare within an era, not against old-cycle thresholds), rhodl_ratio (PLAIN ratio, latest ~0.07 on 2026-09-18 — the classic "50,000 = top" annotation belongs to a scaled variant and does NOT apply here), thermocap_ratio (market_cap ÷ thermo_cap, derived in-house; measured cycle peaks ~39× 2011 · ~59× 2013 · ~73× 2017 · ~49× 2021, floors rising across eras — no fixed threshold), delta_price and top_price (cap models derived in-house from market_cap / realized_cap / circulating_supply: Delta Price = (realized cap − all-time mean of market cap) ÷ supply, a floor model that price undercut in 2015 and touched in 2018; Top Price = 35 × all-time mean of market cap ÷ supply, a ceiling model that fit the 2013/2017 tops within ~20 % and has run away since — no balanced_price, BRK serves no transferred_price), hash_rate + SMAs, difficulty, fee_dominance, cointime suite (active/vaulted price + supply, true_market_mean, aviv_ratio, investor/active/thermo cap, coindays_destroyed, lth_coindays_destroyed (the long-term-holder part of the same daily total — BRK's LTH cohort is 150+ days, NOT the 155-day Glassnode convention; divide by coindays_destroyed for the LTH share of destruction, and read it over a multi-day window, never a single print), dormancy_1m, liveliness — note `vaultedness` is deliberately NOT exposed: it is exactly 1 − liveliness and carries no additional information), circulating_supply (total circulating BTC, cumulative issuance — the 100% total the supply breakdowns share out), daily activity (tx_count, transfer_volume_usd, …), addrs_over_{1,10,100,1k,10k,100k}_btc_supply (wallet-size supply tracking), hodl_waves_age_* (13 disjoint age bands, percent of supply, sum = 100%; age = time since last on-chain move, NOT ownership). One of the 65 is a duplicate under a second upstream name: `hodled_or_lost_supply` returns exactly the same values as `vaulted_supply` (verified across all 6,432 days, max difference 0) and is marked `alias_of` in the catalog — it stays callable, but count distinct on-chain quantities as 64, and use `vaulted_supply` for new work. `coinbase_premium` (group `liquidity`) is Coinbase BTC-USD vs Binance BTC-USDT in percent, computed in-house from 2017-08-17 — an indication of US spot demand, not a measurement: Coinbase quotes USD and Binance USDT, so USDT peg deviation rides along, and its scale is not comparable across eras (largest yearly reading fell from 13.35 % in 2017 to 0.22 % in 2025 as arbitrage matured). `ssr` (Stablecoin Supply Ratio, group `liquidity`) is likewise not sourced on-chain: BTC market cap ÷ aggregate stablecoin supply (BRK ÷ DefiLlama), computed in-house, starting 2017-11-29 — its pre-2019 values are dominated by DefiLlama's coverage ramp and are not comparable with today's single digits.
- **Data Quality / Drift Log**: `GET /api/v1/data-quality/drift?days=90` — transparency tool showing where BRK and an independent second provider diverge on the same on-chain quantity. Useful for assessing data reliability before using the values. The second source CHANGED: bgeometrics until 2026-07-06, Coinmetrics from 2026-09 (the bgeometrics ingest was decommissioned when its series moved to BRK). Every row and summary group carries `comparison_source` — do not average across sources. Active pairs: `market_cap`, `circulating_supply`, `hash_rate`, `puell_multiple` (Coinmetrics' free tier exposes no realized cap or issuance, so the retired pairs `realized_price`, `sth_sopr`, `lth_sopr` end at 2026-07-06 and stay queryable as history). `puell_multiple` is computed differently on each side — BRK native, Coinmetrics derived from the supply delta — so that pair tests the whole derivation chain rather than a raw value.
- **Bitcoin Chart Snapshots**: `/api/v1/charts/{slug}/latest` + `/history` for all ~23 chart indicators (MVRV-Z, NUPL, SOPR, Mayer, Pi-Cycle, Rainbow, Power-Law, 200WMA-Heatmap, HODL-Waves, Funding-Rates, Hash-Ribbons, Fear&Greed, ETF-Flows, Monthly-Returns, Cycle-Overlay, BTC·CCI·OECD-CLI, …). Uniform multi-field payload `{ date, ...fields }` (scalar charts → one field, multi-line charts → several). `GET /api/v1/charts` lists each slug's `has_api_series` flag. `cycle-overlay/history` additionally takes `?view=halving` (every cycle as days since its halving, multiple of the halving-day close) or `?view=bear` (every bear market as days since its cycle high, drawdown in %) — long format, one row per cycle and day, plus a `meta.cycles` summary (peak/trough, day counts; the open cycle is flagged provisional — its high is the highest close so far, not a top signal).
- **Macro Regime**: `GET /api/v1/macro/regime/latest` — daily snapshot of 18 macro components in 6 tiers (Liquidity 30% / Financial Conditions 20% / Risk Appetite 15% / Crypto Liquidity 10% / Business Cycle 15% / Inflation 10%), composite 0-100, regime label, 2D-matrix quadrant (sweet_spot / late_cycle_warning / crisis / recovery). FRED-sourced. `GET /api/v1/macro/regime/history?days=N` for timeline up to 365d.
- **BTC × Macro Correlations**: `GET /api/v1/macro/btc-correlations/latest` — weekly-computed correlations: BTC performance per macro quadrant (annualized return, vol, max drawdown), Pearson correlations BTC ↔ 13 macro components (90d/1y/5y + quartile-performance), BTC ↔ dxy/paxg/spyb/qqqb (rolling + per-quadrant; paxg/spyb/qqqb are tokenized on-venue proxies for gold / S&P 500 ETF / Nasdaq-100 ETF — tracking noise applies, and windows the vehicle history does not cover are null with data_start_date; the ETF proxies listed on Binance mid-2026, so their windows fill in over time — 90d first). Historical analysis only, not investment advice.
- **Volatility Phase Snapshots**: `GET /api/v1/volatility/phase-snapshots?asset_type=crypto` — current ATR volatility phase (low/normal/high/expansion) for the tracked Top-10 crypto assets. Updated daily 08:00 UTC. Free tier.
- **Volatility Recommendations**: `GET /api/v1/volatility/recommendations?pair=BTCUSDT&asset_type=crypto` — top-3 strategies ranked by historical win-rate in the current volatility phase. Answers "which strategies work best for BTC right now?". Min 20 trades per phase for inclusion. API Pro tier.
- **Altcoin Screener**: `GET /api/v1/gem/scores` (ranked list, Free ≤10 / Pro ≤50 / Power ≤200), `GET /api/v1/gem/scores/{coinId}` (detail + `factors_raw` for Pro+), `GET /api/v1/gem/scores/{coinId}/history?from=&to=` (daily history, Pro+, max 1 year), `GET /api/v1/gem/validation?top_n=N` (Backtest-Lite equity curve + CAGR/MaxDD/win-rate vs BTC). Daily refresh. Factors: A=Mean-Reversion, B=Tokenomics, C=Market-Structure (9 total).
- **BTC Market Structure**: `GET /api/v1/onchain/btc-market-structure/latest` — Phantomflow adaptation on BTCUSDT 1d (1000 bars): current_trend (up/down/sideways), counts of waves + fractals, last-5 pivot points each side. Educational structure analysis, no signal.
- **Edge Library Filter Reports**: `GET /api/v1/edge/reports?market=crypto[&strategy=golden_cross][&verdict=helps][&limit=][&offset=]` — Aggregated filter-effect analysis: baseline vs. filtered median CAGR (with 90% bootstrap interval `delta_ci_low`/`delta_ci_high`) + Sharpe delta per (strategy, filter) pair, grouped by strategy (envelope fields once, zero-run cells folded into `filters_without_data`). Response includes `dsr` (Deflated Sharpe Ratio, PSR(SR̂₀) per Bailey & López de Prado 2014) and `dsr_pass` (boolean, threshold ≥90%, null with `dsr_pass_reason` below 30 runs) for multiple-testing correction. Verdict from the interval: helps/neutral/hurts/insufficient_evidence/insufficient_data (≥30 runs per arm). MCP: `arena_get_edge_reports` (Free). Public no-auth detail pages: `GET /edge/{market}/{strategy}/{filter}` (JSON-LD, ISR 1h).
- **Deribit BTC Max Pain**: `GET /api/v1/onchain/max-pain/latest` — Last finalized Deribit BTC options expiry (max_pain_strike, spot_at_expiry, spot_minus_max_pain_pct, put_call_ratio, total_notional_usd, is_quarterly) + up to 10 upcoming expiries with live max-pain and days_to_expiry. `?include_strike_ladder=true` adds per expiry the open interest per 2.5 % price band around spot (±25 %, calls/puts, absolute contracts, day-over-day delta) — OI is a stock, not a side; no hedge direction follows. `?include_gex=true` adds dealer gamma exposure per band plus totals across the book (BS gamma from live Deribit mark IV, USD per 1 % move) — the dealer sign is an ASSUMPTION: both conventions (dealers-short-all, SqueezeMetrics) are published side by side, each with its own zero-gamma level; where they disagree, the data does not know the answer. Cron 02:00 UTC. Free tier. History (Pro+): `GET /api/v1/onchain/max-pain/history?days=N` — all past expiries, days capped (Pro 365d / Power 3650d). MCP tools: `arena_get_max_pain` (Free) + `arena_get_max_pain_history` (Pro).
- **Signal Transition Events**: `GET /api/v1/signal-events/history?days=N[&end_date=YYYY-MM-DD][&signal=<key>]` — event log of discrete transitions across 13 declared top/bottom signals (bullmarket stages 1-5, pulse band, hash ribbons, MVRV-Z regime, Mayer band, NUPL zone, Pi-Cycle cross, golden/death cross, price vs 200W-MA). Each event: from/to state, occurred_at vs event_date (confirmation day after per-signal dwell — use event_date for forward evaluation), declared threshold params, btc_close, drawdown vs ATH-to-date. Window capped in size (tier), free in position via end_date. Events are reconstructions from today's stored series under declared rules — not what a live observer necessarily saw, and not forecasts. Per-signal coverage block names the measured reconstructable-from date (earliest 2009). MCP tool: `arena_get_signal_events` (Free).
- **BTC Key Levels (S/R clusters)**: `GET /api/v1/onchain/btc-key-levels/latest` — reproducible support/resistance zones built by clustering the market-structure swing fractals (pivot highs + lows) into price zones within a tolerance band. Each zone has a touch-count (how often it was tested), band, last-touch date and signed distance from spot; resistance = above spot, support = below, nearest-first. Replaces eyeballing levels off a fractal chart. MCP tool: `arena_get_key_levels`. Descriptive only, not a signal. Free tier.
- **BTC Short-Term-Holder Cost Basis**: `GET /api/v1/onchain/sth-cost-basis/latest` — latest STH cost basis (realized price of coins younger than ~155 days, BRK `brk_sth_realized_price`) plus derived STH-MVRV (spot ÷ cost basis) and an `in_loss` flag (spot below cost basis = recent buyers underwater in aggregate, historically stress / near local bottoms). MCP tool: `arena_get_sth_cost_basis`. Descriptive on-chain context, not a signal. Free tier.
- **Deribit IV Snapshots**: `GET /api/v1/vol/iv/{currency}/latest` (latest DVOL + constant-maturity ATM-IV 30/60/90/180d + 30d realized vol + vol risk premium; currency=BTC|ETH), `GET /api/v1/vol/iv/{currency}/history?from=&to=` (daily time series, max 730d; BTC from 2021-04-01, ETH from 2022-02-15). MCP tool: `arena_get_iv_snapshot`. Free tier.
- **Spot Taker Imbalance**: `GET /api/v1/taker-imbalance?days=&pair=` — daily SPOT taker-buy share for a Binance pair (taker-buy volume ÷ total volume per UTC day, 0..1; 0.5 = balanced aggressor flow). Derived ratio only, raw volumes are not redistributed. Spot aggressor flow, NOT futures positioning — for leverage use `funding-rate`. The forming day is excluded because its share still moves. Returns series + latest + window_mean + n_days + `range` (requested vs. granted). MCP tool: `arena_get_taker_imbalance`. Free tier.
- **Kimchi Premium**: `GET /api/v1/kimchi-premium?days=` — Upbit BTC/KRW (USD-converted) vs. the global BTC/USD price in percent, one point-in-time reading per UTC day (~01:45 UTC); both legs from the same source (CoinGecko) so the ratio is internally consistent. Positive = Korean premium. ⚠️ Forward-only since 2026-08 and structurally not backfillable — early on `n_days` is small and the payload says so. MCP tool: `arena_get_kimchi_premium`. Free tier.
- **Alt-vs-BTC Strength**: `GET /api/v1/alt-vs-btc-strength/latest` — per Binance USDT pair the 30-day return of the ALT/BTC ratio in percent (positive = beat Bitcoin), plus each pair's trend state on the last day (uptrending / basing / downtrending, locked SMA50/SMA200-on-ratio definition, `definition_hash` in the payload). Sorted strongest-first, ~380 pairs, survivors only, refreshed weekly (GitHub Actions; `data_through` names the data stand, a pair with older `last_date` is stale). Descriptive ranking, NOT a signal — the measured base rate says the "uptrending" state sat BELOW the unconditional median at every horizon; the payload links it as `base_rate_context` (knowledge object `alt_vs_btc_base_rate/GLOBAL`). Human view: [/dashboard/altcoins/vs-bitcoin](https://tradingstrategies.work/dashboard/altcoins/vs-bitcoin). Free tier.
- **Market Insights**: `GET /api/v1/market-insights` — 5 aggregated market signals from community backtest data (no external APIs): (1) Signal Convergence Index (% of active strategy alerts on BUY, from ampel_status), (2) Backtest Success Rate per strategy (% with positive CAGR, last 90d + delta vs prior 90d), (3) Strategy Divergence / Market Mode (trend vs mean-reversion CAGR gap → trend/sideways/unclear label), (4) Community Focus Shift (7d run-count change per asset class), (5) B&H Beater Rate per asset class (% beating buy & hold, last 90d). Each insight is null when min-data threshold not met. Cache 1h. Free tier.
- **MMA Pair Trading Signal Insights**: `GET /api/v1/mma/signal-insights` — aggregates all community MMA-Arena backtest runs into: (1) signal-mode matrix (avg CAGR per pair-type × signal-mode ratio/momentum/rsi, cells with ≥3 runs, best mode highlighted), (2) top-20 pair leaderboard by avg CAGR (min. 5 runs, includes best_signal_mode, avg win rate, max drawdown, correlation). Returns `total_runs`; matrix + leaderboard are empty below 50 runs (data-collection phase). Cache 1h. Free tier.
- **Knowledge Objects**: `GET /api/v1/knowledge/{type}/{subject}` — generic, versioned, explainable Knowledge Objects. ONE endpoint covers ALL types (new types appear automatically once published). **Discover what exists first via the catalog `GET /api/v1/knowledge`** (lists every type + its subjects with `min_tier`, `api_path`, `seo_slug`, latest `as_of`). **31 types total** — always call the catalog for the current list; each object returns the published envelope: payload, explanation (factors + weights + confidence), provenance (inputs + params), ontology binding, compute version + repro_hash. Optional `?as_of=YYYY-MM-DD` (omit for latest). **Graph traversal (Layer 4):** add `?include=graph` (or MCP `arena_get_knowledge` with `include_graph=true`) to also get the resolved edge neighbourhood — outbound edges (what this object is `derived_from`/`references`) + inbound edges (what derives from / references it), each with `api_path`+`seo_slug` so you can follow them. The catalog exposes `edge_count` per subject to find graph hubs. Per-object access gated by `min_tier`. MCP tools: `arena_list_knowledge` (catalog) + `arena_get_knowledge`. Free tier. Live types include: `market_regime/GLOBAL`, `altcoin_season/GLOBAL`, `volatility_phase/BTC`, `arena_score/{strategy}`, `strategy_edge/{market}`, `strategy_edge_leaderboard/GLOBAL`, `live_proof/GLOBAL`, `market_pulse/BTC`, `asset_correlation/BTC`, `market_structure/BTC`, `gem_score/GLOBAL`, `max_pain/BTC`, `etf_flows/GLOBAL`, `strategy_dna/{strategy}`, `market_analogue/BTC` (conditional forward-return distribution from the most similar historical cycle fingerprints), `return_probability/BTC` (unconditional forward-return base rate 30/90/180/365d), `volatility_premium/BTC` (implied-vs-realized variance risk premium + IV rank), `market_briefing/BTC` (composite net tilt with knowledge-graph edges; human view at `/market/bitcoin-today`), `strategy_regime_sensitivity/{strategy}`, `btc_valuation/BTC`, `supply_distribution/BTC`, `spending_behavior/BTC`, `miner_state/BTC`, `alt_cycle/{asset}` (ETH/SOL, human views `/market/eth`, `/market/sol`), `asset_event_state/{subject}` (BTC/ETH/SOL/GLOBAL — look-ahead-free event state), `event_base_rate/{subject}` (event-conditional forward-return base rates; `REGIME_SHIFT_*` and `LISTING` — the LISTING subject is a survivorship-biased UPPER BOUND and says so), `btc_liquidity_fair_value/BTC` (the HONEST counter-model: BTC and G3 liquidity are NOT cointegrated — ADF p≈0.999, DW≈0.06 — so the popular "fair value" reading is explicitly flagged not-interpretable), `confluence_state/BTC` (graded multi-domain alignment with the EFFECTIVE number of independent domains), `onchain_cost_basis_ladder/BTC` (Cointime cost-basis ladder, BRK-native), `alt_vs_btc_base_rate/GLOBAL` (alts denominated in BTC: the median alt LOST against BTC at every horizon; the "uptrending" label lags a trend by ~80 days by construction), `zone_base_rate/{ZONE}_{ASSET}` (state-conditional forward-return base rates for a closed catalog of four zones × BTC/ETH/SOL, measured on each asset's OWN expanding percentile ranks so the same zone means the same thing on every asset; carries the contiguous stretches the state held AND the cooldown-collapsed independent episode count separately — as of 2026-09 every one of the twelve reports `no_verdict`, because non-overlapping 365-day outcome windows leave 0–2 independent episodes in five to eight years of history).
- **Ontology (term definitions)**: `GET /api/v1/ontology/{term}` (e.g. `regime`, `liquidity`, `altcoin_season`, `volatility_phase`, `arena_score`) — canonical definition + calculation + unit + source + version + related terms. `GET /api/v1/ontology?category=` lists all. Resolves the `onto:<term>@<version>` references found inside Knowledge Objects. MCP tool: `arena_get_ontology_term`. Free tier.
- **Strategy Insights, Backtest Read + Trigger, Custom Reports**: full feature surface — see [the openapi.json](https://tradingstrategies.work/openapi.json) for the complete spec.

For higher-frequency use or paid tiers (API Pro €9.99/mo or API Power €29.99/mo), upgrade at [/dashboard/account/api-keys](https://tradingstrategies.work/dashboard/account/api-keys).

## Agent x402 Pay-per-Call Endpoints (no account, USDC on Base)

For autonomous AI agents that consume data without account-setup overhead. Server returns HTTP 402 + payment instructions on the first GET; the agent signs an EIP-3009 TransferAuthorization, retries with `X-PAYMENT` header. Settled gas-free via the configured facilitator. Network: Base (mainnet `eip155:8453`). 28 paid endpoints under `/api/v1/agent/*` (incl. a generic `GET /api/v1/agent/knowledge/{type}/{subject}` that serves ANY Knowledge Object for $0.01 — same envelope as the free REST knowledge endpoint, covers all types):

- **Discovery — FREE (no payment, no key):** `GET /api/v1/agent/catalog/strategies`, `GET /api/v1/agent/catalog/universes`, `GET /api/v1/agent/catalog/onchain-series`, `GET /api/v1/agent/catalog/knowledge` — find out WHICH endpoint/strategy/series/knowledge-object you need before paying the data price. Prices themselves are machine-readable in every 402 response and in [/.well-known/x402.json](https://tradingstrategies.work/.well-known/x402.json).

- **Snapshots — $0.01 USDC each:** `arena-pulse/today`, `btc-cycle/latest`, `alt-cycle/latest` (ETH/SOL per-coin cycle, requires `?asset=ETH|SOL`), `altcoin-season/latest`, `fear-greed/today`, `bullmarket-ampel/latest`, `funding-rate/latest`, `hash-ribbons/latest`, `mayer-multiple/latest`, `macro-regime/today`, `btc-market-structure/today`, `btc-key-levels/latest` (reproducible S/R clusters), `max-pain/latest`, `strategy/performance` (per-asset, requires `?strategy=...&asset=...`), `strategy/filter-effect` (per-asset, requires `?strategy=...&asset=...`), `gem/scores/today` (Altcoin Screener Top-10).
- **Insights — $0.05 USDC each:** `insights/strategies`, `insights/strategy-filters`, `insights/volatility`, `insights/sentiment`, `insights/winners`, `strategy/performance-by-regime` (per-asset backtest split by macro regime + "trade now?" recommendation, requires `?strategy=...&asset=...`), `volatility/history` (full BTC volatility time series — realized vol 30/90d √252 + ATR% EMA-14 + expanding percentile ranks; descriptive, no signal).
- **Trigger (POST) — $0.10-$0.50 USDC:** `backtests/run` ($0.10, single-asset backtest), `backtests/grid` ($0.10, grid-bot backtest), `backtests/compare` ($0.30, 2-5 strategies vs each other), `backtests/universe` ($0.50, up to 10 pairs inline). Results inline, no DB-persistence for anonymous callers. Bigger universes (up to 50 pairs) via authenticated REST/MCP with API key. Authenticated `POST /api/v1/backtests/run?montecarlo=true` (Pro) adds a `montecarlo` block: trade-order block-bootstrap over the realized trades → CAGR/drawdown/equity P5–P95 bands + probability of ruin / of beating Buy & Hold (sequencing fragility, not a price forecast).

The `x-x402` extension in `openapi.json` exposes pricing per endpoint for autonomous discovery. Live price catalog: [/.well-known/x402.json](https://tradingstrategies.work/.well-known/x402.json).

## Response-field notes

- **Deflated Sharpe Ratio (DSR)** (Pro+ UI feature, shown after each backtest result): Multiple-testing correction per Bailey & López de Prado (2014). Shows raw per-period Sharpe, PSR(0) (probability true Sharpe > 0) and DSR = PSR evaluated at the deflation threshold SR̂₀ derived from the user's N previous trials for the same strategy × asset × interval × period. Verdict: pass (≥95%) / borderline (90–95%) / fail / single_trial / insufficient. `sharpe_per_period` (trade-level, biased 1/n, not annualized) and `result_sharpe` (annualized, equity-curve-based, mark-to-market log returns, √252/52/12 scaling, zero risk-free, null if <30 observations) both exposed via `/api/v1/backtests` response fields.
