halo 的技术博客

返回

你要买 10 万股。冲击成本模型告诉你是 20bp。那买 40 万股呢?

线性直觉说 80bp。真实市场说:40bp 左右

结论先放这:

过去三十年,从纽交所股票到 CME 期货、从期权到比特币,横跨资产类别、时区和十几个数量级的订单规模,大额母单(metaorder)的价格冲击都服从同一条经验定律:

I(Q)YσQVI(Q) \approx Y \cdot \sigma \cdot \sqrt{\frac{Q}{V}}

其中 σ 是日波动率,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 处,潜在流动性密度近似线性增长:

ρ(x)λx\rho(x) \approx \lambda x

直觉:价格偏离越远,愿意逆势提供流动性的人越多——但在中间价附近,潜在买卖意图几乎相互抵消,密度趋近于零。这就是关键:市场在「此时此地」其实很薄

要吃掉总量 Q,价格必须推到 x*,使得沿途扫过的流动性恰好等于 Q:

0xλudu=λx22=Qx=2Qλ\int_0^{x^*} \lambda u \, du = \frac{\lambda x^{*2}}{2} = Q \quad\Rightarrow\quad x^* = \sqrt{\frac{2Q}{\lambda}}

平方根不是拟合出来的,是线性密度积分的直接后果。吃 4 倍的量,价格只推 2 倍。

用 numpy 验证一下,顺带加上现实的噪声:

300 次蒙特卡洛、流动性密度带 ±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%(校准点)12bp12bp1.0×
5%60bp26.8bp2.2×
10%120bp37.9bp3.2×
30%360bp65.7bp5.5×

线性 vs 平方根成本对比

在 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 / Q
python

拆单实验

三条曲线对应三种衰减速度:

  • 快衰减(β=0.9):流动性快速回补,拆 64 片能把成本砍掉一半以上——拆单红利丰厚;
  • 临界衰减(β=0.5):拆单仍有收益但边际递减明显;
  • 慢衰减(β=0.2):冲击近似永久,拆到 64 片成本几乎不动——你的单子携带的信息量才是成本,切碎不消失

这和 Kyle 篇的结论收敛到同一句话:暂时冲击可以用耐心换,永久冲击是信息含量的价格。实证上个股的 β 大约在 0.4~0.6,恰好卡在「拆单有用但不万能」的区间——这也解释了为什么算法交易把执行成本降了一个台阶,却没把它降到零。

五、容量测算:平方根律给策略判死刑的方式#

平方根律最实用的应用是策略容量。设策略年化毛 alpha 为 α,年换手 n 次,每次换手规模 Q:

净收益=αnYσQ/V\text{净收益} = \alpha - n \cdot Y \sigma \sqrt{Q/V}

成本随 √Q 增长,管理规模翻 4 倍,单位成本翻 2 倍。令净收益归零可以直接解出容量上限:

Qmax=V(αnYσ)2Q_{\max} = V \cdot \left( \frac{\alpha}{n Y \sigma} \right)^2

注意平方的威力:alpha 砍半,容量缩到四分之一;换手翻倍,容量同样缩到四分之一。高换手策略的容量对成本参数极端敏感,这就是为什么高频策略普遍规模小、而低换手价值策略能吞下百亿资金。

已知偏差与诚实边界#

  1. 平方根律是「执行期间」的冲击。母单完成后价格通常回落约三分之一到一半(Zarinelli 2015),长期永久冲击更接近参与率的线性函数。用平方根律估「持有到底的总成本」会偏保守。
  2. 极端参与率外推失效。参与率超过 50% ADV 的实证样本极少,那个区间冲击增长可能重新变陡;参与率低于 0.01% 时离散报价单位(tick size)主导,公式失去意义。
  3. Y 不是宇宙常数。0.4~0.8 的范围意味着实际成本预算有 ±50% 的不确定性;同一标的的 Y 还随市况漂移,危机中潜在流动性密度整体坍缩,Y 有效值上升。
  4. 模拟基于理想化的潜在簿。真实市场的流动性密度未必严格线性;本文的传播子拆单实验假设子单间无信息泄露,实盘中拆单模式被识别后会遭遇抢跑,实际衰减收益打折。
  5. 与 Kyle 线性律并不矛盾。Kyle 描述的是单笔匿名订单流的边际定价,平方根律描述的是多日母单的累计冲击——前者是瞬时导数,后者是路径积分,适用尺度不同。

结语#

平方根冲击定律用一个指数 0.5 统一了三十年、十几个市场、七个数量级订单规模的实证数据。它告诉你三件事:大单比线性直觉便宜(凹性)、但第一股永远最贵(边际冲击发散)、而且规模的惩罚写在平方里(容量上限 ∝ α²)。

配合前几篇的工具箱:Roll/CS/AR 估价差(显性成本)、Kyle λ 和 Amihud 估深度(边际冲击)、平方根律估母单总账单(累计冲击)——低频数据能拼出的交易成本画像,到这里基本完整了。

记住这个数字:0.5。你的成本不随规模线性增长,但你的容量随 alpha 平方缩水。

平方根冲击定律:为什么成交成本随下单量的平方根增长
https://blog.halo26812.eu.org/blog/square-root-law-impact
Author halo
Published at 2026年7月28日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨