Data Stack for AI Trading Agents

Published Last updated Author , Editor-in-Chief · Systems Research

Share

Published Last updated Reviewed by Signal Desk editorial (systems & risk)

An AI trading agent does not “see the market.” It sees whatever your data stack delivered on time, correctly joined, and correctly timestamped. When that pipeline lies, autonomy becomes amplified error.

This article expands the data plane from our architecture and Steps 1–2 of how to build into a practical data stack for continuous crypto markets—feeds, quality, features, and fail-closed behavior.

Why data kills agents first

Models often degrade smoothly. Data fails discontinuously. Five failure modes show up in postmortems more than “bad alpha”:

  • Silent gaps — WS reconnects without backfill; the agent treats absence of prints as calm
  • Clock skew — exchange event time and local receive time mixed in one feature
  • Sequence breaks — dropped L2 diffs applied as if the book were absolute
  • Schema drift — vendor renames a field; parser coerces null → 0
  • Research lookahead — revised candles, corporate actions, or post-event text in “historical” runs
If you cannot explain what the agent knew and when, you cannot evaluate it—and you should not scale it.

Reference stack layers

Think in stages with hard interfaces. Each stage has an owner, a schema, and a failure mode.

Data plane schema

Reference data stack for agents

  • Sources Venues · chains · files · APIs — only what the mandate requires.
  • Ingress Collectors — WS/REST/pollers; durable buffers; backfill after disconnect.
  • Normalize Canonical events + instrument master — dual clocks (exchange_ts · receive_ts).
  • Quality healthy · delayed · dead — scores drive actions, not only dashboards.
  • Serve Online features (live policy/risk) ↔ Historical lake (train/eval/replay).
  • Context LLM / planner packs — structured tool outputs only; never raw firehose.
  • Ledger Decision audit — inputs, feature versions, quality flags per action.

If you cannot explain what the agent knew and when, you cannot evaluate it—and you should not scale it.

Venues / chains / files / APIs
        ↓
Ingress collectors (WS, REST, pollers)
        ↓
Normalizer → canonical events + dual clocks
        ↓
Quality service  → healthy | delayed | dead
        ↓                    ↓
Online feature store    Historical lake / replay
        ↓                    ↓
Live policy + risk      Research / training / eval
        ↓
Context pack (optional LLM tools) → structured only
        ↓
Decision ledger (inputs + feature versions + quality)

Ingress

Collect what the mandate requires—not everything a vendor sells. Typical live agents need trades and/or books, mark prices, account balances, open orders, and fills. Perps agents usually add funding, open interest, and liquidations. Prefer:

  • Idempotent consumers (safe restarts)
  • Durable buffers so a process crash does not invent history
  • Explicit backfill paths after disconnects

Normalization & instrument master

Map every venue into a canonical event schema and a single instrument master (internal symbol → venue symbols, contract size, tick size, quote currency). Without a master, multi-venue agents double-count or mis-size.

Minimal event fields worth standardizing:

{
  "event_type": "trade|bbo|book_diff|funding|order|fill",
  "instrument_id": "BTC-USDT-PERP",
  "venue": "example_ex",
  "seq": 18482910,
  "exchange_ts": "2026-07-11T12:00:00.123Z",
  "receive_ts": "2026-07-11T12:00:00.141Z",
  "payload": { }
}

One schema beats twelve ad-hoc dicts when you add the thirteenth venue—or when you try to replay last month honestly.

Quality service

Continuously score feeds per venue and instrument. Minimum states: healthy, delayed, dead. Useful inputs:

  • Heartbeat / last message age
  • Gap counters and sequence jumps
  • Book integrity checks (crossed market, empty book after snapshot)
  • Cross-check vs a secondary source when available

Expose flags to both policy and risk. Thresholds are product choices—document them. Example starting points (tune per venue): mark delayed if BBO age > 2s in a liquid pair; dead if age > 10s or sequence recovery fails.

Online features vs historical lake

Online features power live decisions: imbalance, short-horizon volatility, microprice, inventory, spread, funding z-score. They must be computable at decision latency with the same definition used offline.

A historical lake stores raw and curated events for research, evaluation, and incident replay. Shared schemas and versioned feature code prevent train/serve skew—the silent cousin of lookahead bias.

Context for planners and LLMs

Tool-using agents need curated context—not raw firehoses. Build structured tool outputs (events, metrics, doc snapshots) as in LLMs for crypto market analysis. Validators sit between text and anything that can influence size.

Feed catalog by need

Feed class Examples Who needs it If missing
Microstructure Trades, L2/L3, BBO, mark MM, execution, most live policies Do not quote / do not scalp
Derivatives state Funding, OI, liquidations Perps agents, regime tags Blind to squeezes & carry
Account / exec Balances, orders, fills, positions Every production agent Double risk / ghost inventory
On-chain Transfers, pool state, events DeFi / on-chain types Wrong pool, wrong wallet state
Unstructured News, governance, social Research / LLM tool agents Narrative risk invisible

Map feeds to agent type: a market-making agent without books is cosplay; an LLM research agent without citations is a story generator.

Worked example: what the agent “knows” at T

Suppose decision time T for a perps inventory policy. A honest stack might assemble:

  • BBO and last 5s trades with exchange_ts ≤ T and quality = healthy
  • Position and open orders from the account stream reconciled to the same clock
  • Funding rate as-of last published print before T
  • Feature vector version feat_v3.2 (hash of code + params)
  • Quality snapshot: venue A healthy, secondary mark delayed → policy already size-capped

That bundle—not “the model”—is what you must log under a decision ID if you want learning loops instead of folklore.

Clocks, alignment, point-in-time

Point-in-time (PIT) means: a feature at decision time T uses only information available at or before T under your published rules.

Time schema

What “known at T” means

  • exchange_ts Event time When the venue says it happened
  • receive_ts Local arrival When your stack saw it
  • decision T As-of join Features: exchange_ts ≤ T (default rule)

Good

  • Same raw event stream for research and live
  • PIT joins + versioned transforms
  • Label horizon embargoed from features

Bad

  • Future-revised bars in training
  • Full-sample stats in normalizers
  • Modern post-mortems in “historical” LLM context

Store exchange time and receive time separately—never overwrite one with the other. See leakage in the evaluation guide.

  • Default as-of rule for market features: include events with exchange_ts ≤ T (document if you use receive time for latency studies).
  • For labels with horizon H, embargo samples so post-horizon information cannot leak into features.
  • When replaying LLM context, freeze the document set available at T—no modern post-mortems in a “2024 agent.”

Quality monitors and fail-closed behavior

Quality is a control input, not a vanity dashboard. Wire flags to explicit actions:

Control loop

Quality flag → trading action

  • Input Feeds Per venue · instrument
  • Score Quality service healthy · delayed · dead
  • Gate Policy / risk size · block · halt
  • Effect Orders or cancel / flatten

Fail closed: dead or untrusted data must not produce “business as usual” autonomy.

Flag Typical action
healthy Normal policy within risk limits
delayed Widen quotes, cut size, block new risk, or switch to passive-only
dead Cancel open orders; flatten or halt per playbook
Source divergence Shadow-only / human escalate / reduce until reconciled

Always attach the quality snapshot to the decision ledger. When something blows up, the first question is not “what did the model output?”—it is “what did we believe the market was?”

Hard rule

Never let the model “fill in” missing books with imagination. Missing data is a risk event, not a creative writing prompt.

Minimal vs production stack

Minimal (research / single venue)

  • One WS trades + BBO, one REST snapshot/reconcile path
  • Canonical schema + dual timestamps
  • Staleness timer → no new risk
  • Local feature compute; append-only log for replay

Production (desk-grade)

  • Redundant collectors, durable bus, tested backfill
  • Multi-venue normalizer + instrument master
  • Quality service with SLOs and paging
  • Online store + versioned feature definitions
  • Lake/replay with PIT joins for research
  • Per-decision input manifests (features, quality, raw refs)

Grow the stack when measurement demands it—not when a slide deck demands “AI platform.”

Signal Desk data stack checklist

Use this as a promotion gate before limited live:

  1. Canonical event schema + instrument master documented
  2. Exchange vs receive clocks stored and used consistently
  3. Quality states wired to risk/policy actions (not only graphs)
  4. Online features reproducible from the lake with the same code version
  5. Disconnect → backfill path tested
  6. Decision ledger joins fills to inputs used
  7. PIT rules written down for research and live

Anti-patterns

  • One giant CSV as the system of record for live trading
  • Training features that cannot be computed online at the same latency
  • Ignoring funding/OI while trading perps “on price only”
  • Feeding raw social firehose into an LLM with order rights
  • No join keys between fills and the signals that caused them
  • Assuming historical vendor files match live WS semantics
  • Treating “last non-null” as a valid book during outages

How to apply this

How to design a data stack for AI trading agents.

  1. List the stack layers. Separate ingress, normalization, quality scoring, online features, historical lake, and structured context for planners.
  2. Catalog feeds by decision need. Map books, trades, funding, liquidations, on-chain, and news/social to the policies that consume them.
  3. Fix clocks and point-in-time semantics. Align exchange event time vs receive time; ensure training and live features never see the future.
  4. Wire quality monitors to actions. Stale, gapped, or skewed data must reduce/block/halt—not only paint dashboards.
  5. Log inputs per decision. Record feature versions, quality flags, and source timestamps so every action is auditable.
  6. Grow from minimal to production. Ship a thin reliable path first; add lakes, research context, and multi-venue only after fail-closed basics work.

Frequently asked questions

What data does an AI trading agent need?

At minimum: reliable market data (trades and/or books), account and order state, and clocks you trust. Many agents also need funding, open interest, on-chain events, and unstructured sources for research agents—always behind quality flags and point-in-time rules.

What is a market data quality flag?

A structured status on a feed or symbol—typically healthy, delayed, or dead—computed from gaps, latency, sequence breaks, and heartbeats so the agent can refuse to trade when data is untrustworthy.

What is the difference between online features and a historical lake?

Online features are low-latency values served to live decisions. A historical lake stores raw and curated events for research, training, and replay. Both must share schemas and point-in-time semantics or evaluation lies.

How does bad data create lookahead bias?

If features use future revisions, full-sample normalization, misaligned timestamps, or post-event text in historical replays, offline metrics inflate. Point-in-time joins and frozen document sets prevent that class of leakage.

What should I log for each trading decision?

At least: decision ID, timestamp, feature vector version, key feature values or references, quality flags, account snapshot IDs, and the resulting intent. Without that bundle you cannot debug or improve the agent.


Related: Architecture · How to Build · Evaluation · LLMs · Risk

Share this research

Share

Copy the link or post to X, LinkedIn, or Reddit — previews use this page’s title, description, and cover image.

Educational content only — not financial advice. Trading involves risk of loss.

← All articles