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 定义:成交金额/成交量 公式:Σ(P×V)/ΣV 时间周期选择 日级 分钟级 Tick级 核心:以成交量为权重,反映真实市场成本

这张图展示了VWAP的三个核心维度:定义、公式和时间周期。三者缺一不可。定义告诉你它是什么,公式告诉你它怎么算,时间周期告诉你它用在什么场景。

我的建议:刚开始学VWAP,先别纠结Tick级。把日级VWAP搞透,理解它的数学本质和交易含义。等你能用日级VWAP做出一个简单的执行策略,再考虑升级到更细的粒度。

好了,这一章就到这里。VWAP看似简单,但真正用好它,需要你对市场微观结构有深刻理解。下一章我们会深入VWAP的实战应用——如何用它来拆单、如何避免常见的坑。

专注资料整理