Backtesting Arena vs Tradememory Protocol

A side-by-side look at the Backtesting Arena and Tradememory Protocol MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Backtesting Arena logoBacktesting ArenaFinance & Fintech · Remote HTTP/SSECrypto backtesting & Bitcoin cycle analytics. Point-in-time, DSR-corrected, look-ahead-aware.60GoodAuth: api key requiredTradememory Protocol logoTradememory ProtocolFinance & Fintech · Local subprocess (stdio)Glama 🐍 🏠 - Structured 3-layer memory system (trades → patterns → strategy) for AI trading agents. Supports MT5, Binance, and Alpaca.68GreatAuth: no auth required

Verdict: choose Backtesting Arena for finance & fintech work over a hosted endpoint; choose Tradememory Protocol for finance & fintech as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Backtesting Arena logoChoose Backtesting Arena when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a remote HTTP/SSE transport.
  • Its auth model fits you: API key required.
  • You want tools like arena_get_pulse, arena_get_cycle, arena_get_spot_price.
Explore Backtesting Arena

Tradememory Protocol logoChoose Tradememory Protocol when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like get_strategy_performance, get_trade_reflection, remember_trade.
Explore Tradememory Protocol

Feature & specification comparison

Rows where the two servers differ are marked.

SpecBacktesting Arena logoBacktesting ArenaTradememory Protocol logoTradememory Protocol
CategoryFinance & FintechFinance & Fintech
Quality signal60/100 · Good68/100 · Great
Install commandConfirmedConfirmed
TransportRemote HTTP/SSELocal subprocess (stdio)
AuthAPI key requiredNo auth required
PricingFreemiumFree
Required env varsNone listedNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars01,431
Directory activity 6 views 0 installs 0 upvotes 5 views 0 installs 0 upvotes
Tools4920

Tools & capabilities

Backtesting Arena tools 49

  • arena_get_pulseHow 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 score_percentile ranking today’s score against its own history (e.g. 42 = 44th percentile — how hot/cold vs history, not just the raw number). score_semantics says which value you hold: the daily snapshot frozen once a day by the cron, or — before that cron has run for today — a live preliminary that still moves and whose percentile/deltas compare against frozen snapshots. band_driver names the number the band follows. Pass fields="full" for `drivers[]`: each component with value, weight, contribution (they add up to the score) and percentile_rank against its own history. [Free tier]
  • arena_get_cycleCrypto 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 score_* fields; the weights are in drivers[] under fields="full"; components without input are excluded and weights renormalized, see indicator_coverage). Includes an `ath` block (E32): ATH on UTC daily-close basis with ath_date, days_since_ath and drawdown_from_ath_pct vs BOTH the scoring price and the live spot. Pass asset=ETH or asset=SOL for a 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, F&G, Pi-Cycle) are returned as `not_applicable` rather than faked. All return raw + Z-Score, signal enum, and a `percentiles` block ranking each indicator against that asset’s own history. The `signal` enum is a FIXED SCORE-BAND LABEL (<25 accumulation · 25–45 recovery · 45–60 expansion · 60–75 distribution · ≥75 overheated), not an independent market-phase detection: the 45–60 band is the neutral middle, so a mid-band score reads "expansion" even in a drawdown market — the label describes the score band, not the market. BTC additionally returns `highlights[]` (rule-based markers for currently unusual indicator values — descriptive, versioned ruleset; empty array = nothing unusual) and `price_context` (price at scoring time vs live spot with drift % — the scores rest on the scoring-time price). Point-in-time scored — not reconstructable from a generic price API. The volatility series itself is arena_get_volatility_history; this tool carries the regime context around it. score_fields_note explains the four score fields: z_score/z_adj_score are the composite standardized against its own history and mapped back onto the 0-100 scale, NOT statistical z-values; halving_context.ath_days_after_halving puts the observed cycle high next to days_since_halving. Pass fields="full" (BTC) for `drivers[]`: each indicator sub-score with its renormalized weight, contribution (they add up to raw_score — the input of the z_adj_score that `signal` follows) and percentile_rank against its own history. Related: arena_get_historical_analog (what followed states like this one), arena_get_bullmarket_ampel, arena_get_pulse. [Free tier]
  • arena_get_spot_priceCurrent 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 web search mid-analysis. [Free tier]
  • arena_get_stablecoin_supplyAggregate 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 direction and speed are visible, not just a single delta. Read `impulse` for what the supply change is doing — four states (accelerating / decelerating / reversal / flat). The neighbouring `acceleration_usd` is the signed difference last-30d minus prior-30d and gets LARGE exactly when the trend reverses, while the older boolean `accelerating` requires the same direction AND a bigger magnitude; a reversal therefore shows a big `acceleration_usd` next to `accelerating: false`. Source DefiLlama peggedUSD. [Free tier]
  • arena_get_etf_flowsSpot-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; `resolution` states points and spacing) so direction and speed are visible, not just a single delta. Read `impulse` for what the flow is doing — it has four states (accelerating / decelerating / reversal / flat) and is the field to quote. Two neighbouring fields measure different things and are easy to confuse: `acceleration_usd_m` is the signed difference last-30d minus prior-30d and gets LARGE precisely when the flow reverses, while the older boolean `accelerating` requires the same direction AND a bigger magnitude — so a swing from outflows to inflows shows a big positive `acceleration_usd_m` together with `accelerating: false`, which is correct and reads like a contradiction. `impulse` reports that case as 'reversal'. When `impulse` is 'reversal', `reversal_recovered_pct` says how much of the preceding counter-move has actually come back, with its denominator in `reversal_basis_usd_m` — quote it alongside, because a reversal in direction is not yet a reversal in the stock. Both are null otherwise. `source_inconsistencies` lists the days on which the source's own daily net flow and the change of its cumulative disagree (BTC: 2 of ~700 days, 2026-04-23/24 — the two-day sum matches, the day split does not); cumulative deltas and the 30d/90d windows are unaffected, per-day sums over those dates are. NYSE closing days that the source still lists come back with net_flow_usd_m null and market_closed: true (a closed market is not a zero flow). `availability` states when a day's flow was first known (measured from our own ingest; the source has no publication time) — use it for point-in-time work. For long windows pass `format: 'columns'` (parallel arrays, far smaller). Default BTC; pass asset=ETH, SOL, XRP, LTC, HBAR, DOGE, LINK, AVAX or DOT (US spot ETFs; the last seven have stored history only from 2026-09-21, so their 30d/90d windows are null until covered — `note` says so). No ZEC or NEAR ETF data. Source SoSoValue. [Free tier]
  • arena_get_altcoin_seasonIs 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 color (red/yellow/green) and Layer 2: altcoin_season_pct (share of top-50 alts beating BTC over 90 days) with altcoin_season_pct_basis (beating / eligible / expected — coins without a 90-day return drop out of the denominator) and altcoin_season_pct_provenance (grade full/partial/thin; fields="full" names the missing coins), plus the top-30 CoinGecko snapshot. [Free tier]
  • arena_get_fear_greedHow 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 whether today is a move or a plateau. The window is capped in SIZE but free in POSITION: `end_date` moves it anywhere in the history since 2018 (e.g. end_date=2025-10-06 reads the sentiment around the October 2025 top), and the `range` block states requested / granted / available days with the reason — a short series here is a window, not a young index. On Pro and Elite two Arena-derived blocks add what the upstream index does not publish: `cadence` (how far smoothed sentiment has travelled versus ~90 days ago) and `tempo` (how FAST the index is moving — 7d and 30d change ranked as a rolling percentile against three years of same-direction moves, not a fixed threshold; rank compares with its own history, not with "normal"). On Free both blocks are present but their values are null with a stated reason. For the regime around a reading use arena_get_cycle; for what followed comparable sentiment states use arena_get_historical_analog(preset="deep_fear"). [Free tier · cadence/tempo Pro+]
  • arena_get_bullmarket_ampelIs 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_count PLUS all five per-stage booleans, so which stage flipped when is readable directly (history_days 1-365, default 30). Higher count = more bull-market signals firing. Stages evaluate weekly 20W/50W-MA conditions. [Free tier]
  • arena_get_funding_rateAre 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_history via arena_call_extended). Positive = longs pay shorts (bullish bias), negative = shorts pay longs (bearish bias). Read `coverage` before comparing values across dates: it says how many exchanges stand behind that day (4 = full average, 1 = a single exchange), and a day-over-day move can be a change in composition rather than in the market; `venues_present`/`venues_missing` name the exchanges. `provenance` grades the average (full = all exchanges, partial, thin = under half — never a basis for a verdict); fields="full" adds the venue spread in bps and the min/max interval of the venue values. A value of exactly 0.0001 (0.01 % per 8h) on many days is the exchanges' base-rate clamp on USDT perpetuals, not a cap in our pipeline: it means "no premium beyond the base rate", and values above it are real market readings. [Free tier]
  • arena_get_macro_regimeWhat 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/risk_on_leaning/risk_on), cycle_phase_label (contraction/early_expansion/mid_expansion/late_expansion), matrix_quadrant (sweet_spot/late_cycle_warning/crisis/recovery), tier_scores (6 sub-scores), components (flat key/value of all 18), plus stale_components_detail dating each stale input (last_good_date + age_days + discontinued flag for series the upstream has retired for good) so freshness is quantified, not a vague caveat. Two component keys mean something narrower than their name suggests, so read them carefully: `vix_score` is the derived 0-100 score (a value of 71 means VIX around 18.6), NOT the VIX index level — the raw Cboe level is not redistributed over this channel; and `broad_dollar_index` is FRED DTWEXBGS (Broad USD Index, Jan 2006 = 100), NOT the ICE DXY, so readings near 120 are normal. `fed_funds_rate` is FRED FEDFUNDS, the monthly AVERAGE effective rate (lags; not the daily DFF, not the target range); `global_m2_yoy` is NOT M2 but the YoY change of G3 central-bank balance sheets (Fed+ECB+BoJ in USD) — it can fall while US M2 hits a record. component_notes carries these definitions in the payload. The former names `vix` and `dxy` were removed on 2026-09-01 after their announced deprecation window; `consumer_confidence_value` went with them (OECD retired the series, frozen since 2024-01-01, never weighted in the composite). `provenance` says how many of the 18 weighted components formed today’s composite (grade full/partial/thin; null for rows written before 2026-10-13, when coverage was not recorded); missing components drop out and the tier renormalizes, a tier with no input at all scores a stand-in 50 and is named in `degraded.empty_tiers`. Pass fields="full" for the named missing components, sources and per-tier provenance. `move_index` and `fed_funds_cuts_priced` are always null and never weighted — slots without a source, not outages. [Free tier]
  • arena_get_btc_market_structureIs 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), and trend_context: previous trend + its duration, flip_age_days, and a descriptive historical flip base rate over the SAME 1000 bars (total flips, share reverted within 5 bars, median trend duration) — a fresh same-day flip is the least settled observation — the base rate tells you how often such flips reverted historically, so you can weight the current one yourself. Educational analysis of price action. [Free tier]
  • arena_get_key_levelsWhich 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), resistance above spot, support below, nearest-first. (2) indicator_levels.above / .below: named indicator STANDS as marks — 200-day & 200-week simple moving averages, short-term-holder cost basis, Pi-Cycle legs — each carrying its source, formula and as_of date. The two classes are kept separate on purpose: pivots are where price REACTED before, indicator levels are where an indicator STANDS now. Both are measured price clusters: they say where trading has concentrated, not where anyone defends a level. [Free tier]
  • +37 more on the listing page

Tradememory Protocol tools 20

  • get_strategy_performanceGet aggregate performance stats per strategy. Use this to evaluate which strategies are working and which need adjustment.
  • get_trade_reflectionGet the full context and reflection for a specific trade. Use this to deep-dive into a particular trade's reasoning and lessons.
  • remember_tradeStore a trade into OWM multi-layer memory with automatic updates. Writes to episodic memory and automatically updates semantic (Bayesian), procedural (running averages + hold time + Kelly), and affective (EWMA confidence/streaks). Also writes to trade_records for backward compatibility.
  • recall_memoriesRecall memories using OWM outcome-weighted scoring. Queries episodic and semantic memories, scores them by outcome quality, context similarity, recency, confidence, and affective modulation. Returns ranked memories with score breakdown.
  • get_behavioral_analysisGet behavioral analysis from procedural memory. Returns aggregate trading behavior stats: hold times, disposition ratio, lot sizing variance, and Kelly criterion comparison.
  • get_agent_stateGet the current agent affective state (confidence, risk, drawdown). Returns confidence level, risk appetite, drawdown percentage, win/loss streaks, equity tracking, and a recommended action based on current drawdown severity.
  • create_trading_planCreate a prospective trading plan that activates when conditions are met. Stores a rule-based plan in prospective memory. The plan stays active until triggered, expired, or manually cancelled.
  • check_active_plansCheck active trading plans against current market context. Queries all active prospective plans, expires any past their expiry date, and matches remaining plans against the provided context.
  • evolution_fetch_market_dataFetch OHLCV market data from Binance for evolution analysis. Downloads historical price bars for backtesting and pattern discovery. Use this before discover_patterns or run_backtest to get data.
  • evolution_discover_patternsDiscover trading patterns from market data using LLM analysis. Uses Claude to analyze OHLCV data and generate candidate trading patterns with entry/exit conditions. Each pattern can be backtested afterward.
  • evolution_run_backtestBacktest a candidate pattern against historical OHLCV data. Takes a pattern dict (from discover_patterns) and runs a vectorized backtest. Returns fitness metrics: Sharpe ratio, win rate, trade count, max drawdown, total PnL.
  • evolution_evolve_strategyRun full evolution loop — generate, backtest, select, eliminate. Multi-generation strategy evolution: generates candidate patterns via LLM, backtests on in-sample data, validates survivors on out-of-sample data, eliminates weak hypotheses. Returns graduated strategies and graveyard.
  • +8 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Backtesting Arena

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "backtesting-arena": {
      "url": "https://tradingstrategies.work/api/mcp"
    }
  }
}

Tradememory Protocol

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "mnemox-ai-tradememory-protocol": {
      "command": "uvx",
      "args": [
        "tradememory-protocol"
      ]
    }
  }
}

Frequently asked questions

Backtesting Arena is categorized under Finance & Fintech and uses a remote HTTP/SSE transport. Tradememory Protocol belongs to Finance & Fintech and uses a local stdio subprocess. Pick Backtesting Arena for finance & fintech work and Tradememory Protocol for finance & fintech.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Backtesting Arena is listed as freemium — a free tier with paid plans. Auth: api key required. Tradememory Protocol is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add backtesting-arena and mnemox-ai-tradememory-protocol as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Backtesting Arena has a quality signal of 60/100 (Good) with 6 views, 0 installs and 0 GitHub stars. Tradememory Protocol has 68/100 (Great) with 5 views, 0 installs and 1,431 GitHub stars.