3. 市场冲击模型:线性冲击模型、平方根冲击模型、Almgren-Chriss框架
好,我们接着聊市场冲击模型。
上一章我们讲了订单簿的微观结构,说白了就是看透了盘口的「五脏六腑」。但光看懂还不够,我们得知道——我这一笔大单砸下去,到底会推高多少价格?这,就是市场冲击模型要解决的问题。
我个人习惯把市场冲击模型分成三类:线性冲击模型、平方根冲击模型,以及业界用得最多的Almgren-Chriss框架。咱们一个一个来拆。
3.1 线性冲击模型
线性冲击模型,是最简单、最直觉的一种假设。
它认为:你交易的数量越大,对价格的冲击就越大,而且这个关系是线性的。
公式长这样:
ΔP = λ × Q
其中:
- ΔP 是价格变化(冲击成本)
- λ 是冲击系数(由市场流动性决定)
- Q 是你的交易量
嗯,这里要注意:这个模型虽然简单,但实际用起来误差不小。我在项目中遇到过,用线性模型去估算大单冲击,结果实际滑点比模型预测高出30%以上。为什么?因为市场冲击不是线性的,尤其是大单,越往后推,边际冲击越大。
核心问题:线性模型忽略了「订单簿深度」的非均匀分布。你想想看,吃掉了前10档挂单,第11档的挂单量可能突然变薄,冲击成本会跳升。
3.2 平方根冲击模型
平方根冲击模型,比线性模型更贴近真实市场。
它的核心假设是:冲击成本与交易量的平方根成正比。
公式:
ΔP = σ × √(Q / V)
其中:
- σ 是波动率
- Q 是你的交易量
- V 是市场总成交量(或流动性指标)
这个模型的好处是——它抓住了「边际冲击递增」的特性。你交易量翻倍,冲击成本不是翻倍,而是只增加约41%(因为√2 ≈ 1.414)。
我曾经用这个模型回测过BTC的订单簿数据,效果比线性模型好不少。但有个坑:它假设市场波动率σ是常数,这在实际中不成立。遇到突发新闻,波动率瞬间飙升,模型就失效了。
我的经验:平方根模型适合用在「正常市场环境」下做粗略估算。如果市场处于极端行情,建议用下一节的Almgren-Chriss框架,它更灵活。
3.3 Almgren-Chriss框架
终于到了重头戏。
Almgren-Chriss框架(简称A-C模型),是目前量化交易领域最经典的市场冲击模型。它把冲击成本拆成了两部分:
- 永久冲击(Permanent Impact):你的交易对市场造成的「不可逆」影响。说白了,就是你买完,价格回不去了。
- 临时冲击(Temporary Impact):你的交易对市场造成的「短期」影响。过一会儿,价格会恢复一部分。
公式稍微复杂一点:
永久冲击:ΔP_perm = γ × σ × (Q / V)^α
临时冲击:ΔP_temp = η × σ × (Q / V)^β
其中:
- γ、η 是冲击系数(需要从历史数据中拟合)
- σ 是波动率
- Q 是交易量
- V 是市场成交量
- α、β 是指数参数(通常α取0.5~1,β取0.5~0.7)
我个人觉得,A-C框架最厉害的地方在于——它把「时间」这个维度加了进来。你可以控制交易速度,在「冲击成本」和「等待风险」之间做权衡。
避坑指南:我曾经在实盘里直接用默认参数跑A-C模型,结果滑点比预期大了两倍。后来发现,不同品种的冲击系数差异巨大。比如BTC的γ值可能是ETH的3倍。所以,一定要用本地数据重新拟合参数,别偷懒。
3.4 三种模型的对比
| 模型 | 复杂度 | 精度 | 适用场景 |
|---|---|---|---|
| 线性冲击模型 | 低 | 低 | 小单、流动性极好的市场 |
| 平方根冲击模型 | 中 | 中 | 正常市场、中等规模订单 |
| Almgren-Chriss框架 | 高 | 高 | 大单、算法交易、做市策略 |
3.5 核心知识体系
下面这张图,是我自己梳理的市场冲击模型知识结构。你看一眼,就能明白它们之间的关系。
3.6 实战中的选择建议
说了这么多,到底该用哪个?
我的建议是:
- 如果你只是做回测模拟,用平方根模型就够了,简单且有一定精度。
- 如果你要实盘执行算法交易,必须上Almgren-Chriss框架。别嫌它复杂,它能帮你省下真金白银。
- 线性模型?嗯,我只有在写教学Demo时才用它。实盘里基本不用。
重要提醒:所有模型都是对真实市场的近似。你永远无法精确预测冲击成本。所以,永远给你的订单留出滑点缓冲。我一般会在模型预测值上加20%的余量。
好了,市场冲击模型就聊到这儿。下一章我们讲如何用这些模型来优化你的交易策略——说白了,就是怎么在「少花钱」和「快成交」之间找到那个黄金平衡点。
公众号:蓝海资料掘金营,微信deep3321