平方根冲击定律:为什么成交成本随下单量的平方根增长
Kyle 模型说价格冲击是线性的 λQ,但过去三十年横跨股票、期货、期权甚至比特币的实证结果惊人一致:母单的价格冲击 ≈ Y·σ·√(Q/V),指数死死钉在 0.4-0.6 之间。本文用潜在流动性簿模型从底层复现平方根律,验证主曲线坍缩(不同波动率、不同成交量的标的除以 σ 后落在同一条曲线上),对比线性模型在大单区间的系统性高估,并用传播子模型拆穿『切碎订单就能消灭冲击』的幻想——冲击衰减速度 β 才是拆单收益的真正决定者(中阶)。
你要买 10 万股。冲击成本模型告诉你是 20bp。那买 40 万股呢?
线性直觉说 80bp。真实市场说:40bp 左右。
结论先放这:
过去三十年,从纽交所股票到 CME 期货、从期权到比特币,横跨资产类别、时区和十几个数量级的订单规模,大额母单(metaorder)的价格冲击都服从同一条经验定律:
其中 σ 是日波动率,V 是日成交量,Q 是母单总量,Y 是量级为 1 的常数(实证多在 0.4~0.8)。指数不是 1(Kyle 线性),也不是 0(无冲击),而是死死钉在 0.5 附近——这是市场微观结构领域可复现性最强的实证事实之一,Bouchaud 称它为「微观结构的万有引力定律」。
对做执行和做容量测算的人,这条定律直接改写两件事:大单成本比线性模型预测的便宜得多(凹函数),但策略容量的天花板比你想的更硬——成本随规模的平方根涨,收益随规模线性摊薄,两条线必有一交。
一、为什么不是线性的?潜在流动性簿#
Kyle (1985) 的线性冲击 λQ 有干净的信息经济学推导,我们在上一篇 Kyle Lambda 里复现过。但它有个隐含假设:市场吸收订单的能力(深度)在任何价位上都是常数。
平方根律背后的物理图像不同:限价簿上挂出来的单子只是冰山一角,真正的流动性藏在交易者的意图里。Tóth et al. (2011) 提出潜在订单簿(latent order book)模型:距离当前中间价 x 处,潜在流动性密度近似线性增长:
直觉:价格偏离越远,愿意逆势提供流动性的人越多——但在中间价附近,潜在买卖意图几乎相互抵消,密度趋近于零。这就是关键:市场在「此时此地」其实很薄。
要吃掉总量 Q,价格必须推到 x*,使得沿途扫过的流动性恰好等于 Q:
平方根不是拟合出来的,是线性密度积分的直接后果。吃 4 倍的量,价格只推 2 倍。
用 numpy 验证一下,顺带加上现实的噪声:
import numpy as np
rng = np.random.default_rng(42)
lam = 5e4 # 潜在流动性密度斜率
Qs = np.logspace(3, 6.5, 25) # 母单从 1e3 到 3e6 股
n_mc = 300
impacts = np.zeros((n_mc, len(Qs)))
for m in range(n_mc):
lam_m = lam * rng.uniform(0.7, 1.3) # 流动性本身有 ±30% 波动
noise = rng.normal(0, 0.002, len(Qs)) # 背景波动噪声
impacts[m] = np.sqrt(2 * Qs / lam_m) + noise
mean_imp = impacts.mean(axis=0)
slope = np.polyfit(np.log(Qs), np.log(mean_imp), 1)[0]
print(f"log-log 拟合斜率 = {slope:.3f}") # → 0.500python300 次蒙特卡洛、流动性密度带 ±30% 随机扰动、叠加背景噪声,log-log 回归斜率依然是 0.500——平方根关系对参数扰动极其稳健。

左图是线性密度簿的几何:吃掉 Q 推动 x,吃掉 4Q 只推动 2x。右图是模拟结果的 log-log 图,散点严格贴着斜率 0.5 的理论线。
二、主曲线坍缩:整个市场只有一条冲击曲线#
平方根律最震撼的不是指数本身,而是普适性。把不同标的、不同市场环境的冲击数据画在一起:
- 横轴用参与率 Q/V(母单占日成交量的比例)
- 纵轴用 I/σ(冲击除以日波动率)
所有点会坍缩到同一条主曲线上。这意味着一只低波动大盘股和一只危机中的小盘股,冲击的「形状」完全相同,只差两个标度因子。
Y = 0.6
regimes = [ # (名称, 日波动率, 日成交量)
("低波动大盘", 0.010, 8e7),
("中波动中盘", 0.020, 2e7),
("高波动小盘", 0.035, 5e6),
("危机模式", 0.060, 1.2e7),
]
for name, sig, V in regimes:
q_frac = np.logspace(-3.2, -0.3, 18) # 参与率 0.06% ~ 50%
# 平方根律 + 对数正态观测噪声
imp = Y * sig * np.sqrt(q_frac) * np.exp(rng.normal(0, 0.10, 18))
# 原始坐标下各画各的;除以 sigma、横轴换 Q/V 后坍缩python
左图原始坐标下四种市场环境四条线,看起来毫无关系;右图 rescale 之后全部落在 Y·√(Q/V) 上。实证文献(Almgren et al. 2005 用花旗集团数万笔母单、Tóth et al. 2011 用 CFM 自营数据、Zarinelli et al. 2015 用 ANcerno 700 万笔机构母单)反复确认了这个坍缩,Y 的量级横跨市场都在 0.5 附近。
工程含义:你不需要为每只股票单独估计冲击模型。估好 σ 和 V(都是低频公开数据),套一个全市场共用的 Y,冲击预算就有了八成准度。这也是为什么几乎所有券商 TCA(交易成本分析)模型的核心项都长成 σ√(Q/V) 的样子。
三、线性 vs 平方根:成本账单差多少#
拿一只 σ=2%、日成交 2000 万股的标的,把 Kyle 线性模型和平方根模型在 1% ADV(参与率 1%)处校准到相同冲击,然后往大单区间外推:
| 参与率 Q/V | 线性模型冲击 | 平方根模型冲击 | 线性高估倍数 |
|---|---|---|---|
| 1%(校准点) | 12bp | 12bp | 1.0× |
| 5% | 60bp | 26.8bp | 2.2× |
| 10% | 120bp | 37.9bp | 3.2× |
| 30% | 360bp | 65.7bp | 5.5× |

在 30% 参与率的大单区间,线性模型高估 5 倍以上。反过来在极小单区间,线性模型又会低估冲击(平方根在原点的导数是无穷大)。右图的边际冲击 dI/dQ ~ 1/√Q 揭示了凹性的另一面:第一股最贵,越往后每股的边际冲击越低——这不是市场欢迎你,而是你已经把价格推到潜在流动性更厚的区域。
这个凹性有个反直觉推论:如果冲击是纯永久的且凹,那么「先买推高、再拆小单慢慢卖」理论上能构造套利(Gatheral 2010 证明了凹的永久冲击与无套利冲突)。市场没有被套干的原因是:平方根冲击的大部分会衰减——这就引出拆单问题。
四、拆单实验:切碎订单能省多少?#
冲击分两部分:永久部分(信息被价格吸收,不可逆)和暂时部分(流动性压力,会回补)。用传播子模型(propagator model, Bouchaud et al. 2004)刻画:每片子单产生局部冲击 √q,随时间按幂律 G(t) = (1+t)^{-β} 衰减:
def exec_cost(n_slices, Q, beta, horizon=64):
"""把 Q 拆成 n 片均匀执行,冲击按 (1+Δt)^(-beta) 衰减,返回总成本"""
times = np.linspace(0, horizon - 1, n_slices)
q = Q / n_slices
cost = 0.0
for i, ti in enumerate(times):
p_before = sum(np.sqrt(q) * (1 + ti - tj) ** (-beta)
for tj in times[:i]) # 前序子单的残留冲击
cost += q * (p_before + np.sqrt(q)) # 自身冲击 + 踩前人的坑
return cost / Qpython
三条曲线对应三种衰减速度:
- 快衰减(β=0.9):流动性快速回补,拆 64 片能把成本砍掉一半以上——拆单红利丰厚;
- 临界衰减(β=0.5):拆单仍有收益但边际递减明显;
- 慢衰减(β=0.2):冲击近似永久,拆到 64 片成本几乎不动——你的单子携带的信息量才是成本,切碎不消失。
这和 Kyle 篇的结论收敛到同一句话:暂时冲击可以用耐心换,永久冲击是信息含量的价格。实证上个股的 β 大约在 0.4~0.6,恰好卡在「拆单有用但不万能」的区间——这也解释了为什么算法交易把执行成本降了一个台阶,却没把它降到零。
五、容量测算:平方根律给策略判死刑的方式#
平方根律最实用的应用是策略容量。设策略年化毛 alpha 为 α,年换手 n 次,每次换手规模 Q:
成本随 √Q 增长,管理规模翻 4 倍,单位成本翻 2 倍。令净收益归零可以直接解出容量上限:
注意平方的威力:alpha 砍半,容量缩到四分之一;换手翻倍,容量同样缩到四分之一。高换手策略的容量对成本参数极端敏感,这就是为什么高频策略普遍规模小、而低换手价值策略能吞下百亿资金。
已知偏差与诚实边界#
- 平方根律是「执行期间」的冲击。母单完成后价格通常回落约三分之一到一半(Zarinelli 2015),长期永久冲击更接近参与率的线性函数。用平方根律估「持有到底的总成本」会偏保守。
- 极端参与率外推失效。参与率超过 50% ADV 的实证样本极少,那个区间冲击增长可能重新变陡;参与率低于 0.01% 时离散报价单位(tick size)主导,公式失去意义。
- Y 不是宇宙常数。0.4~0.8 的范围意味着实际成本预算有 ±50% 的不确定性;同一标的的 Y 还随市况漂移,危机中潜在流动性密度整体坍缩,Y 有效值上升。
- 模拟基于理想化的潜在簿。真实市场的流动性密度未必严格线性;本文的传播子拆单实验假设子单间无信息泄露,实盘中拆单模式被识别后会遭遇抢跑,实际衰减收益打折。
- 与 Kyle 线性律并不矛盾。Kyle 描述的是单笔匿名订单流的边际定价,平方根律描述的是多日母单的累计冲击——前者是瞬时导数,后者是路径积分,适用尺度不同。
结语#
平方根冲击定律用一个指数 0.5 统一了三十年、十几个市场、七个数量级订单规模的实证数据。它告诉你三件事:大单比线性直觉便宜(凹性)、但第一股永远最贵(边际冲击发散)、而且规模的惩罚写在平方里(容量上限 ∝ α²)。
配合前几篇的工具箱:Roll/CS/AR 估价差(显性成本)、Kyle λ 和 Amihud 估深度(边际冲击)、平方根律估母单总账单(累计冲击)——低频数据能拼出的交易成本画像,到这里基本完整了。
记住这个数字:0.5。你的成本不随规模线性增长,但你的容量随 alpha 平方缩水。