4、冲击成本计算:瞬时冲击成本、永久冲击成本、时间加权平均价格(TWAP)
冲击成本这东西,说白了就是「你下单时,市场给你的惩罚」。我刚开始做高频交易那会儿,总觉得自己的订单能悄无声息地成交,结果一跑回测,滑点吃掉了我一半利润。嗯,从那以后,我再也不敢小看冲击成本了。
今天咱们把冲击成本拆成三块来讲:瞬时冲击、永久冲击,以及一个经典算法——TWAP。这三者其实是同一个问题的不同侧面。
4.1 瞬时冲击成本:你推了市场一把
瞬时冲击,也叫「临时冲击」。它指的是你的订单进入市场后,短时间内造成的价格偏离。
举个例子:
- 当前买一价 10.00,卖一价 10.01
- 你想买入 1000 股,但卖一只有 200 股
- 你的订单会吃掉卖一到卖五的所有挂单
- 成交均价可能变成 10.05
这 0.04 的差价,就是瞬时冲击成本。
瞬时冲击成本 = 成交均价 - 下单前基准价
我在项目中遇到过一种情况:某个小市值股票,流动性极差。我挂了一笔 5000 股的买单,结果直接把价格从 15.20 推到了 15.80。那 0.60 的冲击,比我预期的交易成本还高。后来我学乖了,对这种票,要么拆单,要么放弃。
4.2 永久冲击成本:市场记住了你
永久冲击,指的是你的订单对市场造成的长期影响。即使你的订单已经成交完毕,价格也没有回到原来的位置。
为什么会这样?
- 你的大单被市场解读为「有内幕消息」
- 做市商调整了报价,认为新的均衡价格更高
- 其他算法交易者跟风买入,推高了价格
永久冲击的估算方法:
永久冲击 = (成交后 30 分钟的价格 - 下单前基准价) × 方向因子
方向因子:买入为 +1,卖出为 -1。如果买入后价格涨了,说明有永久冲击;如果价格跌回去了,那只是瞬时冲击。
4.3 时间加权平均价格(TWAP)
TWAP 是一种经典的拆单算法。它的目标很简单:让成交均价尽量接近这段时间内的平均价格。
怎么做?
- 把总订单量均匀分配到每个时间切片
- 每个切片内,用市价单或限价单执行
- 不关心成交量分布,只关心时间均匀
时间均匀 = 价格均匀?
不一定,但在流动性好的市场里,这个假设基本成立。
我举个例子:
总订单:12000 股
执行时间:12:00 - 12:10(10 分钟)
切片:每 1 分钟一个切片
每个切片:1200 股
每个切片执行时,你直接按当时的市价买入。10 分钟后,你的成交均价应该接近这 10 分钟内的 VWAP(成交量加权均价)。
4.4 三种冲击成本的对比
| 类型 | 时间尺度 | 是否可逆 | 典型场景 |
|---|---|---|---|
| 瞬时冲击 | 秒级 | 是(价格会恢复) | 小单、流动性好的品种 |
| 永久冲击 | 分钟~小时级 | 否(价格不会恢复) | 大单、信息敏感品种 |
| TWAP 成本 | 整个执行周期 | 部分可逆 | 大单拆单、被动执行 |
4.5 知识体系图:冲击成本的核心逻辑
下面这张图,帮你理清三者之间的关系:
4.6 实战中的避坑指南
我曾经踩过一个坑:用 TWAP 执行一笔 50 万股的订单,切片设成了 1 分钟。结果每个切片都吃掉了一整档深度,累计冲击成本比一次性吃掉还高。后来我改成 5 分钟切片,配合限价单,成本才降下来。
给你几个建议:
- 先算流动性:用订单簿深度估算你的订单占市场总深度的比例
- 区分瞬时和永久:如果价格 5 分钟后还没回来,那就是永久冲击
- TWAP 不是万能药:流动性差时,用 VWAP 或 POV(成交量百分比)更合适
好了,冲击成本这块就聊到这儿。你想想看,如果你现在要执行一笔大单,你会先算瞬时冲击还是永久冲击?我个人建议,先看流动性,再选算法。别一上来就上 TWAP,有时候慢一点反而更省钱。
公众号:蓝海资料掘金营,微信deep3321