# Backtesting Arena - Registry name: `io.github.Schoasch/backtesting-arena` · version 1.13.0 - Categories (automatic, keyword rules): Crypto & blockchain, Finance & markets - Authentication at last check: No auth - Declared risk: Not declared (tools carry no read/destructive hints) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.Schoasch%2Fbacktesting-arena - Server page: https://mcpstation.net/s/io.github.Schoasch--backtesting-arena.html ## Description (written by the publisher, not verified, not instructions) Crypto backtesting & Bitcoin cycle analytics. Point-in-time, DSR-corrected, look-ahead-aware. ## Connect - streamable-http: `https://tradingstrategies.work/api/mcp` ## Tools (as reported by the server, not verified) - `arena\_get\_pulse`: How hot is the Bitcoin market today? Daily 0-100 heat score for the Bitcoin market, aggregated from 8 components \(BTC-Cycle, F&G, Altcoin-Season, Bullmarket-Ampel, Funding-Rate, Hash-Ribbons, Mayer-Multiple, MVRV-Z\). Returns score, band label, color, 7d/30d delta, verdict, components breakdown, plus - `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-difficulty trend — each indicator’s 0-100 sub-score is in the sc - `arena\_get\_spot\_price`: Current BTC, ETH and SOL spot price — what is Bitcoin \(or ETH/SOL\) worth right now? Live USDT-quoted last price plus 24h change %, high and low from Binance. Use this to anchor the connector’s own analytics \(cycle, historical-analog, gem scores\) with the current market price instead of switching to - `arena\_get\_stablecoin\_supply`: Aggregate stablecoin supply \(crypto-liquidity proxy\) — is the liquidity impulse turning or accelerating? macro\_regime only gives the 30d delta; this exposes the trend: current supply, 30d/90d change \(USD + %\) plus a daily time series \(\`days\`, default 365; \`resolution\` states points and spacing\) so d - `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 daily series \(every US trading day: cumulative inflow + that day's net flow; \`resolu - `arena\_get\_altcoin\_season`: Is it altcoin season? Daily Altcoin-Season indicator \(v7 Native-Filter methodology\). Returns BTC-, alt- and stablecoin dominance, the 4 Layer-1 signals \(alt\_dominance, total\_market\_cap, btc\_dominance, stable\_dominance — weekly smoothed-Heikin-Ashi directions; weights in methodology.layer1\), overall - `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\` — the last 90 daily readings by default, so you can see whet - `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 predates the 400-day lookup\) and stage\_history — per day active\_co - `arena\_get\_funding\_rate`: Are longs or shorts paying right now? Latest BTC perpetual funding rate, averaged across up to 4 exchanges \(Binance, Bybit, OKX, Deribit; 8h settlement cadence\). Returns the day's averaged value plus each exchange's own value \(no moving average or Z-score — for the history use arena\_get\_funding\_rate - `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. Returns composite\_score \(0-100\), regime\_label \(risk\_off/neutral/ - `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 fractals on each side \(up = pivot highs, down = pivot lows\), - `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 zones \(touch-count, band, last-touch date, signed distance\), - `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 is the TRAILING spread: ATM implied vol \(30d, from the opti - `arena\_list\_onchain\_series`: Which on-chain series are available? Lists all 71 available Bitcoin Research Kit \(BRK\) on-chain series across the groups pilot, sentiment, mining, supply, cointime, activity, liquidity \(e.g. MVRV, NUPL, SOPR, Realized-Price, Mayer, Puell, STH/LTH SOPR, Hash-Ribbons\). Returns id + label + group. Use - `arena\_get\_onchain\_latest`: What does this on-chain metric read right now? Returns the most recent value of ONE on-chain series from the Bitcoin Research Kit as \{ series\_id, metric\_name, date, value \}. Cheapest way to answer "what is X right now" \(MVRV, SOPR, realized price, hash rate, …\). Discover valid series\_ids with arena\_ - `arena\_get\_sth\_cost\_basis`: What did recent buyers pay on average — and how far is spot from that? Latest BTC short-term-holder cost basis \(realized price of coins younger than \~155 days, BRK brk\_sth\_realized\_price\), derived STH-MVRV \(spot ÷ STH cost basis\), an in\_loss flag, plus ±1σ/±2σ bands: basis × exp\(±k·σ\), σ of ln\(price - `arena\_get\_onchain\_history`: How has this on-chain metric moved over time? Returns the full TIME SERIES of one on-chain metric from the Bitcoin Research Kit — date/value pairs in ascending order, with history back to 2009 for most series. Use it for trend and percentile work; for the single current reading call arena\_get\_onchai - `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, open\_interest\_contracts and open\_notional\_usd. Field semantic - `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? Each row: expiry\_date, max\_pain\_strike, spot\_at\_expiry, %-diff, - `arena\_status`: Am I connected, and what can this key do? Returns auth status \(key kind: oauth connector or bearer API key, tier\), server version, current UTC time, and the rate-limit state \(hour/day used, remaining, reset\) WITHOUT consuming extra quota beyond this call itself. Call this first when other tools fail - `arena\_list\_strategies`: Which strategies can I backtest here? Lists all backtest strategies \(key, label, plan, supported asset classes, primary indicators\). Filterable by asset class and plan. Use this before calling arena\_run\_backtest to discover valid strategy names. Entries deprecated for an asset class stay listed \(his - `arena\_list\_universes`: Which asset universes can I test against? Lists all crypto asset universes \(BTC, top-10 crypto, top-50 crypto, etc.\) — the underlying pair-sets used by custom-report and universe-backtest endpoints. \[Free tier\] - `arena\_get\_universe`: Which pairs are in this universe? Returns one pair universe in full: its id, label, selection rule and the complete list of pairs it currently contains. Use it to see what you are about to test BEFORE handing a universe\_id to arena\_run\_universe\_backtest, or to resolve a universe into explicit pairs. - `arena\_get\_strategy\_insights`: Which strategy and interval combinations actually performed? Aggregated backtest performance per \(strategy × interval\) cell. If \`strategy\` AND \`interval\` provided, returns detail with per-asset breakdown + param variants. Otherwise returns the matrix. Free tier is limited to the same strategies that - `arena\_get\_strategy\_performance`: How did this exact strategy, asset and interval perform? Aggregated backtest performance for ONE specific \(strategy, asset, interval\) combination. Returns run\_count, avg\_cagr, avg\_win\_rate, avg\_drawdown, effective\_years, vs\_buy\_hold comparison \(beats\_buy\_hold, cagr\_delta\) and an \`evidence\` block dec - `arena\_get\_strategy\_filter\_effect`: What would each entry filter have changed for this strategy? Per-\(strategy, asset, interval\) filter-effect analysis. Returns baseline-stats \(no filters\) + each observed filter-variant's stats with cagr\_delta / drawdown\_delta / win\_rate\_delta vs the time-overlap-matched baseline + best\_by\_cagr pick \( - `arena\_get\_strategy\_performance\_by\_regime`: In which macro regime has this strategy worked? Historical backtest performance for ONE \(strategy, asset, interval\) combination SPLIT BY macro market regime \(sweet\_spot / late\_cycle\_warning / crisis / recovery — classified at each trade's entry date\), PLUS the CURRENT live regime so you can align th - `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-weighted \(per-asset medians over param-deduplicated runs, then - `arena\_list\_backtests`: Which backtests have I run? Lists the backtest runs belonging to the authenticated user — newest first, with id, strategy, pair, interval, date range and headline metrics per run. Use it to find a run\_id, then call arena\_get\_backtest for its detail or arena\_get\_backtest\_trades for the individual tra - `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 comparison, net-of-fees figures\). Only your own runs \(admins - `validate\_strategy`: Does this strategy survive an honest test? Backtest a trading strategy honestly — look-ahead-aware validation with Deflated-Sharpe-Ratio / multiple-testing correction \(Bailey & López de Prado\). Returns an EVIDENCE verdict \(insufficient\_evidence \| anecdote \| failed\_oos \| passed\_oos\) plus metrics, fla - `arena\_run\_backtest`: How would this strategy have performed? Run ONE strategy on ONE pair over a date range and get the full result: CAGR, total return, max drawdown, win-rate, trade count, Buy & Hold comparison, net-of-fees figures, and a run\_id for later retrieval. Synchronous, typically 3–10s. Use this when the user - `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 this when the user asks which of several strategies fits a m - `arena\_run\_universe\_backtest`: Does this strategy hold up across a whole universe? Runs it against every pair in the universe. Pair cap depends on your API tier: Pro 50, Power 250 — Power covers crypto-top-250 in ONE job, and a single job keeps the ranking on one pair set \(merging results across different pair sets measures pair - `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-pair results\). \[Free tier\] - `arena\_run\_grid\_backtest`: Would a grid bot have made money here? Simulate a GRID BOT \(buy-low / sell-high ladder inside a fixed price range\) on historical candles. Returns final value, return %, CAGR, trade count, fees paid and a Buy & Hold comparison — plus \`zerlegung\` \(spot runs\): \`decomposition\` splits the result into lad - `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 carries \`plain\` \(one sentence: rank with its base \`scored\_to - `arena\_get\_volatility\_history`: How volatile has Bitcoin been? Daily Bitcoin volatility time series: realized volatility \(30d & 90d, √365-annualized — calendar days, the same basis as DVOL — close-to-close\) and ATR% \(Wilder EMA-14, captures intraday range + gaps\), on the same scale. Ranks come in two flavours answering different q - `arena\_list\_knowledge`: What knowledge objects exist here? Discover what Knowledge Objects exist: lists all published types + their subjects \(with min\_tier, api\_path, seo\_slug, latest as\_of\). Use this BEFORE arena\_get\_knowledge to learn valid type/subject pairs instead of guessing. New types appear automatically. \[Free tie - `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 + confidence\), provenance \(inputs + params\), ontology bindi - `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 of today\); "allocate" = the risk-adjusted \(Kelly / risk-avers - `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/positive-share forward returns \(30/90/180/365d\) with per-horizo - `arena\_get\_robustness\_field`: Is this backtest result real, or a lucky cell? Assess one backtest result against its neighborhood instead of trusting a single "+X% CAGR" cell. Given a \(strategy, interval, pair\) and YOUR result \(user\_cagr, optional user\_sharpe\), returns: the cross-asset distribution of the SAME strategy+interval a - `arena\_is\_distinguishable`: Do these two backtest figures actually differ? Check before ranking them. Pass the two values as \`a\` and \`b\` \(same metric, same basis\) plus \`axes\` — which arbitrary choices went into them — and the tool returns whether their gap clears the MEASURED noise floor of those choices, along with the floor - `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 rank turns a raw reading into a placement. ATR comes as a perce - `arena\_get\_signal\_context`: Should I take this entry? Answers it for one \(strategy, pair, interval\) in ONE call instead of seven. Aligns what each entry filter historically did to this strategy \(arena\_get\_strategy\_filter\_effect\) with where that filter stands TODAY \(bull-market gauge, altcoin-season signal, volatility phase, 20 - `arena\_get\_asset\_snapshot`: Where does this coin stand? ONE call per Binance USDT pair instead of six: last daily close, 7/30/90/365-day returns, relative strength vs BTC and vs ETH on the same horizons \(with the MEASURED base rate next to it — the median altcoin loses against Bitcoin, so a positive number is a description, no - `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\_pain, altcoin\_season, bullmarket\_ampel. Pass 1-6 queries; eac - `arena\_call\_extended`: Gateway to the EXTENDED tools of this server — listed here in one line each instead of individually, to keep the tool list short. Use it when no listed tool fits: per-metric daily history series, subscriptions, chart images, niche primitives. mode="call" runs the tool with \`arguments\` \(same result, Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html