一、市场冲击成本概述
1.1 什么是市场冲击成本?
做量化交易这么多年,我经常被问到:「你的策略回测那么漂亮,怎么实盘就不行了?」
原因有很多,但最核心的一个——市场冲击成本。
说白了,市场冲击成本就是:你下单时,因为你的订单本身影响了市场价格,导致实际成交价偏离了预期价格。
举个例子:
- 你想买1000股某股票,当前卖一价是10.00元
- 但卖一只有200股,你吃掉这200股后,卖二变成了10.01元
- 再吃掉卖二的300股,卖三变成了10.02元
- 等你买完1000股,平均成交价可能是10.015元
- 而你的预期成本是10.00元——这多出来的0.015元,就是冲击成本
嗯,你可能觉得0.015元不多。但如果你每天交易几百万、几千万呢?
核心公式:
冲击成本 = 实际成交均价 - 下单时的基准价格
(对于卖出订单,则是基准价格 - 实际成交均价)
1.2 为什么冲击成本如此重要?
我见过太多团队,回测年化收益30%,实盘一跑只剩5%。
为什么?冲击成本把利润吃掉了。
来看几个关键点:
- 高频交易的核心敌人:高频策略每次赚的利润可能只有0.01%,冲击成本稍微大一点,利润就没了
- 大资金的天敌:资金量越大,冲击成本越明显。100万和1个亿的冲击成本,完全不是一个量级
- 策略容量的天花板:很多策略在小资金时表现很好,一上规模就崩了——冲击成本是主要原因之一
我的经验:
我在做CTA策略时,曾经忽略冲击成本,结果实盘亏损了三个月才找到原因。后来我把冲击成本模型加入回测,策略的夏普比率直接从2.1降到了1.3——这才是真实水平。
1.3 冲击成本在量化交易中的角色
冲击成本不是孤立存在的。它和交易系统的每个环节都有关联。
我习惯把量化交易系统分成三层:
- 信号层:生成买卖信号
- 执行层:把信号变成实际订单
- 风控层:控制风险
冲击成本主要影响执行层,但它反过来会影响信号层——因为如果你知道冲击成本很高,你可能会调整信号的触发条件。
举个例子:
你的策略在回测中显示,当价格突破20日均线时买入,能赚0.5%。但实盘时,因为冲击成本,实际只能赚0.2%。
这时候你有两个选择:
- 调整策略,只在冲击成本低的时候交易(比如流动性好的时段)
- 优化执行算法,降低冲击成本
你看,冲击成本把「策略设计」和「执行优化」绑在了一起。
1.4 冲击成本的构成
冲击成本不是单一的东西。我把它拆成三部分:
| 组成部分 | 定义 | 典型来源 |
|---|---|---|
| 瞬时冲击 | 订单执行瞬间造成的价格偏离 | 订单簿深度不足、大单吃穿多个价位 |
| 持久冲击 | 订单执行后,价格没有完全恢复 | 信息泄露、市场参与者跟风 |
| 延迟冲击 | 因等待执行而错过的价格变动 | 下单延迟、网络延迟、撮合延迟 |
你想想看:
- 瞬时冲击是「你推了市场一把」
- 持久冲击是「市场被你推歪了,回不来了」
- 延迟冲击是「你犹豫了一下,价格跑了」
这三者加在一起,才是完整的冲击成本。
避坑指南:
我曾经只关注瞬时冲击,忽略了持久冲击。结果在某个流动性差的品种上,我的订单把价格推高了,但价格一直没回落——我买在了山顶。从那以后,我每次建模都会把三个冲击分开计算。
1.5 冲击成本的量化框架
说了这么多,我们得有个框架来量化它。
我个人习惯用这个结构:
冲击成本 = f(订单规模, 市场流动性, 时间跨度, 波动率)
其中:
- 订单规模:你打算交易的数量
- 市场流动性:订单簿深度、买卖价差
- 时间跨度:你愿意花多长时间完成交易
- 波动率:市场本身的波动程度
这个框架看起来简单,但每个变量背后都有复杂的模型。
比如「市场流动性」,不是简单看一个「深度」指标就行的。你得考虑:
- 订单簿的形状(是平坦还是陡峭?)
- 不同价位的挂单量分布
- 历史冲击模式的统计特征
嗯,这些我们后面会详细讲。
1.6 知识体系总览
为了让你对整个章节有个直观理解,我画了一张图:
1.7 小结
这一章我们聊了:
- 冲击成本是什么——说白了就是「你的订单推高了价格」
- 为什么重要——它决定了策略能不能赚钱
- 在量化交易中的角色——连接信号和执行的关键环节
- 三个组成部分——瞬时、持久、延迟
- 量化框架——四个核心变量
嗯,这些都是基础。但基础不牢,后面建模就会出问题。
我见过太多人一上来就搞复杂的数学模型,结果连冲击成本的基本概念都没搞清楚。最后模型跑出来的结果,跟实际市场完全对不上。
所以,先把这些基础吃透。后面我们会一步步深入,从简单的线性模型到复杂的非线性模型,再到机器学习方法。