Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Rule 605 vs 606: Execution Quality Reports

Rule 605 and 606 reports show execution quality and where your broker routes orders. Here is how to read effective spread and payment per hundred shares.

Rule 605 and Rule 606 are the two public disclosures that show how a US stock order was handled. A Rule 605 report comes from the market center that executed the order and grades execution quality: effective spread, price improvement, execution speed, and fill rates, broken out by order type and order size. A Rule 606 report comes from your broker and discloses where customer orders were routed and what the broker was paid for sending them there.

Both documents are aggregates. Neither can tell you what happened to your fill on one particular Tuesday afternoon, and holding on to that distinction is the most useful thing you can bring to either file.

What is a Rule 605 report?

Rule 605 sits inside Regulation NMS, the SEC rulebook covering how quotes and trades in listed stocks are published and linked together. Every market center that receives covered orders publishes a monthly, machine readable file with one row per stock, per order type, and per order size bucket. A market center here means an exchange, a wholesaler that fills retail orders from its own account, an alternative trading system, or any other venue that executes orders.

Each row is a scorecard for the fills in that bucket:

  • Average effective spread: twice the distance from the execution price to the midpoint of the quote in force when the order arrived.
  • Average realized spread: the same distance measured a short interval after the fill, which shows how far the price traveled once the trade was done.
  • Price improvement: the share of covered shares filled at a better price than the quote, plus the average amount saved per share.
  • Speed and fill rates: average time from receipt to execution, and how often resting orders were filled or cancelled.

Nothing in a 605 report mentions payments or names your broker. It grades the venue.

What is a Rule 606 report, and where do I find mine?

Rule 606 grades the routing decision instead. Every broker handling customer orders publishes a quarterly report, usually within a month of quarter end, split into S&P 500 stocks, other listed stocks, and listed options. For each group it names the venues that received the largest share of non-directed orders (orders where the customer expressed no venue preference, which covers nearly all retail activity), the percentage sent to each, and the net payment received or paid.

Finding it takes about a minute: search the broker's name together with "606 report", or look for a regulatory disclosures or order routing page on its site. Read it in this order:

  1. The venue list for the group you trade. Four or five names usually cover most of the flow.
  2. The order type split inside each venue: market, marketable limit, non-marketable limit, and other.
  3. The payment column, quoted in cents per hundred shares for stocks and cents per contract for options.
  4. The material aspects narrative underneath, where the broker describes its arrangement with each venue in plain English.

There is a second document most readers never ask for. Under the individual disclosure part of Rule 606, a customer can request a report covering the last six months of their own non-directed orders, naming the venue that received each one. That report is about you. The quarterly one never is.

How to read the payment column without over reading it

Payments are stated per hundred shares. Take a hypothetical rate of 15 cents per hundred shares: a 100 share order earns the broker 15 cents, and a 1,000 share order earns $1.50. Options payments are quoted per contract and sit on a different scale, so the two columns are never compared directly.

Two limits on that number. It is an average across every customer and every order in the quarter, so no individual fill can be recovered from it. And a payment on its own says nothing about fill quality: the execution statistics for the receiving venue live in that venue's 605 file, not in the broker's 606 file. What it costs to trade a stock covers the rest of the bill.

What is effective spread over quoted spread?

The quoted spread is the distance between the national best bid and the national best offer at the moment the order arrives, the NBBO. The effective spread is twice the distance from the fill price to the midpoint of that same quote. Divide the second by the first and you have the effective over quoted ratio, the first number an execution quality analyst looks at. A reading under 100% means the average fill landed inside the quoted spread.

The panel below rebuilds that calculation from raw ticks: every AAPL print during one hour of the June 17, 2026 session, matched to the quote in force at the moment it printed, grouped into size buckets. Basis points are hundredths of a percent, which keeps the comparison honest across price levels.

QueryEffective spread against quoted spread by trade size, AAPL
The exact SQL behind every number
SELECT
    size_bucket,
    round(avg(quoted_bps), 2)                            AS avg_quoted_spread_bps,
    round(avg(effective_bps), 2)                         AS avg_effective_spread_bps,
    round(100 * avg(effective_bps) / avg(quoted_bps), 1) AS eq_over_q_pct
FROM
(
    SELECT
        multiIf(t.size < 100,  '1 to 99 (odd lot)',
                t.size < 500,  '100 to 499',
                t.size < 2000, '500 to 1,999',
                               '2,000 and up')                                AS size_bucket,
        multiIf(t.size < 100, 1, t.size < 500, 2, t.size < 2000, 3, 4)         AS bucket_order,
        10000 * (q.ask - q.bid) / ((q.ask + q.bid) / 2)                        AS quoted_bps,
        10000 * 2 * abs(t.price - ((q.ask + q.bid) / 2)) / ((q.ask + q.bid) / 2) AS effective_bps
    FROM
    (
        SELECT ticker, sip_timestamp, toFloat64(price) AS price, size
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL'
          AND sip_timestamp >= '2026-06-17 14:00:00'
          AND sip_timestamp <  '2026-06-17 15:00:00'
          AND size > 0
          AND price > 0
    ) AS t
    ASOF JOIN
    (
        SELECT ticker, sip_timestamp, toFloat64(bid_price) AS bid, toFloat64(ask_price) AS ask
        FROM global_markets.cache_stocks_quotes
        WHERE ticker = 'AAPL'
          AND sip_timestamp >= '2026-06-17 13:45:00'
          AND sip_timestamp <  '2026-06-17 15:00:00'
          AND bid_price > 0
          AND ask_price > bid_price
    ) AS q
    ON t.ticker = q.ticker AND t.sip_timestamp >= q.sip_timestamp
)
WHERE effective_bps < 200 AND quoted_bps < 200
GROUP BY size_bucket, bucket_order
ORDER BY bucket_order
Run this yourself

In the 1 to 99 (odd lot) bucket the quoted spread averaged 1.19 basis points and the effective spread averaged 1.1, which works out to 92.5% of the quoted spread. The 2,000 and up bucket came in at 117.6%. A real 605 file measures against the quote at order receipt, timestamped by the venue itself. This panel uses the quote in force at the print, the closest stand-in available from public tape data.

Why price improvement is measured against the NBBO at receipt

Freezing the benchmark at receipt matters, since the NBBO is not a fixed thing. It republishes continuously through the day, and its width changes with the clock.

QueryAAPL quoted spread across the trading clock, 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 - bid_price)) * 100, 2)             AS avg_spread_cents,
    round(avg(10000 * toFloat64(ask_price - bid_price)
              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2)), 2) AS avg_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
  AND sip_timestamp >= '2026-06-17 11:00:00'
  AND sip_timestamp <  '2026-06-17 22:00:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND toFloat64(ask_price - bid_price) < 5
GROUP BY et_time
ORDER BY et_time
Run this yourself

The 07:00 bucket averaged 16.95 cents wide. By 11:00 the average was 3.32 cents, or 1.11 basis points, and the last bucket at 17:30 averaged 15.85 cents. Across all 22 half hour buckets the curve is widest at the two ends of the day and tightest through the middle. An order arriving in the first bucket and one arriving mid morning are graded against two different yardsticks, so 605 statistics are only comparable within the same stock, the same order type, and the same month.

Why market orders and marketable limit orders sit in different buckets

A market order takes whatever price is available. A marketable limit order carries a price cap that happens to be at or through the other side of the quote, so it behaves like a market order right up to the moment the market moves away from the cap, at which point it rests or expires unfilled. The two produce different fill rates and different speeds, and mixing them would let strong limit order statistics flatter a venue's market order handling. Rule 605 keeps them apart, along with limit orders priced inside, at, and near the quote. Our guide to market orders vs limit orders covers the same trade off from the order entry side.

Order size buckets, and what changed in 2024

605 has always been organized by order size, since a 100 share order and a 10,000 share order are not comparable events. The original buckets started at 100 shares, which left odd lots (orders under 100 shares) outside the report entirely. On the modern tape that is a wide hole.

QueryWhere AAPL prints fall by trade size, June 17, 2026
The exact SQL behind every number
SELECT
    size_bucket,
    round(100 * trade_count / sum(trade_count) OVER (), 2) AS pct_of_trades,
    round(100 * shares / sum(shares) OVER (), 2)           AS pct_of_shares
FROM
(
    SELECT
        multiIf(size < 100,  '1 to 99 (odd lot)',
                size < 500,  '100 to 499',
                size < 2000, '500 to 1,999',
                size < 5000, '2,000 to 4,999',
                             '5,000 and up') AS size_bucket,
        min(size)                            AS min_size,
        count()                              AS trade_count,
        sum(size)                            AS shares
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= '2026-06-17 11:00:00'
      AND sip_timestamp <  '2026-06-17 22:00:00'
      AND size > 0
    GROUP BY size_bucket
)
ORDER BY min_size
Run this yourself

The 1 to 99 (odd lot) bucket accounts for 88.94% of AAPL prints that session while carrying 22.76% of the shares. At the other end, the 5,000 and up bucket is 0.02% of prints and 48.92% of the shares. A report that skipped the first row left a large slice of the day's executions uncounted.

The SEC amended Rule 605 in 2024, the first substantial rewrite since the rule took effect. Odd lots and fractional shares come into scope, the size categories were rebuilt around order value alongside share count, execution time is measured in finer increments, and larger retail brokers now publish reports of their own rather than leaning on venue filings. The amended version also carries a plain language summary. Formats shift between revisions. The concepts survive them: the benchmark at receipt, the size bucket, the order type, and the effective spread.

Where the payments come from

A payment for order flow line only exists where a venue wants the flow. Retail orders are largely filled away from the exchanges, by wholesalers that pay for the right to fill them, and prints handled off exchange are reported to FINRA facilities rather than to an exchange tape.

QueryShare of June 2026 volume reported to FINRA facilities
The exact SQL behind every number
SELECT
    off.ticker                                                      AS ticker,
    round(100 * sum(off.off_exchange_volume) / sum(cons.volume), 1) AS off_exchange_pct,
    count()                                                         AS days_matched
FROM
(
    SELECT date, ticker, max(total_volume) AS off_exchange_volume
    FROM global_markets.stocks_short_volume
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY')
      AND date >= '2026-06-01'
      AND date <= '2026-06-30'
    GROUP BY date, ticker
) AS off
INNER JOIN
(
    SELECT date, ticker, max(volume) AS volume
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY')
      AND date >= '2026-06-01'
      AND date <= '2026-06-30'
    GROUP BY date, ticker
) AS cons ON off.date = cons.date AND off.ticker = cons.ticker
GROUP BY ticker
ORDER BY off_exchange_pct DESC
Run this yourself

Over 20 June 2026 sessions, NVDA sent 36.1% of its consolidated volume through those facilities, the largest share of the 5 names measured. KO sat at the other end of the group at 25.2%. That off exchange bucket is where the wholesalers, and the dark pools that match institutional orders, do their business.

The economics behind the payment column are the subject of how market makers make money. A wholesaler earns the spread on flow it can price accurately, returns part of it as price improvement, and passes another part to the broker as payment for order flow. Rule 605 measures the part returned. Rule 606 discloses the part passed on. Read side by side, they are the closest thing a retail trader has to an audit of that arrangement.

Data notes and method
  • The three tick panels pin one past session, June 17, 2026, so the figures on this page stay fixed rather than moving with the tape.
  • The effective spread panel matches each print to the most recent published quote with an as of join, drops quotes with a zero or crossed bid, discards prints landing more than 1% from the midpoint, and discards quotes wider than 2% of the midpoint. Those are late or out of sequence reports.
  • Spreads here are averaged per print and per quote update, unweighted. A 605 file weights by shares, which pulls its figures toward larger orders.
  • FINRA's trade reporting facilities carry trades executed away from an exchange. The share panel divides reported facility volume by consolidated volume for the same ticker and session, taking the maximum value per ticker and date to remove duplicate rows.

FAQ

What is the difference between Rule 605 and Rule 606?

Rule 605 is published by the market center that executed an order and measures execution quality, including effective spread, price improvement, and speed. Rule 606 is published by the broker and discloses where orders were routed and what payment was received. One grades the fill, the other grades the routing decision.

How do I find my broker's Rule 606 report?

Search the broker's name together with "606 report", or open the regulatory disclosures or order routing page on its website. Reports are quarterly and usually posted within a month of quarter end, and most large brokers keep several years of archives.

What is a good effective over quoted spread?

There is no universal threshold. The ratio only means something next to other venues handling the same stock, order type, and size bucket over the same month. A reading under 100% means the average fill landed inside the quoted spread measured at receipt.

Does a Rule 606 report tell me where my own order went?

No. The quarterly report is an aggregate across all customers. Rule 606 separately gives customers the right to request an individualized report covering their own non-directed orders from the previous six months, and that one names the venue for each order.

Did Rule 605 change recently?

Yes. The SEC amended it in 2024, bringing odd lots and fractional shares into scope, rebuilding the order size categories, adding finer timing measures, and requiring larger retail brokers to publish reports alongside the venues.


Every panel above ships with the exact SQL beneath it, so you can see how each number was counted. The same effective spread calculation can be rebuilt for any stock and any past session on the Strasmore terminal.

#order routing#execution quality#rule 606#payment for order flow#brokers