Backtesting Arena
What this MCP does
Provides cryptocurrency market indicators, historical series, strategy backtesting, screener rankings, cycle analysis, and macro or on-chain analytics.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['queries'], 'properties': {'queries': {'type': 'array', 'items': {'type': 'object', 'required': ['tool'], 'properties': {'args': {'type': 'object', 'description': 'Args of the underlying single tool (omit when it takes none).', 'additionalProperties': {}}, 'tool': {'enum': ['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'], 'type': 'string', 'description': 'Which batchable read to run.'}}, 'additionalProperties': False}, 'maxItems': 6, 'minItems': 1, 'description': '1-6 queries, executed in order.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool'], 'properties': {'mode': {'enum': ['call', 'describe'], 'type': 'string', 'default': 'call', 'description': '"call" runs the tool; "describe" returns its description and input schema'}, 'tool': {'enum': ['arena_cancel_subscription', 'arena_check_subscription_updates', 'arena_cross_series', 'arena_dip_scenario', 'arena_get_altcoin_season_history', 'arena_get_backtest_trades', 'arena_get_btc_macro_correlations', 'arena_get_chart', 'arena_get_cost_basis_spread', 'arena_get_cycle_history', 'arena_get_drift_log', 'arena_get_filter_insights', 'arena_get_funding_rate_history', 'arena_get_gem_score', 'arena_get_gem_validation', 'arena_get_halvings', 'arena_get_hash_ribbons', 'arena_get_kimchi_premium', 'arena_get_ma_distance_history', 'arena_get_mayer_multiple', 'arena_get_mayer_multiple_history', 'arena_get_ontology_term', 'arena_get_platform_activity', 'arena_get_pulse_history', 'arena_get_reference_models', 'arena_get_report_status', 'arena_get_shared_backtest', 'arena_get_signal_events', 'arena_get_signal_status', 'arena_get_taker_imbalance', 'arena_get_trend_channels', 'arena_get_volatility_insights', 'arena_get_volatility_phases', 'arena_get_volatility_recommendations', 'arena_get_volume_profile', 'arena_get_winners', 'arena_list_subscriptions', 'arena_quote_report', 'arena_share_grid_backtest', 'arena_subscribe_bullmarket_stage', 'arena_subscribe_cycle_changes', 'arena_subscribe_pulse_changes', 'arena_subscribe_signal_alerts', 'arena_suggest_grid_range'], 'type': 'string', 'description': 'Name of the extended tool to run'}, 'arguments': {'type': 'object', 'description': 'Arguments for the tool, exactly as the tool itself takes them (mode="call")', 'additionalProperties': {}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategies', 'pair', 'asset_type', 'interval', 'date_from'], 'properties': {'pair': {'type': 'string', 'minLength': 1, 'description': 'Crypto pair symbol, e.g. BTCUSDT â\x80\x94 the same pair for every strategy.'}, 'capital': {'type': 'number', 'description': 'Starting capital in quote currency. Default 10000. Affects absolute figures only, not CAGR or win-rate.', 'exclusiveMinimum': 0}, 'date_to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date, YYYY-MM-DD. Default: today.'}, 'filters': {'type': 'object', 'properties': {'wma200': {'type': 'boolean', 'description': '200-week MA filter (BTC-derived): only take entries while BTC trades above its 200-week SMA.'}, 'atrMode': {'enum': ['off', 'low', 'high', 'expansion'], 'type': 'string', 'description': "ATR volatility regime filter. 'low'/'high' restrict entries to that volatility band, 'expansion' to rising volatility. Default 'off'."}, 'stochRsiWeekly': {'type': 'boolean', 'description': "Asset-specific weekly Stoch-RSI gate: entries only while the pair's weekly StochRSI(14) sits above its SMA(3). Default false."}, 'altcoinSeasonMode': {'enum': ['off', 'aggressive', 'conservative'], 'type': 'string', 'description': "Altcoin-Season gate. 'conservative' needs a confirmed alt season, 'aggressive' an early one. Default 'off'."}, 'bullmarketStageMode': {'enum': ['off', 'early', 'confirmed', 'strict'], 'type': 'string', 'description': "Bull-market stage gate from the BTC cycle model; rising strictness from 'early' to 'strict'. Default 'off'."}, 'minProfitGuardThreshold': {'type': 'number', 'description': 'Per-trade min profit guard (negative cap, e.g. -10 = exit once a trade is 10% under water).'}}, 'description': 'Optional entry filters (Pro+). Each one only ever REMOVES entries â\x80\x94 filters never create trades. Omit for the unfiltered baseline.', 'additionalProperties': False}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'date_from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date, YYYY-MM-DD. Earlier than the pair listing is clamped to the first available candle.'}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': "Asset class. Use 'crypto' unless you are explicitly backtesting a tokenized real-world asset. Note: tokenized stocks/ETFs/gold trade AS crypto pairs (e.g. spybUSDT, qqqbUSDT) â\x80\x94 there is no separate stocks/forex backtest surface; non-crypto asset classes were retired."}, 'strategies': {'type': 'array', 'items': {'type': 'object', 'required': ['strategy'], 'properties': {'params': {'type': 'object', 'description': 'Optional per-strategy parameter overrides; omit for audited defaults.', 'additionalProperties': {}}, 'strategy': {'type': 'string', 'minLength': 1, 'description': 'Strategy key â\x80\x94 use arena_list_strategies.'}}, 'additionalProperties': False}, 'maxItems': 5, 'minItems': 2, 'description': 'The 2â\x80\x935 strategies to compare, each with optional own params.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'mode': {'enum': ['compare', 'allocate'], 'type': 'string', 'default': 'compare', 'description': "'compare' (default): EV of buy-now vs wait vs split + breakeven dip probability. 'allocate': risk-adjusted optimal deploy-now fraction under γ."}, 'compare': {'type': 'object', 'required': ['target_mult', 'dip_mult', 'dip_probability', 'target_probability', 'capital'], 'properties': {'capital': {'type': 'number', 'description': 'Total capital for the position.', 'exclusiveMinimum': 0}, 'dip_mult': {'type': 'number', 'description': 'Dip price as Ã\x97 today, below 1 (e.g. 0.5 = wait for a 50% drop).', 'exclusiveMinimum': 0}, 'target_mult': {'type': 'number', 'description': 'Target price as Ã\x97 today (e.g. 2.0 = a doubling).', 'exclusiveMinimum': 0}, 'failure_mult': {'type': 'number', 'default': 1, 'minimum': 0, 'description': 'Price if the target is never hit, as Ã\x97 today. Default 1.0.'}, 'split_now_pct': {'type': 'number', 'default': 50, 'maximum': 100, 'minimum': 0, 'description': 'Split scenario: share deployed now, percent. Default 50.'}, 'dip_probability': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'P(dip is actually reached), percent.'}, 'target_probability': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Unconditional P(target is eventually hit), percent.'}}, 'description': "Required when mode='compare'.", 'additionalProperties': False}, 'allocate': {'type': 'object', 'required': ['capital', 'current_price', 'dip_price', 'target_price', 'dip_then_target_probability', 'straight_up_probability'], 'properties': {'capital': {'type': 'number', 'description': 'Total budget for the position.', 'exclusiveMinimum': 0}, 'dip_price': {'type': 'number', 'description': 'Dip price (absolute, must be below current).', 'exclusiveMinimum': 0}, 'target_price': {'type': 'number', 'description': 'Target price (absolute, must be above current).', 'exclusiveMinimum': 0}, 'current_price': {'type': 'number', 'description': 'Current price (absolute).', 'exclusiveMinimum': 0}, 'risk_aversion': {'type': 'number', 'default': 1, 'description': 'Risk aversion γ. 1 = growth-optimal Kelly (default).', 'exclusiveMinimum': 0}, 'straight_up_probability': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'P(goes straight up to target, no dip), percent.'}, 'dip_then_target_probability': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'P(dips first, THEN recovers to target), percent.'}}, 'description': "Required when mode='allocate'.", 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pair'], 'properties': {'pair': {'type': 'string', 'minLength': 1, 'description': "Binance USDT pair, e.g. 'SOLUSDT'. Case-insensitive."}, 'detail': {'enum': ['standard', 'full'], 'type': 'string', 'description': "'standard' (default). 'full' adds the raw BTC/ETH benchmark returns used for the relative numbers."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'description': 'UUID of the backtest run.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'history_days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Days of stage_history to return (1-365, default 30). Each row carries active_count plus all five per-stage booleans, so stage flips are readable per day instead of only via the derived `since` of the current run.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'asset': {'enum': ['BTC', 'ETH', 'SOL'], 'type': 'string', 'description': 'Which assetâ\x80\x99s cycle. Default BTC. ETH/SOL return a price-derived cycle read with not_applicable fields for BTC-native indicators.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['market'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Strategies per page (1â\x80\x93100). Omit for all.'}, 'market': {'enum': ['crypto', 'tokenized'], 'type': 'string', 'description': 'Market to analyze (crypto or tokenized).'}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Strategies to skip (paging).'}, 'verdict': {'enum': ['helps', 'neutral', 'hurts', 'insufficient_evidence', 'insufficient_data', 'all'], 'type': 'string', 'description': "Filter by verdict. Default 'all'. Note 'insufficient_evidence' is NOT the same as 'insufficient_data': the former has enough runs but they disagree (the effect's 90% interval straddles the ±1pp line), the latter simply lacks runs."}, 'strategy': {'type': 'string', 'description': 'Restrict to a single strategy key (e.g. golden_cross). Omit for all strategies.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'description': 'Length of the returned daily series in days (every US trading day in the window). Default 365, clamped 7â\x80\x931095.'}, 'asset': {'enum': ['BTC', 'ETH', 'SOL'], 'type': 'string', 'description': 'Which spot-ETF flows. Default BTC.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'How many daily readings to return (1-365, default 90). The full history since 2018 is deliberately not offered in one response â\x80\x94 it is ~3,100 points and does not fit a tool response. The cap limits window SIZE, not position: combine with end_date to read any window since 2018.'}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Last day of the window (YYYY-MM-DD, inclusive). Positions the window anywhere in the history since 2018-02 â\x80\x94 e.g. end_date=2025-10-06 answers "what was sentiment at the October 2025 top". Omit for a window ending today. value/classification/as_of describe the LAST day of the window; cadence/tempo (Pro+) compute on the history up to end_date only, never on later data.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Number of coins to return (tier-capped)'}, 'from_rank': {'type': 'integer', 'minimum': 1, 'description': 'Start from this rank (default 1)'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['preset'], 'properties': {'asset': {'enum': ['BTC', 'ETH', 'SOL'], 'type': 'string', 'description': 'Which assetâ\x80\x99s cycle history. Default BTC. ETH/SOL support only price-derived presets (cycle_bottom_cluster, cycle_top_cluster).'}, 'preset': {'enum': ['cycle_bottom_cluster', 'cycle_top_cluster', 'deep_fear', 'euphoria', 'quiet_volatility'], 'type': 'string', 'description': 'Named ex-ante cycle-state condition set. One of: cycle_bottom_cluster, cycle_top_cluster, deep_fear, euphoria, quiet_volatility.'}, 'forward_horizons': {'type': 'array', 'items': {'type': 'integer', 'exclusiveMinimum': 0}, 'description': 'Forward-return horizons in days. Default [30, 90, 180, 365] â\x80\x94 except for quiet_volatility, which defaults to the horizons its study actually tested ([30, 90, 180]); anything beyond that is flagged as outside the protocol.'}, 'vol_rank_threshold': {'enum': [5, 10, 20, 50], 'type': 'number', 'description': 'quiet_volatility only. Reference threshold as a FIXED step: 50 (default, below trailing median â\x80\x94 the studied definition) or 5/10/20 (unusually quiet: RV30 below its trailing Nth percentile). Any value other than 50 sets study_finding_applies=false â\x80\x94 the null study covered only the default.'}, 'direction_window_days': {'type': 'integer', 'maximum': 90, 'minimum': 1, 'description': 'Classification window for condition_on_direction (default 5). Only meaningful together with condition_on_direction.'}, 'condition_on_direction': {'enum': ['up', 'down'], 'type': 'string', 'description': 'quiet_volatility only. Condition episodes on the direction of the FIRST post-anchor move (sign of the direction_window_days-day return). Horizons <= direction_window_days are suppressed as circular. Sets study_finding_applies=false.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'pair': {'type': 'string', 'description': 'Pair, e.g. "BTCUSDT" (default), "ETHUSDT", "PAXGUSDT".'}, 'interval': {'enum': ['1d', '1w'], 'type': 'string', 'description': "Default '1d'. '1w' computes every indicator on weekly bars."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['currency'], 'properties': {'currency': {'enum': ['BTC', 'ETH'], 'type': 'string', 'description': 'Currency to fetch IV snapshot for'}, 'include_implied': {'type': 'boolean', 'description': 'Default false (response unchanged). When true, adds an `implied` block with the FORWARD volatility risk premium, its percentile and the historical base rate.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'pattern': '^[0-9a-f-]{36}$', 'description': 'UUID job_id returned by arena_run_universe_backtest.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'subject'], 'properties': {'type': {'type': 'string', 'description': "Knowledge object type, e.g. 'market_regime'."}, 'as_of': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Specific date YYYY-MM-DD. Omit for latest.'}, 'subject': {'type': 'string', 'description': "Subject ref, e.g. 'GLOBAL', 'BTC'."}, 'include_graph': {'type': 'boolean', 'description': 'If true, attach the resolved edge neighbourhood (outbound + inbound) for graph traversal.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'market': {'enum': ['DERIBIT_BTC'], 'type': 'string', 'description': 'Options market. Only DERIBIT_BTC is served: IBIT (BlackRock spot-ETF options) is still collected daily but no longer delivered â\x80\x94 the chain comes from an unlicensed source, so it cannot be redistributed (2026-09-24).'}, 'include_gex': {'type': 'boolean', 'description': 'Default false (response unchanged). DERIBIT_BTC only. When true, each upcoming expiry carries a `gex` block plus `gex_totals` across the whole book: Black-Scholes gamma notional (USD per 1 % spot move) per 2.5 % band from LIVE Deribit mark IV per strike (gex_data_as_of names the fetch, ~10 min cache â\x80\x94 a different observation time than the 02:00 UTC snapshot fields). The dealer SIGN is an assumption, not a measurement: both conventions are published side by side (assuming_dealers_short_all, assuming_squeezemetrics_convention); where they disagree, the data does not know the answer. zero_gamma_level flips only under the SqueezeMetrics convention â\x80\x94 short-all is <= 0 everywhere and has no zero crossing by construction (its null is structural; zero_gamma_level.note says so). Tau floor 2 h near expiry (tau_clamped flags it); instruments without usable IV are excluded and counted.'}, 'include_strike_ladder': {'type': 'boolean', 'description': "Default false (response unchanged). When true, every expiry carries a `strike_ladder`: open interest per 2.5 % price band around the snapshot spot (±25 %, calls/puts separate, absolute contracts, share_pct), below_range/above_range sums, max_pain_recomputed (cross-check against the stored level) and `delta` vs the previous day's snapshot on the same band grid (null with delta_reason when there is none). OI is a stock, not a side â\x80\x94 no hedge direction follows; the note travels with the response."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'description': 'Days back from today (default 90, capped by tier).', 'exclusiveMinimum': 0}, 'market': {'enum': ['DERIBIT_BTC'], 'type': 'string', 'description': 'Options market. Only DERIBIT_BTC is served: IBIT (BlackRock spot-ETF options) is still collected daily but no longer delivered â\x80\x94 the chain comes from an unlicensed source, so it cannot be redistributed (2026-09-24).'}, 'expiry_type': {'enum': ['daily', 'weekly', 'monthly', 'quarterly'], 'type': 'string', 'description': 'Filter expiries AND open_snapshots to one expiry class (label = highest level reached; the nesting booleans stay untouched). base_rates are always computed BEFORE this filter.'}, 'min_contracts': {'type': 'integer', 'description': 'Only finalized expiries with total_contracts >= this (rows with unknown contracts drop out when set).', 'exclusiveMinimum': 0}, 'snapshot_expiry_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Reduce open_snapshots[] to exactly this expiry date (YYYY-MM-DD). Only meaningful with include_open_snapshots=true.'}, 'include_open_snapshots': {'type': 'boolean', 'description': 'Default false. When true, adds open_snapshots[] (daily observations of not-yet-expired contracts) plus open_snapshot_coverage. Omit for the unchanged response.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['series_id'], 'properties': {'days': {'type': 'integer', 'description': 'Days back from today (clamped by tier).', 'exclusiveMinimum': 0}, 'series_id': {'type': 'string', 'minLength': 1, 'description': "BRK series id, e.g. 'mvrv'."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['series_id'], 'properties': {'series_id': {'type': 'string', 'minLength': 1, 'description': "BRK series id, e.g. 'mvrv', 'sopr', 'realized_price'."}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'interval', 'pair', 'user_cagr'], 'properties': {'axis': {'enum': ['cross_asset', 'parameter'], 'type': 'string', 'default': 'cross_asset', 'description': "Neighborhood axis. 'cross_asset' (default, dense, carries the verdict + DSR-N) or 'parameter' (secondary, always anecdotal â\x80\x94 the parameter settings tested on this one pair)."}, 'pair': {'type': 'string', 'minLength': 1, 'description': "Trading pair of your cell, e.g. 'BTCUSDT'."}, 'params': {'type': 'object', 'description': 'Optional: numeric strategy parameters of your cell. Only numeric params define the neighborhood; matched per pair where the factory ran them.', 'additionalProperties': {'type': 'number'}}, 'interval': {'type': 'string', 'minLength': 1, 'description': "Candle interval, e.g. '1d', '1w', '1M'."}, 'strategy': {'type': 'string', 'minLength': 1, 'description': "Strategy key, e.g. 'rsi_sma'."}, 'user_cagr': {'type': 'number', 'description': 'Your result: CAGR in percent (e.g. 41 for +41%) â\x80\x94 the cell being assessed.'}, 'asset_type': {'type': 'string', 'description': "Asset class filter (default 'crypto')."}, 'user_sharpe': {'type': 'number', 'description': 'Optional: your annualized Sharpe (result_sharpe scale). Used for the counted-N Deflated Sharpe where neighbor coverage allows.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'pair'], 'properties': {'pair': {'type': 'string', 'minLength': 1, 'description': "Pair, e.g. 'BTCUSDT'. Case-insensitive."}, 'detail': {'enum': ['headline', 'full'], 'type': 'string', 'description': "'headline' (default): statement + key numbers + decisive filters. 'full': every measured variant plus the raw source blocks."}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Default '1w'. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'minLength': 1, 'description': "Strategy key, e.g. 'rsi_sma'. See arena_list_strategies."}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'description': 'Length of the returned daily series in days. Default 365, clamped 7â\x80\x931095.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'asset'], 'properties': {'asset': {'type': 'string', 'description': 'Pair / symbol (e.g. BTCUSDT). Case-insensitive.'}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Default '1w'. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'description': 'Strategy key (see arena_get_strategies).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Detail mode: interval. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'min_runs': {'type': 'integer', 'description': 'Matrix mode: minimum runs per cell. Default 5.', 'exclusiveMinimum': 0}, 'strategy': {'type': 'string', 'description': 'Detail mode: strategy key (used together with `interval`).'}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': 'Restrict to one asset class.'}, 'assets_mode': {'enum': ['all', 'top10'], 'type': 'string', 'description': "'top10' restricts to top-10 pairs by run-count."}, 'ref_strategy': {'enum': ['bh', 'dca'], 'type': 'string', 'description': "Benchmark reference. Default 'bh'."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'asset'], 'properties': {'asset': {'type': 'string', 'description': 'Crypto pair / symbol (e.g. BTCUSDT, ETHUSDT). Case-insensitive.'}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Default '1w'. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'description': 'Strategy key (e.g. rsi_sma, golden_cross). See arena_get_strategies for valid keys.'}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': 'Optional asset class filter to disambiguate (e.g. when same pair-name exists in two classes).'}, 'ref_strategy': {'enum': ['bh', 'dca'], 'type': 'string', 'description': "Benchmark reference. Default 'bh' (Buy & Hold)."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'asset'], 'properties': {'asset': {'type': 'string', 'description': 'Crypto pair / symbol (e.g. BTCUSDT, ETHUSDT). Case-insensitive.'}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Default '1w'. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'description': 'Strategy key (e.g. rsi_sma, golden_cross). See arena_get_strategies.'}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': 'Optional asset class filter to disambiguate identical pair-names.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['universe_id'], 'properties': {'as_of': {'type': 'string', 'description': 'Optional YYYY-MM-DD. Point-in-time membership on that day (recorded since 2026-07-14, volume-ranked).'}, 'universe_id': {'type': 'string', 'minLength': 1, 'description': "Universe id, e.g. 'crypto-top-50'."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'to': {'type': 'string', 'description': 'ISO date (YYYY-MM-DD), inclusive. End of the window. Defaults to the latest bar.'}, 'days': {'type': 'integer', 'description': 'Number of most recent days to return. Free tier capped at 365; API Pro unlimited. Ignored when from/to are given.', 'exclusiveMinimum': 0}, 'from': {'type': 'string', 'description': 'ISO date (YYYY-MM-DD), inclusive. Start of the window. Free tier still only sees the last 365 days.'}, 'meta': {'enum': ['full', 'minimal'], 'type': 'string', 'description': "Default full. 'minimal' drops params/params_hash/warmup, which are only useful on the first call."}, 'fields': {'enum': ['minimal', 'full'], 'type': 'string', 'description': "Default full. 'minimal' returns date, close, rv, rvRank, rvRankRolling, atrPctAnnRank, atrPctAnnRankRolling only â\x80\x94 measured saving 18â\x80\x9320 % of characters (full-history series, 2026-07-31; the `size` block in the response has the figure for your actual call), not a fifth of the size. Combine with granularity or a from/to window for a real reduction; dropping fields alone saves less than it looks."}, 'granularity': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'Default daily. weekly/monthly keep the LAST observation of each period (a state, not an average).'}, 'schema_version': {'enum': ['2026-07', '2026-08'], 'type': 'string', 'description': "Default '2026-07' (unchanged output). '2026-08' rounds floats to 2 decimals (ranks 1) and reports the saving. Default flips 2026-11-01."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['a', 'b', 'axes'], 'properties': {'a': {'type': 'number', 'description': 'First value â\x80\x94 gross CAGR in percent (e.g. 33.1 for +33.1%).'}, 'b': {'type': 'number', 'description': 'Second value, same unit and same basis as a.'}, 'axes': {'type': 'array', 'items': {'enum': ['grid_phase', 'parameter_choice', 'window_edges', 'pair_selection'], 'type': 'string'}, 'minItems': 1, 'description': 'Which arbitrary choices differ between a and b. Pass every one that genuinely varied â\x80\x94 omitting an axis makes the answer look more certain than it is.'}, 'label_a': {'type': 'string', 'description': 'Optional name for a, echoed in the explanation.'}, 'label_b': {'type': 'string', 'description': 'Optional name for b, echoed in the explanation.'}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Candle interval, if known (e.g. '1d', '2d', '3d', '1w'). Sharpens the floor where an axis was measured per interval. Passing grid_phase with a non-multi-day interval is an error, not a rounding detail â\x80\x94 that axis does not exist there."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'pair': {'type': 'string', 'description': 'Filter by pair symbol, e.g. BTCUSDT. Omit for all.'}, 'limit': {'type': 'integer', 'maximum': 100, 'description': 'Page size, max 100, default 50.', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'minimum': 0, 'description': 'Rows to skip for paging; default 0.'}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Filter by candle interval; omit for all. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'description': "Filter by strategy key, e.g. 'rsi_sma'. Omit for all."}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': "Filter by asset class, e.g. 'crypto'. Omit for all."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'lang': {'enum': ['de', 'en'], 'type': 'string', 'description': "Localized names/taglines. Default 'en'."}, 'plan': {'enum': ['free', 'pro', 'elite'], 'type': 'string', 'description': 'Filter to strategies of this plan tier.'}, 'asset_class': {'enum': ['crypto', 'tokenized_rwa'], 'type': 'string', 'description': 'Filter to strategies supporting this asset class (crypto or tokenized_rwa).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'pair', 'asset_type', 'interval', 'date_from'], 'properties': {'pair': {'type': 'string', 'minLength': 1, 'description': 'Crypto pair symbol, e.g. BTCUSDT, ETHUSDT, SOLUSDT.'}, 'params': {'type': 'object', 'description': 'Strategy-specific parameters, e.g. { rsi_period: 14 }. Omit to use the audited defaults â\x80\x94 changing them without a reason is how overfitting starts.', 'additionalProperties': {}}, 'capital': {'type': 'number', 'description': 'Starting capital in quote currency. Default 10000. Affects absolute figures only, not CAGR or win-rate.', 'exclusiveMinimum': 0}, 'date_to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date, YYYY-MM-DD. Default: today.'}, 'filters': {'type': 'object', 'properties': {'wma200': {'type': 'boolean', 'description': '200-week MA filter (BTC-derived): only take entries while BTC trades above its 200-week SMA.'}, 'atrMode': {'enum': ['off', 'low', 'high', 'expansion'], 'type': 'string', 'description': "ATR volatility regime filter. 'low'/'high' restrict entries to that volatility band, 'expansion' to rising volatility. Default 'off'."}, 'stochRsiWeekly': {'type': 'boolean', 'description': "Asset-specific weekly Stoch-RSI gate: entries only while the pair's weekly StochRSI(14) sits above its SMA(3). Default false."}, 'altcoinSeasonMode': {'enum': ['off', 'aggressive', 'conservative'], 'type': 'string', 'description': "Altcoin-Season gate. 'conservative' needs a confirmed alt season, 'aggressive' an early one. Default 'off'."}, 'bullmarketStageMode': {'enum': ['off', 'early', 'confirmed', 'strict'], 'type': 'string', 'description': "Bull-market stage gate from the BTC cycle model; rising strictness from 'early' to 'strict'. Default 'off'."}, 'minProfitGuardThreshold': {'type': 'number', 'description': 'Per-trade min profit guard (negative cap, e.g. -10 = exit once a trade is 10% under water).'}}, 'description': 'Optional entry filters (Pro+). Each one only ever REMOVES entries â\x80\x94 filters never create trades. Omit for the unfiltered baseline.', 'additionalProperties': False}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'minLength': 1, 'description': 'Strategy key â\x80\x94 use arena_list_strategies to find valid keys.'}, 'date_from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date, YYYY-MM-DD. Earlier than the pair listing is clamped to the first available candle.'}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': "Asset class. Use 'crypto' unless you are explicitly backtesting a tokenized real-world asset. Note: tokenized stocks/ETFs/gold trade AS crypto pairs (e.g. spybUSDT, qqqbUSDT) â\x80\x94 there is no separate stocks/forex backtest surface; non-crypto asset classes were retired."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pair', 'start_date', 'end_date', 'total_investment', 'low_price', 'high_price', 'grid_count', 'grid_type', 'fee_rate'], 'properties': {'pair': {'type': 'string', 'minLength': 1, 'description': 'Crypto pair symbol, e.g. BTCUSDT. Free tier: BTCUSDT or ETHUSDT only.'}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Simulation end, YYYY-MM-DD.'}, 'fee_rate': {'type': 'number', 'maximum': 0.01, 'minimum': 0, 'description': 'Per-trade fee fraction, e.g. 0.001 for 0.1% (Binance spot taker).'}, 'leverage': {'enum': [1, 2, 3, 5], 'type': 'number', 'description': 'Optional, default 1 (spot grid, unchanged). 2/3/5 = isolated-margin long grid (grid_mode must be long; Pro). Adds liquidated, liquidation_time/price, funding_cost_usd and max_notional_exposure to the result; final_value/total_return are then on the margin.'}, 'grid_mode': {'enum': ['neutral', 'long'], 'type': 'string', 'description': "'neutral' (default): starts half in coins, buys and sells around the entry. 'long': starts 100% in cash, buys dips below the entry, sells on recovery â\x80\x94 required for leverage."}, 'grid_type': {'enum': ['arithmetic', 'geometric'], 'type': 'string', 'description': "Level spacing: 'arithmetic' = equal price steps, 'geometric' = equal percentage steps (usually the better fit for crypto)."}, 'low_price': {'type': 'number', 'description': 'Lower bound of the grid range, in quote currency. Below it the bot is fully invested and stops buying.', 'exclusiveMinimum': 0}, 'grid_count': {'type': 'integer', 'maximum': 200, 'minimum': 2, 'description': 'Number of grid levels between low_price and high_price (2â\x80\x93200). More levels = more, smaller trades = more fees.'}, 'high_price': {'type': 'number', 'description': 'Upper bound of the grid range, in quote currency. Above it the bot is fully in cash and stops selling. Must exceed low_price.', 'exclusiveMinimum': 0}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Simulation start, YYYY-MM-DD.'}, 'entry_price': {'type': 'number', 'description': 'Optional price at which the bot starts; default is the first close in the range.', 'exclusiveMinimum': 0}, 'funding_mode': {'enum': ['none', 'conservative', 'historical'], 'type': 'string', 'description': "Only with leverage > 1. 'conservative' (default): flat 0.05%/day on the open position. 'historical': recorded daily average of three exchanges, BTCUSDT from 2019-09-08 only â\x80\x94 otherwise falls back to conservative and flags funding_fell_back_to_conservative. 'none': no funding (optimistic)."}, 'stop_loss_price': {'type': 'number', 'description': 'Optional: liquidate the whole grid and stop once price falls to this level.', 'exclusiveMinimum': 0}, 'total_investment': {'type': 'number', 'description': 'Capital in USDT spread across the grid; min 100.', 'exclusiveMinimum': 0}, 'take_profit_price': {'type': 'number', 'description': 'Optional: liquidate the whole grid and stop once price rises to this level.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'interval', 'date_from'], 'properties': {'pairs': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 250, 'description': 'Explicit pair list. Hard schema limit 250; the effective cap is your tier (Pro 50, Power 250). Use instead of universe_id.'}, 'params': {'type': 'object', 'description': 'Strategy-specific parameters applied to EVERY pair in the universe. Omit for audited defaults.', 'additionalProperties': {}}, 'capital': {'type': 'number', 'description': 'Starting capital in quote currency. Default 10000. Affects absolute figures only, not CAGR or win-rate.', 'exclusiveMinimum': 0}, 'date_to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'End date, YYYY-MM-DD. Default: today.'}, 'filters': {'type': 'object', 'properties': {'wma200': {'type': 'boolean', 'description': '200-week MA filter (BTC-derived): only take entries while BTC trades above its 200-week SMA.'}, 'atrMode': {'enum': ['off', 'low', 'high', 'expansion'], 'type': 'string', 'description': "ATR volatility regime filter. 'low'/'high' restrict entries to that volatility band, 'expansion' to rising volatility. Default 'off'."}, 'stochRsiWeekly': {'type': 'boolean', 'description': "Asset-specific weekly Stoch-RSI gate: entries only while the pair's weekly StochRSI(14) sits above its SMA(3). Default false."}, 'altcoinSeasonMode': {'enum': ['off', 'aggressive', 'conservative'], 'type': 'string', 'description': "Altcoin-Season gate. 'conservative' needs a confirmed alt season, 'aggressive' an early one. Default 'off'."}, 'bullmarketStageMode': {'enum': ['off', 'early', 'confirmed', 'strict'], 'type': 'string', 'description': "Bull-market stage gate from the BTC cycle model; rising strictness from 'early' to 'strict'. Default 'off'."}, 'minProfitGuardThreshold': {'type': 'number', 'description': 'Per-trade min profit guard (negative cap, e.g. -10 = exit once a trade is 10% under water).'}}, 'description': 'Optional entry filters (Pro+). Each one only ever REMOVES entries â\x80\x94 filters never create trades. Omit for the unfiltered baseline.', 'additionalProperties': False}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'strategy': {'type': 'string', 'minLength': 1, 'description': 'Strategy key â\x80\x94 call arena_list_strategies.'}, 'date_from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Start date, YYYY-MM-DD. Earlier than the pair listing is clamped to the first available candle.'}, 'universe_id': {'type': 'string', 'description': 'Pre-curated universe â\x80\x94 call arena_list_universes for valid IDs. Capped by tier (Pro 50, Power 250); a larger universe is rejected rather than silently truncated.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['strategy', 'market', 'window'], 'properties': {'oos': {'type': 'object', 'properties': {'scheme': {'enum': ['split', 'walk_forward'], 'type': 'string', 'description': "Out-of-sample scheme: 'split' (one in-sample/out-of-sample cut, default) or 'walk_forward' (rolling re-evaluation)."}, 'split_frac': {'type': 'number', 'maximum': 0.9, 'minimum': 0.3, 'description': 'In-sample fraction for scheme=split; default 0.7.'}}, 'description': 'How the claim is tested out-of-sample. Omit for the default split â\x80\x94 the out-of-sample part is what separates a finding from a fit.', 'additionalProperties': False}, 'costs': {'type': 'object', 'required': ['fee_bps'], 'properties': {'fee_bps': {'type': 'number', 'minimum': 0, 'description': 'Per-side fee in basis points, e.g. 10 = 0.10%.'}}, 'description': 'Trading costs. Default 10 bps (crypto) / 5 bps (else) â\x80\x94 a gross-only claim usually shrinks once these apply.', 'additionalProperties': False}, 'market': {'type': 'object', 'required': ['symbol', 'asset_type', 'interval'], 'properties': {'symbol': {'type': 'string', 'description': 'Pair / symbol the strategy is claimed to work on, e.g. BTCUSDT.'}, 'interval': {'enum': ['1d', '2d', '3d', '1w', '1M'], 'type': 'string', 'description': "Candle interval the signals refer to. Candle interval: '1d' daily, '2d'/'3d' multi-day, '1w' weekly, '1M' monthly. Multi-day candles (2d/3d) are anchored to the Unix epoch, so one of n possible alignments is used. Measured on our own corpus, the choice of alignment alone moves CAGR by 6.66 pp on average (max 12.30). Treat differences below that as not distinguishable â\x80\x94 1d/2d/3d behaved as one block in our tests, not a ranking."}, 'asset_type': {'enum': ['crypto', 'tokenized_equity', 'tokenized_etf', 'commodities'], 'type': 'string', 'description': "Asset class, normally 'crypto'."}}, 'description': 'Which market the claim is about â\x80\x94 prices are re-fetched from here, not taken from you.', 'additionalProperties': False}, 'window': {'type': 'object', 'required': ['from'], 'properties': {'to': {'type': 'string', 'description': 'Evaluation end, YYYY-MM-DD. Default: today.'}, 'from': {'type': 'string', 'description': 'Evaluation start, YYYY-MM-DD.'}}, 'description': 'Period over which the claim is checked.', 'additionalProperties': False}, 'strategy': {'type': 'object', 'required': ['type'], 'properties': {'name': {'type': 'string', 'description': "Catalog strategy key (type=rules), e.g. 'rsi_sma'."}, 'type': {'enum': ['rules', 'signal_list', 'trade_list'], 'type': 'string', 'description': "How the claim is supplied: 'rules' = a catalog strategy re-run by us · 'signal_list' = your timestamped BUY/SELL decisions · 'trade_list' = your finished round-trips."}, 'params': {'type': 'object', 'description': 'Strategy parameters for type=rules; omit for the audited defaults.', 'additionalProperties': {}}, 'trades': {'type': 'array', 'items': {'type': 'object', 'required': ['entry_ts', 'entry_px', 'exit_ts', 'exit_px'], 'properties': {'side': {'enum': ['long', 'short'], 'type': 'string'}, 'exit_px': {'type': 'number'}, 'exit_ts': {'type': 'string'}, 'entry_px': {'type': 'number'}, 'entry_ts': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'type=trade_list: timestamped round-trips with the prices you claim you got.'}, 'signals': {'type': 'array', 'items': {'type': 'object', 'required': ['ts', 'side'], 'properties': {'ts': {'type': 'string', 'description': 'ISO timestamp of the decision.'}, 'side': {'enum': ['buy', 'sell'], 'type': 'string'}}, 'additionalProperties': False}, 'description': 'type=signal_list: timestamped BUY/SELL signals (paired into round-trips).'}}, 'description': 'The claim being validated â\x80\x94 supply exactly one of: a catalog strategy (type=rules), your signals (type=signal_list) or your finished trades (type=trade_list).', 'additionalProperties': False}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
DeltaSignal ATLAS-7
Analyzes SEC and XBRL data for crypto-related public companies, including fundamentals, issuer signals, peer comparisons, stress …
intel
Provides multi-chain market intelligence, blockchain activity metrics, trading and portfolio planning, sanctions clearance, agent…
Market Intelligence API
Analyzes crypto and tokenized-asset markets using DEX flows, perpetual positioning, smart-money activity, token risk, market news…
Gate MCP
Provides public Gate exchange market data for spot, futures, delivery, margin, options, Alpha, Earn products, order books, candle…
AgentFeed
Provides crypto market data on liquidations, funding, open interest, order books, spreads, liquidation forecasts, and tokenized-a…
whale-insights
Provides read-only crypto market and on-chain intelligence, including whale activity, analyst signals, prices, funding rates, gas…
Okx
Provides public OKX market data for crypto instruments, including candles, prices, order books, funding rates, open interest, pos…
mcp
Provides crypto derivatives and market-structure data including funding, open interest, liquidations, options, ETF flows, leverag…