条件分位数回归与异常成交 (Conditional Quantile Regression)
大白话:看到某一分钟成交量很大,不能直接说「有异常」——开盘时段本来就大、机构拆单会让相邻几分钟一起放大、当分钟价格大幅变动本身也会带出成交。真正要问的是:在当时那个交易时段、那个价格变化、上一分钟那个成交量的条件下,这一分钟还剩下多少「没被解释的」成交量?
做法是分位数回归:不估条件均值,而是估条件的 20% 分位和 80% 分位。两个残差一正一负,分别代表「异常缩量」和「异常放量」。
为什么普通回归不够
分位数回归估的是因变量在给定解释变量下的条件分位点,通过最小化非对称绝对损失得到:
\hat\beta_\tau = \arg\min_\beta \sum_t \rho_\tau\left(Y_t - X_t^\top \beta\right), \qquad \rho_\tau(u) = u\left(\tau - \mathbb{1}(u<0)\right)
\tau=0.2,\ \tau=0.8\ \text{分别刻画条件分布的 20\% 和 80\% 位置} 因为损失对正残差和负残差不对称,落在预测分位以下的样本被罚得重、之上的罚得轻——所以 \tau 直接对应「条件分布的百分之几」这个位置。 两个具体的理由(兴业金工 2026 的表述): 1. 成交量不服从正态分布,尤其右偏厚尾的高频成交数据。分位数回归不要求分布假设。 2. 我们不关心均值。要判断的是「这一分钟属于条件分布的哪一段」,这正是分位数的语言。 ## 三个必须控制的东西 | 要控制的东西 | 为什么 | |---|---| | 当分钟价格变化 | 价格大幅变动本身就是交易需求的一部分(信息到达、意见分歧、订单不平衡)。价格不动而量异动,才可能反映「有承接」或「有换手」 | | 上一分钟的相对成交量 | 机构母单拆分成子单在连续几分钟执行;算法交易、VWAP 执行、被动跟单也造成相邻分钟聚集。上一分钟已经高量,下一分钟继续高量可能只是同一个交易计划的延续,不是第二次信息冲击 | | 日内时段效应 | 开盘与收盘时段成交量和波动率同时走高,日内是典型 U 型 | 这三条正好构成回归的解释变量 X_{i,d,t}:当分钟收益率 r_{i,d,t}、上一分钟相对成交量 V^{rel}_{i,d,t-1}、以及开盘前 30 分钟与收盘前 30 分钟的时段哑变量。 ## 从原始分钟特征到条件异常特征 先做量纲归一(消除股票间量纲差异、剔除日内系统性模式): V^{rel}_{i,d,t} = \frac{V_{i,d,t}}{\bar V_{i,d}}
其中 V_{i,d,t} 是股票 i 在第 d 天第 t 分钟的成交量,\bar V_{i,d} 是该股当天的分钟成交量均值。
再对两个分位点分别做条件回归:
Q_q\left(V^{rel}_{i,d,t} \mid X_{i,d,t}\right) = \alpha_q + X_{i,d,t}^\top \beta_q, \qquad q \in \{0.2,\ 0.8\} 取条件分位回归残差: \varepsilon^{q}_{i,d,t} = V^{rel}_{i,d,t} - \hat Q_q\left(V^{rel}_{i,d,t} \mid X_{i,d,t}\right)
- \varepsilon^{80} > 0:成交量超出了控制价格、惯性与时段后的条件上分位数 → 条件异常放量
- \varepsilon^{20} < 0:成交量低于条件下分位数 → 条件异常缩量
残差比原始量好在哪
原始成交量与三类分位回归残差(high / mid / low)的截面相关性都是正的,但程度差别明显:low 与 high 残差分别稳定在 0.89 和 0.54 附近。
意思是:条件调整没有完全改变原始成交量的横截面排序(0.89 那档几乎没动),但分位点越高,残差对日内规律、价格变化、成交惯性与流动性基底的剔除越充分。high 残差与原始成交量差异最大,因此最能识别「绝对成交量未必最高、但相对于自身条件上界显著异常」的成交状态。
图上的对比更直观:两个有明显成交量时间聚集的个股,用绝对值比较找出的极大值位置是连成片的(自相关造成),而分位数回归找出的异常交易时刻彼此独立,能自适应地找出不同时刻的成交量相对激增。
两个因子怎么造
因子 1:vr_quantile_resid_corr —— 对日 d 两个分位数残差序列取日内相关系数,再取 10 日滚动平均:
F_{i,d} = \mathrm{Corr}\left(\varepsilon^{20}_{i,d},\ \varepsilon^{80}_{i,d}\right)
经济含义:两个残差高度正相关,说明成交量相对整个条件分布发生了较稳定的同步位移,而不是只在某个尾部偶发异常。这种同步位移可能对应持续性的潜在交易需求、机构订单执行或信息逐步扩散,因此预期为正向选股信号。相关性低则意味着成交量分布形态不稳定,异常主要由少数尾部分钟驱动。
因子 2:vr_q80_ret_corr —— 80% 残差与当分钟有符号收益率的日内相关,再取 10 日均值:
F_{i,d} = \mathrm{Corr}\left(\varepsilon^{80}_{i,d},\ r_{i,d}\right)
高相关 = 异常放量主要发生在上涨分钟,容易对应投资者追涨、注意力驱动买入、情绪放大;虽然当天价格上涨,但未来买入力可能已经透支 → 回测方向为负。低值意味着异常放量更多出现在价格承压时,可能代表卖压被承接、逆向资金介入或信息与流动性得到更充分吸收。
绩效
| 因子 | IC 均值 | IC 标准差 | ICIR | 多空年化 | 多头年化 | 夏普 | 最大回撤 | 多头换手 |
|---|---|---|---|---|---|---|---|---|
vr_quantile_resid_corr |
0.048 | 0.081 | 0.591 | 34.60% | 14.89% | 4.16 | −8.73% | 14.62% |
vr_q80_ret_corr |
0.013 | 0.032 | 0.418 | 7.49% | 7.07% | 2.41 | −6.89% | 22.10% |
vr_quantile_resid_corr 是本篇表现最好的因子:多空年化 34.60%、夏普 4.16,2017-08 以来多空净值长期上升,2026 年 4 月以来有过一段回撤但随后反弹。
与本 wiki 其他页面的接口
- concepts/microstructure/订单流分解 (Order Flow Decomposition) — 另一条识别「异常成交」的路:本库已有的是按 HFQ(500 毫秒人眼极限)拆订单流,把市场拆成算法单与人手单;本页是按个股自身条件基准拆,把时间轴拆成「常态」与「异常」。两者正交
- 《成交量分布中的 Alpha》(兴业金工 2022,本 wiki 尚未收录,见 兴业金工 的系列回顾)走的是分布信息路线,本页是条件分位路线
- concepts/microstructure/母单拆分的统计检验 (Statistical Tests of Order Splitting) — 「上一分钟成交量」作为解释变量的动机来自母单拆分
- concepts/models-theory/James-Stein Shrinkage Estimation — 收缩估计的另一处应用(把个股率估计向市场均值收)
Open Questions
- 残差的相关性为什么用 10 日滚动平均? 论文未做窗口敏感性检验。窗口短则信号噪声大,长则对结构性变化钝感
- 20%/80% 两个分位点是固定的吗? 未见分位点网格的稳健性检验。改用 q \in \{0.1, 0.25, 0.9\} 会不会改变结论
- 「开盘前 30 分钟 / 收盘前 30 分钟」以外,日内时段效应是否该用更细的哑变量或样条(对应 CSAD 那边已经按时段分组回归的做法)
- A 股 T+1 与涨跌停在本方法里的影响:异常放量分钟的次日可交易性未单独检验
- 与 参与率谬误 的关系:本页用「当日均值」归一,相对成交量本身也在随市场状态漂移——这是否会把「放量」和「市场整体缩量」混在一起
Sources
- summaries/202610-xingye-trading-anomaly-divergence-alpha/202610-xingye-trading-anomaly-divergence-alpha — 兴业金工《高频研究系列十》,2026-10-21