3. TWAP核心原理:时间加权平均价格的计算逻辑、切片策略与执行周期

TWAP,全称是Time-Weighted Average Price。说白了,就是把一个大订单,拆成很多小单,均匀地扔到市场里去。目标只有一个——让成交均价,尽量贴近这段时间的市场平均价。

我刚开始做量化交易那会儿,觉得TWAP不就是个定时器嘛,每隔几秒发个单就行了。后来被市场狠狠教育了一顿。嗯,这里面的门道,比你想的要多。

3.1 时间加权平均价格的计算逻辑

先搞清楚一个基础问题:TWAP的价格是怎么算的?

公式其实很简单:

TWAP = (P₁ + P₂ + P₃ + ... + Pₙ) / N

其中P₁到Pₙ,是每个时间点的价格。N是时间点的总数。

举个例子:

时间点 价格(元)
09:30:00 100.00
09:30:05 100.05
09:30:10 100.02
09:30:15 100.08
09:30:20 100.03

TWAP = (100.00 + 100.05 + 100.02 + 100.08 + 100.03) / 5 = 100.036元

注意,这里用的是每个时间点的价格,不是成交量。这和VWAP(成交量加权平均价)有本质区别。VWAP看重的是「量」,TWAP看重的是「时间」。

核心区别:

  • TWAP:每个时间点权重相同,适合「时间优先」的场景
  • VWAP:成交量大的时间点权重更高,适合「流动性优先」的场景

我在项目中遇到过一个问题:如果直接用盘口中间价来计算TWAP,遇到快速行情时,价格会剧烈跳动。后来我改用「最近N笔成交价的均值」作为采样点,效果稳定多了。

3.2 切片策略:怎么拆单才合理?

切片策略,就是决定「每个时间点该下多少单」。这是TWAP执行的核心。

最常见的策略有两种:

3.2.1 均匀切片法

把总订单量,平均分配到每个时间切片上。

每片数量 = 总订单量 / 总切片数

举个例子:你要买1000手BTC,执行周期是10分钟,每30秒切一片。

  • 总切片数 = 10分钟 / 30秒 = 20片
  • 每片数量 = 1000手 / 20片 = 50手/片

这种方法的优点是简单、透明。缺点是遇到流动性不足时,50手可能直接吃掉好几个档位,造成滑点。

3.2.2 随机切片法

在均匀切片的基础上,加入随机扰动。比如每片数量在40-60手之间随机浮动。

每片数量 = 基准量 × (1 + 随机因子)

为什么要加随机?

你想想看,如果对手盘发现你每30秒固定下50手,他完全可以提前挂单等你。这就是「被狙击」。随机化之后,对手很难预测你的下单节奏。

我的经验:我个人习惯用「均匀+5%随机」的组合。既保证执行效率,又不容易被识别。曾经有一次,我用纯均匀切片做了一笔大单,结果被高频交易者盯上了,每次我下单前价格就跳一下。从那以后,我再也不敢用纯均匀了。

3.3 执行周期:多久切一片?

执行周期,就是每两笔订单之间的时间间隔。这个参数直接影响执行效果。

常见的周期设置:

市场类型 推荐周期 原因
高流动性(如BTC永续) 5-15秒 订单簿更新快,可以高频执行
中等流动性(如主流币) 30-60秒 需要给市场时间消化订单
低流动性(如小币种) 2-5分钟 避免一次性冲击市场

为什么会这样?

周期太短,比如1秒一单,你的订单会密集出现在订单簿上,容易被识别为算法单。周期太长,比如10分钟一单,那就失去了TWAP「平滑执行」的意义。

避坑指南:我曾经在ETH上设置过3秒的执行周期,结果因为网络延迟,订单堆积在一起,变成了「瞬间大单」。嗯,那笔单子的滑点,够我吃一个月的土。后来我加了一个「防堆积」机制:如果上一单还没成交,下一单就延迟发送。

3.4 核心逻辑流程图

下面这张图,是我自己总结的TWAP执行流程。每次做新策略时,我都会对着这张图检查一遍。

TWAP执行核心逻辑流程图 输入参数 计算切片数量与每片大小 设置执行周期(如30秒) 循环执行:下单 → 等待 → 下一单 全部完成 总数量、执行时长 切片数、随机因子 每片数量 = 总量 / 切片数 加入随机扰动 根据流动性调整 避免周期过短 检查成交状态 防堆积机制

3.5 实战中的几个关键点

讲完了理论,说说实战中我踩过的坑:

  1. 不要死板地按时间切片——如果市场突然出现大单,可以临时调整切片大小。我习惯加一个「流动性检测器」,当盘口深度变化超过20%时,自动调整下一片的大小。
  2. 注意交易所的限频——有些交易所每秒只能发5单。如果你的切片周期是1秒,但每片需要发3单,那就超限了。嗯,这个问题我遇到过,后来在策略里加了一个「限频适配器」。
  3. 考虑网络延迟——从策略发出指令到订单到达交易所,通常有50-200ms的延迟。如果你的切片周期是5秒,这点延迟无所谓。但如果周期是1秒,延迟就占了20%。这时候需要用「预发单」技术来补偿。

一个小技巧:我个人习惯在策略启动前,先发一笔「探测单」,测试当前网络延迟和交易所响应速度。然后根据这个数据,动态调整切片周期。这样能减少很多不必要的滑点。

TWAP的核心,说白了就是「用时间换空间」。把大单拆小,均匀分布,让市场慢慢消化。但要注意,TWAP不是万能的。在极端行情下(比如闪崩),TWAP反而会放大亏损。这时候需要配合止损机制一起使用。

好了,这一章的内容就到这里。记住:切片策略和执行周期,是TWAP的两条腿。一条腿粗一条腿细,走不远的。

专注资料整理