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。每一步都不复杂,但合在一起,就成了机构交易者离不开的工具。
好了,VWAP的计算原理就聊到这儿。记住三个关键词:典型价格、累积加权、开盘重置。把这三点吃透,你就能自己手写一个VWAP指标了。
本章小结:
- 典型价格 = (最高+最低+收盘)/3,是VWAP的输入价格
- VWAP = Σ(典型价格×成交量) / Σ(成交量),是累积加权平均
- 时间窗口通常从开盘到当前,每天重置
- 分钟级K线是最常用的数据源