第1章:大单交易冲击成本建模与实操

1.1 为什么冲击成本是量化交易的核心

做量化交易这些年,我见过太多人把精力全花在预测价格上。说实话,预测准了方向,最后却亏在交易执行上,这种事我遇到过不下十次。

冲击成本是什么?简单说,就是你的大单子进场时,把价格推高了(买的时候),或者砸低了(卖的时候)。你想想看,本来想买在100块,结果因为单子太大,成交均价变成了100.5。这0.5块,就是冲击成本。

我个人习惯把冲击成本分成两类:

  • 永久冲击:你的交易改变了市场供需,价格回不去了
  • 临时冲击:只是流动性被暂时抽干,过一会儿价格会恢复

嗯,这里要注意:很多新手只关注永久冲击,觉得临时冲击无所谓。我在实盘里吃过这个亏——有一次做股指期货,临时冲击直接吃掉了我半个月的利润。

1.2 线性冲击模型:Almgren-Chriss 基础

说到冲击成本建模,绕不开 Almgren-Chriss 模型。这个模型是2000年左右提出的,到现在还是业界主流。为什么?因为它够简单,够实用。

模型的核心假设是:冲击成本与交易速度成正比。说白了,你交易得越快,冲击越大。

数学形式是这样的:

冲击成本 = α × 交易速度 + β × 持仓变化

其中:

  • α 是临时冲击系数
  • β 是永久冲击系数
  • 交易速度 = 成交量 / 时间窗口

我记得第一次用这个模型时,觉得它太简单了。但跑完回测才发现,简单模型往往最稳健。那些加了十几个参数的复杂模型,过拟合得一塌糊涂。

核心要点:Almgren-Chriss 模型把冲击成本拆成两部分,永久部分影响所有后续交易,临时部分只影响当前交易。这个分解非常实用。

1.3 永久冲击与临时冲击的实战区别

怎么区分永久冲击和临时冲击?我教你一个土办法:

  1. 下一笔小单子,看看价格变化
  2. 等5分钟,看看价格是否恢复
  3. 如果恢复了,就是临时冲击;没恢复,就是永久冲击

我在做美股的时候,发现一个规律:

交易品种 临时冲击占比 永久冲击占比
大盘蓝筹股 60-70% 30-40%
小盘股 40-50% 50-60%
期货(主力合约) 70-80% 20-30%

为什么会这样?大盘股流动性好,临时冲击很快被做市商消化。小盘股就不一样了,你的单子可能真的改变了市场预期。

实战技巧:如果你做的是高频策略,重点关注临时冲击。如果是中长线持仓,永久冲击才是大头。我曾经有个策略,就是因为没区分这两者,回测漂亮,实盘一塌糊涂。

1.4 冲击成本函数的线性形式

线性冲击函数长这样:

I(Q) = a × Q + b × sign(Q)

其中:

  • I(Q) 是冲击成本
  • Q 是交易量(正数为买,负数为卖)
  • a 是斜率系数
  • b 是固定成本(买卖价差)

这个公式看着简单,但用起来有讲究。我建议你注意三点:

  • 斜率 a 不是常数:市场深度不同,a 会变。早盘和尾盘,a 能差3倍
  • 固定成本 b 可以忽略:对于大单,b 占比很小,主要看 a
  • 符号函数 sign(Q):买和卖的冲击不对称,别用同一个模型

我曾经犯过一个错误:直接用全天的数据拟合 a 值。结果呢?早盘交易时,冲击成本比模型预测的大一倍。后来我才意识到,a 值应该分时段估计。

1.5 知识体系总览

下面这张图,是我做这个课程时画的。它把冲击成本建模的整个逻辑串起来了:

大单交易冲击成本建模知识体系 核心问题:大单如何影响价格? 永久冲击(改变供需) 临时冲击(抽干流动性) Almgren-Chriss 线性冲击模型 冲击成本 = α × 交易速度 + β × 持仓变化 分时段估计参数 区分买卖方向 回测验证

这张图把整个逻辑串起来了。从上往下看:先搞清楚核心问题,再区分冲击类型,然后用 Almgren-Chriss 模型量化,最后落实到实战中的参数估计和验证。

避坑指南:我曾经在实盘里直接用回测的冲击参数,结果亏了。后来才明白,回测用的是历史数据,实盘的市场环境已经变了。建议你每周重新估计一次参数,别偷懒。

1.6 小结

这一章我们聊了:

  • 冲击成本的定义和分类
  • Almgren-Chriss 模型的基本框架
  • 永久冲击和临时冲击的实战区别
  • 线性冲击函数的数学形式

嗯,内容不多,但都是基础。下一章我们会深入讲怎么用 Python 实现这个模型,包括参数估计和回测框架。到时候我会分享一些我踩过的坑,保证有用。


公众号:蓝海数据掘金营,微信 deep3321