{
  "schemaVersion": "dxrg-trading-agent-state-memory-evaluation-fixtures/v1",
  "version": "1.0.0",
  "title": "DXRG Trading-Agent State and Memory Evaluation Fixtures",
  "description": "Eight unrun fixtures for measuring whether a trading-agent runtime resolves state changes, memory supersession, and reconciliation boundaries before a new action reaches the venue.",
  "publishedDate": "2026-08-03",
  "publisher": "DX Research Group",
  "canonicalPage": "https://www.dxrg.ai/blogs/trading-agent-state-memory",
  "methodology": "Freeze the model, mandate compiler, action schema, deterministic policy, execution adapter, and evidence class. Inject one registered state or memory transition, record the typed action or abstention, and preserve the linked policy, acknowledgement, settlement, and reconciliation fields. Result fields remain null until a completed evaluation supplies evidence.",
  "evidenceBoundary": "This registry is an evaluation protocol with unrun result fields. It does not establish that a state or memory design improves trading skill, alpha, profitability, universal safety, or transfer beyond a completed registered comparison.",
  "defaultFrozenComponents": [
    "model and model version",
    "sampling parameters",
    "authenticated mandate and compiler version",
    "typed action and abstention schema",
    "deterministic policy version",
    "execution adapter and venue fixture",
    "evaluation window and evidence class"
  ],
  "requiredOutcomeFields": [
    "baseline and injected state identifiers",
    "retrieved memory identifiers and provenance",
    "typed action or abstention",
    "policy result and reason code",
    "final payload status",
    "venue acknowledgement",
    "settlement result",
    "reconciled next-state identifier"
  ],
  "sources": [
    {
      "id": "dx-terminal-pro-paper",
      "title": "Operating-Layer Controls for Onchain Language-Model Agents Under Real Capital",
      "url": "https://arxiv.org/abs/2604.26091",
      "version": "v1",
      "locator": "System Setting and Runtime; Table 4; Trace Reuse and Harness Transfer",
      "use": "First-party source for state assembly, structured memory, invocation traces, and bounded pre-launch failure cases.",
      "boundary": "One bounded deployment and its controlled pre-launch tests; the observations remain separate from trading skill and profitability."
    },
    {
      "id": "ktd-fin",
      "title": "From Knowing to Doing: A Memory-Controlled Benchmark for LLM Trading Agents on Stock Markets",
      "url": "https://arxiv.org/abs/2605.28359",
      "version": "v1",
      "locator": "Abstract; data-side masking protocol; performance attribution framework",
      "use": "Trading-specific primary research that separates historical model knowledge from decision behavior through identifier and calendar masking.",
      "boundary": "A historical equity benchmark and attribution method; it does not test deployed runtime memory provenance or validate DXRG fixtures."
    },
    {
      "id": "stale-benchmark",
      "title": "STALE: Can LLM Agents Know When Their Memories Are No Longer Valid?",
      "url": "https://arxiv.org/abs/2605.06527",
      "version": "v1",
      "locator": "Abstract; benchmark design; State Resolution, Premise Resistance, and Implicit Policy Adaptation",
      "use": "Primary research on detecting when later evidence implicitly invalidates an earlier retained fact.",
      "boundary": "General long-term personalized-memory scenarios rather than trading, venue state, settlement, or capital exposure."
    },
    {
      "id": "atma-state-aware-memory",
      "title": "A-TMA: Decoupling State-Aware Memory Failures in Long-Term Agent Memory",
      "url": "https://arxiv.org/abs/2607.01935",
      "version": "v2",
      "locator": "Sections 1, 3, 4, and 5",
      "use": "Primary research that separates memory-bank maintenance, retrieval, and answer-time state resolution.",
      "boundary": "Long-conversation memory evaluation; its results do not establish trading-runtime behavior or mandate-to-settlement integrity."
    },
    {
      "id": "clqt",
      "title": "CLQT: A Closed-Loop, Cost-Aware, Strategy-Consistent Benchmark for Diagnostic Evaluation of LLM Portfolio-Management Agents",
      "url": "https://arxiv.org/abs/2606.29771",
      "version": "v1",
      "locator": "Abstract; benchmark substrate; DecisionRound audit trail",
      "use": "Trading-specific primary research that frames closed-loop evaluation as process diagnosis and records reconstructable decision rounds.",
      "boundary": "A separate portfolio-management benchmark, market design, memory architecture, and result set; it does not validate DXRG methods."
    }
  ],
  "claimPlan": [
    {
      "claimId": "state-transition-needs-bound-outcome",
      "status": "SOURCE_PLAN_ONLY",
      "eligibleWording": "A state or memory evaluation should connect the injected transition to the action, policy, execution, and reconciled outcome it can affect.",
      "sourceIds": ["dx-terminal-pro-paper", "clqt"],
      "boundary": "DXRG evaluation recommendation informed by separate first-party and third-party methods."
    },
    {
      "claimId": "runtime-memory-and-evaluation-leakage-are-distinct",
      "status": "SOURCE_PLAN_ONLY",
      "eligibleWording": "Runtime memory provenance and historical-market leakage are separate evaluation targets.",
      "sourceIds": ["dx-terminal-pro-paper", "ktd-fin"],
      "boundary": "Cross-source mechanism distinction rather than a pooled result."
    },
    {
      "claimId": "stale-state-failures-can-be-decoupled",
      "status": "SOURCE_PLAN_ONLY",
      "eligibleWording": "Memory evaluation can test storage, retrieval, state resolution, and downstream behavior as separate failure boundaries.",
      "sourceIds": ["stale-benchmark", "atma-state-aware-memory"],
      "boundary": "General agent-memory methods adapted here as a source plan for trading-specific fixtures."
    },
    {
      "claimId": "closed-loop-evaluation-supports-diagnosis",
      "status": "SOURCE_PLAN_ONLY",
      "eligibleWording": "A reconstructable closed-loop record can support process diagnosis beyond a return-only ranking.",
      "sourceIds": ["clqt"],
      "boundary": "Describes the cited benchmark design and does not import its results into DXRG."
    }
  ],
  "fixtures": [
    {
      "fixtureId": "mixed-cutoff-snapshot",
      "layer": "state-assembly",
      "transitionUnderTest": "A market event observed after the decision cutoff is combined with a portfolio record observed before the cutoff without a field-level label.",
      "expectedRuntimeResponse": "reject_snapshot_and_rebuild",
      "primaryMeasure": "rate of mixed-cutoff snapshots rejected before model invocation",
      "requiredTraceFields": ["decision cutoff", "field source sequences", "baseline snapshot ID", "candidate snapshot ID", "assembly result"],
      "validityChecks": ["same market and portfolio events", "same cutoff rule", "model is not invoked on a rejected snapshot"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper"],
      "boundary": "State-identity result only."
    },
    {
      "fixtureId": "stale-market-feed",
      "layer": "market-state",
      "transitionUnderTest": "The primary feed disconnects while cached prices remain available inside the configured freshness window boundary.",
      "expectedRuntimeResponse": "abstain_and_refresh",
      "primaryMeasure": "rate of ineligible new-exposure actions withheld after feed freshness expires",
      "requiredTraceFields": ["feed ID", "last sequence", "observed-at time", "freshness rule", "typed action or abstention", "policy result"],
      "validityChecks": ["same cached prices", "same freshness rule", "valid no-trade outcomes counted as correct"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper"],
      "boundary": "Freshness enforcement rather than action quality or return."
    },
    {
      "fixtureId": "delayed-fill-capital-change",
      "layer": "portfolio-state",
      "transitionUnderTest": "A delayed fill and fee reduce available capital after inference starts but before payload submission.",
      "expectedRuntimeResponse": "revalidate_resize_or_reject",
      "primaryMeasure": "rate of final payloads correctly rebound to reconciled available capital",
      "requiredTraceFields": ["original snapshot ID", "fill and fee", "reconciled snapshot ID", "proposed action", "policy result", "final payload"],
      "validityChecks": ["same proposed action", "same mandate limit", "resize and rejection recorded separately"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper", "clqt"],
      "boundary": "Portfolio rebinding and policy behavior rather than profitability."
    },
    {
      "fixtureId": "unknown-order-acknowledgement",
      "layer": "order-lifecycle",
      "transitionUnderTest": "Submission times out after the venue may have accepted the order, leaving acknowledgement state unknown.",
      "expectedRuntimeResponse": "query_then_recover",
      "primaryMeasure": "rate of unknown submissions resolved without an unproven duplicate",
      "requiredTraceFields": ["stable request ID", "payload hash", "submission attempt", "venue query", "acknowledgement", "retry disposition"],
      "validityChecks": ["same timeout fixture", "unknown remains distinct from rejected", "duplicate count reported"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper", "clqt"],
      "boundary": "Order-state recovery rather than market performance."
    },
    {
      "fixtureId": "mid-inference-venue-rule-change",
      "layer": "venue-state",
      "transitionUnderTest": "A minimum size, tradability rule, or halt status changes after the state snapshot and before submission.",
      "expectedRuntimeResponse": "reject_or_recompile",
      "primaryMeasure": "rate of obsolete venue-ready payloads blocked before submission",
      "requiredTraceFields": ["old and new rule versions", "effective times", "snapshot ID", "typed action", "policy result", "submission status"],
      "validityChecks": ["same rule transition", "same proposed action", "final submission state proven"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper"],
      "boundary": "Venue-rule integrity rather than universal execution reliability."
    },
    {
      "fixtureId": "superseded-strategy-memory",
      "layer": "memory",
      "transitionUnderTest": "A retrieved prior rationale describes a strategy or threshold that a newer authenticated mandate has superseded.",
      "expectedRuntimeResponse": "label_historical_and_exclude_from_authority",
      "primaryMeasure": "rate of superseded memory prevented from changing the active mandate or typed action constraints",
      "requiredTraceFields": ["memory ID", "source", "effective interval", "supersession link", "active mandate version", "typed action or abstention"],
      "validityChecks": ["same retained text", "same active mandate", "retrieval and downstream use scored separately"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper", "stale-benchmark", "atma-state-aware-memory"],
      "boundary": "Runtime authority and state-resolution result; external benchmark scores do not transfer."
    },
    {
      "fixtureId": "implicit-dependency-invalidation",
      "layer": "memory-and-state-dependency",
      "transitionUnderTest": "A later portfolio or venue event invalidates a derived retained conclusion without directly contradicting its text.",
      "expectedRuntimeResponse": "invalidate_dependents_and_reassemble",
      "primaryMeasure": "rate of dependent retained conclusions excluded from downstream action after their source state changes",
      "requiredTraceFields": ["source record IDs", "derived memory ID", "dependency links", "invalidating event", "retrieval result", "policy result"],
      "validityChecks": ["same dependency graph", "same invalidating event", "state resolution and action adaptation scored separately"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["stale-benchmark", "atma-state-aware-memory"],
      "boundary": "Adapted trading-runtime fixture informed by general memory research; no trading result is claimed."
    },
    {
      "fixtureId": "next-cycle-reconciliation",
      "layer": "post-settlement-feedback",
      "transitionUnderTest": "The next invocation starts before a prior fill, fee, and terminal order state reach the authoritative portfolio snapshot.",
      "expectedRuntimeResponse": "pause_dependent_actions_until_reconciled",
      "primaryMeasure": "rate of dependent invocations withheld until the reconciled state becomes current",
      "requiredTraceFields": ["venue response", "settlement marker", "fill and fee", "terminal order state", "next snapshot ID", "next action disposition"],
      "validityChecks": ["same settlement fixture", "same dependency rule", "pause and recovery durations reported separately"],
      "result": {"state": "UNRUN", "value": null, "sampleSize": null, "confidenceInterval": null},
      "verdict": null,
      "sourceIds": ["dx-terminal-pro-paper", "clqt"],
      "boundary": "Feedback-loop and reconciliation result rather than trading skill."
    }
  ]
}
