Alpha 101 里有 11 个波动率因子和 12 个日内结构因子。这两类放在一起讲,因为它们共享同一组原始数据(open, high, low, close, vwap)和相似的经济直觉:从价格的"形状"而非"方向"中提取信号。
第一篇介绍过基本框架,这篇挑 5 个经典因子拆解。
Alpha#1:条件波动率的市场状态切换
$$\text{Alpha#1} = \text{rank}\Big(\text{ts_argmax}\big(\text{signedpower}(\text{returns} < 0\ ?\ \text{stddev}(\text{returns}, 20)\ :\ \text{close},\ 2\big),\ 5\big)\Big) - 0.5$$第一篇给了这个因子的概述,这里补充 signedpower 的放大机制。
先看条件选择:如果当天收益率为负(下跌日),信号源是过去 20 天收益率的标准差(波动率)。如果当天收益率为正或零(上涨日),信号源是收盘价。
然后 signedpower(..., 2) 做平方放大。波动率本身的量级通常是 0.01~0.05(日收益率标准差),平方之后变成 0.0001~0.0025,绝对值差异被拉大了。收盘价本身可能是几十到几百,平方后差异更大。
signedpower 的真正作用不是放大绝对值(后面还有 rank 会抹平量纲),而是拉开分布的尾部。假设有 3 只股票的波动率分别是 0.02、0.03、0.05。线性差距是 1:1.5:2.5,平方后变成 1:2.25:6.25。高波动的那只被显著拉开了。
ts_argmax(..., 5) 找过去 5 天里 signedpower 值最大的那天在窗口的位置(0 = 5 天前,4 = 今天)。如果值是 4,说明今天的信号是 5 天里最强的。
最后 rank(...) - 0.5 做截面排名并中心化到 [-0.5, +0.5]。
完整的经济直觉:下跌日看波动率极值出现的时间。如果某只股票的下跌日波动率在今天达到 5 天最高(ts_argmax = 4),说明恐慌在加剧,rank 值高,因子 > 0,给做多信号。赌的是"恐慌到极致就是底"。上涨日看价格极值的时间,逻辑类似但方向相反。
为什么窗口只有 5 天?因为波动率聚集(volatility clustering)在极短期内最明显:今天波动大,明天波动大的概率也高,但一周之后这个效应就衰减了。5 天窗口刚好捕捉这个短期聚集现象。
Alpha#34:短长期波动率比 + 反转
$$\text{Alpha#34} = \text{rank}\Big(2 - \text{rank}\big(\text{stddev}(\text{returns}, 2) \,/\, \text{stddev}(\text{returns}, 5)\big) - \text{rank}(\text{delta}(\text{close}, 1))\Big)$$嵌套了两层 rank,拆开看:
内层第一项 rank(stddev(returns, 2) / stddev(returns, 5)):2 天波动率除以 5 天波动率的截面排名。这个比值衡量"最近 2 天的波动率相对于最近 5 天是偏高还是偏低"。比值 > 1 说明短期波动率突然放大(新信息到来),比值 < 1 说明短期在收敛。
内层第二项 rank(delta(close, 1)):今天收盘价变化的截面排名。涨得多的股票 rank 高。
外层 rank(2 - A - B):A 和 B 都是 0~1 之间的 rank 值,2 - A - B 的范围是 0~2。当 A 和 B 都低时,2 - A - B 最大,外层 rank 最高。
因子值最大(做多信号)的情况:短期波动率相对于 5 天波动率偏低(A 低) + 今天跌了(B 低,delta(close,1) 为负且 rank 低)。
翻译:一只股票今天跌了,但最近 2 天的波动率并没有相对于 5 天均值放大。换句话说,下跌是"平静的下跌"而不是"恐慌性暴跌"。这种平静的下跌更可能是随机波动,后续反弹的概率高于恐慌性暴跌后的持续下探。
和 Alpha#1 形成对比:#1 在"恐慌到极致"时做多(逆向博弈),#34 在"平静下跌"时做多(认为下跌缺乏conviction)。两个因子对波动率的解读完全不同,放在同一个组合里可以提供互补信号。
Alpha#101:CLV(Close Location Value)
$$\text{Alpha#101} = \frac{\text{close} - \text{open}}{(\text{high} - \text{low}) + 0.001}$$Alpha 101 的最后一个因子,也是结构最简单的。第一篇已经介绍过,这里补充它和其他日内因子的关系。
分子 close - open 是日内涨跌幅(不除以 open,保留绝对值)。分母 high - low 是日内振幅,加 0.001 防止除零。
取值范围大约在 -1 到 +1 之间。+1 = 开盘就是最低价、收盘就是最高价(全天单边涨)。-1 = 开盘就是最高价、收盘就是最低价(全天单边跌)。0 = 开盘收盘一样,日内白忙活。
CLV 和经典的技术指标 Williams %R 是近亲。%R 衡量收盘价在 high-low 范围中的位置,CLV 衡量收盘价相对开盘价在 high-low 范围中的"移动距离"。%R 只看终点位置,CLV 看起点到终点的旅程。
CLV 在实操中是一个非常短期的信号:全天单边上涨的股票(CLV 接近 +1),次日微弱延续的概率略高于 50%。但这个 edge 极小,单独使用基本不可交易。它的价值在于和其他因子组合时作为"日内动量确认"指标:当一个中期动量因子给出做多信号,如果当天的 CLV 也为正,信号的可信度更高。
Alpha#42:VWAP 偏离
$$\text{Alpha#42} = \frac{\text{rank}(\text{vwap} - \text{close})}{\text{rank}(\text{vwap} + \text{close})}$$vwap - close:成交量加权平均价减去收盘价。正值 = vwap > close,意味着日内大部分成交发生在价格较高的位置,收盘时价格回落了。
这个信号的经济含义取决于"谁"在交易。vwap 是机构交易的基准价格,很多机构算法交易的目标就是在 vwap 附近成交。如果 vwap 高于 close,说明大资金的平均成交价高于市场最终的收盘价。两种可能的解释:
- 机构在日内高位出货,卖压把收盘价压下来了(看空信号)
- 机构的大买单把日内价格推高了,但临近收盘散户获利了结把价格打下来了(中性偏多)
Alpha#42 取的是第一种解释:vwap > close 做多排名高,因子值偏大。但注意分母 rank(vwap + close) 是一个几乎恒为正且变化不大的量(vwap 和 close 通常很接近),所以分母主要起归一化作用,因子的信号方向由分子决定。
这个因子在第一篇提过,持仓周期接近 0 天,是纯日内信号。在 T+1 市场直接使用需要延迟一天,效果会减弱。
Alpha#54:日内价格结构的非线性放大
$$\text{Alpha#54} = \frac{-1 \times (\text{low} - \text{close}) \times \text{open}^5}{(\text{low} - \text{high}) \times \text{close}^5}$$这是 Alpha 101 里最"暴力"的公式之一,因为用了 5 次方。
先简化:low - close 通常为负(收盘价一般高于最低价),乘以 -1 变正。low - high 恒为负(最低价 ≤ 最高价)。所以整体符号由 open^5 / close^5 = (open/close)^5 决定。
如果 open > close(日内下跌),(open/close)^5 > 1,因子绝对值被放大。如果 open < close(日内上涨),(open/close)^5 < 1,因子绝对值被压缩。
5 次方的放大效果有多猛?假设 open/close = 1.02(日内跌 2%),1.02^5 ≈ 1.10,放大了 10%。如果 open/close = 1.05(日内跌 5%),1.05^5 ≈ 1.28,放大了 28%。跌幅越大,放大倍数越高,是一个"越跌越敏感"的非线性设计。
经济含义:当收盘价远低于开盘价(日内大跌),同时收盘价距离最低价的比例较大((low-close)/(low-high) 接近 1,说明收盘接近日内最高,即"跌了但尾盘拉回来了"),因子给出的做多信号会被 5 次方放大。
这个因子捕捉的是日内 V 型反转:开盘后大幅下跌,但在收盘前反弹。5 次方确保只有跌幅较大的 V 型反转才会产生足够强的信号,小幅震荡被压制了。
不过 5 次方也带来了一个工程问题:价格的 5 次方很容易溢出。如果 close = 500,close^5 = 3.125 × 10^13。实际计算时需要用 (open/close)^5 而不是分别算 open^5 和 close^5 再相除。
波动率与日内因子的设计特征
波动率因子(#1, #18, #21, #34, #36, #57, #83, #86, #94, #96, #98)的共性是用 stddev 或 price range 衡量波动率水平或变化,赌波动率的均值回归。时间窗口集中在 2~20 天,捕捉的是短到中期的波动率动态。
日内结构因子(#5, #41, #42, #47, #54, #62, #64, #65, #66, #68, #73, #101)的共性是只用当天或最近 1~2 天的 OHLCV 数据,从 K 线的"形状"提取信号。vwap 在这组因子里出现频率最高,反映了论文作者对机构交易行为的关注。
两类因子的一个区别:波动率因子大多需要截面 rank 才能跨股票比较(不同股票的波动率量级差异很大),日内结构因子中有一些(如 #101、#54)可以不做 rank,因为它们用了比值形式,本身已经是无量纲的。
对于 A 股投资者,日内结构因子里依赖 vwap 且无 delay 的因子(#42、#47、#62 等)在 T+1 市场效果会打折。波动率因子受 T+1 影响较小,因为它们本来就是看 5~20 天窗口的中期信号。
下一篇是系列最后一篇:流动性与复合因子 + 因子组合实战。
系列导航
- Alpha 101 全解读:因子分类与算子速查
- 量价背离类因子详解(32 个因子)
- 动量与反转类因子详解(23 个因子)
- 本篇:波动率与日内结构类因子详解(23 个因子)
- 流动性与复合因子 + 因子组合实战(23 个因子)