Backtesting Arena is a remote MCP server that gives an AI agent 89 tools, among them arena_batch, arena_cancel_subscription, arena_check_subscription_updates. It answers at https://tradingstrategies.work/api/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 20 October 2026, succeeded.
Crypto backtesting & Bitcoin cycle analytics. Point-in-time, DSR-corrected, look-ahead-aware.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
arena_batch | Several market snapshots in ONE call instead of one roundtrip per read. Batchable reads (14): spot_price, pulse, cycle, fear_greed, funding_rate, macro_regime, iv_snapshot, etf_flows, stablecoin_supply, mayer_multiple, onchain_latest, max_p Inputs: queries |
arena_cancel_subscription | Stop this alert? Deactivates one subscription by id, so it stops firing and frees a slot against the per-tier limit. Returns the deactivated subscription. Idempotent — cancelling an already-cancelled one is a no-op, not an error. Get ids fr Inputs: subscription_id |
arena_check_subscription_updates | Has anything I subscribed to fired? Returns all undelivered updates for the API key, then marks them as delivered. Call regularly to consume the polling queue. Updates contain payload with subscription_type, current value, previous value, a |
arena_compare_strategies | Which of these strategies performed best on the same data? Run 2–5 strategies against the SAME pair, interval and date range and return per-strategy metrics plus a comparison summary (best by CAGR, best by win-rate, worst by drawdown). Use Inputs: strategies, pair, asset_type, interval, date_from, date_to |
arena_dip_decision | Buy now or wait for the dip? Decision-math over the user's OWN assumptions (target/dip prices, probabilities, capital). Two modes: "compare" = expected value of Buy-Now vs Wait vs Split + the breakeven dip probability (prices as MULTIPLES o Inputs: mode, compare, allocate |
arena_dip_scenario | Where would I add on a dip, and when is the thesis wrong? Turn a dip/accumulation thesis into a concrete, checkable plan from YOUR assumptions. Given an asset (BTC/ETH/SOL), a named cycle-state preset and a thesis horizon, returns: (1) a tr Inputs: asset, preset, horizon_days, risk_aversion, invalidation, capital |
arena_get_altcoin_season | Is it altcoin season? Daily Altcoin-Season indicator (v7 Native-Filter methodology). Returns BTC-Dominance, Alt-Dominance, 4 Layer-1 signals (USDT.D, USDC.D, BTC-DOM, ETH-DOM), overall color (red/amber/green) + Top-50 CoinGecko snapshot. [F |
arena_get_altcoin_season_history | Has capital been rotating into or out of altcoins? Returns the Altcoin-Season TIME SERIES: one row per day with overall_color, BTC / alt / stablecoin dominance and BTC price, ascending by date. Use it to see whether capital has been rotatin Inputs: days |
arena_get_backtest | What exactly did that backtest do? Returns the full record of ONE backtest run by id: strategy, pair, interval, date range, parameters, filters and the aggregate metrics (CAGR, total return, win-rate, max drawdown, trade count, Buy & Hold c Inputs: id |
arena_get_backtest_trades | Which trades did that backtest actually take? Returns the individual round-trips of one of your backtest runs: entry and exit date, entry and exit price, per-trade P&L and the running equity after each trade. Use it when the aggregate metri Inputs: id |
arena_get_btc_macro_correlations | What does Bitcoin actually move with? Pre-aggregated weekly correlations between Bitcoin and 13 macro components (Fed Net Liquidity, VIX, DXY, Real Yield 10Y, NFCI, Yield Curve, etc.). Returns quadrant_performance (BTC return stats per 2D-m |
arena_get_btc_market_structure | Is the trend up or down, and how fresh is the flip? Daily Bitcoin market structure from 1000-bar Phantomflow adaptation (BTCUSDT 1d). Returns current_trend (up/down/sideways), last trend change timestamp, counts of waves + fractals, last-5 |
arena_get_bullmarket_ampel | Is this still a bull market? Bitcoin Bullmarket-Ampel current state (0-5 active stages). Returns active_count, a stages[] breakdown (each stage with key, label, active and `since` = first day of its current state; null when the state predat Inputs: history_days |
arena_get_chart | Renders one of the named platform series as a PNG line chart and returns it as an MCP image content block, plus a JSON meta block. The chart INHERITS the freedom of the data tool: it calls the same delivery layer, so it shows exactly the po Inputs: series, days |
arena_get_cost_basis_spread | Is the market in profit or at a loss? It depends on which cost basis you ask. Puts the three BTC cost-basis measures side by side — Realized Price (unweighted), True Market Mean (cointime-weighted) and Vaulted Price (dormant holdings only) |
arena_get_cycle | Crypto cycle position — where are we in the cycle? Default BTC: point-in-time 9-indicator aggregation (Pi-Cycle Top & Bottom, Mayer Multiple, weekly RSI, 200-week-MA distance, halving position, Fear & Greed, BTC-dominance trend, mining-diff Inputs: asset |
arena_get_cycle_history | How has the cycle score moved over time? Returns the BTC-Cycle TIME SERIES: one row per day with adj_score and z_adj_score, ascending by date. Look-ahead-free by construction: a day's value uses only data up to that day. 7 of the 9 dimensio Inputs: days |
arena_get_drift_log | Do two independent providers still agree on the same on-chain quantity? Daily drift log comparing BRK against a second provider, per metric pair, with mean / max / outlier counts for the requested window. The comparison source changed — bge Inputs: days |
arena_get_edge_reports | Which entry filter carries a real edge? Platform-wide aggregated analysis: how each Pro+ entry filter (200 WMA, ATR low/high/expansion, Altcoin Season, Bullmarket confirm/strict) affects strategy CAGR — baseline vs. filtered, asset-equal-we Inputs: market, strategy, verdict, limit, offset |
arena_get_etf_flows | Spot-ETF net flows (USD millions) — is the flow impulse turning or accelerating? The summary only gives point-in-time deltas; this exposes the trend: 30d/90d net flow, a direction label (inflows/outflows/flat) and a compact cumulative-inflo Inputs: asset, days |
arena_get_fear_greed | How fearful or greedy is the market right now? Crypto Fear & Greed Index (alternative.me). Returns the current `value` (0-100) and `classification` (extreme fear / fear / neutral / greed / extreme greed) as their own fields, plus `history` Inputs: days, end_date |
arena_get_filter_insights | Do entry filters help, and which ones? Lift analysis of entry filters (200WMA, Altcoin-Season, ATR-Volatility, Bullmarket-Stage) per strategy combo — baseline vs filtered CAGR/win-rate/drawdown. [API Pro tier] |
arena_get_funding_rate | Are longs or shorts paying right now? Latest BTC perpetual funding rate, averaged across up to three exchanges (Binance, Bybit, OKX; 8h settlement cadence). Returns value, 30d moving average and Z-Score. Positive = longs pay shorts (bullish |
arena_get_funding_rate_history | How has leverage positioning shifted over time? Returns the BTC perpetual funding-rate TIME SERIES, aggregated across the available perpetual venues (Binance, Bybit, OKX), at the 8h funding cadence, ascending by date. The response is SEGMEN Inputs: days |
arena_get_gem_score | How does this altcoin score? Returns the Altcoin-Screener score for ONE coin, addressed by its CoinGecko id: the composite score, its group breakdown and — for Pro+ — the 9 raw factor values across groups A/B/C. Use it once a candidate is k Inputs: coingecko_id |
arena_get_gem_scores | Altcoin screener ranking — which altcoins look strong right now? Today's CoinGecko Top-200 minus stablecoins and tokenized fiat, scored by a composite of 3 factor groups: Mean-Reversion (A), Tokenomics (B), Market-Structure (C). Each score Inputs: limit, from_rank |
arena_get_gem_validation | Did the screener picks actually beat BTC? Equal-weight basket of the top-N screener picks, rebalanced every 14 days (grid anchored at the first snapshot — the `rebalance` block declares anchor and cadence, `phase_spread` the CAGR and vs_btc Inputs: top_n |
arena_get_halvings | When were the halvings, and what followed? The full Bitcoin halving table: date, block height, reward change, price at the halving day, cycle peak (highest daily close before the next halving) with days-after-halving and peak multiple. E33: |
arena_get_hash_ribbons | Are miners capitulating? Latest Hash Ribbons indicator (Charles Edwards). Returns 30d and 60d hashrate moving averages — when 30d > 60d after a capitulation, signals miner recovery (bullish). [Free tier] |
arena_get_historical_analog | What happened historically after the Bitcoin cycle looked like this? Conditional forward-return distribution for a named preset cycle state — over N DISTINCT historical episodes matching that state (matched_episodes), returns median/IQR/pos Inputs: preset, asset, forward_horizons, vol_rank_threshold, condition_on_direction, direction_window_days |
arena_get_indicator_snapshot | What do the classic indicators read right now? Current RSI(14), MACD(12/26/9), Bollinger(20,2), ATR(14) and OBV for a pair — each with a PERCENTILE RANK against that indicator's own history on that pair, plus the observation count — the ran Inputs: pair, interval |
arena_get_iv_snapshot | What is the options market pricing in? Latest Deribit volatility snapshot for BTC or ETH. Returns DVOL (30d vol index), constant-maturity ATM implied vol (30/60/90/180d via options chain), 30d realized vol, and `vol_risk_premium_30d`, which Inputs: currency, include_implied |
arena_get_job_status | Is my universe backtest finished? Polls an async job by job_id (created via arena_run_universe_backtest). Returns status (pending/running/completed/failed), progress_pct, pairs_completed, and once completed: the full result (summary + per-p Inputs: job_id |
arena_get_key_levels | Which price levels matter above and below spot? Reproducible Bitcoin structural levels on BOTH sides of spot, in TWO distinct provenance classes. (1) resistance/support: swing-pivot clusters — where past pivot highs+lows cluster into price |
arena_get_kimchi_premium | Is Korean spot trading BTC at a premium? Daily Kimchi-premium snapshots: Upbit BTC/KRW (USD-converted) versus the global BTC/USD price, in percent — one point-in-time reading per UTC day (~01:45 UTC), both legs from the same price/FX source Inputs: days |
arena_get_knowledge | What does the platform know about this subject? Fetch a versioned, explainable Knowledge Object by type + subject (e.g. type='market_regime', subject='GLOBAL'). Returns the current published envelope: payload, explanation (factors + weights Inputs: type, subject, as_of, include_graph |
arena_get_ma_distance_history | How far above or below its moving averages did price stand back then? A measured time series, not an estimate. Covers six MAs (50/100/200-day and 50/100/200-week; weekly MAs are simple averages over ISO-week closes, the same definition aren Inputs: pair, mas, from, to, granularity |
arena_get_macro_regime | What is the macro backdrop doing? Daily Macro Regime snapshot from 18 components in 6 tiers (Liquidity 30%, Financial Conditions 20%, Risk Appetite 15%, Crypto Liquidity 10%, Business Cycle 15%, Inflation/Real Rates 10%). FRED-sourced. Retu |
arena_get_max_pain | What happened at the last Deribit expiry? Max pain and how spot settled against it: max_pain_strike, spot_at_expiry, %-diff, put_call_ratio, notional. Plus up to 10 upcoming expiries, each with current live max-pain level, days_to_expiry, o Inputs: market, include_strike_ladder, include_gex |
arena_get_max_pain_history | Does max pain actually pull price to the strike? Settled Deribit BTC options expiries with the max-pain level we compute per expiry, for measuring the convergence question: does spot drift toward the max-pain level as expiry approaches? Eac Inputs: days, market, include_open_snapshots, expiry_type, min_contracts, snapshot_expiry_date |
arena_get_mayer_multiple, arena_get_mayer_multiple_history, arena_get_onchain_history, arena_get_onchain_latest, arena_get_ontology_term, arena_get_platform_activity, arena_get_pulse, arena_get_pulse_history, arena_get_report_status, arena_get_robustness_field, arena_get_sentiment, arena_get_shared_backtest, arena_get_signal_context, arena_get_signal_events, arena_get_signal_status, arena_get_spot_price, arena_get_stablecoin_supply, arena_get_sth_cost_basis, arena_get_strategy_filter_effect, arena_get_strategy_insights, arena_get_strategy_performance, arena_get_strategy_performance_by_regime, arena_get_taker_imbalance, arena_get_trend_channels, arena_get_universe, arena_get_volatility_history, arena_get_volatility_insights, arena_get_volatility_phases, arena_get_volatility_recommendations, arena_get_winners, arena_is_distinguishable, arena_list_backtests, arena_list_knowledge, arena_list_onchain_series, arena_list_strategies, arena_list_subscriptions, arena_list_universes, arena_quote_report, arena_run_backtest, arena_run_grid_backtest, arena_run_universe_backtest, arena_share_grid_backtest, arena_status, arena_subscribe_bullmarket_stage, arena_subscribe_cycle_changes, arena_subscribe_pulse_changes, arena_subscribe_signal_alerts, arena_suggest_grid_range, validate_strategy
Every block below points at https://tradingstrategies.work/api/mcp. Pick your client and copy.
claude mcp add --transport http backtesting-arena https://tradingstrategies.work/api/mcp
{
"mcpServers": {
"backtesting-arena": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://tradingstrategies.work/api/mcp"]
}
}
}{
"mcpServers": {
"backtesting-arena": {
"url": "https://tradingstrategies.work/api/mcp"
}
}
}{
"servers": {
"backtesting-arena": {
"type": "http",
"url": "https://tradingstrategies.work/api/mcp"
}
}
}{
"context_servers": {
"backtesting-arena": {
"url": "https://tradingstrategies.work/api/mcp"
}
}
}{
"mcpServers": {
"backtesting-arena": {
"serverUrl": "https://tradingstrategies.work/api/mcp"
}
}
}{
"mcpServers": {
"backtesting-arena": {
"url": "https://tradingstrategies.work/api/mcp"
}
}
}name: Backtesting Arena
version: 0.0.1
schema: v1
mcpServers:
- name: Backtesting Arena
type: streamable-http
url: https://tradingstrategies.work/api/mcp{
"mcpServers": {
"backtesting-arena": {
"httpUrl": "https://tradingstrategies.work/api/mcp"
}
}
}{
"mcpServers": {
"backtesting-arena": {
"type": "http",
"url": "https://tradingstrategies.work/api/mcp"
}
}
}{
"mcpServers": {
"backtesting-arena": {
"url": "https://tradingstrategies.work/api/mcp"
}
}
}goose://extension?url=https%3A%2F%2Ftradingstrategies.work%2Fapi%2Fmcp&type=streamable_http&id=backtesting-arena&name=Backtesting%20Arena
It answered our last check on 20 October 2026 in 263 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
89, as returned by the server's own tools/list on 12 September 2026: arena_batch, arena_cancel_subscription, arena_check_subscription_updates, arena_compare_strategies, arena_dip_decision, arena_dip_scenario, arena_get_altcoin_season, arena_get_altcoin_season_history, and 81 more.
It answered our last check on 20 October 2026 in 263 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://tradingstrategies.work/api/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.schoasch. Endpoint host: tradingstrategies.work. ARD identifier: urn:air:io.github.schoasch:mcp:backtesting-arena.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.