17、冲击成本因子分析:订单规模、波动率、买卖价差、市场情绪
冲击成本这东西,说白了就是你的订单本身在“推”价格。你买,价格就涨;你卖,价格就跌。这个“推”的力度有多大,就是冲击成本。我做了这么多年量化,发现真正决定这个力度的,其实就四个核心因子:订单规模、波动率、买卖价差、市场情绪。
今天咱们就把这四个因子拆开揉碎了讲。嗯,每个因子我都会结合我踩过的坑来说。
17.1 订单规模:最直接的“推手”
订单规模,就是你要交易的量。这个因子最直观——你买得越多,价格被推得越高。
但这里有个关键点:冲击成本不是线性的。你想想看,买100股和买10000股,冲击成本不是100倍的关系,而是可能变成1000倍。为什么?因为流动性是有限的。
我个人习惯用这个公式来估算:
冲击成本 ≈ α × (订单量 / 市场深度) ^ β
其中α和β是经验参数。β通常在0.5到0.8之间。我在项目中遇到过一只小盘股,β值高达1.2,那冲击成本简直吓人。
核心结论:订单规模因子是非线性的。小单子影响不大,大单子会引发“雪崩效应”。
17.2 波动率:市场的“脾气”
波动率,说白了就是市场今天的“脾气”怎么样。脾气大的时候,你轻轻一碰,价格就跳得老远。
为什么会这样?因为高波动率意味着市场深度浅,做市商和流动性提供者都在收缩。我记得有一次做回测,发现波动率翻倍时,冲击成本能翻3倍。嗯,这个放大效应很多人会忽略。
我建议你在建模时,把波动率作为一个乘数因子来处理:
冲击成本 = 基准冲击 × (1 + γ × (波动率 - 基准波动率))
γ这个系数,我一般取0.8到1.5之间。你可以在自己的数据上拟合一下。
避坑指南:我曾经用日波动率去建模分钟级别的冲击成本,结果一塌糊涂。后来才意识到,波动率的时间尺度必须和交易频率匹配。做高频就用分钟级波动率,做日内就用小时级。
17.3 买卖价差:流动性的“温度计”
买卖价差,就是买一价和卖一价之间的差距。这个指标直接告诉你,市场现在“愿不愿意”跟你交易。
价差越小,流动性越好,冲击成本越低。价差越大,说明做市商在“躲着你”,你一进场就会被宰。
我一般把价差作为冲击成本的下限。什么意思?就是你至少得付出半个价差的成本。然后订单规模再往上加。
| 价差类型 | 典型值 | 冲击成本影响 |
|---|---|---|
| 窄价差(<0.01%) | 大盘蓝筹股 | 冲击成本低,约0.02%-0.05% |
| 中等价差(0.01%-0.05%) | 中小盘股 | 冲击成本中等,约0.1%-0.3% |
| 宽价差(>0.05%) | 小盘/垃圾股 | 冲击成本高,可能超过1% |
你看这个表就明白了。价差宽的时候,冲击成本会急剧上升。我建议你在建模时,把价差作为一个分段函数来处理。
17.4 市场情绪:看不见的“手”
市场情绪这个因子,很多人觉得玄乎。其实它很实在——就是市场参与者现在的“恐慌”或“贪婪”程度。
情绪高涨时,大家抢着买,你买的时候冲击成本会小一些(因为有人接盘)。但情绪恐慌时,大家都在卖,你卖的时候冲击成本会小一些(因为有人抄底)。
嗯,这里要注意:情绪因子是方向性的。它会影响冲击成本的不对称性。
我常用的情绪指标有:
- 资金流向:大单净流入/流出比例
- 涨跌家数比:上涨家数/下跌家数
- 期权隐含波动率:反映市场对未来波动的预期
- 社交媒体情绪:比如雪球、微博上的讨论热度
我记得有一次,我用社交媒体情绪因子优化了冲击成本模型,预测精度提升了15%。当然,这个数据源要清洗得很干净才行。
警告:市场情绪因子容易过拟合。我见过有人把100个情绪指标塞进模型,结果回测漂亮,实盘一塌糊涂。建议你只选3-5个最核心的指标。
17.5 四个因子的综合建模
好了,四个因子都讲完了。现在的问题是:怎么把它们组合起来?
我个人习惯用这个框架:
冲击成本 = f(订单规模, 波动率, 买卖价差, 市场情绪)
具体形式:
冲击成本 = (α × 订单规模^β) × (1 + γ × 波动率) × (1 + δ × 价差) × (1 + ε × 情绪因子)
这个公式是乘性结构,因为四个因子之间是相互放大的关系。你想想看,大订单 + 高波动率 + 宽价差 + 恐慌情绪,那冲击成本会爆炸式增长。
下面我画了一张图,帮你理清这四个因子的关系:
你看这张图就清楚了。四个因子不是孤立的,它们之间还有交互效应。比如高波动率时,价差通常会变宽;市场恐慌时,订单规模的影响会被放大。
17.6 实战中的因子选择
说了这么多,你可能想问:到底该用哪些因子?
我的建议是:先做因子筛选。用你的历史数据跑一遍,看看每个因子对冲击成本的解释力度。我一般用这个流程:
- 单因子分析:每个因子单独回归,看R²和显著性
- 相关性检查:因子之间相关性太高的话,要剔除一个
- 多因子建模:用逐步回归或Lasso选出最优组合
- 样本外验证:用未参与训练的数据验证模型稳定性
我曾经犯过一个错误:把四个因子全塞进去,结果模型在样本外表现很差。后来发现是波动率和价差相关性太高(0.7以上),导致模型不稳定。去掉一个后,效果反而更好。
小技巧:如果你时间有限,可以先从订单规模和波动率两个因子开始。这两个因子通常能解释70%以上的冲击成本变化。价差和情绪因子是锦上添花。
好了,关于冲击成本的四个核心因子,我就讲到这里。记住:没有完美的模型,只有不断迭代的模型。你可以在自己的数据上多试试不同的因子组合,找到最适合你交易场景的那一套。