Skip to main content
Glama

Backtesting Arena

Get Edge Library — Filter Effect Reports

arena_get_edge_reports
Read-only

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 the median across assets — no single asset's run grid can dominate an arm). delta_cagr is the median of PER-ASSET deltas over MATCHED assets only (present in both arms) — so it usually differs from filtered_cagr − baseline_cagr; pairs_matched/pairs_filtered and the baseline pairs count declare the basis. Verdicts come from the effect's 90% paired-bootstrap interval (delta_ci_low/delta_ci_high), not the point estimate: helps (whole interval > +1pp) / hurts (< −1pp) / neutral (inside ±1pp) / insufficient_evidence (runs disagree) / insufficient_data (fewer than 30 runs per arm or fewer than 10 matched assets). Below the gate, derived fields (delta_*, dsr, dsr_pass) are null; every gated null carries its reason (dsr_pass_reason, *_net_reason); the envelope evidence block declares the gate's referent and threshold machine-readably. Response is GROUPED by strategy: envelope fields (market, computed_at, n_trials) once, per strategy one baseline block {cagr, net_cagr, sharpe} plus filter cells; filter cells with zero runs are folded into filters_without_data. A full market is a few hundred cells — use limit/offset (strategies per page) plus the truncated flag for partial reads. Filters evaluated in isolation (no stacking); net values are median CAGR after per-side trading costs (verdict/delta stay gross). [Free tier]

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "market": "<market>"
    },
    "name": "arena_get_edge_reports"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoStrategies per page (1–100). Omit for all.
marketYesMarket to analyze (crypto or tokenized).
offsetNoStrategies to skip (paging).
verdictNoFilter 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.
strategyNoRestrict to a single strategy key (e.g. golden_cross). Omit for all strategies.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / offset / maximum
      Added value: +9007199254740991
  2. Changed3 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / context
      Removed value: -{
      -  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "market",
      -  "context"
      -]New value: +[
      +  "market"
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "description": "Strategies per page (1–100). Omit for all.",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Strategies to skip (paging).",
      +  "minimum": 0,
      +  "type": "integer"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / verdict / description
      Previous value: -"Filter by verdict. Default 'all'."New value: +"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."
    • changedInput schema / properties / verdict / enum
      Previous value: -[
      -  "helps",
      -  "neutral",
      -  "hurts",
      -  "insufficient_data",
      -  "all"
      -]New value: +[
      +  "helps",
      +  "neutral",
      +  "hurts",
      +  "insufficient_evidence",
      +  "insufficient_data",
      +  "all"
      +]
  5. Changed2 schema fields changed
    • changedInput schema / properties / market / description
      Previous value: -"Asset class to analyze (crypto only)."New value: +"Market to analyze (crypto or tokenized)."
    • changedInput schema / properties / market / enum
      Previous value: -[
      -  "crypto"
      -]New value: +[
      +  "crypto",
      +  "tokenized"
      +]
  6. Changed2 schema fields changed
    • changedInput schema / properties / market / description
      Previous value: -"Asset class to analyze."New value: +"Asset class to analyze (crypto only)."
    • changedInput schema / properties / market / enum
      Previous value: -[
      -  "crypto",
      -  "stocks",
      -  "etf",
      -  "commodities",
      -  "forex"
      -]New value: +[
      +  "crypto"
      +]
  7. First observed

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint provided, the description carries the behavioral burden and does so well: it discloses that results are grouped by strategy, that below-gate fields (delta_*, dsr, dsr_pass) are null and each null carries a reason, that empty filter cells are folded into filters_without_data, and that pagination is per-strategy with a truncated flag. It also flags the free-tier status and states filters are evaluated in isolation with no stacking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and almost every clause carries technical content, but the prose is dense, parenthetical-heavy, and long-sentenced, and the verdict category definitions repeat what the verdict enum already documents. A few statements (asset-equal-weighting, delta_ci_low/high) could be tightened without information loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must convey the return shape, and it does: envelope fields once, per-strategy baseline blocks, filter cells, filters_without_data, and the evidence block. Combined with the gating and null semantics, an agent could call and parse this correctly. Minor gaps remain around error/rate-limit behavior, which for a read-only report tool is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds real meaning, explaining that limit/offset count strategies (not cells), that a full market is a few hundred cells, and that partial reads should be detected via the truncated flag. The verdict semantics are largely duplicated from the schema's enum description rather than extending it. Net gain over the schema is modest but genuine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource (entry-filter effect reports) and a concrete analytic output (how each Pro+ entry filter affects strategy CAGR, baseline vs filtered), and its opening question gives the agent a decision to anchor on. It also implies platform-wide aggregation, which separates it from a single-strategy view. However, it never names the closely related sibling arena_get_strategy_filter_effect, so the boundary between the two is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the opening question plus the definition of verdict categories tells the agent what question this tool answers, and the paging note signals how to handle large markets. There is no explicit when-to-use/when-not or routing to alternatives such as arena_get_strategy_filter_effect or arena_get_strategy_performance. The agent must infer the selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.