Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-08-08

Level 1 vs Level 2 vs Level 3 Market Data Explained

Level 1, Level 2, Level 3 market data explained with quote panels: top of book, price depth, order-by-order detail, plus wetin retail feeds dey skip.

Level 1 versus Level 2 market data na question of how much of the order book you fit see. Level 1 na the top of the book: best bid, best offer, size wey dem quote for each side, plus last trade. Level 2 na the depth behind that top line, meaning every displayed price level with the total size wey dey wait there. Level 3 carry each individual order separately, with its own identifier. Each tier get everything wey the tier under am get, plus more.

Wetin be Level 1 market data?

Level 1, or top of book, dey answer one question: wetin be the best price wey dey available now, and how much dem quote for there. For US equities, the consolidated version of that line na national best bid and offer, and our guide on wetin NBBO be explain am fully. Level 1 record carry best bid, best offer, displayed size for each side, plus last print and its size for the trade side. E no show second-best price, and e no show who dey quote.

Two numbers dey do most of the work for this tier: the spread in cents, and the same spread in basis points, where one basis point na one hundredth of a percent. The panel below plot both for one large-cap stock across one pinned session, from 4:00 a.m. ET premarket open reach the end of after-hours trading at 8:00 p.m. ET.

QueryLevel 1 top of book: quoted spread wey cover full session (AAPL, June 17 2026)
The exact SQL behind every number
SELECT
    formatDateTime(
        toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE),
        '%H:%i'
    )                                                                      AS et_time,
    round(avg(toFloat64(ask_price) - toFloat64(bid_price)) * 100, 2)       AS spread_cents,
    round(avg((toFloat64(ask_price) - toFloat64(bid_price))
              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2)) * 10000, 2) AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
  AND sip_timestamp >= '2026-06-17 08:00:00'
  AND sip_timestamp <  '2026-06-18 00:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND (toFloat64(ask_price) - toFloat64(bid_price)) / toFloat64(bid_price) < 0.05
GROUP BY et_time
ORDER BY et_time
Run this yourself

For 04:00 ET, average quoted spread get width of 37.38 cents, or 12.51 basis points. The last bucket for the panel, 19:30 ET, average 16.85 cents, or 5.67 basis points. The 32 half-hour buckets trace the whole day. Every point for that chart na Level 1: one line of the book, measured again and again.

Wetin be Level 2 market data?

Level 2, wey dem also dey call market by price or depth of book, show the ladder under the top line. For each price, e aggregate the total displayed size wey dey wait there: 4,000 shares bid at $49.98, 1,200 at $49.97, 900 at $49.96 and 2,500 at $49.95, with the same pattern for the offer side. Na this shape traders dey call depth.

Wetin Level 2 no show na the composition. The 4,000 shares at $49.98 fit be one institutional order or forty retail orders, and the ladder go look the same either way.

You fit measure related pattern from public trade data: where the stock shares actually change hand across price levels. Quoted ladder na interest wey dey wait. The panel below show executed volume across half an hour for the same session.

QueryExecuted volume by price level: traded ladder wey dem trade (KO, 30 minutes)
The exact SQL behind every number
SELECT
    toString(px)             AS price_level,
    round(sum(sz) / 1000, 1) AS shares_thousands,
    count()                  AS prints
FROM
(
    SELECT
        round(toFloat64(price), 2) AS px,
        toFloat64(size)            AS sz
    FROM global_markets.stocks_trades
    WHERE ticker = 'KO'
      AND sip_timestamp >= '2026-06-17 14:30:00'
      AND sip_timestamp <  '2026-06-17 15:00:00'
      AND price > 0
      AND size > 0
)
GROUP BY px
ORDER BY px
Run this yourself

Trading for that half hour spread across 63 different price levels, from $79.42 for the low end reach $80.04 for the high end. The two extreme levels thin, with 0.1 thousand shares for the bottom and 0.8 thousand for the top. Most of the volume print between them. Level 1 feed show one price at a time through all of this. Level 2 feed show the ladder in advance, as resting orders, instead of showing prints after the trade don happen.

Wetin be Level 3 market data?

Level 3, or market by order, na the complete picture: every resting order separately, each with identifier, price, size and position for the queue at that price. If you aggregate Level 3 feed by price, you don rebuild Level 2. If you take the best price for each side, you get Level 1.

Level 3 dey answer two questions wey aggregated tiers no fit answer. Where order dey for the queue at one price, which determine whether e go fill when that price trade. And wetin happen to one particular order throughout its life, from placement reach cancellation. Exchange proprietary feeds like Nasdaq TotalView-ITCH carry this depth. Consolidated tape no carry am.

Wetin retail Level 2 subscription really give you?

For here, the label no too strict. “Level 2” for retail platform hardly ever mean the full national depth of book. Wetin normally arrive na one venue book, often the venue wey your broker route orders go, or merged book wey stop at five or ten price levels for each side. Ten-level book for stock wey quote in pennies cover ten cents of range, and for active name that range dey refresh constantly.

Message volume na big reason why the tiers get such different prices. The panel below count top-of-book quote records for five household names over one hour of the same session, together with the average spread for each one.

QueryTop-of-book spread and quote message count by name (10:00 to 11:00 a.m. ET)
The exact SQL behind every number
SELECT
    ticker                                                                 AS symbol,
    round(avg((toFloat64(ask_price) - toFloat64(bid_price))
              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2)) * 10000, 2) AS spread_bps,
    count()                                                                AS quote_update_count
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO')
  AND sip_timestamp >= '2026-06-17 14:00:00'
  AND sip_timestamp <  '2026-06-17 15:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND (toFloat64(ask_price) - toFloat64(bid_price)) / toFloat64(bid_price) < 0.05
GROUP BY symbol
ORDER BY spread_bps
Run this yourself

SPY quote the tightest average spread among the five, at 0.32 basis points, while KO average 1.95. Those update counts cover top of the book only. Depth feed carry every change for every price level under am, while order-by-order feed carry every message behind those changes. Options na the extreme example of the same arithmetic: how big options quote feed be put number on am.

Why visible book dey understate real liquidity

Displayed ladder na only the minimum liquidity wey dey available, not a full measure of liquidity. Two big pieces dey outside the picture.

Hidden and reserve orders. Iceberg order display small part and keep the rest in reserve, refreshing the visible part as e fill. The book fit show 200 shares, while twenty thousand fit dey behind am. How iceberg orders work explain the mechanics.

Off-exchange execution. A large part of US equity volume print away from lit exchanges, for broker internalizers and alternative trading systems wey no publish pre-trade quote at all. Dark pool trading explained cover where that volume dey go.

Wetin conflation mean for market data feed?

Conflated feed no send every update. E take snapshot of the book at fixed interval, maybe every 250 milliseconds or every second, then send the state as e be for that moment. Anything wey happen between two snapshots no arrive, and two subscribers on two different intervals go see two different books. Each one accurate according to its own clock.

This difference matter most for people wey dey build on a feed. Un-conflated data mean every message dey arrive in sequence. Na this matching-engine simulation or queue-position model dey use. For conflated feed, those calculations become approximations. For person wey dey read ladder with eye, the interval almost no matter.

QueryTop-of-book message rate, minute by minute (NVDA, one hour)
The exact SQL behind every number
SELECT
    et_time,
    round(avg(sec_updates), 1) AS avg_updates_per_second,
    max(sec_updates)           AS peak_updates_in_one_second
FROM
(
    SELECT
        formatDateTime(toStartOfMinute(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
        toDateTime(sip_timestamp)                                                              AS et_second,
        count()                                                                                AS sec_updates
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'NVDA'
      AND sip_timestamp >= '2026-06-17 14:00:00'
      AND sip_timestamp <  '2026-06-17 15:00:00'
    GROUP BY et_time, et_second
)
GROUP BY et_time
ORDER BY et_time
Run this yourself

For the first minute of that hour, 10:00 ET, top-of-book records arrive at average rate of 163.8 per second. The busiest single second inside the minute carry 371 records. Feed wey take snapshot once every second go pass only one book state from that stream. Na the top of the book for one stock be this. Depth and order-by-order feeds multiply the count.

Level 2 data worth paying for?

The value depend on how long you hold the position. Trader wey dey work orders inside the spread or time entries in seconds dey read depth to know things wey top line no show: where size dey pile up and which side dey thin. This reading no perfect because of hidden liquidity, as we explain above, but e still better than having no ladder.

For trades wey last days or weeks, the extra information inside ten-level book small compared with the cost. The tier below Level 1 matter here too: delayed quotes, usually fifteen minutes behind, dey free for most platforms and enough for decisions wey dey measure in days. Why stock quotes dey delayed 15 minutes explain where that convention come from. One last thing to confirm na delivery: ladder wey come from one venue and get conflated at interval wey vendor no publish na partial view of another partial view.

FAQ

Wetin be the difference between Level 1 and Level 2 market data?

Level 1 give best bid and best offer with the size for each side, plus last trade. Level 2 add the displayed price levels under them and total size wey dey wait at each level. So e contain everything wey Level 1 get, plus more.

Level 2 market data dey real time?

E depend on the subscription. Exchange depth feeds dey real time and dem charge for am, while many retail platforms deliver conflated version wey take snapshot at intervals. Product page rarely talk which one e be, and broker support desk fit confirm am.

Level 2 show hidden orders?

No. Depth-of-book feed show displayed size only. Iceberg reserve quantity and fully hidden orders remain invisible for the ladder until dem print as trades.

Wetin people use Level 3 market data do?

Level 3, or market by order, carry every individual resting order with its own identifier, price, size and queue position. Firms mainly buy am to run execution and order-routing models, where queue position fit change the economics of a fill.

I need Level 2 data to trade?

No. Level 1 quotes and trade tape enough to place and manage orders on any retail platform. Depth become useful when the decision depend on liquidity at the exact execution time, instead of where price close.


Every panel for here come with the SQL wey dey underneath am, so you fit open one and see exactly how dem count each number. You fit run the same questions against any ticker and any session on the Strasmore terminal.

#market data#level 2#order book#depth of book#nbbo