4. 冲击成本模型:Almgren-Chriss模型、平方根模型、市场冲击的实证分析
说到冲击成本,我脑子里第一个蹦出来的画面,就是2015年股灾那会儿。我有个朋友,管着几十亿的指数增强产品,一天之内调仓,结果硬生生把一只小盘股拉涨停了。嗯,那天的冲击成本,够他喝一壶的。
冲击成本这东西,说白了就是「你买,它就涨;你卖,它就跌」。你想想看,大单砸下去,市场流动性不够,价格自然就跑了。今天我们就来聊聊怎么量化这个成本。
4.1 为什么冲击成本是量化投资的「隐形杀手」
我个人习惯把冲击成本分成两块:
- 暂时性冲击:你的单子把价格打飞了,但过一会儿市场自己会恢复。这就像往平静的湖面扔块石头,水花溅起来,但很快又平了。
- 永久性冲击:你的交易改变了市场对这只股票的预期,价格再也回不去了。这就像你往湖里倒了一桶油漆,水色变了,回不来了。
做指数增强的朋友,换手率一高,冲击成本就蹭蹭往上涨。我见过一个团队,年化超额收益做出来8%,结果冲击成本吃掉5%,你说心不心疼?
4.2 Almgren-Chriss模型:业界最经典的冲击成本框架
这个模型,我用了快十年了。它把交易拆成两部分:
- 永久性冲击:与交易量成正比,跟交易速度无关。你买100万股,分10天买和1天买,永久性冲击是一样的。
- 暂时性冲击:跟交易速度有关。你越快买,暂时性冲击越大。
公式长这样:
永久性冲击 = α * (交易量 / 日均成交量) * 价格
暂时性冲击 = β * (交易量 / 日均成交量)^γ * 价格 * sign(买卖方向)
其中α、β、γ都是需要拟合的参数。我一般用过去3个月的交易数据来拟合,效果还不错。
实际应用中的坑:
- α和β不是固定的,不同股票差异很大。小盘股的α可能是大盘股的3-5倍。
- γ通常在0.5到0.7之间,我见过有人直接用0.5,结果低估了冲击成本。
4.3 平方根模型:简单粗暴但有效
说实话,Almgren-Chriss模型参数太多,有时候拟合起来很头疼。这时候我会用平方根模型,它简单得多:
冲击成本 = k * sqrt(交易量 / 日均成交量) * 波动率 * 价格
k是一个常数,一般在0.5到1.5之间。波动率越高,冲击成本越大,这个逻辑很直观——波动大的股票,流动性往往也差。
为什么用平方根?
我刚开始做的时候也不理解,后来看了很多实证研究才发现,市场冲击和交易量的平方根成正比,这个关系在多个市场都成立。A股、港股、美股,我都验证过。
4.4 市场冲击的实证分析:我踩过的坑
讲理论没意思,咱们看点真实数据。我曾经做过一个研究,用某券商的全量交易数据,分析了2018年到2020年A股的市场冲击特征。
| 股票类型 | 平均冲击成本(bp) | 冲击成本中位数(bp) | 冲击成本标准差(bp) |
|---|---|---|---|
| 沪深300成分股 | 3.2 | 2.8 | 1.5 |
| 中证500成分股 | 5.7 | 4.9 | 2.8 |
| 小盘股(市值后20%) | 12.4 | 10.1 | 6.3 |
你看,小盘股的冲击成本是沪深300的4倍。这就是为什么做指数增强时,我特别强调要控制小盘股的权重。
几个有意思的发现:
- 上午开盘后30分钟和下午收盘前30分钟,冲击成本最大。我一般避开这两个时段交易。
- 涨停板的股票,冲击成本是平时的5倍以上。嗯,这个我吃过亏。
- 同一只股票,买入和卖出的冲击成本不对称。卖出的冲击成本通常比买入大20%左右。
4.5 如何把冲击成本模型用到指数增强中
我个人习惯的做法是这样的:
- 事前估算:每天调仓前,用平方根模型估算每只股票的冲击成本。简单,快,够用。
- 事中控制:交易过程中,用Almgren-Chriss模型动态调整下单速度。如果冲击成本超过阈值,就放慢速度。
- 事后归因:每天收盘后,把实际冲击成本和模型预测值做对比,更新参数。
举个例子,假设我要买入1000万的某只股票,日均成交额是5000万,波动率是30%。用平方根模型算一下:
冲击成本 = 1.0 * sqrt(1000/5000) * 0.3 * 1000万
= 1.0 * 0.447 * 0.3 * 1000万
= 13.4万
也就是说,这笔交易光冲击成本就要吃掉13.4万。如果我的预期超额收益只有50万,那这笔交易就不划算了。
4.6 知识体系总览
下面这张图,是我自己整理的市场冲击模型知识框架,你看一眼就能明白整个逻辑:
你看,整个体系其实就三层:模型层、实证层、应用层。做指数增强的朋友,重点在应用层,但模型层和实证层是基础,不能跳过。
好了,关于冲击成本模型,今天就聊到这儿。记住一句话:冲击成本不是算出来的,是管出来的。模型给你的是参考,真正控制成本,靠的是交易纪律和系统执行。