Strasmore Research
Deep Dives Matt ConnorBy Matt Connor

What Is a Trade-Through? ISO Orders Explained

What is a trade-through? Reg NMS order protection in plain terms: why only automated top-of-book quotes are protected, and how an ISO prints through the NBBO.

A trade-through is an execution at a price worse than another venue's protected quote at the same moment: buying above the cheapest protected offer, or selling below the highest protected bid. Regulation NMS gives trading centers the job of preventing one, under the order protection rule, then carves out a defined list of exceptions. The widest of those exceptions is the intermarket sweep order, or ISO, a marked order whose sender declares it has already routed to every better protected quote.

What counts as a trade-through?

Picture one stock quoted in a dozen places at once. One venue displays an offer at $10.02 and another displays $10.01. An order that buys at $10.02 while that $10.01 offer sits there, displayed and automated, has traded through it. On the sell side the mirror image applies. Those two prices are a hypothetical for teaching, not a real quote.

Two details narrow the rule further than most readers expect. It reaches exactly one price level per venue, the top of the book, so an order that clears three price levels deep on one venue has traded through nothing as long as it respected the best price at every other venue. And it reaches only protected quotes, a category far narrower than any price anyone happened to display. The consolidated top of that set is the national best bid and offer, assembled from the protected quotes themselves.

What makes a quote protected?

A protected quotation satisfies two conditions at once. It is automated, meaning an incoming order is executed or cancelled immediately and automatically, with no human in the loop and no intentional delay. And it is the venue's own best bid or best offer, the top of its book.

Everything outside that definition can be traded through freely:

  • depth-of-book prices sitting behind a venue's own best quote
  • manual quotes, which need human handling before they execute
  • odd-lot quotes, meaning orders for fewer than 100 shares
  • quotes displayed by venues that are not registered trading centers

The definition does double duty. The prohibition on locked and crossed markets is written against the same protected-quote category, which is why an odd lot can sit at a price that looks locked without breaking anything.

Why one stock prints in a dozen places at once

A better protected quote somewhere else is not a hypothetical. US equities trade on more than a dozen registered exchanges plus a large off-exchange segment, and a liquid name prints on most of them inside any given minute. The panel takes a fixed 30 minutes of AAPL trading on a June 2026 morning and counts where the prints landed.

QueryWhere 30 minutes of AAPL prints landed, by venue
The exact SQL behind every number
WITH
    prints AS
    (
        SELECT
            toString(exchange) AS venue_id,
            count()            AS print_count
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL'
          AND sip_timestamp >= '2026-06-10 14:00:00'
          AND sip_timestamp <  '2026-06-10 14:30:00'
        GROUP BY venue_id
    ),
    venues AS
    (
        SELECT
            toString(id) AS venue_id,
            any(name)    AS venue_name
        FROM global_markets.stocks_exchanges
        GROUP BY venue_id
    )
SELECT
    if(empty(v.venue_name), concat('Venue ', p.venue_id), v.venue_name) AS venue,
    p.print_count                                                       AS print_count,
    round(100 * p.print_count / sum(p.print_count) OVER (), 1)          AS share_pct
FROM prints AS p
LEFT JOIN venues AS v USING (venue_id)
ORDER BY print_count DESC
LIMIT 12
Run this yourself

The list runs 12 venues deep, and the busiest single one carried 51% of the prints in that window. Each of those venues displays its own top of book, and each automated top of book is a price every other venue has to respect.

What is an intermarket sweep order?

An ISO is a limit order carrying a routing declaration. The marking makes two claims at once. One is an instruction: the receiving venue executes it immediately against its own displayed price, with no away-market check and no routing out. The other is an obligation: at that same instant the sender has routed additional limit orders, also marked ISO, to take every better-priced protected quote at every other venue.

The pairing is what makes the print legal. The receiving venue's execution can land at a price inferior to another venue's protected quote at the moment it prints. The sweep to that quote is already in flight from the same sender, so the away quote is being satisfied rather than stepped over.

Two everyday uses follow from that structure. A large order that wants more than the top of one book takes the away tops with ISOs and walks down through the depth of its home venue in a single shot. A firm that wants speed skips the away-market check, which costs milliseconds the sweep does not. ISOs are usually sent immediate-or-cancel, so nothing rests on a book afterwards. Our order time in force guide covers what that instruction does to an ordinary order.

What a sweep looks like on the tape

A sweep is one decision that becomes many prints in the same instant, spread across venues. Aggregating the tape by the second shows the shape. This panel counts, minute by minute over the same pinned window, how many distinct venues printed AAPL inside a single second.

QueryDistinct venues printing AAPL inside the same second, minute by minute
The exact SQL behind every number
SELECT
    formatDateTime(toTimeZone(minute_utc, 'America/New_York'), '%H:%i') AS et_time,
    max(venues_printing)                                               AS max_venues_in_a_second,
    round(avg(venues_printing), 1)                                     AS avg_venues_in_a_second
FROM
(
    SELECT
        toStartOfMinute(toDateTime(sip_timestamp)) AS minute_utc,
        toDateTime(sip_timestamp)                  AS second_utc,
        uniqExact(exchange)                        AS venues_printing
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-06-10 14:00:00'
      AND sip_timestamp <  '2026-06-10 14:30:00'
    GROUP BY minute_utc, second_utc
)
GROUP BY minute_utc
ORDER BY minute_utc
Run this yourself

The window covers 30 minutes. In the minute beginning 10:00 ET, one second carried prints from as many as 13 separate venues. In the minute beginning 10:29 the busiest second reached 14. Uncoordinated trading produces some of that clustering on its own, and sweeps concentrate it. The tape carries no flag saying that a cluster was one parent order, and the condition codes further down are what carry that kind of information.

Odd lots cannot be traded through

An odd lot, an order for fewer than 100 shares, does not form a protected quotation, and a print at a price worse than an odd-lot quote is not a trade-through. That was a small carve-out when the rule was written and a much larger one now. Share prices have climbed, and a 100-share round lot in a $200 stock is a $20,000 commitment, so a growing share of real interest arrives in odd-lot form. The panel compares the size mix of prints in a high-priced name against a cheaper one over the same 30 minutes.

QueryShare of prints by trade size: AAPL against KO
The exact SQL behind every number
SELECT
    multiIf(size < 100,  '1 to 99 (odd lot)',
            size = 100,  'exactly 100',
            size < 500,  '101 to 499',
            size < 1000, '500 to 999',
                         '1000 or more')                                       AS trade_size,
    round(100 * countIf(ticker = 'AAPL')
              / greatest(sum(countIf(ticker = 'AAPL')) OVER (), 1), 1)         AS aapl_pct,
    round(100 * countIf(ticker = 'KO')
              / greatest(sum(countIf(ticker = 'KO')) OVER (), 1), 1)           AS ko_pct,
    round(100 * countIf(ticker = 'AAPL')
              / greatest(sum(countIf(ticker = 'AAPL')) OVER (), 1)
        - 100 * countIf(ticker = 'KO')
              / greatest(sum(countIf(ticker = 'KO')) OVER (), 1), 1)           AS aapl_minus_ko_pct
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'KO')
  AND sip_timestamp >= '2026-06-10 14:00:00'
  AND sip_timestamp <  '2026-06-10 14:30:00'
GROUP BY trade_size
ORDER BY min(size)
Run this yourself

Odd lots accounted for 90.6% of AAPL prints in the window against 80.6% for KO, a gap of 10 percentage points across 5 size buckets. Odd-lot prints appear on the consolidated tape all the same, and they sit outside the protection rule entirely. Why odd lots do not set the NBBO takes the quoting side of that apart.

The tape labels the exceptions

Every print on the consolidated tape carries sale condition codes, and several of them mark the exact situations the protection rule treats separately. The dictionary below is the published list, filtered to the conditions that bear on this question.

QuerySale conditions that mark protection-rule exceptions
The exact SQL behind every number
SELECT
    name                                AS condition_name,
    any(abbreviation)                   AS tape_code,
    substring(any(description), 1, 150) AS what_it_marks
FROM global_markets.stocks_condition_codes
WHERE name ILIKE '%sweep%'
   OR name ILIKE '%derivatively%'
   OR name ILIKE '%prior reference%'
   OR name ILIKE '%odd lot%'
   OR name ILIKE '%average price%'
   OR name ILIKE '%out of sequence%'
GROUP BY name
ORDER BY condition_name
LIMIT 15
Run this yourself

11 conditions in the published dictionary bear on this question. An intermarket sweep marks the ISO case. A derivatively priced or average-price trade carries a price computed from something other than the moment it printed. An out-of-sequence report describes a print that reached the tape late, carrying a price from an earlier moment. Each one gives a print a legitimate reason to sit away from the best displayed quote.

A print at an impossible price is usually not an error

A print that sits outside the best bid and offer looks like a glitch on a retail screen. It rarely is one. The everyday explanations:

  1. An ISO, printed at the receiving venue's own price while the sweep to the better quotes was in flight.
  2. A trade against an unprotected quote: an odd lot, a manual quote, a depth-of-book price, or a quote from a venue that is not a protected trading center.
  3. A late or out-of-sequence report, where the price was right at an earlier moment and the timestamp on screen is the reporting time.
  4. A formula-priced trade, such as an average-price or derivatively priced print, where the price came from a calculation rather than from the tape at that second.
  5. A stale reference price on your own screen. Delayed quotes covers the 15-minute lag that leaves a print looking outside a quote that has since moved.

The opposite case is ordinary too. A print better than the displayed best quote is often sub-penny price improvement inside the spread, a routine feature of retail order handling.

FAQ

What is a trade-through in stock trading?

A trade-through is a trade printed at a price worse than a protected quote displayed at another venue at that moment: paying more than the best protected offer, or selling into a bid below the best protected bid. The Regulation NMS order protection rule makes preventing one the trading center's job, with defined exceptions.

What is an intermarket sweep order?

An ISO is a limit order marked to tell the receiving venue to execute it immediately at that venue's own displayed price without routing away. The marking obligates the sender to simultaneously route orders to every better-priced protected quote elsewhere, which is what allows the ISO print to land outside the national best bid and offer.

Can a trade legally print outside the NBBO?

Yes, and it happens constantly. An ISO print, a trade against an unprotected quote such as an odd lot or a manual quote, a late report, and a formula-priced benchmark trade all print away from the best displayed quote without breaking the rule.

Why are odd-lot quotes not protected?

A protected quotation has to be an automated top-of-book quote, and the definition was built around round lots of 100 shares. An odd-lot quote at a better price still reaches the tape, and it places no routing obligation on anyone else.

Is every trade-through a rule violation?

No. The order protection rule carries a list of exceptions, including intermarket sweep orders, quotes that were not automated at the moment of execution, self-help declarations against a venue that is failing to respond, and prints whose price was set at an earlier time. A print outside the best quote is a question worth asking, not a finding.


Every panel above ships with the SQL that produced it, expandable underneath. To count venue prints or size buckets for a name you follow, ask the question in plain English on the Strasmore terminal.

#reg nms#order protection#iso orders#nbbo#order routing