VWAP是什么意思?成交量加权平均价详解
VWAP是成交量加权平均价,按成交金额除以成交股数计算并每日重置。了解它如何反映股票真实成交价格,以及交易日中该指标的实际意义。
VWAP 是成交量加权平均价的缩写,指一个交易时段内每股实际支付价格的平均值。其计算方式是用成交总金额除以成交总股数,并在每天重新计算。
成交活跃时段的权重高于清淡时段。因此,VWAP 通常用于回答“这只股票今天实际以什么价格成交?”这一问题。
本页所有数据均来自基于真实分钟K线和逐笔成交记录的已存储、可核查查询。
VWAP在股票交易中是什么意思?
股票图表会显示每分钟的价格,但这些价格的重要性并不相同:某一分钟可能有数十万股成交,另一分钟的成交量可能只有其中很小一部分。简单计算每分钟价格的平均值,会将两者视为同等重要。VWAP会按照每个价格对应的成交股数进行加权,因此得出的平均价格更能反映实际成交所在的位置。
换句话说,VWAP是按每股计算的平均价格,而不是按每分钟计算的平均价格。假设您把当天成交的每一股股票排成一列,并询问每一股的成交价格,VWAP就是这些价格的平均值。
根据这一定义,VWAP具有两个特征:它针对单只股票计算,Apple的VWAP与Microsoft无关;同时它按交易时段计算,下一交易日开盘后,累计数据会重新从零开始。
VWAP如何计算?
公式很简短:
- 将每一分钟K线的价格乘以该分钟的成交股数。
- 将整个交易时段的这些乘积相加。
- 除以总成交股数。
举一个很小的假设例子:假设某只股票今天恰好成交两次,第一次成交100股,价格为10.00美元;第二次成交900股,价格为11.00美元。两次价格的简单平均值为10.50美元。但这1,000股中有900股以11.00美元成交,因此每股平均支付金额为(100 × 10.00美元 + 900 × 11.00美元)÷ 1,000 = 10.90美元。10.90美元就是VWAP。由于第二笔交易规模更大,VWAP向11.00美元靠拢。
实际操作中,没有人会手动加总数百万笔交易。标准的简化方法是使用一分钟K线,将每分钟的价格乘以成交量,再将结果相加并除以总成交量。这里有两点口径说明。第一,本页所有数据仅使用常规交易时段的一分钟K线,即从美国东部时间上午9:30开盘到下午3:59的最后一根K线。下午4:00的收盘集合竞价成交记录紧随该K线之后,未计入这些数据;而机构用来评估执行效果的全天基准VWAP通常会包含这部分成交。第二,许多图表平台会从凌晨4:00的盘前交易开始计算当日VWAP。同一只股票在同一天采用不同口径,会得到不同数值。
真实交易日中的VWAP
现在看实际案例:Apple在2026年7月2日的交易情况。这是一个经核实的完整交易时段(我们的数据包含390个一分钟K线),也是独立日休市前的最后一个完整交易日,具体日期可参见市场休市日历。图表每五分钟采样一次价格和实时VWAP。
| 美东时间 | 价格 | 累计VWAP |
|---|---|---|
| 09:34 | 298.2 | 298.09 |
| 09:39 | 300.13 | 298.6 |
| 09:44 | 300.35 | 299.15 |
| 09:49 | 302.17 | 299.69 |
| 09:54 | 301.76 | 300.41 |
| 09:59 | 302.85 | 300.58 |
| 10:04 | 303.05 | 300.82 |
| 10:09 | 303.54 | 301.01 |
| 10:14 | 303.73 | 301.32 |
| 10:19 | 304.37 | 301.48 |
| 10:24 | 304.56 | 301.77 |
| 10:29 | 305.05 | 301.94 |
| 10:34 | 305.71 | 302.25 |
| 10:39 | 305.38 | 302.43 |
| 10:44 | 306.42 | 302.6 |
| 10:49 | 305.54 | 302.79 |
| 10:54 | 306.31 | 302.91 |
| 10:59 | 306.88 | 303.09 |
| 11:04 | 306.64 | 303.28 |
| 11:09 | 306.9 | 303.42 |
每个数字背后的完整 SQL
SELECT et_time, price, running_vwap
FROM (
SELECT window_start,
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
round(close, 2) AS price,
round(sum(close * volume) OVER (ORDER BY window_start)
/ sum(volume) OVER (ORDER BY window_start), 2) AS running_vwap
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')
)
WHERE toMinute(window_start) % 5 = 4
ORDER BY window_start在09:34 ET,即第一个采样K线时,价格($298.2)和实时VWAP($298.09)几乎重合,因为当时只累计了几分钟的成交量。最后一个K线收盘时,价格为$308.22,实时VWAP收于$305.99,这就是该交易时段的VWAP。随着交易日推进,VWAP线逐渐趋于平稳;到下午,它已计入数小时的累计成交量,任何单个分钟K线都难以大幅推动其变化。
另一个数字体现了成交量的加权作用:前半小时的成交量就占全时段成交量的14.9%,约为390分钟交易时钟所占时间比例的两倍,而且这些早盘高成交量K线的成交价格低于下午的交易价格。成交量通常集中在开盘时段,并在下午4:00的收盘集合竞价临近时再次放大。这与相对成交量读数需要调整的日内U形模式相同,而VWAP会根据成交量占比,为所覆盖的活跃时段赋予相应的更高权重。
VWAP与移动平均线的区别
移动平均线同样会平滑价格,因此两者经常被混淆。它们的差异体现在计算方式上:
- 简单移动平均线取最近 N 个收盘价,并为每个价格赋予相同权重,不考虑成交量。它会随时间滚动:下午 2:00 的 20 分钟移动平均线覆盖 1:40 至 2:00 的数据,不包含其他时段。
- VWAP从开盘铃声响起时开始累计,按每根K线的成交股数加权,并在下一次开盘时重置。它回答的是另一个问题。它不是在问“近期价格表现如何”,而是在问“今天平均买入者支付了什么价格?”
加权平均与非加权平均之间的差异,就是关键所在。一行数据即可说明这一点:
| 交易日 | 分钟K线 | 交易时段VWAP | 非加权平均价 | 最后一分钟价格 | 平均溢价(美分) | 总成交量(百万) | 前30分钟成交量占比 |
|---|---|---|---|---|---|---|---|
| 2026-07-02 | 390 | 305.99 | 306.54 | 308.22 | 55 | 60 | 14.9 |
每个数字背后的完整 SQL
SELECT formatDateTime(toDate(toTimeZone(min(window_start), 'America/New_York')), '%Y-%m-%d') AS session_date,
count() AS minute_bars,
round(sum(close * volume) / sum(volume), 2) AS session_vwap,
round(avg(close), 2) AS unweighted_avg_price,
round(argMax(close, window_start), 2) AS final_minute_price,
round((avg(close) - sum(close * volume) / sum(volume)) * 100) AS avg_premium_cents,
round(toFloat64(sum(volume)) / 1e6) AS total_volume_millions,
round(sumIf(toFloat64(volume), window_start < toDateTime('2026-07-02 10:00:00', 'America/New_York'))
/ toFloat64(sum(volume)) * 100, 1) AS first_30min_volume_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')对苹果公司 390 分钟收盘价进行等权平均,结果为 $306.54。按每分钟成交量对相同收盘价加权,结果为 $305.99,低了 55 美分。交易日、K线和 60 百万股成交量都相同;唯一变化是计算成交股数,而不是计算分钟数。差值方向很重要:当等权平均线高于VWAP时,说明成交量较大的分钟内,交易价格低于当日典型价格。该时段最后一分钟K线的成交价为 $308.22;官方收盘价会在片刻后于收盘竞价中确定。
分钟K线计算的VWAP有多准确?
VWAP基于逐笔成交定义,而分钟K线只是近似值。这种简化会带来多大误差?大多数解释文章从未进行过比较。以下对同一交易时段的VWAP进行对照:一项基于综合行情中的每一笔成交记录逐笔计算,另一项基于分钟K线计算。(官方和数据供应商提供的VWAP也会剔除少量带有特定成交条件代码的记录,例如均价成交,因此不同平台的结果可能存在极小差异。)
| 逐笔交易VWAP | 分钟K线VWAP | 差额(美分) | 差额(基点) | 交易笔数(百万) |
|---|---|---|---|---|
| 305.9162 | 305.9908 | 7.5 | 2.4 | 1.1 |
每个数字背后的完整 SQL
WITH every_trade AS (
SELECT round(sum(price * size) / sum(size), 4) AS trade_vwap,
round(count() / 1e6, 1) AS trades_millions
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND sip_timestamp < toDateTime('2026-07-02 16:00:00', 'America/New_York')
),
minute_bars AS (
SELECT round(sum(close * volume) / sum(volume), 4) AS bar_vwap
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')
)
SELECT every_trade.trade_vwap AS trade_level_vwap,
minute_bars.bar_vwap AS minute_bar_vwap,
round(abs(every_trade.trade_vwap - minute_bars.bar_vwap) * 100, 1) AS gap_cents,
round(abs(every_trade.trade_vwap - minute_bars.bar_vwap) / every_trade.trade_vwap * 10000, 1) AS gap_bps,
every_trade.trades_millions
FROM every_trade, minute_bars在1.1百万笔逐笔成交中,逐笔成交VWAP为$305.9162;分钟K线简化计算结果为$305.9908。两者相差7.5美分,相当于股价的2.4个基点(百分之一个百分点)。作为该交易日的参考线,分钟K线简化计算结果与逐笔成交结果的偏差始终不超过一角钱。
每只股票的VWAP都一样吗?
市场不存在统一的VWAP;每只股票在每个交易日都有自己的VWAP。以下是五只家喻户晓的股票在7月2日同一交易日的数据,每只股票均有经过核验的完整390根K线:
| ticker | 交易时段VWAP | 最后一分钟价格 | 最终价格相对VWAP(%) |
|---|---|---|---|
| AAPL | 305.99 | 308.22 | 0.73 |
| MSFT | 389.33 | 389.62 | 0.07 |
| NVDA | 195.14 | 194.51 | -0.32 |
| TSLA | 399.64 | 392.81 | -1.71 |
| KO | 82.96 | 83.98 | 1.23 |
每个数字背后的完整 SQL
SELECT ticker,
round(sum(close * volume) / sum(volume), 2) AS session_vwap,
round(argMax(close, window_start), 2) AS final_minute_price,
round((argMax(close, window_start) - sum(close * volume) / sum(volume))
/ (sum(close * volume) / sum(volume)) * 100, 2) AS final_vs_vwap_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO')
AND window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York')
GROUP BY ticker
HAVING count() = 390
ORDER BY indexOf(['AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO'], ticker)可口可乐当日的VWAP为$82.96;特斯拉为$399.64。最后一分钟的收盘表现也各不相同:苹果收盘价高于其VWAP 0.73%,可口可乐高于其VWAP 1.23%;微软几乎正好收在自身VWAP附近(0.07%),而英伟达和特斯拉的收盘价低于各自VWAP(-0.32%和-1.71%)。五只股票,同一个交易日,五个不同答案。
谁会使用 VWAP,以及用于什么目的?
机构投资者用于评估执行效果。 基金买入大额仓位时,不可能全部以同一价格成交,只能得到一个平均成交价。当天的 VWAP 就是衡量标准:买单若低于 VWAP 成交,意味着支付的价格低于当日平均成交价格。执行交易台会像学生报告成绩一样,报告相对于 VWAP 的滑点。通常采用包含收盘集合竞价成交价在内的全天基准。
执行算法。 经纪商提供 VWAP 算法。这类程序会将一笔大型母单拆分为数百笔小型子单,在交易时段内分批执行。子单规模会参考当天的典型成交量分布,目标是在接近基准的水平成交,而不是推动价格。每笔子单仍需支付买卖价差,而许多成交的对手方是同时对买卖两侧报价的做市商。
日内交易者将 VWAP 指标作为盘中参考线。 日内交易者会将其保留在图表上,作为当天的平均成本线:价格高于 VWAP,表示近期买入者支付的价格高于该交易时段的平均水平;价格低于 VWAP,则表示支付的价格更低。这只能说明交易已经发生在哪些价位附近,不能预测价格下一步的走势。
锚定 VWAP 是一种常见变体:计算方法相同,但起点不同。累计计算从交易者选定的某根 K 线开始,例如财报发布日、IPO 首日,或某个重要高点、低点,而不是从开盘开始。
常见问题
VWAP是移动平均线吗?
不是。移动平均线使用固定的回溯窗口,并且不考虑成交量,为每根K线赋予相同权重。VWAP从交易时段开盘开始计算,按每根K线的成交股数加权,并在每天重置。2026年7月2日,在相同K线数据上,苹果每分钟收盘价的等权平均值比其VWAP高55美分。
VWAP是否包含盘前和盘后交易?
这取决于平台。本页面仅使用常规交易时段的分钟K线,计算截至东部时间下午3:59的最后一根K线;该K线之后的下午4:00收盘集合竞价成交记录,以及全天基准VWAP,通常会包含这部分交易。许多看盘应用则从盘前交易时段的凌晨4:00开始累计。比较数据前,请先检查平台设置。
股票价格高于VWAP意味着什么?
这意味着当前价格高于该交易时段截至目前每股已支付价格的平均值。2026年7月2日,苹果在常规交易时段最后一分钟的收盘价比其时段VWAP高0.73%,而特斯拉则低于自身VWAP。这一比较反映的是该时段的交易情况,并不能预测下一步走势。
股票价格低于VWAP意味着什么?
这意味着当前价格低于该交易时段截至目前每股已支付价格的平均值。2026年7月2日,特斯拉在常规交易时段最后一分钟的收盘价低于其时段VWAP(-1.71%),而苹果则高于自身VWAP。这一比较反映的是该时段的交易情况,并不能预测下一步走势。
VWAP代表什么?
VWAP代表成交量加权平均价格,即一只股票在该交易时段内的平均成交价格,并按每笔交易的成交股数加权。大额交易对VWAP的影响大于小额交易。这一特性使VWAP成为衡量执行质量的标准基准。
什么是锚定VWAP?
锚定VWAP采用相同的计算方法,但从选定的K线开始,而不是从交易时段开盘开始。锚点可以是财报发布、IPO、波段高点或低点。该线跟踪自该事件以来所有交易者的平均买入价格。
上方每个面板都附有生成结果的完整SQL。展开任意面板即可核查数据。如需计算任意ticker在指定交易时段的VWAP,请在Strasmore终端中用自然语言提问。