Skip to main content
Education
Contents
5 min read

Data fidelity: bars, trades, quotes, and depth

The data you keep determines which market questions a backtest can answer honestly.

Market data is a record with information removed

Every market dataset is a particular view of what happened. A one-minute open-high-low-close-volume (OHLCV) bar keeps those five summaries for that minute. It does not preserve the order in which the high and low occurred, every price that traded, the bid and offer available at each moment, or where a hypothetical order sat in a queue.

Trades preserve transactions. Quotes preserve changes to the displayed best bid and offer. Depth adds displayed quantities at several price levels. Order-level feeds may preserve individual additions, modifications, and cancellations. Each step retains more of the event sequence, but also introduces more volume, more venue-specific detail, and more ways to reconstruct the market incorrectly.

Data fidelity is therefore not a ranking from “bad” to “good.” It is the match between the question and the information the dataset actually contains. Daily bars can be entirely adequate for a slow monthly allocation rule. They are not adequate evidence for a queue-position strategy whose result depends on which order traded first inside a millisecond.

What each level can and cannot tell you

Data viewIt directly recordsIt does not establish by itself
Open-high-low-close-volume barsPeriod boundaries, extremes, close, aggregate volumeIntrabar event order, spread, passive fills
TradesTransaction price, size, and sequenceDisplayed liquidity, unexecuted orders, true aggressor side in every feed
Top-of-book quotesBest displayed bid and offer over timeDeeper liquidity, your queue position, hidden orders
Market depthDisplayed quantities across price levelsGuaranteed executable size, hidden liquidity, your latency
Order-level eventsIndividual displayed order changes under a venue protocolPrivate orders, broker routing, or an unobserved participant’s latency

More detailed data may let the researcher ask a narrower question, but it does not automatically make the answer realistic. A depth replay with incorrect sequence numbers or venue rules can be less trustworthy than a modest bar test that makes appropriately modest claims.

The high-low problem

Illustrative example. Suppose a one-minute bar opens at 100, trades as high as 102, as low as 98, and closes at 101. A strategy entered before the minute with a target at 101.50 and a stop at 99.

The bar proves that both levels were touched. It does not reveal whether the target was reached before the stop. Choosing the favorable order turns missing information into performance. Choosing the unfavorable order is conservative, but it still does not recover what actually happened.

Trade events can restore the order of transactions. They still do not prove a passive limit order filled: displayed size may have been ahead of it, the order may have arrived too late, or hidden liquidity may have interacted first. That claim requires a queue model and quote or depth evidence, not merely more bars.

Prices, volume, and order flow are different records

Bar volume says how much traded during the interval. It does not say with certainty how much was initiated by buyers or sellers. Signed-volume measures usually infer aggressor direction from trade and quote relationships or from feed-provided classifications. Those methods can disagree, particularly during fast markets, locked or crossed quotes, and timestamp mismatches.

Volume-at-price and footprint calculations require enough information to place transactions at price levels. Auction-profile measures require a declared session and a reproducible way to build the distribution. A signal may be mathematically simple while its data requirement is demanding.

Choose fidelity from the claim

Work backward from the statement the research hopes to make:

  • “The rule changes long-horizon exposure after a completed daily close” may need adjusted daily bars and next-event execution assumptions.
  • “The strategy reacts to a five-minute opening range” needs reliable session boundaries and intraday bars.
  • “Aggressive buying was absorbed at the offer” needs trades, quotes, a signing method, and explicit timing.
  • “A resting order captured the spread from this queue position” needs event sequencing, depth or order-level data, latency assumptions, and a fill model.

The claim should become narrower when the data is coarser. It should not become more confident merely because the dataset is larger.

Resolution, fidelity, coverage, and quality are different

These properties answer different questions:

PropertyThe questionExample of a mismatch
ResolutionHow often is a record produced?One-second bars are frequent but still hide event order inside each second
FidelityWhich events and fields are retained?Trade prints preserve transactions but not the displayed queue
CoverageWhich venues, instruments, and times are included?One venue can miss liquidity and trades visible elsewhere
QualityAre records accurate, ordered, complete, and consistently timestamped?Duplicates or clock drift can corrupt an otherwise detailed feed

Tick data can mean trades only, quote updates, or a mixed event stream. “Level 2” can refer to price-level depth or order-level messages, depending on the source. File size and row count therefore say little about what can be inferred.

Document the event type, timestamp semantics, venue coverage, adjustment policy, session construction, sequence handling, and known gaps. Two datasets with the same symbol and date range are not equivalent when any of those properties differ.

Common fidelity mistakes

  • Inferring whether a stop or target fired first from one bar’s high and low.
  • Treating a trade print as proof that a passive order at that price filled.
  • Calling all volume “buyer” or “seller” initiated without stating the classification method.
  • Using displayed depth as if every displayed unit were executable.
  • Combining feeds with different timestamp clocks without measuring alignment.
  • Switching to a lower-fidelity period in the middle of a test without marking the change in the result.
  • Paying the storage cost of depth data while still using a bar-shaped fill model that ignores it.

Further reading