第四章:时间加权平均价格算法(TWAP)
TWAP,全称 Time-Weighted Average Price。说白了,就是把一个大单子,均匀地切碎,在固定时间段内分批执行。
我刚开始做算法交易那会儿,觉得这玩意儿太简单了。不就是个定时器加循环吗?后来踩了坑才发现,越是简单的东西,细节越要命。
4.1 TWAP 的核心原理
TWAP 的逻辑很直白:
- 你有一个总订单,比如 100 万股
- 你设定一个执行窗口,比如 10:00 到 11:00
- 系统把这个窗口切成 N 个等长的时间片
- 每个时间片,你只下总单量的 1/N
举个例子。假设你在 10:00 要卖出 60 万股,窗口是 1 小时。切成 12 个 5 分钟片,每片只卖 5 万股。就这么简单。
嗯,这里要注意:TWAP 不关心价格。它只关心时间。价格高也好,低也好,到点就下单。这是它和 VWAP 最大的区别。
4.2 数学公式
TWAP 的数学表达其实很简洁:
TWAP = (1/N) * Σ(P_i)
其中:
- N = 总时间片数量
- P_i = 第 i 个时间片的成交价格
你想想看,这个公式意味着什么?它把每个时间片的成交价一视同仁。不管那个时间片成交量是大是小,权重都一样。
我在项目中遇到过一个问题:如果某个时间片流动性特别差,硬要下单,就会把价格打得很远。TWAP 不考虑这个,所以它更适合流动性好的股票。
4.3 适用场景
TWAP 不是万能的。我个人习惯把它用在以下几个场景:
| 场景 | 说明 |
|---|---|
| 大盘股 | 流动性好,每片都能顺利成交 |
| 非紧急订单 | 不急着在几分钟内完成,可以慢慢来 |
| 指数跟踪 | 需要均匀建仓或减仓时 |
| 隐藏意图 | 不想让市场察觉你在大量买卖 |
说白了,TWAP 最适合那种「不着急、不显眼、不折腾」的订单。
4.4 优缺点分析
优点
- 实现简单:几行代码就能跑起来
- 可预测性强:你知道每个时间片下多少单
- 市场冲击小:单子切碎了,不会吓到对手盘
- 隐藏意图:别人很难看出你在执行大单
缺点
- 不跟踪价格:价格跌了你也得卖,涨了你也得买
- 忽略流动性:流动性差的时间片,硬下会吃亏
- 执行成本不确定:最终成交价可能偏离市场均价
- 不适合小盘股:流动性不足,容易把价格打飞
我曾经吃过一次亏。那是个小盘股,我用了 TWAP,结果在某个时间片里,我的单子占了当时盘口 80% 的卖单。价格直接被打下去 2 个点。嗯,从那以后,我对小盘股再也不敢用纯 TWAP 了。
4.5 核心逻辑流程图
下面这张图,是我自己画的一个 TWAP 执行流程。你看一眼就明白了:
4.6 避坑指南
我曾经犯过的错:
- 把时间片切得太细(比如 10 秒一片),结果频繁报单被交易所限流
- 没考虑开盘和收盘的波动,在 9:30 和 15:00 附近硬下
- 忽略了除权除息日,导致数量计算错误
我的建议:
- 时间片长度建议 1-5 分钟,别太短
- 避开开盘前 5 分钟和收盘前 5 分钟
- 如果流动性突然变差,可以临时暂停 TWAP
- 配合冰山订单使用,效果更好
一句话总结:
TWAP 是算法交易里的「老实人」。它不耍花招,不预测价格,只是老老实实地按时间均匀执行。适合大盘股、非紧急订单。但别指望它帮你优化价格,它只负责「均匀」。
公众号:蓝海资料掘金营,微信 deep3321