Strasmore Research
学习 Matt Connor作者: Matt Connor · 更新于 2026-08-01

什么是平均日成交量(ADV)?

了解平均日成交量(ADV)的定义、计算方法及时间窗口如何影响结果,并掌握其在补仓天数、相对成交量和流动性筛选中的作用。

日均成交量(ADV)是最常用、却几乎没人专门定义的指标:它表示一只股票在某个回溯窗口内的日均成交股数。ADV 是补仓天数的分母,是相对成交量的基准,也是所有筛选器中的流动性测试指标。这意味着,这些数字都继承了 ADV 中一些不显眼的设定:采用哪个时间窗口、包含哪些交易时段,以及统计股数还是成交金额。本页将准确定义 ADV,逐步演示计算方法,并使用真实成交数据衡量这些设定各自的影响。

平均日成交量:量化呈现

2026年6月11日至7月10日的20个正常交易时段,四个熟悉的名称加上一个有意选取的低流动性名称。股票数量、美元金额,以及(稍后会用到的)每个名称在正常交易时段之外成交的总成交量占比:

查询20个交易日正常交易时段ADV:股票数量、美元金额及盘后交易占比(2026年6月11日–7月10日)
代码日均成交股数(百万)日均成交金额(十亿美元)盘前盘后占比交易时段数
SPY46.0134.1918.320
MU42.0144.4912.120
AAPL41.4712.246.920
KO12.41.016.620
CATO0.0500.220
每个数字背后的完整 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
自己运行这个查询

该表完整呈现了本页的核心论点。MUAAPL的日均成交股数几乎相同,分别为42.01M和41.47M,但美元成交额差距很大:日均分别为$44.49B和$12.24B。股票数量衡量交易活跃度;美元金额衡量资金规模。排名在顶部甚至发生反转:SPY的成交股数最多(20个交易日合计46.01M股),而MU的美元成交额在本表中最高。在底部,CATO日均成交0.05百万股,资金规模很小,因此按十亿美元计的数值在这一尺度下显示为0。这类行情中,一笔机构订单就可能等于全天成交量,而交易成本也处在完全不同的层级。

如何计算日均成交量

计算方法很简单:将选定时间窗口内的每日成交股数相加,再除以天数。以下是可口可乐在正常交易时段的一整周交易数据(2026年7月6日至10日),累计值和平均值均通过同一查询计算:

查询手动计算ADV:KO的5个日成交量、总和及平均值(2026年7月6日–10日)
交易时段日期股数(百万)五日总量(百万)日均成交量(百万)日均成交量的1%(千)
2026-07-0610.752.810.6106
2026-07-0712.152.810.6106
2026-07-0810.752.810.6106
2026-07-091152.810.6106
2026-07-108.352.810.6106
每个数字背后的完整 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 在春季持续呈现出不同的情况,详见六月深度分析。以下是同一只股票在同样七个月期间、同时使用两个窗口计算的结果:

查询MU:20个交易日与90个交易日滚动ADV,2025年12月至2026年7月10日(每隔两个交易日取样)
49 rows (showing 20)
日期20个交易时段日均量(百万)90个交易时段日均量(百万)
2025-12-1021.319.9
2025-12-1520.320.1
2025-12-1820.720.2
2025-12-232020.7
2025-12-2920.720.8
2026-01-0222.221.3
2026-01-0724.522
2026-01-122622.5
2026-01-1526.222.5
2026-01-2126.923
2026-01-2628.523.4
2026-01-2930.523.7
2026-02-0331.923.9
2026-02-0632.624.4
2026-02-1134.124.7
2026-02-173524.9
2026-02-2032.525
2026-02-253225.4
2026-03-0230.225.4
2026-03-0528.425.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:

查询MU在2026年的最大成交量冲击:事件日与冲击前后滚动ADV的比较
事件日期事件日股数(百万)事件前20日日均量(百万)事件日/此前日均量(倍)事件后20日日均量(百万)日均量变化(%)
2026-03-1964.728.72.34557
每个数字背后的完整 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)排序:

查询整个美国市场的美元ADV:百分位数及阈值计数(2026年6月11日–7月10日)
标的数第25百分位(百万)中位数(百万)第75百分位(百万)第90百分位(百万)第99百分位(百万)超过1百万的标的数超过1千万的标的数超过1亿的标的数市值超10亿美元
108640.332.220.4113.71333651535351166130
每个数字背后的完整 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分母与本页20个交易日正常交易时段ADV的比较(2026年6月30日结算)
代码卖空股数(百万)FINRA平均日成交量(百万)FINRA补仓天数正常交易时段20日平均成交量(百万)重新计算的补仓天数
KO49.624.12.0612.44
MU31.760.31420.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 个交易日和四个期权成交记录,并将合约数量换算为等值股票敞口:

查询期权ADV:日均合约数及等效股票敞口(2026年6月11日–7月10日)
标的日均合约数(千)等值股数(百万)交易时段数
SPY12543.21254.320
AAPL1265.1126.520
MU804.780.520
KO64.66.520
每个数字背后的完整 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终端中为任意股票代码计算任意区间的数据。