How fractional shares dey show for consolidated tape
Fractional shares dey print as whole shares for tape. One rule change for February 23, 2026 put seam for equity volume series. See wetin change for market data here.
Fractional shares dey show for consolidated tape as whole-share prints, and until February 23, 2026, that conversion dey happen for two directions at the same time. If person trade less than one share, dem dey round am up to one full share. If person trade pass one share, dem dey cut the fraction comot. Any equity volume series wey cross that date get seam, and for names wey fractional orders plenty, the old numbers bin wrong for both directions at once.
How fractional share order dey turn to print?
If you ask for $50 of a stock wey dem quote at $180, you don order 0.2778 shares. No exchange order book go accept that quantity. Exchanges dey match for whole shares, and the quote wey set the national best bid and offer—the highest bid and lowest offer wey dey available for everybody—dey count only round lots of 100 shares. Our odd lot quote page explain that second rule.
The broker dey close the gap for im own books. E dey net fractional interest across im customers, send the whole-share part go market as one single order, and give slices back to accounts as principal fills; this one mean say the broker na the counterparty to your fraction. The print wey reach public tape carry the broker whole-share quantity. Your 0.2778 shares dey your statement, no be for the volume wey dem publish for that day.
Hold that first fact: most fractional activity no ever dey visible for public volume at all. Wetin dey visible na the aggregated whole-share order wey stand for am, plus small population of fractional reports wey dem send direct to the tape.
Wetin change for February 23, 2026
The quantity field itself change shape. Trade reports now dey carry share quantities with six decimal places, wey dem truncate instead of round, so dem fit publish 0.142857-share report as e be. Before that date, every reported quantity must be whole number, and the rounding rule no dey symmetric.
- If e dey below one share, dem dey round the quantity up to 1. Volume show wey no ever trade.
- If e reach or pass one share, dem dey cut the fraction comot. 2.7-share report dey publish as 2.
Both distortions dey land for the same field, but for opposite directions. Trade counts inherit the first one: one rounded-up sub-share report dey count as one whole print for the day transaction tally. If you add these up over one heavily fractionalized name across years of history, the published series fit run high, run low, or land accidentally correct, with nothing for the series itself to tell you which one.
The distribution of small print sizes na where the change dey show. The panel below dey count every AAPL print under 26 shares across two pinned five-session windows, one for early January 2026 and one for early July 2026. The row at zero hold every print wey small pass one share.
The exact SQL behind every number
SELECT
scaffold.shares AS shares,
toUInt64(ifNull(t.jan_prints, 0)) AS prints_early_january,
toUInt64(ifNull(t.jul_prints, 0)) AS prints_early_july
FROM
(
SELECT toUInt32(arrayJoin(range(0, 26))) AS shares
) AS scaffold
LEFT JOIN
(
SELECT
toUInt32(floor(toFloat64(size))) AS shares,
countIf(sip_timestamp < '2026-02-01 00:00:00') AS jan_prints,
countIf(sip_timestamp >= '2026-07-01 00:00:00') AS jul_prints
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND ((sip_timestamp >= '2026-01-05 00:00:00' AND sip_timestamp < '2026-01-10 00:00:00')
OR (sip_timestamp >= '2026-07-06 00:00:00' AND sip_timestamp < '2026-07-11 00:00:00'))
AND toFloat64(size) < 26
GROUP BY shares
) AS t ON t.shares = scaffold.shares
ORDER BY sharesThe one-share bucket hold 1360015 prints for the January window and 331200 for the July window, against 132674 prints at two shares for July. The sub-one-share row hold 2 for January and 1191620 for July. Anything under one share wey dem report during the January window dey sit one row up, counted as one full share.
Fractional shares versus odd lots
Dem dey confuse these two always, but dem be different exclusions. Odd lot na whole-share order wey less than 100 shares. Round lot na 100 shares, the unit wey dem build protected quote from. Odd lots dey print for public tape, carry their own trade condition code, and dey count for volume. Dem just no dey update the national best bid and offer. Fractional quantity na different idea: less than one share.
Every fractional print na also odd lot. Almost no odd lot be fractional. The panel below dey sort six household names by the share of prints wey be odd lots over three sessions for July 2026.
The exact SQL behind every number
SELECT
ticker,
round(100 * countIf(toFloat64(size) >= 1 AND toFloat64(size) < 100) / count(), 1) AS odd_lot_pct,
round(100 * countIf(toFloat64(size) >= 100) / count(), 1) AS round_lot_pct,
countIf(toFloat64(size) < 1) AS sub_one_share_prints
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'PG', 'SPY')
AND sip_timestamp >= '2026-07-08 00:00:00'
AND sip_timestamp < '2026-07-11 00:00:00'
GROUP BY ticker
ORDER BY odd_lot_pct DESCIf you sort by odd lot share, the list run from SPY at 74.1% of prints down to KO at 39%. The last column dey count prints below one single share: 211801 of them for SPY over the same three sessions. Odd lots na ordinary thing. Fractional prints na just dust on top of them.
Why volume column suddenly be decimal
Share quantity bin be whole number for thirty years, and everything wey follow learn that. Six decimal places break that assumption quietly: reader wey dey parse the field as integer go either reject the row or floor 0.5 to 0, and column wey dem type as integer go store the same. If you dey keep your own copy of trade data, the quantity field need type wey get at least six fractional digits, and every sum wey you build on top need the same width.
The cheapest health check for volume series na average print size: share volume divided by the day trade count. E dey stable within one name over short spans, wey make sudden step easy to spot. See AAPL across the two weeks wey surround the change.
The exact SQL behind every number
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e') AS session_label,
round(sum(toFloat64(volume)) / sum(transactions), 1) AS shares_per_print,
round(sum(toFloat64(volume)) / 1000000, 1) AS volume_millions
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2026-02-09'
AND date <= '2026-03-06'
GROUP BY date
HAVING sum(transactions) > 0
ORDER BY dateAAPL average 61.3 shares per print on Feb 9, on volume of 44.6 million shares, and 66.2 shares per print on Mar 6. Day-to-day movement of that size na ordinary. February 23 change how dem dey write quantity, no be how much stock trade.
Which numbers dey move when series cross the seam
Anything wey you normalize by volume go inherit the seam. Four wey you suppose check:
- Relative volume, today volume against average of prior sessions. When the lookback reach past February 23, 2026, the two sides of the ratio bin count under different rules. Our relative volume page get the formula.
- VWAP, the volume-weighted average price, dey weight every print by its quantity. Rounded-up sub-share prints carry more weight pass wetin dem earn. See how VWAP is calculated.
- Minute and daily bars, wey dem build by summing print sizes inside one window. How OHLCV bars are built explain that aggregation.
- Turnover and illiquidity measures, wey dey divide price move by dollar volume over multi-year histories.
Treat February 23, 2026 the way you go treat corporate action for price history: labelled discontinuity, no be glitch wey you go smooth comot. Price history get the same problem for different coat, wey dem cover for our split adjusted price history page. Never put pre-change and post-change volume on one axis without marking where the boundary sit.
Average print size over longer horizon make the last point clear. E dey drift with market structure for every name, on its own schedule.
The exact SQL behind every number
SELECT
toString(m) AS month,
formatDateTime(m, '%b %Y') AS month_label,
round(sumIf(vol, sym = 'AAPL') / sumIf(trades, sym = 'AAPL'), 1) AS aapl_shares_per_print,
round(sumIf(vol, sym = 'MSFT') / sumIf(trades, sym = 'MSFT'), 1) AS msft_shares_per_print,
round(sumIf(vol, sym = 'KO') / sumIf(trades, sym = 'KO'), 1) AS ko_shares_per_print
FROM
(
SELECT
toStartOfMonth(date) AS m,
ticker AS sym,
toFloat64(volume) AS vol,
transactions AS trades
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'KO')
AND date >= '2025-09-01'
AND date < '2026-08-01'
)
GROUP BY m
ORDER BY mAAPL average 91.4 shares per print for Sep 2025 and 54.9 for Jul 2026, while KO run 61.8 for that closing month. The three series sit at different levels with no common step across the range. Monthly volume series no go show you where the reporting rule change. The calendar dey do that, na why the date dey worth to write for wall.
Windows and exclusions
- The January window cover five sessions, January 5 to January 9, 2026. The July window cover five sessions, July 6 to July 10, 2026. Both dey pinned for SQL, so the panel no dey move as new data land.
- The six-name panel cover three sessions, July 8 to July 10, 2026, and count every print regardless of venue or condition.
- Trade data dey land with short lag for front edge, so every window here sit comfortably for the past.
FAQ
You fit buy fraction of share for exchange?
No. Exchange order books accept whole shares only. Broker dey fill fractional order from im own inventory after e net customer demand and send the whole-share part go market. The fraction na principal fill between you and the broker.
When fractional quantities start to show for tape?
February 23, 2026. From that date, trade reports dey carry quantities with six decimal places, wey dem truncate instead of round. Before that, every reported quantity bin be whole number.
Historical volume numbers bin wrong?
For names wey get heavy fractional activity, dem bin wrong for both directions at once. Sub-one-share reports bin round up to full share, wey add volume, and reports above one share bin truncate, wey remove am. The two no dey cancel each other on any predictable schedule.
Fractional share trade be the same as odd lot?
No. Odd lot na whole-share quantity below 100 shares, and odd lots don dey print for tape for decades. Fractional quantity na below one share. Every fractional print na odd lot; the reverse almost never true.
Wetin be the safest way to chart volume across the February 2026 boundary?
Label am. Keep quantities for decimal type wey wide reach six places, mark the date on any series wey cross am, and talk am plainly anytime lookback average span both sides.
Every panel here carry im SQL underneath. Open one, swap the ticker or the window, and count the prints yourself for the Strasmore terminal.