5、Almgren-Chriss模型详解:永久冲击与临时冲击、线性冲击函数、最优执行策略
说到冲击成本建模,Almgren-Chriss模型是我个人最常用的基准模型。为什么?因为它把复杂的问题拆成了两块:永久冲击和临时冲击。说白了,一个影响的是你还没卖完的仓位,另一个影响的是你正在卖的这一单。
5.1 永久冲击 vs 临时冲击
先说说永久冲击。你想想看,当你大单卖出时,市场会记住你的交易行为。这个影响会持续存在,直到你的订单全部执行完毕。我习惯把它理解成「市场记忆」——你卖得越多,市场价格就下降得越厉害,而且这个下降不会因为你停止交易就恢复。
临时冲击就不同了。它只影响你当前这一笔交易。比如你急着要卖1000股,市场深度不够,你只能吃单,价格就会暂时偏离。但等你这单做完,价格很快会回到原来的水平。嗯,这里要注意:临时冲击的恢复速度取决于市场的流动性。
核心区别:
- 永久冲击:影响未执行部分的仓位,不可逆
- 临时冲击:只影响当前交易,可恢复
5.2 线性冲击函数
Almgren-Chriss模型假设冲击函数是线性的。为什么用线性?说白了,数学上好处理,而且在实际项目中,我发现线性近似在中等规模订单上表现还不错。
永久冲击函数:
I(v) = γ * v
其中v是交易速度,γ是永久冲击系数。
临时冲击函数:
J(v) = η * v
η是临时冲击系数。
我记得有一次做回测,发现用线性模型预测的冲击成本,在订单量小于日均成交量10%时,误差基本在5%以内。但超过这个阈值,非线性效应就开始显现了。
实战经验:我建议你在使用线性模型前,先做个小测试。拿历史数据跑一遍,看看你的订单规模是否落在线性区间内。如果偏差太大,可能需要考虑非线性模型。
5.3 最优执行策略
有了冲击模型,下一步就是找最优执行策略。Almgren-Chriss模型的目标很简单:在给定时间内,以最小的总成本完成交易。
总成本 = 市场冲击成本 + 时间风险成本
这里有个权衡:你卖得越快,冲击成本越高;卖得越慢,价格波动的风险越大。我刚开始做这个时,总觉得慢点卖能省钱,结果有一次遇到市场暴跌,亏得我肉疼。
最优策略的数学形式:
x(t) = X * (1 - t/T) + (η/γ) * (1 - e^(-γ(T-t)))
其中X是总订单量,T是执行时间。
这个公式看着复杂,其实逻辑很简单:一开始卖得快一点,后面逐渐放慢。为什么?因为前期仓位重,价格风险大,宁可多付点冲击成本也要尽快减仓。
避坑指南:我曾经在实盘中直接套用这个公式,结果发现市场条件变了,最优策略也跟着变。记住,模型给出的只是参考,你需要根据实时市场数据动态调整。
5.4 知识体系结构图
下面这张图是我自己整理的,把Almgren-Chriss模型的核心逻辑串起来了:
5.5 实战中的注意事项
用Almgren-Chriss模型时,有几个坑我踩过,分享给你:
- 参数估计要谨慎:γ和η不是固定的,它们会随市场状态变化。我习惯每天重新估计一次。
- 流动性假设:模型假设市场深度是无限的,但实际中不是。遇到流动性枯竭,模型会失效。
- 执行时间T:这个参数很关键。T设得太短,冲击成本高;设得太长,价格风险大。我一般用波动率来反推T。
总结一下:Almgren-Chriss模型是个好工具,但它不是万能的。用它做基准,结合你自己的交易经验,才能找到真正的最优策略。