2. VWAP基础概念:定义、公式与时间周期
大家好,我是你们的量化交易工程师朋友。今天我们来聊聊VWAP——这个在算法交易圈里几乎无人不知的指标。
说实话,我刚入行那会儿,觉得VWAP不就是个加权平均价嘛,有啥好学的?直到有一次,我用简单均价去拆一个大单,结果被市场狠狠教育了一顿。嗯,从那以后,我才真正理解了VWAP的价值。
2.1 VWAP的定义:它到底是什么?
VWAP,全称Volume-Weighted Average Price,中文叫「成交量加权平均价」。说白了,就是用成交量作为权重,计算出的一个平均价格。
你想想看,普通均价把每一笔交易都看得一样重要。但现实中,大单成交的价格显然比小单更有代表性。VWAP就是解决这个问题的。
核心定义:VWAP = 总成交金额 ÷ 总成交量
它反映了在特定时间段内,市场参与者实际成交的平均价格水平。
我个人习惯把VWAP理解成「市场的真实成本线」。机构交易员经常用它作为基准——如果我的成交价低于VWAP,说明我买得便宜;高于VWAP,说明我买贵了。
2.2 数学推导:从公式到直觉
先看标准公式:
VWAP = Σ(Pᵢ × Vᵢ) / Σ(Vᵢ)
其中:
Pᵢ = 第i笔交易的价格
Vᵢ = 第i笔交易的成交量
Σ = 求和符号(从第1笔到第n笔)
这个公式其实很直观。分子是总成交金额,分母是总成交量。两者一除,就是加权平均价。
举个例子:
| 交易序号 | 价格(元) | 成交量(股) | 成交金额(元) |
|---|---|---|---|
| 1 | 10.00 | 100 | 1,000 |
| 2 | 10.05 | 200 | 2,010 |
| 3 | 9.98 | 150 | 1,497 |
| 合计 | 450 | 4,507 |
VWAP = 4,507 ÷ 450 = 10.016元
而简单均价是 (10.00 + 10.05 + 9.98) ÷ 3 = 10.01元。你看,两者有差异,但不大。如果成交量分布更极端,差异会更明显。
我的经验:在实际交易中,VWAP和简单均价的差异往往在0.1%-0.5%之间。但别小看这个差距,对于大资金来说,0.1%可能就是几十万的盈亏。
2.3 时间周期选择:日级、分钟级、Tick级
VWAP的计算离不开时间窗口。你选什么周期,结果完全不同。我见过不少新手在这个问题上栽跟头。
2.3.1 日级VWAP
这是最常用的版本。从开盘到当前时刻,累计计算。公式不变,只是把时间范围限定在当天。
- 优点:简单直观,机构普遍使用,便于横向对比
- 缺点:对日内交易来说,反应太慢
- 适用场景:执行大单、评估交易员表现
我曾经帮一家私募做绩效评估,他们就是用日级VWAP作为基准。交易员如果全天成交价低于VWAP,就算优秀。这个方法虽然粗糙,但胜在公平——因为VWAP包含了市场整体的成交信息。
2.3.2 分钟级VWAP
把一天切成若干分钟窗口,每个窗口内计算一次VWAP。比如5分钟VWAP,就是用过去5分钟的数据算一个值。
// 伪代码示例:计算5分钟VWAP
function calcMinuteVWAP(trades, windowMinutes=5) {
let now = currentTime()
let start = now - windowMinutes * 60 * 1000
let filteredTrades = trades.filter(t => t.time >= start)
let totalValue = 0
let totalVolume = 0
for (let trade of filteredTrades) {
totalValue += trade.price * trade.volume
totalVolume += trade.volume
}
return totalValue / totalVolume
}
- 优点:反应灵敏,适合短线交易
- 缺点:窗口选择敏感,不同窗口结果差异大
- 适用场景:高频交易、日内策略
注意:分钟级VWAP有个坑——窗口边界处的数据截断问题。比如你在14:30:00计算5分钟VWAP,窗口是14:25:00到14:30:00。但14:30:00这一秒的成交算不算?不同系统的处理方式不同,结果会有偏差。
2.3.3 Tick级VWAP
这是最精细的版本。每一笔成交(Tick)都参与计算,实时更新。
公式形式上没变,但计算频率极高。每来一笔新成交,VWAP就更新一次。
// 实时Tick级VWAP更新
class TickVWAP {
constructor() {
this.totalValue = 0
this.totalVolume = 0
}
onTick(price, volume) {
this.totalValue += price * volume
this.totalVolume += volume
return this.totalValue / this.totalVolume
}
}
- 优点:最精确,无信息损失
- 缺点:计算量大,对数据质量要求高
- 适用场景:算法交易执行、做市策略
我建议初学者从日级VWAP入手。等理解了它的行为模式,再逐步过渡到分钟级和Tick级。别一上来就搞最复杂的,容易迷失在细节里。
2.4 知识体系总览
下面这张图帮你理清本章的核心逻辑:
这张图展示了VWAP的三个核心维度:定义、公式和时间周期。三者缺一不可。定义告诉你它是什么,公式告诉你它怎么算,时间周期告诉你它用在什么场景。
我的建议:刚开始学VWAP,先别纠结Tick级。把日级VWAP搞透,理解它的数学本质和交易含义。等你能用日级VWAP做出一个简单的执行策略,再考虑升级到更细的粒度。
好了,这一章就到这里。VWAP看似简单,但真正用好它,需要你对市场微观结构有深刻理解。下一章我们会深入VWAP的实战应用——如何用它来拆单、如何避免常见的坑。