什么是平均日成交量(ADV)?
了解平均日成交量(ADV)的定义、计算方法及时间窗口如何影响结果,并掌握其在补仓天数、相对成交量和流动性筛选中的作用。
日均成交量(ADV)是最常用、却几乎没人专门定义的指标:它表示一只股票在某个回溯窗口内的日均成交股数。ADV 是补仓天数的分母,是相对成交量的基准,也是所有筛选器中的流动性测试指标。这意味着,这些数字都继承了 ADV 中一些不显眼的设定:采用哪个时间窗口、包含哪些交易时段,以及统计股数还是成交金额。本页将准确定义 ADV,逐步演示计算方法,并使用真实成交数据衡量这些设定各自的影响。
平均日成交量:量化呈现
2026年6月11日至7月10日的20个正常交易时段,四个熟悉的名称加上一个有意选取的低流动性名称。股票数量、美元金额,以及(稍后会用到的)每个名称在正常交易时段之外成交的总成交量占比:
| 代码 | 日均成交股数(百万) | 日均成交金额(十亿美元) | 盘前盘后占比 | 交易时段数 |
|---|---|---|---|---|
| SPY | 46.01 | 34.19 | 18.3 | 20 |
| MU | 42.01 | 44.49 | 12.1 | 20 |
| AAPL | 41.47 | 12.24 | 6.9 | 20 |
| KO | 12.4 | 1.01 | 6.6 | 20 |
| CATO | 0.05 | 0 | 0.2 | 20 |
每个数字背后的完整 SQL
WITH per_day AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS rth_shares,
sumIf(toFloat64(close) * toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS rth_dollars,
sum(toFloat64(volume)) AS all_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'AAPL', 'MU', 'KO', 'CATO')
AND window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY ticker, et_date
)
SELECT ticker,
round(avg(rth_shares) / 1e6, 2) AS adv_shares_m,
round(avg(rth_dollars) / 1e9, 2) AS adv_dollars_bn,
round(100 * (sum(all_shares) - sum(rth_shares)) / sum(all_shares), 1) AS extended_hours_pct,
count() AS sessions
FROM per_day
GROUP BY ticker
ORDER BY adv_shares_m DESC该表完整呈现了本页的核心论点。MU和AAPL的日均成交股数几乎相同,分别为42.01M和41.47M,但美元成交额差距很大:日均分别为$44.49B和$12.24B。股票数量衡量交易活跃度;美元金额衡量资金规模。排名在顶部甚至发生反转:SPY的成交股数最多(20个交易日合计46.01M股),而MU的美元成交额在本表中最高。在底部,CATO日均成交0.05百万股,资金规模很小,因此按十亿美元计的数值在这一尺度下显示为0。这类行情中,一笔机构订单就可能等于全天成交量,而交易成本也处在完全不同的层级。
如何计算日均成交量
计算方法很简单:将选定时间窗口内的每日成交股数相加,再除以天数。以下是可口可乐在正常交易时段的一整周交易数据(2026年7月6日至10日),累计值和平均值均通过同一查询计算:
| 交易时段日期 | 股数(百万) | 五日总量(百万) | 日均成交量(百万) | 日均成交量的1%(千) |
|---|---|---|---|---|
| 2026-07-06 | 10.7 | 52.8 | 10.6 | 106 |
| 2026-07-07 | 12.1 | 52.8 | 10.6 | 106 |
| 2026-07-08 | 10.7 | 52.8 | 10.6 | 106 |
| 2026-07-09 | 11 | 52.8 | 10.6 | 106 |
| 2026-07-10 | 8.3 | 52.8 | 10.6 | 106 |
每个数字背后的完整 SQL
SELECT session_date,
shares_m,
round(sum(shares_m) OVER (), 1) AS five_day_total_m,
round(avg(shares_m) OVER (), 1) AS adv_m,
round(avg(shares_m) OVER () * 0.01 * 1000, 0) AS one_pct_of_adv_k
FROM (
SELECT formatDateTime(toDate(toTimeZone(window_start, 'America/New_York')), '%Y-%m-%d') AS session_date,
round(sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
AND window_start >= toDateTime('2026-07-06 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY session_date
)
ORDER BY session_date将五天的成交量相加:10.7 + 12.1 + 10.7 + 11 + 8.3百万股,合计为52.8M。再除以五:10.6M股,即 KO 的五个交易日 ADV。20个交易日 ADV 的计算方法相同,只需对20行数据进行计算,即第一张表中的数值。需要注意的是,平均值会掩盖部分信息:2026-07-07的成交量为12.1M,2026-07-10的成交量为8.3M。日成交量的波动会被 ADV 平滑为一个数值。最后一列展示了仓位规模:KO 的 ADV 的百分之一约为106千股,这是单笔订单开始对当日成交量产生明显影响的规模。
窗口期是一个选择,也决定 ADV 遗忘的速度
二十个交易日是常见约定(一个交易月);十个、三十个、六十五个和九十个交易日的窗口也都有人使用。窗口决定 ADV 遗忘的速度。MU 是 2026 年的一个真实案例。该股年中重新定价幅度很大,因此其过去一个月 ADV 和过去一个季度 ADV 在春季持续呈现出不同的情况,详见六月深度分析。以下是同一只股票在同样七个月期间、同时使用两个窗口计算的结果:
| 日期 | 20个交易时段日均量(百万) | 90个交易时段日均量(百万) |
|---|---|---|
| 2025-12-10 | 21.3 | 19.9 |
| 2025-12-15 | 20.3 | 20.1 |
| 2025-12-18 | 20.7 | 20.2 |
| 2025-12-23 | 20 | 20.7 |
| 2025-12-29 | 20.7 | 20.8 |
| 2026-01-02 | 22.2 | 21.3 |
| 2026-01-07 | 24.5 | 22 |
| 2026-01-12 | 26 | 22.5 |
| 2026-01-15 | 26.2 | 22.5 |
| 2026-01-21 | 26.9 | 23 |
| 2026-01-26 | 28.5 | 23.4 |
| 2026-01-29 | 30.5 | 23.7 |
| 2026-02-03 | 31.9 | 23.9 |
| 2026-02-06 | 32.6 | 24.4 |
| 2026-02-11 | 34.1 | 24.7 |
| 2026-02-17 | 35 | 24.9 |
| 2026-02-20 | 32.5 | 25 |
| 2026-02-25 | 32 | 25.4 |
| 2026-03-02 | 30.2 | 25.4 |
| 2026-03-05 | 28.4 | 25.8 |
每个数字背后的完整 SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS day_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2025-08-01 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_date
),
rolled AS (
SELECT et_date,
avg(day_shares) OVER (ORDER BY et_date ROWS BETWEEN 19 PRECEDING AND CURRENT ROW) AS adv20,
avg(day_shares) OVER (ORDER BY et_date ROWS BETWEEN 89 PRECEDING AND CURRENT ROW) AS adv90,
row_number() OVER (ORDER BY et_date) AS rn,
count() OVER () AS total_rows
FROM daily
)
SELECT formatDateTime(et_date, '%Y-%m-%d') AS date,
round(adv20 / 1e6, 1) AS adv_20_session_m,
round(adv90 / 1e6, 1) AS adv_90_session_m
FROM rolled
WHERE rn > 90 AND (rn % 3 = total_rows % 3)
ORDER BY et_date在 2025-12-10,两个窗口的结果一致:按 20 个交易日计算为 21.3M,按 90 个交易日计算为 19.9M。到 2026-04-14,两者已分化为 45.6M 和 31.9M。同一只股票在同一天出现了两个“官方”ADV。凡是基于其中一个窗口的筛选器、回补天数或相对成交量读数,都会与同一工具基于另一个窗口得出的结果不一致。到 2026-07-10,两者再次趋于一致(42M 对比 41.9M):重新定价后的成交量水平也已计入较长窗口。当两个来源对某只股票的 ADV 存在分歧时,首先应检查窗口期;其次应检查是否包含盘前盘后成交量。
成交量冲击后,ADV会发生什么变化
上图已经有所提示;这里给出具体测算。取 MU 在 2026 年最剧烈的成交量冲击,即成交量最显著超过其过去 20 个交易日 ADV 的交易日,并比较筛选器在该日开盘前显示的 ADV 与一个月后显示的 ADV:
| 事件日期 | 事件日股数(百万) | 事件前20日日均量(百万) | 事件日/此前日均量(倍) | 事件后20日日均量(百万) | 日均量变化(%) |
|---|---|---|---|---|---|
| 2026-03-19 | 64.7 | 28.7 | 2.3 | 45 | 57 |
每个数字背后的完整 SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS day_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'MU'
AND window_start >= toDateTime('2025-11-01 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_date
),
ranked AS (
SELECT et_date, day_shares,
day_shares / avg(day_shares) OVER (ORDER BY et_date ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS shock_ratio,
row_number() OVER (ORDER BY et_date) AS rn
FROM daily
),
biggest AS (
SELECT et_date, day_shares, shock_ratio
FROM ranked
WHERE rn > 20 AND et_date >= toDate('2026-01-01')
ORDER BY shock_ratio DESC, et_date ASC
LIMIT 1
),
before AS (
SELECT avg(day_shares) AS adv FROM (
SELECT day_shares FROM daily WHERE et_date < (SELECT et_date FROM biggest) ORDER BY et_date DESC LIMIT 20
)
),
after AS (
SELECT avg(day_shares) AS adv FROM (
SELECT day_shares FROM daily WHERE et_date >= (SELECT et_date FROM biggest) ORDER BY et_date ASC LIMIT 20
)
)
SELECT formatDateTime((SELECT et_date FROM biggest), '%Y-%m-%d') AS event_date,
round((SELECT day_shares FROM biggest) / 1e6, 1) AS event_day_shares_m,
round((SELECT adv FROM before) / 1e6, 1) AS adv_20_before_m,
round((SELECT shock_ratio FROM biggest), 1) AS event_vs_prior_adv_x,
round((SELECT adv FROM after) / 1e6, 1) AS adv_20_after_m,
round(100 * ((SELECT adv FROM after) / (SELECT adv FROM before) - 1), 0) AS adv_shift_pct在 2026-03-19,MU 成交 64.7M 股,之前的 ADV 为 28.7M 股,相当于其自身基准的 2.3 倍。随后 20 个交易日内,滚动 ADV 平均为 45M 股,即分母增加了 57%。所有基于 ADV 的数值都随之变化:相对成交量读数下降(基准变大),回补所需天数减少(分母变大),而任何人的实际持仓都无需发生变化。就 MU 而言,较高的成交活跃度持续存在,这次冲击标志着一次重新估值,而不是单日事件。但无论是哪种情况,机制都完全相同:在经历一段成交量大幅放大的时期后,ADV 会在恰好一个窗口长度内反映这一事件,而不是该股票平时的交易习惯。
流动性的实际衡量标准
“每天数百万美元”通常被笼统地用来描述可交易性。以下是实际分布:所有至少有 20 个交易日中的 15 个相同交易日数据的美国上市证券,按日均成交额(ADV)排序:
| 标的数 | 第25百分位(百万) | 中位数(百万) | 第75百分位(百万) | 第90百分位(百万) | 第99百分位(百万) | 超过1百万的标的数 | 超过1千万的标的数 | 超过1亿的标的数 | 市值超10亿美元 |
|---|---|---|---|---|---|---|---|---|---|
| 10864 | 0.33 | 2.2 | 20.4 | 113.7 | 1333 | 6515 | 3535 | 1166 | 130 |
每个数字背后的完整 SQL
WITH per_ticker AS (
SELECT ticker, avg(day_dollars) AS adv_dollars
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sumIf(toFloat64(close) * toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS day_dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
AND match(ticker, '^[A-Z]+$')
GROUP BY ticker, et_date
)
GROUP BY ticker
HAVING count() >= 15
)
SELECT count() AS names,
round(quantileDeterministic(0.25)(adv_dollars, cityHash64(ticker)) / 1e6, 2) AS p25_m,
round(quantileDeterministic(0.50)(adv_dollars, cityHash64(ticker)) / 1e6, 1) AS median_m,
round(quantileDeterministic(0.75)(adv_dollars, cityHash64(ticker)) / 1e6, 1) AS p75_m,
round(quantileDeterministic(0.90)(adv_dollars, cityHash64(ticker)) / 1e6, 1) AS p90_m,
round(quantileDeterministic(0.99)(adv_dollars, cityHash64(ticker)) / 1e6, 0) AS p99_m,
countIf(adv_dollars >= 1e6) AS names_above_1m,
countIf(adv_dollars >= 10e6) AS names_above_10m,
countIf(adv_dollars >= 100e6) AS names_above_100m,
countIf(adv_dollars >= 1e9) AS names_above_1bn
FROM per_ticker在 10864 个证券中,成交额中位数为每天 2.2 百万美元。这意味着,美国市场中有一半的证券日成交额低于这一水平。四分之一的证券日成交额低于 0.33 百万美元。第 75 百分位为 20.4 百万美元,第 90 百分位为 113.7 百万美元,第 99 百分位为 1333 百万美元。按整数门槛统计:有 6515 个证券日成交额超过 100 万美元,3535 个超过 1,000 万美元,1166 个超过 1 亿美元,只有 130 个超过 10 亿美元。金融报道主要关注的证券几乎全部属于最后一组;而上市股票的中位数则完全是另一类工具。
ADV如何悄然决定其他数据
- 补仓天数 = 空头持仓 ÷ ADV。成交量激增会缩短这一比率,即使空头持仓没有变化。变化来自分母。
- 相对成交量 = 今日成交速度 ÷ ADV。同一个数字承担相反的作用:这里的 ADV 是被超越的基准。
- 流动性筛选(“仅限 ADV 超过1M的标的”)存在于每个回测和筛选器中,幸存者偏差也会悄然随之出现:标的之所以进入这类筛选,往往是因为经历了最剧烈的几周。
- 头寸规模管理方面,机构通常每天只交易 ADV 的几个百分点。因此,大型基金根本无法持有某些小盘股:建仓或退出一个头寸,可能需要数周的全市场成交量。
以实际数字看补仓天数很有价值,因为即使是“官方”数字,也包含了某种 ADV 选择。FINRA 会公布补仓天数,并采用自己的成交量分母(涵盖所有交易场所,使用各自的报告窗口,最低按1.0计算,参见该数据如何传入);用本页面的20个交易日正常交易时段 ADV 重新计算后,答案会发生变化:
| 代码 | 卖空股数(百万) | FINRA平均日成交量(百万) | FINRA补仓天数 | 正常交易时段20日平均成交量(百万) | 重新计算的补仓天数 |
|---|---|---|---|---|---|
| KO | 49.6 | 24.1 | 2.06 | 12.4 | 4 |
| MU | 31.7 | 60.3 | 1 | 42 | 0.75 |
每个数字背后的完整 SQL
WITH our_adv AS (
SELECT ticker, avg(day_shares) AS adv
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sumIf(toFloat64(volume), formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') >= '09:30'
AND formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') < '16:00') AS day_shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('MU', 'KO')
AND window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY ticker, et_date
)
GROUP BY ticker
),
si AS (
SELECT ticker,
max(short_interest) AS short_interest,
max(avg_daily_volume) AS finra_adv,
max(days_to_cover) AS finra_dtc
FROM global_markets.stocks_short_interest
WHERE settlement_date = '2026-06-30' AND ticker IN ('MU', 'KO')
GROUP BY ticker
)
SELECT si.ticker AS ticker,
round(si.short_interest / 1e6, 1) AS shares_short_m,
round(si.finra_adv / 1e6, 1) AS finra_adv_m,
round(si.finra_dtc, 2) AS finra_days_to_cover,
round(our_adv.adv / 1e6, 1) AS rth_adv_20_session_m,
round(si.short_interest / our_adv.adv, 2) AS days_to_cover_recomputed
FROM si
INNER JOIN our_adv ON si.ticker = our_adv.ticker
ORDER BY ticker相同的空头持仓,不同的分母。对于 KO,FINRA 根据其 24.1M股成交量数据报告为 2.06 天;相对于本页面的 12.4M股正常交易时段 ADV,相同的 49.6M股空头持仓计算得出 4 天,接近翻倍。对于 MU,公布的数字处于报告下限 1;重新计算后为 0.75 天。两个数字都没有错误,只是采用了不同的分母。其含义可以推广到其他情况:任何以 ADV 为基础的比率,实际上都悄然采用了某个数据窗口和交易时段的选择。
ADV 是否适用于期权?
期权交易者也会使用同一概念,但有一个区别:成交量按合约计算,而每份标准股票期权合约控制 100 股。仍取 20 个交易日和四个期权成交记录,并将合约数量换算为等值股票敞口:
| 标的 | 日均合约数(千) | 等值股数(百万) | 交易时段数 |
|---|---|---|---|
| SPY | 12543.2 | 1254.3 | 20 |
| AAPL | 1265.1 | 126.5 | 20 |
| MU | 804.7 | 80.5 | 20 |
| KO | 64.6 | 6.5 | 20 |
每个数字背后的完整 SQL
WITH daily AS (
SELECT multiIf(ticker LIKE 'O:SPY2%', 'SPY', ticker LIKE 'O:AAPL2%', 'AAPL', ticker LIKE 'O:MU2%', 'MU', 'KO') AS underlying,
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
sum(toFloat64(volume)) AS contracts
FROM global_markets.options_minute_aggs
WHERE (ticker LIKE 'O:SPY2%' OR ticker LIKE 'O:AAPL2%' OR ticker LIKE 'O:MU2%' OR ticker LIKE 'O:KO2%')
AND window_start >= toDateTime('2026-06-11 00:00:00', 'America/New_York')
AND window_start < toDateTime('2026-07-11 00:00:00', 'America/New_York')
GROUP BY underlying, et_date
)
SELECT underlying,
round(avg(contracts) / 1e3, 1) AS avg_daily_contracts_k,
round(avg(contracts) * 100 / 1e6, 1) AS share_equivalent_m,
count() AS sessions
FROM daily
GROUP BY underlying
ORDER BY avg_daily_contracts_k DESC规模差异远大于股票表中的差异。SPY 的期权成交记录日均成交 12543.2 千份合约,对应 1254.3M 股等值敞口,远高于 SPY 自身 46.01M 股的日均成交量(ADV)。KO 则相反:日均成交 64.6 千份合约(对应 6.5M 股等值敞口),低于其 12.4M 股的日均成交量。期权流动性集中在少数标的上,并且在不同执行价和到期日之间进一步变薄。此类汇总数据会高估任何单一期权合约的实际成交量,因此在确定期权订单规模前,仍需核查单个合约的成交量和未平仓量。
以专业交易者的方式解读 ADV
三个习惯可以弥合“知道定义”和“实际使用”之间的差距。将股票 ADV 与美元 ADV 配对使用。第一张表显示,两只股票的成交股数几乎相同,但成交金额相差很大。对订单而言,真正重要的是成交金额。事件发生后,立即对 ADV 保持警惕。冲击面板给出了具体数字:一段成交量异常放大的时期,在一个月内将分母推移了 57%,从而机械性压低相对成交量和补仓天数,直到这次放量逐渐退出统计窗口。将 ADV 与日历进行核对。到期日所在的周五、再平衡日和指数调整日会同时推高整个市场的成交量(尤其是四巫日),因此,市场范围内的放量并不能说明任何单只股票自身的情况。
平均日成交量常见问题
什么是合适的平均日成交量?
在 10864 个美国股票代码、20个交易日的样本中,日均成交额中位数为 2.2M 美元;其中 3535 个标的日成交额超过1,000万美元,只有 130 个超过10亿美元。对于散户规模的订单,关键门槛应看成交额,而不是成交股数。日成交额超过1,000万美元的标的通常不会因小额订单而明显波动。
如何计算平均日成交量?
将选定区间内每天的成交股数相加,再除以交易日数量。KO在2026年7月6日至10日这五个交易日的成交量合计为 52.8M 股;除以五后,平均日成交量为 10.6M 股。20日平均日成交量的计算方法相同,只是区间覆盖20个交易日。
平均日成交量按什么区间计算?
最常见的是20个交易日(约一个月),但10日、30日、65日和90日口径也很常见。发生成交量冲击后,不同口径的结果确实会出现差异。在 2026-04-14,MU的20日平均日成交量为 45.6M,而90日平均日成交量为 31.9M。比较不同来源的数据前,请先确认计算区间。
平均日成交量是否包括盘前和盘后成交量?
这取决于数据来源。本页面的数据仅包括正常交易时段。按相同的20个交易日计算,延长交易时段的成交量分别占SPY总成交量的 18.3%、AAPL的 6.9%,以及成交清淡的CATO的 0.2%。延长交易时段指南对各时段进行了拆分说明。
平均日成交量按股数还是成交额计算?
传统口径按成交股数计算,但在不同股票之间比较流动性时,日均成交额更有参考价值。在相同的20个交易日内,MU和AAPL的日均成交量分别为 42.01M 股和 41.47M 股,几乎相同;但两者的日均成交额分别为 44.49B 美元和 12.24B 美元。成交股数相同,流动性规模却可能大不相同。
所有数据均来自已存储并版本化的查询。您可以展开任一面板下方的SQL,或在Strasmore终端中为任意股票代码计算任意区间的数据。