halo 的技术博客

返回

问题:没有报价数据,价差从哪里来#

买卖价差是最基础的流动性度量:它进交易成本模型(Amihud-Mendelson 告诉你价差直接进资产定价)、进回测的成本假设、进流动性因子构造。但价差的直接计算需要报价数据(bid/ask),而大量场景里你根本没有:

  • 历史研究要回到 1990 年代甚至更早,报价数据不存在或贵到离谱;
  • 你只有日线 OHLC,没买 tick 级数据;
  • 新兴市场、债券、场外品种,报价要么不透明要么没有。

于是产生了一整个”低频价差估计量”家族:Roll (1984) 用相邻价格变化的负序列协方差反推价差;Corwin-Schultz (2012) 用高低价范围。今天讲的 Holden (2009) Effective Tick 估计量走的是第三条路,信息源最出人意料:成交价的尾数分布

它不看价格怎么动,只看价格落在哪些数字上

直觉:价差会在价格尾数上留下指纹#

想象一个做市商,在 20 元附近的股票上用 0.25 元价差报价。他的报价会是 19.75 / 20.00、20.00 / 20.25 这种——报价自然对齐到价差的整数倍网格上。所有成交都打在报价上,于是成交价也全部落在 0.25 的网格上:你翻遍成交记录,找不到一笔 20.07 或 19.83。

反过来,一只价差只有 0.01 元的流动性好的股票,成交价会均匀铺满每一分钱:20.01、20.02、20.03……什么尾数都有。

这就是关键:价差越宽,成交价越”聚集”在粗网格上;价差越窄,价格越铺满细网格。 价格聚集程度本身,就是价差的化石记录。

价格聚集直方图

上图是两只模拟股票各 4000 笔成交的归类结果(每个价格归入能整除它的最粗增量)。左边真实价差 0.01 元:约一半价格只能落在 0.01 网格(尾数是奇数分),其余按整除关系自然散布——这个分布恰好就是”完全没有聚集”时的基准形态。右边真实价差 0.25 元:几乎 100% 的成交价是 0.25 的整数倍,0.01/0.05/0.10 档几乎为零。两张图的 Effective Tick 估计分别是 0.010 和 0.250 元——直方图形状直接暴露了价差。

算法:从占比反解概率,三步走#

设可能的价差档位阶梯为 s1<s2<<sJs_1 < s_2 < \dots < s_J(例如 0.01, 0.05, 0.10, 0.25, 0.50 元)。算法要从”价格落在各网格的占比”反解出”市场使用各档价差的概率”。

第一步:归类计数。 每笔成交价归入能整除它的最粗增量,统计各档占比 FjF_j。注意归类是互斥的:20.25 能被 0.25 整除,就归 0.25 档,不再算进 0.05 档。

第二步:占比 → 未约束概率。 这里有个精妙的会计恒等式。若市场以概率 gjg_j 使用价差 sjs_j,则使用宽价差时的成交价碰巧也落在细网格上(0.25 的倍数必然是 0.05 的倍数),需要扣重。Holden 给出的反解:

U1=2F1,Uj=2FjFj1 (1<j<J),UJ=FJFJ1U_1 = 2F_1,\qquad U_j = 2F_j - F_{j-1}\ (1<j<J),\qquad U_J = F_J - F_{J-1}

系数 2 来自一个对称性假设:用 sjs_j 价差报价时,成交价落在”恰好是 sjs_j 奇数倍”和”恰好是更粗网格”上的概率各半。

第三步:约束修剪。 UjU_j 可能是负数或加起来超过 1(样本噪声),从最细档开始依次夹到 [0,剩余概率][0, \text{剩余概率}] 内,得到最终概率 g^j\hat{g}_j。隐含价差就是加权平均:

S^=j=1Jg^jsj\widehat{S} = \sum_{j=1}^{J} \hat{g}_j \, s_j

整个估计量不到 20 行,输入只要一列成交价(日收盘价就行),这是它在实证文献里被大规模使用的根本原因——Holden 用它把美股价差序列回补到了 1926 年。

验证:五档价差全线贴住 45° 线,方差小于 Roll#

模拟五档真实有效价差(0.01 到 0.50 元),每档 40 次独立模拟、每次 2000 笔成交,同时跑 Roll 序列协方差估计量作对照:

估计值 vs 真实价差

真实价差Effective TickRoll 估计
0.010.01000.0101
0.050.05970.0575
0.100.10000.1130
0.250.25230.2623
0.500.50000.5124

两个观察:

一是 Effective Tick 的误差棒明显更短。 Roll 依赖序列协方差的样本估计,2000 笔的样本里协方差噪声很大;Effective Tick 数的是”落网格占比”这种计数统计,收敛快得多。

二是 Effective Tick 永不失效,Roll 会。 Roll 要求相邻价格变化协方差为负,正协方差时(动量强的样本段)根号里是负数,估计直接不存在——实务中约三到四成的股票-月份会碰上。Effective Tick 的修剪步骤保证输出永远合法。这不是小事:横截面研究里缺 40% 的观测,剩下的样本就是被选择过的。

灵魂缺陷:聚集不全来自价差#

Effective Tick 的信息源是价格聚集,它的命门也在这里:它把所有聚集都归因于价差,但聚集还有别的来源

最典型的是心理聚集(psychological clustering / round-number preference):人类下限价单偏爱整数和”整角”价格——20.00、20.50、20.25 这种。这个现象在股票、外汇、房价上都被反复证实,与价差无关。当心理聚集混入时,Effective Tick 会把它误读成”市场在用宽价差”,系统性高估

模拟量化这个偏差:真实价差固定 0.05 元,人为把一部分成交价”吸”到 0.25 的心理网格上:

心理聚集污染

污染 10% 时估计 0.064(高估 27%);污染 30% 时估计 0.103——高估一倍多;污染 50% 时 0.149,几乎三倍。偏差单调且无上界预警:你从估计值本身完全看不出被污染了。

这条缺陷决定了使用纪律:Effective Tick 适合做横截面和时间序列的相对比较(心理聚集在股票间大致同构,排序仍然有效),不适合当绝对成本参数直接塞进回测——除非你先验证过标的的聚集主要来自 tick 约束而非心理偏好。

A 股落地注意事项#

  • 阶梯要重建。A 股 tick size 统一是 0.01 元(股价不分档),美式的 0.05/0.10/0.25 阶梯没有制度基础。可用的阶梯是”分/角/元”(0.01, 0.10, 1.00),此时估计量捕捉的更多是心理聚集+流动性差引起的粗网格交易,解释口径要相应放宽为”隐含交易摩擦”而非严格价差;
  • 剔除涨跌停封板日。封板价是制度约束出来的整数聚集,会严重污染估计——这和 Amihud-Mendelson 篇里 ILLIQ 代理的处理纪律一致;
  • 低价股警惕。3 元以下的股票 0.01 元 tick 本身就占价格的 0.3%+,tick 约束造成的机械聚集会主导一切,估计量退化为 tick size 本身。

诚实边界#

第一,它估的是有效价差的一个下限口径。 价格改善、隐藏单、价内成交都会让成交价脱离报价网格,这些都往”细网格”方向拉分布,使估计偏向保守。Holden 原文的定位也是与 Roll、LOT 等估计量取均值组合使用,单兵作战不是设计意图。

第二,档位阶梯是先验,选错全歪。 阶梯必须覆盖市场真实使用的报价增量,多设或漏设档位都会让反解公式的会计恒等式失配。跨市场、跨年代使用时(美股 2001 年十进制化前后 tick 规则完全不同),阶梯必须逐段重设。

第三,它对样本内价差变化是均值口径。 一个月内价差从 0.05 走宽到 0.25(比如财报周),估计给你的是某种概率混合的平均,掩盖了动态。想要日内或事件级的价差动态,还是得上 tick 数据和已实现价差那套工具。

低频估计量的本质是拿假设换数据:数据越少,估计里假设的含量越高。Effective Tick 用”聚集只来自价差”这一个假设换来了只需一列价格的极简输入——知道自己付了什么代价,才有资格享受它的便宜。

参考文献#

  1. Holden, C. W. (2009). New Low-Frequency Spread Measures. Journal of Financial Markets, 12(4), 778-813.
  2. Goyenko, R. Y., Holden, C. W., & Trzcinka, C. A. (2009). Do Liquidity Measures Measure Liquidity? Journal of Financial Economics, 92(2), 153-181.
  3. Roll, R. (1984). A Simple Implicit Measure of the Effective Bid-Ask Spread in an Efficient Market. Journal of Finance, 39(4), 1127-1139.
  4. Harris, L. (1991). Stock Price Clustering and Discreteness. Review of Financial Studies, 4(3), 389-415.
有效 Tick 估计量:用价格聚集反推隐含买卖价差
https://blog.halo26812.eu.org/blog/effective-tick-estimator
Author halo
Published at 2026年7月27日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨