2. VWAP计算原理:典型价格计算、成交量加权平均公式、时间窗口选择、常见数据源

好,咱们进入正题。VWAP,全称是Volume-Weighted Average Price,成交量加权平均价格。这名字听着挺唬人,但说白了,它就是一个“更聪明”的平均价。

普通的平均价,比如你算一天的开高低收四个价格的平均,那叫简单平均。但VWAP不一样,它把成交量也拉进来一起算。你想想看,如果某笔交易只成交了1手,另一笔成交了10000手,这两笔价格对市场的影响能一样吗?显然不能。VWAP就是给成交量大的价格更高的权重,这样算出来的价格,更能反映真实的交易成本。

2.1 典型价格:VWAP的“原材料”

在算VWAP之前,我们得先确定用哪个价格去乘成交量。是收盘价?还是开盘价?都不是。业内最常用的,是典型价格(Typical Price)

公式很简单:

典型价格 = (最高价 + 最低价 + 收盘价) / 3

为什么不用开盘价?我个人习惯是,开盘价往往受隔夜消息影响,波动比较大,而且成交量在开盘瞬间通常很集中,用它算出来的典型价格容易失真。最高、最低、收盘这三个价格,能更好地概括一根K线内的价格分布。你可以把典型价格理解成这根K线的“重心”。

核心要点: 典型价格是VWAP计算的基石。它用最高、最低、收盘三个价格的平均,来代表该时间段的“公允价格”。

我在早期做回测时,曾经试过用(开盘+收盘)/2来替代典型价格。结果发现,在趋势行情里偏差不大,但在震荡行情里,VWAP曲线会变得很“毛躁”,信号频繁出现。后来我统一改回典型价格,曲线平滑多了。嗯,这里要注意,别为了省事去改这个基础参数。

2.2 成交量加权平均公式:核心逻辑

有了典型价格,下一步就是把它和成交量乘起来,再累加。公式长这样:

VWAP = Σ (典型价格_i × 成交量_i) / Σ 成交量_i

其中,i 代表第 i 个时间片段。比如在5分钟K线上,i=1就是第一个5分钟,i=2就是第二个5分钟,以此类推。

这个公式其实就是一个累积加权平均。分子是“价格×成交量”的总和,分母是总成交量。你每过一个时间片段,就把新的“价格×成交量”加到分子里,把新的成交量加到分母里,然后重新除一下,就得到最新的VWAP。

举个例子:

时间片段 典型价格 成交量 价格×成交量
09:30-09:35 100.0 1000 100,000
09:35-09:40 101.0 2000 202,000
09:40-09:45 99.5 1500 149,250

到第三个时间片段结束时:

  • 分子总和 = 100,000 + 202,000 + 149,250 = 451,250
  • 分母总和 = 1000 + 2000 + 1500 = 4500
  • VWAP = 451,250 / 4500 ≈ 100.28

你看,虽然第三个时间片段价格跌到了99.5,但因为前面两个时间片段成交量更大,VWAP只跌到了100.28,并没有完全跟着最新价走。这就是成交量加权的效果——它更“稳重”。

实战技巧: 在代码实现时,我建议用两个累积变量来维护分子和分母,而不是每次都重新遍历所有数据。这样计算复杂度是O(1),而不是O(n)。尤其在做高频回测时,这个优化能省下大量时间。

2.3 时间窗口选择:从开盘到现在的“滚动”

VWAP的一个关键特性是:它通常是从开盘开始累积计算的。也就是说,时间窗口是 [开盘, 当前时刻]。每天开盘时,VWAP重置,从零开始重新累积。

为什么会这样?因为VWAP最初就是用来衡量机构大单在当日的执行效率的。你想想看,一个基金经理要在一天内买入100万股,他肯定希望自己的成交价尽量低于当天的VWAP。如果VWAP不重置,而是跨天累积,那昨天的价格就会影响今天的基准,这显然不合理。

不过,也有几种变体:

  • 滚动VWAP: 取过去N个时间片段(比如过去20个5分钟)来计算。这种VWAP不重置,适合用于判断短期趋势。
  • 日内分段VWAP: 把一天分成几个时段(比如上午、下午),每个时段独立计算VWAP。我见过一些做市商用这个来管理不同时段的库存风险。

我个人建议,如果你是做日内交易,就用标准的“开盘到当前”VWAP。如果你是做中低频策略,可以试试滚动VWAP。我曾经在回测一个隔夜策略时,误用了滚动VWAP,结果信号全乱套了——因为隔夜跳空导致VWAP和价格严重偏离。后来改成标准VWAP,逻辑才通顺。

避坑指南: 我曾经在回测中忘记处理“开盘重置”逻辑,导致VWAP曲线在每天开盘时出现一个巨大的跳空缺口。这个缺口会严重干扰策略信号。切记,每天开盘第一根K线,分子和分母都要清零。

2.4 常见数据源:从哪里拿数据?

算VWAP需要两个核心数据:价格和成交量。价格我们刚才说了,用典型价格。成交量就是该时间片段内的总成交股数(或合约数)。

常见的数据源有:

  • 交易所Tick数据: 最精确,但数据量巨大。适合做高频VWAP。
  • 分钟级K线数据: 最常用。比如1分钟、5分钟K线。我用5分钟K线比较多,因为它在精度和计算量之间平衡得不错。
  • Level-2行情: 包含逐笔成交,可以算出更精细的VWAP。但成本较高。

对于大多数个人交易者,用免费的分钟级K线数据就足够了。像Tushare、AKShare、Yahoo Finance这些平台,都能拿到A股或美股的分钟数据。不过要注意,免费数据通常有延迟,做实时交易时得用付费数据源。

下面我用SVG画一张图,帮你理清VWAP的计算流程:

VWAP计算流程 数据源 典型价格计算 (最高+最低+收盘)/3 成交量 总成交股数 累积计算 分子: Σ(典型价格 × 成交量) 分母: Σ(成交量) VWAP = 分子 / 分母 输出VWAP曲线

这张图把流程串起来了:数据源 → 分别处理价格和成交量 → 累积计算分子分母 → 除法得到VWAP。每一步都不复杂,但合在一起,就成了机构交易者离不开的工具。

好了,VWAP的计算原理就聊到这儿。记住三个关键词:典型价格、累积加权、开盘重置。把这三点吃透,你就能自己手写一个VWAP指标了。

本章小结:

  • 典型价格 = (最高+最低+收盘)/3,是VWAP的输入价格
  • VWAP = Σ(典型价格×成交量) / Σ(成交量),是累积加权平均
  • 时间窗口通常从开盘到当前,每天重置
  • 分钟级K线是最常用的数据源

专注资料整理