Skip to main content
大单一次性成交,就要为自己造成的冲击买单:它吃穿订单簿,每一档都比上一档更差。TWAP 订单把同样的数量铺在时间上,按固定间隔取走一片,让订单簿在两片之间有时间回补。 代价很明确:你承担执行窗口内的价格风险——慢慢做的过程里,市场可能走向不利方向——换来的是避开一次性完成的冲击。

参数

由持续时间和间隔可得: N=持续时间间隔+1基础分片=QNN = \frac{\text{持续时间}}{\text{间隔}} + 1 \qquad \text{基础分片} = \frac{Q}{N} 启动时立即发出一片,之后每隔一个间隔发出一片,窗口结束时再发一片。

启动前的校验

如果一笔 TWAP 按指定参数根本不可能完成,它会在一开始就被拒绝:
  • 每片必须大到能构成有效订单——总量按计划切分后不能低于市场最小值
  • 每片不得超过市场的最大订单数量
  • 全部数量必须满足起始保证金
  • 若为只减仓,总量不得超过你当前的仓位
提前失败很重要。TWAP 要是跑到一半才发现分片低于最小值,你会被留在部分执行的状态里,还没有干净的收尾办法。

执行与追赶

每一片都作为带 3% 滑点边界的市价单提交。执行由链上驱动,不看挂钟,所以每一片落在间隔走完之后的第一个区块上。 某一片成交低于预期——订单簿薄、顶到滑点边界——缺口不会丢。计划表会对照此刻本应到达的位置: 目标=t已用t总时长×Q\text{目标} = \frac{t_{\text{已用}}}{t_{\text{总时长}}} \times Q 当实际成交落后于该目标时,后续分片会被放大以追赶:
成交不足
追赶补量
为什么设上限策略拿越发越大的订单去应付流动性缺失,最后会变成它本想避开的那种冲击。目标 = 已用时间 ÷ 总时长 × 总量
六片,总量 6.0 — 第 3 片在薄簿里成交不足
第 1 片1.00
第 2 片1.00
第 3 片0.40
第 4 片1.20
第 5 片1.20
第 6 片1.20
3× 基础数量 — 上限
上限才是关键。追赶是好事,无限制的追赶不是——策略拿“越发越大的订单”去应付流动性缺失,最后会变成它本想避开的那种冲击。任何一片都不超过基础数量的三倍,所以恢复是渐进的。 彻底失败的一片会被跳过并上报。策略不会暂停——流动性稀薄的某个瞬间里的一片坏单,不该拖住整笔订单的其余部分。

随机化

打开随机化,各片就不再相同。每发一片之前,策略先算出剩余量的平均值,再在它周围一个安全区间里取一个数量。 固定间隔上的固定数量是一种模式,而订单流中的模式对任何盯着看的人都是信息。随机化去掉这种规律,同时不改变计划表的总量。 剩余数量的算术仍然是硬约束。随机化只改变每片的大小;它不会让策略超发,也不会在最后留下残量。

什么时候 TWAP 是对的工具

该用:订单相对可见深度偏大,你又有时间,而且“窗口内的平均价格”是个可以接受的目标。 不该用:你现在就要这个仓位——TWAP 和紧迫性正好相反。心里有一个具体价格时也不该用:TWAP 没有价格目标,只有时间计划表。价格比即时性更重要的话,阶梯订单会在一段价格区间上挂出限价单。
TWAP 不保证全部执行。分片是受滑点边界约束的市价单,行情持续单边时可能反复成交不足。追赶又有上限,所以一个以“市场已经走反”收尾的窗口,可能让订单剩下相当大一部分没做完。

后续阅读

阶梯订单

拆到价格上而不是时间上。

市价单

每一片所受的滑点边界。

订单簿

判断你的订单相对深度是否偏大。

手续费

每一片都是吃单订单,都付吃单费率。