Strasmore Research
Deep Dives Matt ConnorBy Matt Connor

Half-Penny Tick Sizes Under Rule 612

Half-penny tick sizes under SEC Rule 612: which stocks qualify for the $0.005 increment, and how the time weighted average quoted spread is measured.

Half-penny tick sizes are the $0.005 minimum quoting increment that amended SEC Rule 612 assigns to the most tightly quoted NMS stocks, meaning US exchange listed shares. A stock qualifies when its time weighted average quoted spread over a three month evaluation period measures $0.015 or less. The assignment is mechanical: one defined spread statistic, measured over one defined window, producing one increment per stock that holds for six months.

What half-penny tick sizes change under Rule 612

Rule 612 is the minimum pricing increment rule inside Regulation NMS. As the rule stands today, no exchange, broker, or dealer may display, rank, or accept an order in an NMS stock priced at $1.00 or more in an increment finer than $0.01. Below $1.00 the floor is $0.0001. The amendments the Commission adopted on September 18, 2024 in Release No. 34-101070 add a second increment above $1.00, $0.005, for stocks that clear a spread test.

Two boundaries do not move. Stocks priced under $1.00 keep the $0.0001 floor. And Rule 612 still governs quoting and order acceptance, not the price a trade prints at, which is the separate machinery in our sub-penny rule and price improvement guide.

The compliance date has moved twice. It began as the first business day of November 2025. An exemptive order at the end of October 2025 pushed it to November 2026, and Release No. 34-105656, issued June 11, 2026, extended compliance with the amended minimum pricing increment to the first business day of November 2027. The rule text is settled. The calendar is what keeps shifting.

Which stocks are tick constrained?

A stock is tick constrained when the penny grid, rather than the appetite of buyers and sellers, sets the narrowest quote it can show. The tell is a spread that sits on the one cent floor for most of the day. The panel below snapshots the highest bid and the lowest offer on the tape once per second for eight household names through the regular session of Wednesday, August 5, 2026, then measures how wide that quote was on average and how much of the session it spent at exactly one cent.

QueryAverage quoted spread and time on the penny floor, pinned session
The exact SQL behind every number
WITH per_second AS
(
    SELECT
        ticker,
        toDateTime(sip_timestamp)  AS quote_second,
        max(toFloat64(bid_price))  AS best_bid,
        min(toFloat64(ask_price))  AS best_ask
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'PFE', 'F', 'GS')
      AND sip_timestamp >= '2026-08-05 13:30:00'
      AND sip_timestamp <  '2026-08-05 20:00:00'
      AND bid_price > 0
      AND ask_price > 0
    GROUP BY ticker, quote_second
)
SELECT
    ticker                                                          AS symbol,
    round(avg(best_ask - best_bid) * 100, 2)                        AS avg_quoted_spread_cents,
    round(100 * countIf(best_ask - best_bid < 0.011) / count(), 1)  AS time_at_penny_floor_pct
FROM per_second
WHERE best_ask > best_bid
GROUP BY ticker
ORDER BY avg_quoted_spread_cents ASC
Run this yourself

Across the 8 names, F showed the tightest average quoted spread at 1 cents, resting on the one cent floor for 99.8% of the session. At the other end, GS averaged 69.55 cents, well clear of the grid. A name that averages a hair above a penny has nowhere lower to go while the grid is a penny wide. That is the population the $0.015 test is built to find.

Share price is the other half of the arithmetic. A cent is a fixed amount of money and a floating fraction of a share.

QueryWhat one cent is worth, as a share of the closing price
The exact SQL behind every number
SELECT
    ticker                                                  AS symbol,
    concat('$', toString(round(toFloat64(max(close)), 2)))  AS closing_price,
    round(100 / toFloat64(max(close)), 2)                   AS one_cent_in_bps
FROM global_markets.stocks_daily_aggs
WHERE date = '2026-08-05'
  AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'PFE', 'F', 'GS')
GROUP BY ticker
ORDER BY one_cent_in_bps DESC
Run this yourself

One cent on F, closing at $14.13, is 7.08 basis points of the share price. The same cent on GS at $1060.38 is 0.09 basis points. A basis point is one hundredth of one percent. The lower the price and the heavier the volume, the more of the trade the fixed penny represents, the mechanism our bid ask spread primer describes in general terms.

How is the time weighted average quoted spread measured?

The amended rule defines the statistic in a single sentence:

"the average dollar value difference between the NBB and NBO during regular trading hours where each instance of a unique NBB and NBO is weighted by the length of time that the quote prevailed as the NBB or NBO"
17 CFR 242.612, as amended by Release No. 34-101070, adopted September 18, 2024

Four details in that sentence carry the weight. NBB and NBO are the national best bid and national best offer, the highest bid and lowest offer displayed across every exchange, unpacked in our NBBO guide. Regular trading hours confines the measurement to the 9:30 a.m. to 4:00 p.m. ET session. A fresh observation begins each time either side of that quote changes. And the weighting is by elapsed time, not by the count of quotes: a spread that holds for an hour carries an hour of weight, and one that flickers for a millisecond carries a millisecond.

An average alone hides the shape. The panel below lays out where the quote actually sat, as the share of the pinned session each name spent at one cent, at two cents, and wider.

QueryShare of the session spent at each quoted spread, three names
The exact SQL behind every number
WITH per_second AS
(
    SELECT
        ticker,
        toDateTime(sip_timestamp)  AS quote_second,
        max(toFloat64(bid_price))  AS best_bid,
        min(toFloat64(ask_price))  AS best_ask
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'F', 'GS')
      AND sip_timestamp >= '2026-08-05 13:30:00'
      AND sip_timestamp <  '2026-08-05 20:00:00'
      AND bid_price > 0
      AND ask_price > 0
    GROUP BY ticker, quote_second
),
graded AS
(
    SELECT
        ticker,
        least(toUInt16(round((best_ask - best_bid) * 100)), 5) AS spread_cents
    FROM per_second
    WHERE best_ask > best_bid
),
totals AS
(
    SELECT
        ticker,
        count() AS quoted_seconds
    FROM graded
    GROUP BY ticker
),
shares AS
(
    SELECT
        g.ticker                        AS ticker,
        g.spread_cents                  AS spread_cents,
        count() / any(t.quoted_seconds) AS time_share
    FROM graded AS g
    INNER JOIN totals AS t ON t.ticker = g.ticker
    GROUP BY g.ticker, g.spread_cents
)
SELECT
    if(spread_cents >= 5,
       '5 cents or wider',
       concat(toString(spread_cents), if(spread_cents = 1, ' cent', ' cents'))) AS quoted_spread,
    round(100 * sumIf(time_share, ticker = 'AAPL'), 1) AS aapl_pct,
    round(100 * sumIf(time_share, ticker = 'F'), 1)    AS f_pct,
    round(100 * sumIf(time_share, ticker = 'GS'), 1)   AS gs_pct
FROM shares
GROUP BY spread_cents
ORDER BY spread_cents ASC
Run this yourself

Read the first row. A quoted spread of 1 cent covered 68.9% of AAPL's session, 99.8% of F's, and 0.3% of GS's. A name with most of its weight in that first bucket is pinned to the grid, and its time weighted average lands just above one cent whatever else happens intraday. A name with weight out in the wider buckets carries a bigger average and misses the $0.015 threshold.

When the quote sits on the floor matters as much as how often. The same measurement, cut into 15 minute buckets and run past both edges of the session:

QueryShare of each 15 minute bucket spent at a one cent quoted spread
The exact SQL behind every number
WITH per_second AS
(
    SELECT
        ticker,
        toDateTime(sip_timestamp, 'America/New_York') AS quote_second,
        max(toFloat64(bid_price))                     AS best_bid,
        min(toFloat64(ask_price))                     AS best_ask
    FROM global_markets.cache_stocks_quotes
    WHERE ticker IN ('AAPL', 'F')
      AND sip_timestamp >= '2026-08-05 13:00:00'
      AND sip_timestamp <  '2026-08-05 20:30:00'
      AND bid_price > 0
      AND ask_price > 0
    GROUP BY ticker, quote_second
)
SELECT
    formatDateTime(toStartOfInterval(quote_second, INTERVAL 15 MINUTE), '%H:%i') AS et_time,
    round(100 * countIf(ticker = 'AAPL' AND best_ask - best_bid < 0.011)
              / countIf(ticker = 'AAPL'), 1) AS aapl_floor_pct,
    round(100 * countIf(ticker = 'F' AND best_ask - best_bid < 0.011)
              / countIf(ticker = 'F'), 1)    AS f_floor_pct
FROM per_second
WHERE best_ask > best_bid
GROUP BY toStartOfInterval(quote_second, INTERVAL 15 MINUTE)
HAVING countIf(ticker = 'AAPL') > 0 AND countIf(ticker = 'F') > 0
ORDER BY toStartOfInterval(quote_second, INTERVAL 15 MINUTE) ASC
Run this yourself

The panel opens at 09:00 ET, ahead of the regular session, with AAPL on the penny floor 1.6% of the time. It ends at 16:15 ET, past the closing bell, at 5.1%. Between those two points the line climbs and holds near its ceiling for the hours the rule measures. The soft patch right at the start of regular trading is a familiar shape, covered in why spreads widen at the open.

Who assigns the tick, and how often it can change

The primary listing exchange, the exchange where the stock is listed, measures the time weighted average quoted spread and assigns the increment. The rule pins both calendars. The evaluation periods are January through March and July through September. The increment set from the January through March measurement is operative from the first business day of May through the last business day of October. The increment set from the July through September measurement runs from the first business day of November through the last business day of April.

That gives every stock two assignment points a year and a six month term for each one. A name can move from the penny to the half penny in May and back in November, and no faster than that. A security that becomes an NMS stock in the middle of an operative period, a fresh listing for instance, is assigned $0.01 until the next evaluation catches it.

What the 2016 to 2018 Tick Size Pilot showed

The closest thing the US market has to a controlled read on tick size ran the experiment in reverse. The Commission approved the Tick Size Pilot plan on May 6, 2015, and its quoting and trading requirements ran from October 3, 2016 through the end of trading on September 28, 2018. Eligible names were small caps meeting all of:

  • a market capitalization of $3 billion or less
  • a closing share price of at least $2.00
  • consolidated average daily volume of one million shares or less

Those names were split into a control group and three test groups of roughly 400 stocks each. One test group quoted in $0.05 increments while continuing to trade in pennies. The second quoted and traded in nickels. The third added a trade at requirement, which obliged trading centers to route to displayed quotes rather than match orders internally at the same price. Quoted spreads in the test groups widened over the pilot window, and the assessments published afterward measured higher trading costs and lower liquidity in the test groups than in the control over the same period. The pilot widened the grid for names that were not pinned to it. The half penny amendment narrows the grid for names that are.

What a half-penny assignment looks like on a retail screen

For a stock assigned $0.005, a quote at $24.315 becomes displayable. Today that same interest has to round to $24.31 or $24.32. The visible spread on a broker screen can be half a cent wide instead of a full cent in the affected names, and the midpoint that price improvement is measured against sits on a finer grid. Whether the average quoted spread on those names narrows once the assignment is live is an empirical question, measurable the same way the panels above measure it.

The same release lowered the access fee cap, the maximum an exchange may charge to remove a displayed quote, which our maker taker fees and rebates guide covers, and it accelerated the publication of better priced odd lot orders, the subject of why odd lots do not set the NBBO.

FAQ

What is a half-penny tick size?

A half-penny tick size is a $0.005 minimum pricing increment: the smallest amount by which a displayed quote or order in that stock may vary. Amended SEC Rule 612 assigns it to NMS stocks priced at $1.00 or more whose time weighted average quoted spread measured $0.015 or less during the evaluation period. Every other stock at or above $1.00 stays on the $0.01 grid.

Which stocks qualify for the $0.005 tick size?

The ones whose quoted spread already sits near the penny. The test is a time weighted average quoted spread of $0.015 or less over the evaluation period, measured by the primary listing exchange. Heavily traded, lower priced names are the usual candidates, as the panels above show.

When do half-penny tick sizes take effect?

Compliance with the amended minimum pricing increment is currently set for the first business day of November 2027, under Release No. 34-105656 issued June 11, 2026. The original date was the first business day of November 2025, and it has been extended twice.

Who decides a stock's tick size?

The primary listing exchange. It measures the time weighted average quoted spread over the evaluation period, January through March or July through September, then assigns either $0.01 or $0.005 for the following six month operative period. A newly listed NMS stock is assigned $0.01.

Data notes and method

The three quote panels approximate the national best bid and offer with the highest bid and the lowest offer printed on the consolidated tape inside each one second window, and they weight every second equally. The rule weights each distinct quote by its exact duration, so the two measurements differ in the third decimal place. Seconds in which the best bid and best offer were locked or crossed are dropped.

The snapshot ignores quote size. The official NBBO is built from round lots, so a panel value can sit inside the official quoted spread; the odd lot guide linked above explains that gap.

The spread panels bound the pinned session to the 9:30 a.m. to 4:00 p.m. ET window the rule specifies. The clock panel runs from 9:00 a.m. to 4:30 p.m. ET and lets the session boundary show itself in the data. All figures come from the single session of Wednesday, August 5, 2026, so they do not move as the tape rolls forward.

Rule text is quoted from 17 CFR 242.612 as amended. Adopting release: No. 34-101070, September 18, 2024. Compliance extension: Release No. 34-105656, June 11, 2026.


Every panel here carries the exact SQL beneath it, expand any one to see how the number was counted. To measure the quoted spread on a name you follow, ask the question in plain English on the Strasmore terminal.