3. 市场冲击模型:滑点的隐形推手

做配对交易的朋友,最怕什么?

不是价差不回归,而是你一进场,价差就跑了。你买,它涨;你卖,它跌。好像市场专门盯着你那点仓位似的。

其实不是市场针对你。是你的订单本身,改变了价格。这就是市场冲击。

我个人习惯把市场冲击分成两类:永久冲击暂时冲击。永久冲击是你把价格推上去后,它回不来了;暂时冲击是流动性被吃掉后,价格会慢慢恢复。配对交易里,我们更关心暂时冲击——因为你的仓位最终要平掉,冲击成本是实打实的损耗。

3.1 线性冲击模型(Almgren-Chriss框架)

Almgren-Chriss框架,说白了就是一套数学工具,帮你算清楚「我下多大的单,会付出多少冲击成本」。它假设冲击成本与交易量成正比。

公式很简单:

冲击成本 = α × 交易量 + β × 交易量^(1/2)

其中α是永久冲击系数,β是暂时冲击系数。实际项目中,这两个系数怎么定?

我建议你直接用历史订单簿数据去拟合。我在一个做市商项目里干过这事——拿过去30天的逐笔成交数据,把每笔订单的成交量与价格变化做回归。结果发现,对于流动性好的股票,α大概在0.0001左右,β在0.005左右。什么意思?你下100万的单子,冲击成本大约0.5个基点。

关键点:Almgren-Chriss模型的核心假设是市场深度是均匀的。但真实市场不是这样。所以它更适合做粗略估算,而不是精确计算。

3.2 平方根冲击模型

这个模型更贴近真实市场。它认为冲击成本与交易量的平方根成正比。

冲击成本 = k × σ × (Q / V)^(1/2)

其中k是常数(通常取0.1~0.5),σ是波动率,Q是你的交易量,V是市场总成交量。

为什么是平方根?因为市场深度不是线性的。你想想看,买一档的挂单量通常只有几百手,买二档可能上千手,越往深处流动性越厚。所以你的订单越大,边际冲击成本反而递减。

我记得有一次做ETF配对,用平方根模型算出来的冲击成本,比线性模型低了30%。但实际跑下来,平方根模型更准。为什么?因为ETF的流动性集中在几个做市商手里,他们的挂单策略就是「浅层薄、深层厚」。

实战技巧:如果你做的是小市值股票配对,建议用平方根模型。大市值股票用线性模型就够了。我一般会两个都算,取保守值。

3.3 经验冲击模型(基于订单簿数据)

前面两个模型都是理论推导。但真实市场更复杂。比如,有些股票在开盘和收盘时冲击成本特别大,中午反而小。再比如,有些股票被程序化交易盯上了,你一挂单就被吃掉。

经验模型就是直接从订单簿数据里学。做法很简单:

  1. 收集过去N天的逐笔订单簿快照(Level 2数据)
  2. 对每一笔市价单,记录它的成交量与价格变化
  3. 按时间、波动率、买卖价差等维度做分组统计
  4. 拟合出一个多维度的冲击函数

我在一个高频团队里见过他们用随机森林做这个。输入特征包括:当前买卖价差、订单簿深度(前5档的总挂单量)、过去1分钟的波动率、时间戳(是否在开盘/收盘附近)。输出就是预期的价格变化。效果比线性模型好不少,但计算量也大。

注意:经验模型容易过拟合。尤其是用机器学习方法时,一定要做样本外测试。我曾经吃过这个亏——模型在训练集上R²高达0.9,一上线就崩了。后来发现是市场微观结构变了,模型没跟上。

3.4 配对交易中的冲击成本分摊

配对交易有个天然优势:你同时做多和做空。冲击成本可以互相抵消一部分。

举个例子:你买入股票A,卖出股票B。如果A和B的流动性差不多,那么买入A的冲击成本是正的(推高价格),卖出B的冲击成本也是正的(压低价格)。但你的净头寸是市场中性,所以整体冲击成本不是简单相加。

我习惯用「净冲击」的概念:

净冲击成本 = |冲击(A) - 冲击(B)|

为什么是绝对值?因为如果A和B的冲击方向相反,它们会互相抵消。比如你买A时价格涨了0.1%,卖B时价格跌了0.1%,那你的实际入场价差其实没变。净冲击成本就是0。

但现实中很少这么完美。我建议你按以下步骤分摊:

  1. 分别计算A和B的冲击成本(用你选定的模型)
  2. 如果A和B的冲击方向相同(比如都是买入),净冲击 = 冲击(A) + 冲击(B)
  3. 如果方向相反,净冲击 = |冲击(A) - 冲击(B)|
  4. 把净冲击成本按比例分配到两腿上(通常按市值比例)

核心思想:配对交易的冲击成本不是两腿独立计算的。你要看的是「净冲击」。如果两腿流动性都很差,那配对交易的优势就没了——还不如单腿做方向性交易。

嗯,这里要注意一点:冲击成本分摊不是静态的。市场深度在变,波动率在变,你的订单执行速度也在变。我一般会在交易前做一次模拟,用蒙特卡洛方法跑1000次,看看冲击成本的分布。如果90%分位数超过预期收益的20%,那这笔交易我就不做了。

说白了,冲击成本是配对交易的隐形杀手。你策略再牛,回测再漂亮,只要没算冲击成本,实盘大概率亏钱。我见过太多人栽在这上面了。

市场冲击模型知识体系 市场冲击模型 线性冲击模型 平方根冲击模型 经验冲击模型 核心公式 冲击 = α×Q + β×√Q 适用:大市值、流动性好 核心公式 冲击 = k×σ×√(Q/V) 适用:小市值、流动性差 核心方法 基于订单簿数据拟合 适用:高频、微观结构复杂 配对交易中的冲击成本分摊 净冲击 = |冲击(A) - 冲击(B)|

最后说一句:冲击模型不是越复杂越好。我见过有人用深度学习预测冲击成本,结果还不如简单的平方根模型。为什么?因为冲击成本本身有随机性,你不可能精确预测。关键是找到一个「够用」的模型,然后做好风险控制。

我的建议:刚开始做配对交易,先用线性模型。跑一段时间后,对比实际成交价和理论价,再决定要不要升级到平方根或经验模型。别一上来就搞复杂的,容易迷失。

好了,冲击模型就聊到这。记住一句话:冲击成本是滑点的隐形推手,算不清楚它,你的策略就是纸上谈兵。