零碎股交易如何影响成交量统计
零碎股交易在综合报价记录中被视为整股成交。二零二六年二月二十三日的规则变更改变了份额报告格式,导致权益类成交量序列出现数据断层。本文分析了零碎股订单如何转化为公开成交记录,以及旧版数据中存在的向上取整与截断偏差如何影响历史交易统计的准确性。
零碎股交易与综合报价记录的统计偏差
零碎股交易在综合报价记录中表现为整股成交。在二零二六年二月二十三日之前,这种转换机制同时以两种方式运行。不足一股的交易被向上取整为一股。超过一股的交易则被截断小数部分。任何跨越该日期的权益类成交量序列都会出现数据断层。在零碎股订单频繁的标的中,旧版数据在上述两个方向上均存在统计偏差。
零碎股订单如何转化为成交记录?
如果您以一百八十美元的价格买入五十美元的股票,即意味着您下单了零点二七七八股。没有任何交易所的订单簿会接受该数量。交易所仅以整股进行撮合,而决定全国最佳买卖报价(即所有人可获得的最高买入价和最低卖出价)的报价,仅统计一百股的整手订单。我们的 零股报价 页面涵盖了后一条规则。
经纪商会在其自身账簿上弥合这一差距。它将所有客户的零碎股权益进行净额轧差,将整股部分作为单一订单发送至市场,并将零碎份额作为自营成交分配回各账户,这意味着经纪商本身就是您零碎股交易的对手方。出现在公共行情记录上的成交量仅包含经纪商提交的整股数量。您的零点二七七八股仅显示在您的账户对账单中,并未计入当日的公开成交量。
请记住第一个事实:大多数零碎股交易从未在公开成交量中体现。公开可见的是代表这些零碎股的汇总整股订单,以及少量直接发送至行情记录的零碎股报告。
2026年2月23日发生了什么变化
交易数量字段的格式发生了改变。现在的交易报告以六位小数记录份额数量,采用截断而非四舍五入的方式,因此 0.142857 份额的交易可以按原样发布。在此日期之前,所有报告的数量必须为整数,且舍入规则并不对称。
- 不足一份额时,数量被向上取整为 1。这导致出现了从未实际成交的成交量。
- 达到或超过一份额时,小数部分被直接截断。例如,2.7 份额的报告会被发布为 2。
这两种偏差出现在同一字段中,且方向相反。交易笔数继承了第一种偏差:一份被向上取整的零碎份额报告,在当天的交易统计中被计为一笔完整成交。若将这些数据在多年历史中针对高频零碎交易的标的进行累加,发布的数据序列可能偏高、偏低或偶然准确,且序列本身无法提供任何判断依据。
小额成交的分布情况最能体现这一变化。下表统计了 AAPL 在 2026 年 1 月初和 7 月初两个固定的五个交易日窗口内,所有小于 26 股的成交记录。零行记录了所有小于一股的成交。
每个数字背后的完整 SQL
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 shares一股区间在 1 月窗口内有 1360015 笔成交,在 7 月窗口内有 331200 笔,而 7 月份两股区间的成交笔数为 132674 笔。小于一股的行在 1 月份有 2 笔,在 7 月份有 1191620 笔。1 月窗口期间报告的所有小于一股的交易,目前都位于上一行,被计为完整的一股。
零碎股与奇数股
这两个概念常被混淆,但它们属于不同的排除范畴。奇数股是指少于一百股的整股订单。整手股是指一百股,这是构建受保护报价的单位。奇数股的成交记录会显示在公共行情带上,带有其专属的 交易条件代码,并计入成交量。它们只是不会更新全国最佳买卖报价。零碎股则是另一个概念:指不足一股的份额。
每一笔零碎股成交也属于奇数股。但几乎没有奇数股是零碎股。下表按二零二六年七月三个交易日内奇数股成交占比,对六家知名公司进行了排序。
每个数字背后的完整 SQL
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 DESC按奇数股占比排序,该列表从 SPY 的 74.1% 成交占比开始,一直到 KO 的 39%。最后一列统计了不足一股的成交笔数:在同一三个交易日内,SPY 中共有 211801 笔此类成交。奇数股交易非常普遍。零碎股成交只是其中的零星点缀。
为何成交量列突然出现小数
三十年来,股票数量一直以整数形式呈现,所有下游系统均已适应这一惯例。六位小数的出现悄然打破了这一假设:若读取程序将该字段解析为整数,则会拒绝该行数据或将零点五向下取整为零;若字段类型被定义为整数,存储结果亦同。如果您自行留存交易数据,成交量字段必须采用至少支持六位小数的数据类型,且基于此构建的所有汇总计算也需保持相同的精度。
成交量序列最简便的健康检查方式是计算平均每笔成交量:即总成交股数除以当日成交笔数。在短期内,同一标的的该指标通常保持稳定,因此数值的突变极易被识别。以下是 AAPL 在规则变更前后两周的数据表现。
每个数字背后的完整 SQL
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 在 61.3 的平均每笔成交量为 Feb 9 股,当日总成交量为 44.6 百万股;而在 Mar 6,该数值为 66.2 股。这种幅度的日常波动属于正常现象。二月二十三日的变动仅改变了数量的记录方式,而非实际的股票交易规模。
当序列跨越分界线时,哪些数据会发生变动
任何经成交量归一化处理的数据都会受到该分界线的影响。以下四项值得关注:
- 相对成交量,即今日成交量与之前若干交易日平均值的比率。当回溯期跨越二零二六年二月二十三日时,该比率的两端采用了不同的计算规则。我们的 相对成交量 页面提供了具体公式。
- VWAP(成交量加权平均价),该指标根据每笔成交的规模进行加权。此前向上取整的零碎股成交量所占权重高于其应有水平。请参阅 VWAP 的计算方式。
- 分钟线和日线,它们通过汇总时间窗口内的成交量构建。OHLCV 柱状图的构建方式 详细介绍了该聚合过程。
- 换手率和流动性指标,这些指标通过价格变动除以多年历史中的美元成交额得出。
请将二零二六年二月二十三日视为价格历史中的公司行动来处理:这是一个有明确标记的断点,而非需要平滑处理的故障。价格历史在不同层面也存在同样的问题,详见我们的 拆股调整后的价格历史 页面。在未标记边界位置的情况下,切勿将规则变更前后的成交量放在同一坐标轴上。
较长周期内的平均每笔成交规模是最后一点。它随每只证券的市场结构而变动,且各自遵循不同的时间表。
每个数字背后的完整 SQL
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 在 Sep 2025 的平均每笔成交量为 91.4 股,而在 Jul 2026 的 54.9 期间该数值为 91.4 股,同期 KO 在该收盘月的平均每笔成交量为 61.8 股。这三个序列处于不同水平,在整个区间内没有统一的步长。月度成交量序列无法显示报告规则的变更点。日历记录了这一点,这就是为什么这个日期值得被铭记。
窗口期与排除项
- 一月窗口期涵盖五个交易日,即二零二六年一月五日至一月九日。七月窗口期涵盖五个交易日,即二零二六年七月六日至七月十日。两者均已在 SQL 中锁定,因此面板不会随新数据的录入而变动。
- 六只股票组成的面板涵盖三个交易日,即二零二六年七月八日至七月十日,并统计所有成交,无论其交易场所或条件如何。
- 交易数据在前端录入时存在短暂延迟,因此此处的所有窗口期均处于已完成的过去时段。
常见问题解答
可以在交易所买入碎股吗?
不可以。交易所订单簿仅接受整数股订单。碎股订单由经纪商在汇总客户需求后,从其自有库存中撮合完成,并将整数部分发送至市场。碎股交易属于您与经纪商之间的自营交易。
碎股交易何时开始出现在成交记录中?
二零二六年二月二十三日。自该日起,交易报告中的成交量精确至小数点后六位,并采用截断而非四舍五入的方式处理。在此之前,所有报告的成交量均为整数。
历史成交量数据是否不准确?
对于碎股交易频繁的标的,历史数据在两个方向上均存在偏差。不足一股的交易被四舍五入为一股,这增加了成交量;超过一股的交易被截断,这减少了成交量。这两者并不会按可预测的规律相互抵消。
碎股交易与零股交易相同吗?
不同。零股是指少于一百股的整数股交易,零股交易在成交记录中已存在数十年。碎股是指不足一股的交易。每一笔碎股成交都属于零股交易;但反之则几乎不成立。
跨越二零二六年二月这一时间节点绘制成交量图表最稳妥的方法是什么?
标注说明。保持成交量数据类型足以容纳六位小数,在跨越该日期的序列上进行标记,并在任何跨越该节点的历史回溯平均值说明中明确指出。
此处每个面板下方均附有对应的 SQL。打开面板,替换 ticker 或时间窗口,即可在 Strasmore 终端上自行统计成交记录。