VWAP算法原理:时间加权与成交量加权的区别
说到VWAP,很多人第一反应就是「成交量加权平均价」。但说实话,这个定义只说对了一半。我刚开始做算法交易时,也以为VWAP就是个简单的平均价计算。直到有一次回测结果跟实盘差了十万八千里,我才意识到——时间加权和成交量加权,完全是两码事。
时间加权 vs 成交量加权:核心差异
先看一个最简单的例子。假设某股票在一天内只有两笔交易:
| 时间 | 价格 | 成交量 |
|---|---|---|
| 10:00 | 100元 | 100股 |
| 14:00 | 102元 | 1000股 |
时间加权平均价 = (100 + 102) / 2 = 101元
成交量加权平均价 = (100×100 + 102×1000) / (100+1000) ≈ 101.82元
看到了吗?差了将近1块钱。为什么?因为时间加权把两笔交易看得一样重要,而成交量加权更看重「大单」的贡献。
核心区别一句话总结:
- 时间加权:假设成交量均匀分布,每个时间切片权重相同
- 成交量加权:按实际成交量分配权重,大单影响更大
我个人习惯用成交量加权,因为这才是市场真实的交易成本。但要注意——VWAP的基准逻辑,其实默认用的是成交量加权。时间加权更多用在TWAP策略里,那是另一个故事了。
VWAP的滑点模型:为什么实盘总比回测差?
嗯,这里要重点讲一下。很多新手做VWAP回测时,直接用「成交价 - VWAP」算滑点,结果回测曲线漂亮得不行,一上实盘就崩。为什么?因为你忽略了市场冲击成本。
我曾在一次高频交易项目中踩过这个坑。回测时滑点设了0.5个tick,实盘跑起来直接亏了2个tick。后来复盘才发现,我的订单量太大,直接把价格推高了。
VWAP的滑点模型,一般包含三个层次:
- 固定滑点模型:假设每次成交都有固定偏移,比如0.1个tick。简单但不准。
- 比例滑点模型:滑点与订单量成正比。比如每成交1000股,滑点增加0.01%。
- 动态滑点模型:考虑当前市场深度、波动率、订单簿状态。最准,但也最复杂。
我的建议:初期回测用比例滑点模型就够了。公式很简单:
滑点 = 基准滑点 × (订单量 / 平均成交量)
基准滑点可以从历史数据中统计出来,一般取0.5~1个tick。
VWAP的基准逻辑:你到底在跟谁比?
VWAP的基准逻辑,说白了就是「你的成交价 vs 市场平均价」。但这里有个细节——市场平均价怎么算?
通常有两种基准:
- 全市场VWAP:用全市场所有成交计算。这是最标准的基准。
- 局部VWAP:只取你交易时段内的成交数据。比如你只在10:00-11:00交易,那就只算这个时间段的VWAP。
我个人更推荐用全市场VWAP。为什么?因为局部VWAP容易被操纵。你想想看,如果你只在流动性差的时段交易,那局部VWAP可能跟全市场差很多,回测结果会失真。
避坑指南:我曾经见过一个团队,用局部VWAP做回测,结果实盘时全市场VWAP跟局部差了0.3%。那点利润全被吃掉了。所以——基准一定要选全市场VWAP,除非你有特殊理由。
知识体系结构图
下面这张图,把VWAP的核心逻辑串起来了。你看一遍就能明白整个框架:
实战中的选择建议
说了这么多理论,到底怎么选?我直接给结论:
- 做日内交易:用成交量加权VWAP,配合比例滑点模型
- 做中低频策略:时间加权TWAP就够了,滑点用固定模型
- 做高频交易:必须用动态滑点模型,否则实盘必亏
一个小技巧:回测时把滑点设得比实际大20%。这样实盘跑起来,至少不会太难看。我吃过亏,所以现在都这么干。
好了,VWAP的原理就讲到这里。记住一句话:成交量加权是灵魂,滑点模型是血肉,基准逻辑是骨架。三者缺一不可。