13、市场冲击的非线性特征:凸性效应、阈值效应、极端行情下的冲击放大
各位做量化交易的朋友,咱们今天聊一个很实在的话题——市场冲击的非线性特征。
我刚开始做高频交易那会儿,一直以为市场冲击是线性的。说白了,就是觉得买100手和买200手,成本翻倍就完事了。结果呢?有一次在股指期货上试水,我按线性模型算好了冲击成本,结果实际滑点比预期大了将近三倍。那笔交易亏得我肉疼。
从那以后我就明白了:市场冲击,从来不是线性的。它有自己的脾气,有凸性,有阈值,还有极端行情下的疯狂放大。
13.1 凸性效应:越买越贵,越卖越贱
凸性效应,说白了就是订单量越大,边际冲击成本越高。你想想看,市场深度是有限的,你吃掉第一层挂单,价格动0.1个tick;吃掉第二层,可能就要动0.2个tick了。
我习惯用一个简单的公式来描述:
冲击成本 = a * Q + b * Q²
这里的Q是订单量,a是线性系数,b是凸性系数。b越大,凸性越明显。
我在项目中遇到过一只流动性很差的股票,日成交额才几千万。有一次我们想建仓500万,按线性模型算冲击成本大概0.3%,结果实际成交后一算,冲击成本接近1.2%。为什么?因为b系数太大了,凸性效应直接把成本拉高了四倍。
关键点:凸性效应在流动性差的品种上尤其明显。做小盘股、可转债、或者某些期货合约时,一定要把凸性系数算进去。
13.2 阈值效应:过了那个坎,市场就变了
阈值效应,是我个人觉得最容易被忽视的非线性特征。市场存在一个「临界点」,订单量在这个点以下,冲击很小;一旦超过这个点,冲击会突然放大。
为什么会这样?
嗯,这里要注意:市场上有做市商、有套利者、有散户。当你的订单量小于做市商能承受的范围时,他们愿意接单,价格波动不大。但一旦超过某个阈值,做市商会撤单,套利者会观望,散户会恐慌——流动性瞬间消失。
我曾经在螺纹钢期货上吃过这个亏。当时我算好了冲击成本,觉得没问题,结果订单刚打到市场,做市商集体撤单,盘口深度从200手直接掉到30手。那一瞬间,我的订单就像石头砸进了水坑,价格直接跳了三个tick。
避坑指南:我建议你在交易前先做一次「阈值测试」。用一个小单子探探市场的深度和弹性,看看做市商的反应。如果发现阈值很低,那就得拆单,或者换时间窗口。
13.3 极端行情下的冲击放大
极端行情,比如闪崩、熔断、或者重大消息发布时,市场冲击的非线性特征会被急剧放大。这时候,凸性效应和阈值效应会叠加,形成所谓的「冲击放大」现象。
我记得2020年3月,美股熔断那几天,我有个朋友做标普500期货的套利。他按正常市场算的冲击成本,结果实际滑点比预期大了十倍。为什么?因为极端行情下,市场深度几乎为零,做市商全部跑路,剩下的全是恐慌盘。
我总结了一个经验公式,在极端行情下比较管用:
冲击成本(极端) = 冲击成本(正常) * (1 + k * VIX / 20)
这里的VIX是恐慌指数,k是放大系数,一般在2到5之间。VIX越高,放大越明显。
警告:极端行情下,不要相信任何历史回测的冲击成本数据。历史不会简单重复,但人性会。这时候,保守一点,把冲击成本乘以3到5倍,再决定是否交易。
13.4 知识体系总览
下面这张图,是我自己整理的市场冲击非线性特征的知识框架。你可以把它当作一个检查清单,每次做交易前过一遍:
13.5 实战中的应对策略
说了这么多理论,咱们聊聊怎么落地。我个人的做法是:
- 拆单是基本功:大单拆成小单,每单控制在阈值以下。我习惯用TWAP或者VWAP算法,但会动态调整切片大小。
- 实时监控凸性系数:在交易过程中,我会实时计算当前市场的凸性系数b。如果b突然变大,说明市场开始「变硬」了,得减速。
- 极端行情下直接停手:如果VIX超过30,或者市场出现熔断,我建议直接停止所有大额交易。这时候做市商都不玩了,你进去就是送钱。
一个小技巧:我习惯在交易前先跑一个「冲击成本扫描」。用历史数据拟合出凸性系数b和阈值T,然后根据当前市场状态,动态调整订单策略。这个扫描程序我写了大概200行Python代码,跑起来很快,但能省下不少真金白银。
好了,关于市场冲击的非线性特征,今天就聊到这儿。记住一句话:市场不是线性的,你的交易策略也不应该是。