量价背离是 Alpha 101 里数量最多的一类,有 32 个因子。上一篇讲过,核心逻辑就一句话:价格和成交量应该同步,不同步的时候有交易机会。

这篇挑 5 个经典因子,把公式拆到底层,看看 WorldQuant 是怎么把"量价关系"这个古老的技术分析概念变成可计算的信号的。

Alpha#3 与 Alpha#6:rank 到底有多大区别

Alpha#3 在上一篇已经介绍过基本形态:

$$\text{Alpha#3} = -1 \times \text{correlation}(\text{rank}(\text{open}),\ \text{rank}(\text{volume}),\ 10)$$

Alpha#6 长得几乎一样,区别只有一个字:没有 rank。

$$\text{Alpha#6} = -1 \times \text{correlation}(\text{open},\ \text{volume},\ 10)$$

看起来差别不大,实际效果差很多。

rank 版本(#3)先把所有股票的开盘价和成交量分别排名,再算排名之间的相关性。这意味着:贵州茅台的开盘价 1800 元和某只小盘股的 5 元,在 rank 之后可能一个是 0.99 一个是 0.01,但它们在各自的排名位置上是"对等"的。极端值不会影响相关性计算。

raw 版本(#6)直接拿原始价格和成交量算 Pearson 相关。问题来了:如果某只股票在这 10 天里有一天成交量突然暴增 10 倍(比如被游资炒作),这一个异常点就能把整个 10 天的相关系数拉到接近 +1 或 -1。Pearson 相关对极端值极其敏感。

实操中的差异:#3 更稳定,换手率低,适合持仓周期稍长的策略。#6 对异常放量/缩量事件更敏感,信号更"尖锐"但噪音也更大,适合持仓 1~2 天的快速反转。

这两个因子放在一起看,其实是同一个经济假说(量价背离看反转)在"鲁棒性 vs 灵敏度"这条轴上的两个端点。

Alpha#14:两维信号叠加

$$\text{Alpha#14} = -1 \times \text{rank}(\text{delta}(\text{returns}, 3)) \times \text{correlation}(\text{open},\ \text{volume},\ 10)$$

这个因子做了一件有意思的事:把两个独立维度的信号相乘。

第一项 rank(delta(returns, 3)):过去 3 天收益率的变化排名。delta(returns, 3) 就是"今天的日收益率减去 3 天前的日收益率"。如果今天涨 2% 而 3 天前涨 0.5%,delta 为正,说明收益在加速。rank 之后做截面比较。

第二项 correlation(open, volume, 10):过去 10 天开盘价和成交量的直接相关性(和 Alpha#6 一样,不做 rank)。

两项相乘,取反。什么情况下因子值最大(最强的做多信号)?

  1. rank(delta(returns, 3)) 排名高 → 收益在加速上涨
  2. correlation(open, volume, 10) 为负 → 量价背离

乘积为正,取反后为负?不对。仔细看:-1 * rank(...) * correlation(...)。rank 恒正(0 到 1),correlation 可正可负。当 correlation < 0(量价背离)时,乘积为负,再取反变正,做多信号。当收益在加速且量价背离时信号最强。

经济直觉:一只股票收益在加速,但成交量没跟上来,说明上涨不是靠增量资金堆出来的。这种"安静的加速"往往比放量暴涨更有持续性,因为没有吸引太多短线跟风盘,获利了结的压力小。

对比单维度的 Alpha#6,Alpha#14 多了一层"收益加速度"的过滤。逻辑上更精细,但参数也多了(3 天差分 + 10 天相关),过拟合风险更高。

Alpha#17:三因子交互的极端案例

$$\text{Alpha#17} = -1 \times \text{rank}(\text{ts_rank}(\text{close}, 10)) \times \text{rank}(\text{delta}(\text{delta}(\text{close}, 1), 1)) \times \text{rank}(\text{ts_rank}(\text{volume} / \text{adv20}, 5))$$

三项相乘,每一项都有独立的经济含义:

第一项 rank(ts_rank(close, 10)):当前收盘价在过去 10 天里排第几,再做截面排名。值高 = 这只股票的收盘价处于近 10 天的高位,而且在所有股票里也算高位的。

第二项 rank(delta(delta(close, 1), 1)):收盘价的二阶差分。delta(close, 1) 是一阶差分(今天减昨天),再 delta(..., 1) 就是二阶差分(今天的变化减去昨天的变化)。二阶差分正 = 价格变化在加速(今天涨得比昨天多,或者跌得比昨天少)。

第三项 rank(ts_rank(volume/adv20, 5)):今天成交量相对于 20 日均量的比值,在过去 5 天里排第几。值高 = 最近几天成交量相对于中期均值在放大,而且今天可能是放量最猛的一天。

三项乘起来取反。因为 rank 恒正(0~1),三项乘积恒正,取反后恒负?不完全是。三项值域都是 (0, 1],乘积越大,取反后绝对值越大(越强的做空信号)。乘积最大的情况是:价格在 10 天高位 + 价格变化在加速 + 成交量在近期高位。

翻译成交易语言:一只股票最近 10 天涨到了高位,涨速还在加快,同时成交量急剧放大。Alpha#17 对这种"放量加速冲顶"的股票给出做空信号。

这和技术分析里"天量见天价"的经验吻合。当所有利好条件同时出现(价格高位 + 加速上涨 + 巨量),往往是最后一波冲刺,随后的获利回吐会很猛烈。

三因子交互的代价是参数空间大:10 天价格窗口、1 天差分、20 天均量基准、5 天成交量窗口,四个时间参数各自可调。论文里这些数字大概率是优化出来的,换到不同市场需要重新验证。

Alpha#55:日内位置 × 成交量的量价背离

$$\text{Alpha#55} = -1 \times \text{correlation}\!\Big(\text{rank}\!\Big(\frac{\text{close} - \text{ts_min}(\text{low}, 12)}{\text{ts_max}(\text{high}, 12) - \text{ts_min}(\text{low}, 12)}\Big),\ \text{rank}(\text{volume}),\ 6\Big)$$

先拆分子里的那个比值:

$$\frac{\text{close} - \text{ts_min}(\text{low}, 12)}{\text{ts_max}(\text{high}, 12) - \text{ts_min}(\text{low}, 12)}$$

分母是过去 12 天的价格振幅(最高价的最大值 - 最低价的最小值),分子是当前收盘价相对于这段振幅底部的距离。整个比值的取值范围是 0~1,衡量"当前价格处于近 12 天振幅的什么位置"。值 = 1 意味着收盘价恰好在 12 天最高点,值 = 0 意味着在最低点。

这其实就是一个慢速版的 Stochastic Oscillator(随机振荡器),不过用了 12 天窗口而不是经典的 14 天,而且取的是 close 而不是收盘价相对当日 high/low 的位置。

然后把这个"价格位置"的截面排名和成交量的截面排名算 6 天滚动相关,取反。

经济含义:如果一只股票在 12 天振幅的高位区间时成交量也大(相关性为正),说明高位放量,市场在疯抢,取反后做空。如果高位区间但成交量反而缩小(相关性为负),说明高位缩量,抛压轻,取反后做多。

和 Alpha#3 的区别在于,#55 不是直接用开盘价和成交量算相关,而是先把价格转换成"在近期振幅中的位置",消除了绝对价格水平的影响。一只从 100 元涨到 120 元的股票和一只从 10 元涨到 12 元的股票,在这个指标下是等价的,都处于振幅的 100% 位置。

32 个量价因子的共性模式

把 32 个因子摊开看,构造公式的基本套路就三种:

模式一:correlation(rank(价格变量), rank(成交量变量), 窗口)

#3、#6、#15(用 high 替代 open)、#44(用 low 替代 open)、#78、#81、#85、#95、#99 都是这个骨架。区别在于:用 open/close/high/low 的哪一个,是否做 rank,窗口取多少天。

这组因子的经济假说完全相同:量价背离看反转。不同价格变量的选择对应不同的信息来源。open 反映隔夜信息消化,close 反映日内博弈结果,high/low 反映极端情绪。

模式二:量价相关性 × 另一个维度的信号

#14(× 收益率加速度)、#22(× 价格波动率)、#45(× 收盘价变化的 decay_linear)。先算量价相关性作为"基础判断",再乘以另一个信号维度来过滤或增强。

模式三:scale / decay_linear 的后处理

#32(用 scale 把信号转成仓位权重)、#77(用 decay_linear 给近期信号更大权重)、#88(开盘价排名的衰减相关性)。这些因子在核心量价背离逻辑之外,加了信号强度或时间衰减的调节。

32 个因子本质上在反复验证同一个假说:价量不同步的股票后续更可能反转。不同因子是这个假说在不同参数组合、不同价格变量、不同时间尺度上的具体实例。如果你在搭建自己的因子库,不需要把 32 个全算一遍,挑每种模式里信号最干净的 1~2 个(比如 #3、#14、#55)就足够了,剩下的高度冗余。

下一篇讲动量与反转类因子,看看 Alpha 101 怎么处理"什么时候该追趋势、什么时候该做反转"这个问题。

系列导航

  1. Alpha 101 全解读:因子分类与算子速查
  2. 本篇:量价背离类因子详解(32 个因子)
  3. 动量与反转类因子详解(23 个因子)
  4. 波动率与日内结构类因子详解(23 个因子)
  5. 流动性与复合因子 + 因子组合实战(23 个因子)