Direct Answer

Market data providers offer four primary feed types. A trade feed (time and sales) delivers every executed transaction: timestamp, exchange, price, size, and condition codes. A quote feed delivers the current national best bid and offer (NBBO) and the sizes available at those prices, updating with every change across all exchanges. A bar feed aggregates trades into open/high/low/close/volume (OHLCV) summaries over a fixed time interval, typically 1 minute, 5 minutes, or daily. A depth feed (Level 2 / Level 3) exposes the order book beyond the best bid and offer, showing multiple price levels and the size resting at each.

No single feed type is universally best. The appropriate choice depends on strategy frequency, the signals you compute, and your infrastructure constraints. End-of-day bar strategies need only daily OHLCV. Intraday momentum strategies typically need 1-minute bars plus real-time quotes. Market-making and statistical arbitrage strategies that depend on microstructure require trade and quote feeds at the tick level. High-frequency strategies that trade against order flow need full order book depth.

Key Takeaways

  • Trade feeds confirm what happened: Each message contains exactly one transaction. The price and size are definitive once the trade clears, though corrections and cancellations can arrive later.
  • Quote feeds show what is available now: The NBBO updates continuously as orders arrive and cancel. A quote is a snapshot of available liquidity at a moment in time, not a guarantee of execution.
  • Bars compress information at a cost: Aggregating ticks into 1-minute bars reduces data volume by orders of magnitude but destroys intra-bar ordering, multi-print sequences, and spread dynamics that may be significant for your signal.
  • Depth reveals intent beyond the touch: Watching the order book at 5 or 10 price levels exposes limit order clustering, spoofing patterns, and available liquidity for larger orders, information invisible in NBBO-only data.
  • Feed latency increases with processing depth: Raw trade ticks are lowest latency. Quote feeds add consolidation overhead. Bar feeds add aggregation delay. Depth feeds are high-bandwidth and require careful capacity planning.
  • Condition codes filter bad data: Trade messages carry condition codes (e.g., "T" for extended hours, "Z" for out-of-sequence, "C" for cancel/error). Ignoring condition codes includes bad prints in signals and bars.
  • Bar construction rules are not universal: Different providers build bars differently, some close the bar at the start of the next period, some at the end of the current period; some include only regular-hours trades, some include extended hours. The difference appears in open prices and bar boundaries.
  • Quote data volume is much higher than trade data: For a liquid S&P 500 stock, quote updates may outnumber trade prints 20:1 during normal sessions. Storing and processing full quote history is a significant infrastructure commitment.

Core Concepts

Trade Feeds: The Record of What Happened

A trade feed message represents a single completed transaction. Each record carries a nanosecond-precision exchange timestamp, the exchange where the trade executed, the price, the size in shares or contracts, and one or more condition codes that describe the trade's nature. Common condition codes under the CTA/UTP specification include: regular sale (the default), extended-hours trade, out-of-sequence print, intermarket sweep, and cancel/error. Only trades with a "last sale eligible" condition code should be included in OHLCV bar calculations or used as price references.

In practice, a liquid stock like Apple (AAPL) generates 30,000-80,000 trade prints per session across all venues. Each print is discrete and ordered by exchange timestamp. The full record of prints for a day is called the time and sales tape. The official consolidated tape is administered by the CTA (for NYSE-listed securities) and the UTP Plan (for Nasdaq-listed securities), these are the same organizations that operate the SIP feeds.

Trade feeds are the foundation for price discovery. Volume-weighted average price (VWAP), tick-by-tick momentum signals, and volume profile all derive from the raw trade feed rather than bars. If your strategy uses VWAP as a benchmark or computes VWAP-deviation signals, you need the raw trade feed or a very high-frequency bar (sub-minute) to reconstruct it accurately.

What a trade feed cannot tell you is the state of the order book when the trade occurred, or whether the aggressor was a buyer or seller. Identifying trade direction requires inference (tick test, Lee-Ready algorithm) or order-flow data from the exchange's matching engine, which is typically not available on the consolidated tape.

Quote Feeds: The State of Available Liquidity

A quote feed delivers the national best bid and offer (NBBO), which is the highest bid and lowest offer currently posted across all registered exchanges and FINRA ADF venues. Each quote message includes the bid price, bid size, offer price, offer size, the exchange on the bid, and the exchange on the offer. A quote changes every time any exchange updates its best price. For a liquid large-cap stock, NBBO updates can run 100,000 or more per session.

The spread between the best bid and best offer is a direct measure of transaction cost for a market order. A trader buying at the offer and selling at the bid pays the full spread as an immediate loss. Signal research that ignores the spread will overstate net returns, particularly for strategies that trade at high frequency where spread costs compound rapidly.

Quote feeds are also critical for execution quality measurement. Comparing your fill price to the NBBO at the time of the order (not the time of the fill) lets you calculate effective spread and price improvement. Most execution quality reporting frameworks, including SEC Rule 606 disclosures from brokers, use NBBO reference prices.

One important nuance: the NBBO is a construct of the SIP. It represents the best publicly displayed quote. Venues that offer internalization, dark pools, or midpoint pegged orders may execute at prices that beat the NBBO, but these executions appear only in the trade feed after they occur, not in advance in the quote feed.

Bar Feeds: Compressed Summaries for Slower Strategies

A bar (also called a candlestick or OHLCV record) summarizes all trades in a fixed time interval into five values: open (first trade price), high (highest trade price), low (lowest trade price), close (last trade price), and volume (total shares traded). The most common intervals are 1 minute, 5 minutes, 15 minutes, 30 minutes, and 1 day. Custom intervals (e.g., 3-minute, tick bars, volume bars, dollar bars) are also common in systematic trading research.

Bar feeds are appropriate for strategies that operate on multi-minute or longer timeframes. They offer dramatically reduced data volume compared to tick feeds, a year of daily bars for 5,000 US stocks fits in a few hundred megabytes; a year of tick-level trades for the same universe requires terabytes. This makes daily and minute bars the default for most quantitative strategy research.

The critical limitation of bars is that they destroy intra-bar sequence information. Two bars can have identical OHLCV values but completely different intra-bar paths: one might open, fall to the low, recover to the high, and close near the open; another might open, spike to the high immediately, then drift down through the period. Technical indicators applied to bars cannot distinguish these paths. This matters most for signals that depend on the sequence of prints rather than their aggregate.

Bar construction rules vary significantly between data providers. Key decisions include: which condition codes are included in the bar (regular hours only, or extended hours?), how the open is defined (first qualifying print, or the theoretical market-on-open price?), and what time zone is used for the bar boundary. When switching data providers, verify that bar construction rules are identical, two providers can produce different open prices for the same session from the same raw feed.

Depth Feeds: The Full Order Book

A depth feed (also called Level 2 data) exposes the full limit order book beyond the NBBO. Instead of just the best bid and offer, you see the resting limit orders at 5, 10, or more price levels on each side. The data typically includes: price level, aggregate size at that level, and the number of orders. Level 3 data additionally shows individual order-level detail (each separate limit order), but is generally available only to market makers and exchange members.

Depth data is essential for strategies that need to estimate market impact, how much a large order will move the price as it consumes available liquidity. A strategy intending to buy 10,000 shares needs to know how much volume is available at the offer, at the offer+$0.01, at the offer+$0.02, and so on. A thin order book at the touch with nothing behind it signals high slippage risk for large orders.

Depth feeds are also used to construct microstructure signals. Order book imbalance, the ratio of bid-side depth to ask-side depth, is a predictor of short-term price direction in academic and practitioner literature. When the bid side carries significantly more volume than the ask side, aggressive buyers have more to fill against passive sellers, often producing short-term upward pressure.

The bandwidth requirements for depth feeds are substantial. A full order book snapshot plus delta updates for a single exchange can run 100,000-500,000 messages per second across all symbols during active sessions. Most systematic trading firms that consume full depth data use a dedicated co-located server, hardware network cards with kernel-bypass networking, and custom serialization formats to keep up with the message rate without data loss.

Worked Scenario

A systematic equity strategy team is evaluating a momentum signal based on "prints above VWAP in the first 30 minutes." To determine which feed type they need for research and live trading, they work through the following steps:

  1. Define VWAP: VWAP requires every trade print (price × volume / cumulative volume from open). This is computed from the raw trade feed, not from bars. A 1-minute bar gives the minute's volume and close price, but not the sequence of individual prints needed to weight each correctly. The team concludes they need the trade feed for research.
  2. Define "prints above VWAP": Each individual trade is compared to the running VWAP. Using 1-minute bars would produce one comparison per minute; using the raw trade feed produces one comparison per print. The team tests both approaches and finds the signal is materially stronger using tick-level data, because the minute-bar version loses resolution on the print sequence during opening volatility.
  3. Live execution feed selection: For live trading, they need the real-time trade feed. They also need the quote feed to check spread before entry, if the spread is wide during the signal, the expected cost of crossing it reduces expected net return below the threshold. They subscribe to both trade and quote feeds via their data vendor's WebSocket API.
  4. Depth assessment: The team's average trade size is 200 shares on a stock with a typical bid/ask depth of 5,000 shares at the touch. At this size, depth beyond the NBBO is not needed and they skip the depth subscription to reduce infrastructure cost and complexity.
  5. Bar feed for non-signal use: For reporting, position management, and end-of-day reconciliation, they use 1-minute and daily bars from a standard OHLCV provider. These are cheaper, easier to store, and sufficient for purposes that do not require tick-level resolution.

Measurement Framework

MeasurementQuestion to Answer
Message rate (msgs/sec) at peakCan your infrastructure process the feed without dropping messages during high-volatility periods?
Feed latency (exchange timestamp to receipt)How stale is your data by the time it arrives for processing?
Condition code filter rateWhat percentage of trade messages are excluded by condition code filters, and are you filtering correctly?
NBBO stale age (ms)How old is your last quote update when a trade signal fires?
Bar boundary alignment errorDo your bar boundaries match your expected timezone and interval after any DST transitions?
Depth book size (levels tracked)How many price levels of depth are you maintaining, and is this sufficient for your market impact estimates?
Depth update lag vs. trade feed lagIs your depth state synchronized with the trade feed, or are you computing book imbalance on stale data when a trade fires?

Common Failure Modes

Including Condition-Flagged Prints in Bars

Trade feeds include prints for extended-hours trades, inter-market sweeps, and corrected/cancelled transactions, all carrying distinct condition codes. If your bar-building logic includes all prints without filtering on condition codes, your bar open may reflect a pre-market trade, your high may be a late-reported print from the prior session, or your volume may include a cancelled block that was later reversed.

Detailed gold bars layered over Indonesian currency, highlighting wealth and investment.
Photo by Robert Lens via Pexels

The fix is explicit filtering: include only prints where the condition code indicates "last sale eligible" or "regular sale" depending on the data provider's specification. This needs to be verified against the actual feed spec, not assumed from defaults.

Building Bars from Quote Midpoints Instead of Trade Prices

Some researchers build bars using the bid-ask midpoint from the quote feed rather than actual trade prices from the trade feed. This is common in academic research on illiquid securities where trade data is sparse, but it introduces systematic bias: midpoint prices are smoother than trade prices and do not reflect the true cost of execution at the spread.

Strategies validated on midpoint-based bars will show better simulated returns than achievable in live trading, because the simulation implicitly assumes zero spread cost. Always verify whether a bar dataset was constructed from trades or quotes before using it for strategy research.

Misinterpreting Depth Data During Circuit Breakers

When a stock triggers a limit-up/limit-down (LULD) circuit breaker, the exchange halts trading at the price band limit. During the halt, depth data may show large queues of orders at or near the band price, but these orders cannot execute until the halt lifts. A depth-imbalance signal that fires during a halt is reading an artificially constrained book, and the imbalance will not resolve in the normal way once trading resumes.

Systems consuming depth data need to handle trading halt messages and suppress depth-based signals while a halt is active, then allow a short warm-up period after trading resumes to let the book re-establish before computing imbalance signals.

Incorrect Bar Close Time Across DST Transitions

US equity markets observe Eastern Time (ET), which shifts between UTC-5 (winter) and UTC-4 (summer) with Daylight Saving Time. If bar boundaries are stored in UTC and timezone conversion is applied at query time, DST transitions can shift bar boundaries by one hour, splitting or merging what should be distinct trading sessions. This creates a spurious "bad day" at each DST transition where bars are misaligned.

Store bar timestamps in ET or as exchange-session-aware offsets, and test bar boundary alignment explicitly for the two annual DST transition dates.

Assuming Trade Volume Equals Share Volume

For equities, each trade reports shares. For equity options, each trade reports contracts (where one contract covers 100 shares). For futures, each trade reports contracts of a specific size. Bar volume means different things across asset classes. A systematic strategy that trades multiple asset classes using the same volume comparison logic, without normalizing to a common unit, will miscalculate relative volume signals across classes.

Frequently Asked Questions

What does OHLCV stand for and what does each value represent?

OHLCV stands for Open, High, Low, Close, Volume. Open is the price of the first qualifying trade in the interval. High is the highest trade price in the interval. Low is the lowest trade price. Close is the price of the last qualifying trade. Volume is the total number of shares (or contracts) traded in the interval. "Qualifying" refers to trades that pass condition code filters, typically regular-session, non-cancelled prints.

What is the NBBO and which exchanges contribute to it?

The National Best Bid and Offer (NBBO) is the highest bid price and lowest ask price available across all registered national securities exchanges and the FINRA ADF (Alternative Display Facility). As of 2026, contributing venues include NYSE, Nasdaq, NYSE Arca, NYSE American, CBOE BZX, CBOE BYX, CBOE EDGX, CBOE EDGA, IEX, LTSE, MEMX, and others. The SIP consolidates quotes from all these venues and computes the NBBO in real time.

What is the difference between L1, L2, and L3 market data?

Level 1 data is the NBBO (best bid and offer) plus last trade price, the most basic view of a market. Level 2 data shows the order book at multiple price levels on each side (typically 5-20 levels), with aggregate size at each price. Level 3 data (where available) shows individual order identifiers, sizes, and timestamps, exposing the full queuing structure of the book. L3 data is generally available only to exchange members and market makers. Most retail data providers offer L1 and L2.

Can I reconstruct tick data from 1-minute bars?

No. Bars aggregate all ticks in the interval into five summary values. The intra-bar sequence, individual print prices, individual print sizes, and the exact time of each print are all lost. You can approximate tick behavior from bars using synthetic tick generators (e.g., Ohnishi-Watanabe or similar models), but these are statistical approximations used for specific purposes like bar-to-tick resampling tests, not a reliable substitute for actual tick data for signal research.

Do quote updates always cause NBBO changes?

No. An exchange can update its own best quote without changing the NBBO if another exchange is already at a better price. For example, if the NBBO offer is $100.05 at Nasdaq and NYSE updates its offer from $100.06 to $100.07, the NBBO does not change. Only when an exchange sets a new best bid or offer does the NBBO update. Quote feeds from individual exchanges show all local quote changes; SIP feeds show only NBBO changes.

What are "odd lot" trades and do they appear in the tape?

Yes, odd-lot trades print to the consolidated tape, and have for years: Rule 600(b)(69) treats odd-lot transaction data already disseminated under the transaction reporting plans as of April 9, 2021 as one component of odd-lot information. What is worth updating in your pipeline is the definition itself. An odd lot is an order smaller than that stock's round lot, and the round lot is no longer a flat 100. Rule 600(b)(93) sets it from the stock's average closing price: 100 shares at $250.00 or less, 40 shares to $1,000.00, 10 shares to $10,000.00, and 1 share above that, reassigned each May and November. A 50-share print is an odd lot in a $100 stock and five round lots in a $1,200 one, so a hardcoded 100-share odd-lot filter is now wrong for part of the universe. Odd-lot quote information joined core consolidated data on the first business day of May 2026. Some vendors and bar builders still drop odd lots by default, which shifts volume counts and can move open and close prices in thin names, so confirm what your source does.

How are after-hours trades marked in the feed?

Extended-hours trades (before the 9:30 AM ET open and after the 4:00 PM ET close) carry specific condition codes in the CTA/UTP specification. Common codes include "T" (extended hours trade) and "U" (extended hours trade, odd lot). By default, standard OHLCV bars exclude these prints unless explicitly configured to include them. If you are researching strategies that use post-market earnings reactions or pre-market gap signals, you need to explicitly request or include extended-hours data, and be aware that liquidity and spread dynamics differ substantially from regular session trading.

What does order book imbalance predict and over what timeframe?

Order book imbalance, computed as (bid depth − ask depth) / (bid depth + ask depth) across the top N price levels, is a predictor of short-term price direction over the next 1-60 seconds in academic and practitioner research. A strongly positive imbalance (more volume on the bid side) is associated with upward price pressure; a negative imbalance with downward pressure. The predictive window is short: as levels are consumed by incoming orders, the imbalance dissipates. Research by Cont, Kukanov, and Stoikov (2014) found that order flow imbalance is linearly related to short-horizon price changes, with the relationship strongest over intervals on the order of seconds and weakening as the horizon lengthens.

Which prints are included when computing a volume-weighted average price from a trade feed?

The convention matters more than the arithmetic. Most implementations include only prints eligible to update the last sale, excluding opening and closing auction prints in some definitions, excluding trades reported late or out of sequence, and excluding categories such as derivatively priced or intermarket sweep prints depending on the benchmark being reproduced. Two systems can compute a materially different average from identical data purely through inclusion rules, which is why an execution benchmark should state its filter rather than only its formula.

References

Educational Disclaimer

This guide is educational and describes general market data concepts. Feed specifications, condition codes, and regulatory requirements change over time. Verify current specifications with your data provider and the relevant SIP plan administrator before building production systems.