日内微观结构合成因子 micro_combo
由yangduoduo05创建,最终由yangduoduo05 被浏览 3 用户
日内微观结构合成因子 micro_combo 说明
数据表:
hf_bar1m_c_intraday_microstructure(2015-01-05 起,逐交易日) 代码:同目录builder.py;表结构与 IC 全表见同目录hf_bar1m_c_intraday_microstructure.md方向:micro_combo值越小,未来收益越高
1. 一句话概括
把每只股票每天 240 根 1 分钟 K 线压缩成 18 个「日内微观结构量」,再看这些量在过去约 20 个交易日里的平均水平(_m20)和稳定程度(_s20),经 IC 筛选留下 25 个,市值中性化后按方向对齐等权相加,得到 micro_combo。再剔除十个风格因子和行业,得到纯净版 micro_combo_pure。
它想抓的东西可以归成三类:
- 投机与注意力溢价:日内走势越「乱」(峰度忽大忽小、波动成簇、量集中在开盘、日内趋势性强、上涨时量价配合好),越像散户追涨、彩票型交易主导,股价越容易被高估,后续跑输
- 流动性补偿:分钟级价格冲击越大(Amihud 非流动性越高),持有者要求的补偿越多,后续跑赢
- 下行风险补偿:下行方差占比越高,越可能是被抛压错杀,后续反弹
2. 来源
自研因子,不是某篇研报的复现。选题方法是在复现研报仓库已建的 15 张分钟表之外找空白:价量相关性(CPV)、分布均匀度(UTD/UID)、日内隔夜切割、聪明钱、APM、显著性、潮汐等方向都已覆盖,因此本表取了五个还没做过的方向:
| 方向 | 关注点 | 日频量 |
|---|---|---|
| A. 已实现高阶矩与跳跃分解 | 日内收益分布的尾部、偏向和跳跃,而不只是方差 | 已实现峰度、下行方差占比、跳跃占比、波动离散度 |
| B. 流动性与价格冲击 | 单位成交推动价格的能力 | Amihud 非流动性、量价弹性、收盘 VWAP 偏离 |
| C. 日内时序结构 | 分钟价格是反转还是延续,波动是否成簇 | 方差比、收益自相关、绝对收益自相关 |
| D. 成交量日内分布形状 | 成交在一天里怎么分布,而不是总量多少 | 成交量 HHI、时间重心、开盘半小时量占比 |
| E. 路径形态 | 价格从开盘到收盘走了什么路径 | 路径效率、日内最大回撤、量加权涨跌非对称、开盘/尾盘半小时收益 |
各个日频量的构造借用了金融计量学里成熟的工具,下面这些文献是思路参考,不是复现对象,数值不可与之对照:
- 已实现矩:Amaya, Christoffersen, Jacobs, Vasquez (2015), Does realized skewness predict the cross-section of equity returns?, JFE
- 已实现半方差与好坏波动:Barndorff-Nielsen, Kinnebrock, Shephard (2010), Measuring downside risk: realised semivariance;Bollerslev, Li, Zhao (2020), Good volatility, bad volatility, and the cross section of stock returns, JFQA
- 双幂次变差与跳跃:Barndorff-Nielsen, Shephard (2004), Power and bipower variation with stochastic volatility and jumps, JFEC
- 非流动性:Amihud (2002), Illiquidity and stock returns, JFM
- 方差比:Lo, MacKinlay (1988), Stock market prices do not follow random walks, RFS
- 注意力驱动交易:Barber, Odean (2008), All that glitters, RFS
3. 计算流程总览
cn_stock_bar1m_c(09:31~15:00,每股每日 240 根)
│ ① 日内压缩:18 个日频微观结构量 X_daily
▼
质量过滤:240 根齐全、日内方差 > 1e-12、全天有成交;±inf → null
│ ② 时序聚合:过去 24 个交易日内取均值 m20 / 标准差 s20(≥20 个有效日才出值)
▼
36 个候选 + 9 个其他候选 = 52 个候选 ──③ IC 筛选──▶ 25 个入选因子
│ ④ 截面处理:MAD 5 倍去极值 → z-score → 对 log 总市值回归取残差
▼
│ ⑤ 合成:每个因子再截面 z-score,4 个正向因子取负,25 个等权相加
▼
micro_combo ──⑥ 对 10 个风格因子 + 申万一级行业哑变量回归取残差──▶ micro_combo_pure
4. 第一步:日内压缩成 18 个日频量
4.1 记号与数据口径
- 只取连续竞价分钟:
CAST(date AS TIME) >= '09:31:00',剔除开盘集合竞价 bar,保留 15:00 收盘集合竞价 bar,每天恰好 240 根,记序号 $i = 1, \dots, 240$ - $C_i$、$v_i$、$a_i$:第 $i$ 根的收盘价、成交量(股)、成交额(元)
- 分钟简单收益 $r_i = C_i / C_{i-1} - 1$,对数收益 $\ell_i = \ln(C_i / C_{i-1})$,$i = 2, \dots, 240$,共 $n = 239$ 个。只在日内取差分,不含隔夜跳空
- 已实现方差 $RV = \sum_i r_i^2$
- 一个交易日要同时满足三个条件才进入后续计算:240 根齐全、$RV > 10^{-12}$(排除一字板)、全天成交量 {seo}gt; 0$。不满足的日子不占滚动窗口名额
4.2 A 组:已实现高阶矩与跳跃
| 日频量 | 公式 | 含义 |
|---|---|---|
rkurt_daily 已实现峰度 |
$\dfrac{n \sum r_i^4}{(\sum r_i^2)^2}$ | 正态约为 3。值大说明一天里少数几分钟贡献了大部分波动,尾部厚 |
rs_down_ratio_daily 下行方差占比 |
$\dfrac{\sum_{r_i<0} r_i^2}{RV}$ | 0.5 表示涨跌对称;大于 0.5 说明波动主要来自下跌分钟 |
jump_ratio_daily 跳跃方差占比(不入表) |
$\dfrac{\max!\left(RV - BV,\ 0\right)}{RV}$,$BV = \dfrac{\pi}{2}\cdot\dfrac{n}{n-1}\sum_i \lvert r_i\rvert\lvert r_{i-1}\rvert$ | 双幂次变差 $BV$ 对跳跃稳健,只估计连续波动;$RV-BV$ 就是跳跃贡献的方差 |
vol_of_vol_daily 日内波动离散度 |
$\dfrac{\operatorname{std}(\lvert r_i\rvert)}{\operatorname{mean}(\lvert r_i\rvert)}$ | 绝对收益的变异系数,值大说明波动在日内分布不均 |
符号跳跃 $(RS^+ - RS^-)/RV$ 恒等于 $1 - 2\cdot$
rs_down_ratio,与下行方差占比严格仿射,候选阶段已剔除。
4.3 B 组:流动性与价格冲击
| 日频量 | 公式 | 含义 |
|---|---|---|
amihud_daily 分钟非流动性 |
$\ln!\left(\operatorname{mean}_i \dfrac{\lvert r_i\rvert}{a_i}\right)$ | 每成交 1 元推动的价格变动,取对数压缩量纲。值大越不流动 |
elasticity_daily 量价弹性 |
$\ln v_i = \alpha + \beta \lvert r_i\rvert + \varepsilon_i$ 的 $\beta$ | 价格每多波动一单位要多放多少量。值大说明价格「推不动」,要靠大量成交才能波动 |
vwap_dev_daily 收盘 VWAP 偏离 |
$\dfrac{C_{240}}{\sum a_i / \sum v_i} - 1$ | 收盘价相对全天成交均价的位置。正值说明尾盘价格被推高到均价之上 |
4.4 C 组:日内时序结构
| 日频量 | 公式 | 含义 |
|---|---|---|
var_ratio_daily 方差比 |
$\dfrac{RV_{5\min}}{5\cdot RV_{1\min}}$,$RV_{5\min}$ 用 48 个 5 分钟块末收盘价的收益算 | 随机游走下为 1;{seo}lt;1$ 说明分钟级均值回复(买卖价差弹跳),{seo}gt;1$ 说明分钟级趋势延续 |
ret_ac1_daily 收益一阶自相关 |
$\operatorname{corr}(r_i, r_{i-1})$ | 负值为分钟反转,正值为分钟追涨杀跌。对 MA(1) 噪声近似有 $VR \approx 1 + 2\rho_1$ |
absret_ac1_daily 波动聚集度 |
$\operatorname{corr}(\lvert r_i\rvert, \lvert r_{i-1}\rvert)$ | 大波动后面是否还跟着大波动,即日内的 GARCH 效应 |
4.5 D 组:成交量日内分布形状
| 日频量 | 公式 | 含义 |
|---|---|---|
vol_hhi_daily 成交量集中度 |
$240 \cdot \sum_i \left(\dfrac{v_i}{\sum v}\right)^2$ | 赫芬达尔指数乘以 bar 数。完全均匀时为 1,值越大成交越挤在少数几分钟 |
vol_gravity_daily 成交量时间重心 |
$\dfrac{1}{240}\cdot\dfrac{\sum_i i, v_i}{\sum v}$ | 成交量加权的平均时刻。0.5 为均匀,偏小说明成交偏早盘 |
open30_vol_daily 开盘半小时量占比 |
$\dfrac{\sum_{i \le 30} v_i}{\sum v}$ | 09:31~10:00 的成交占比,均匀时应为 0.125(A 股 U 型分布下通常更高) |
4.6 E 组:路径形态
| 日频量 | 公式 | 含义 |
|---|---|---|
path_eff_daily 路径效率 |
$\dfrac{\lvert \ln(C_{240}/C_1)\rvert}{\sum_i \lvert \ell_i\rvert}$ | 位移除以路程,落在 $[0,1]$。接近 1 是单边趋势,接近 0 是来回震荡。分母用对数收益,由三角不等式保证不越界 |
max_dd_daily 日内最大回撤 |
$\min_i \left(\dfrac{C_i}{\max_{j \le i} C_j} - 1\right)$ | 非正数,越小日内回撤越深 |
ret_asym_daily 量加权涨跌非对称 |
$\dfrac{\sum_{r_i>0} v_i r_i}{\sum_{r_i>0} v_i + 1} + \dfrac{\sum_{r_i<0} v_i r_i}{\sum_{r_i<0} v_i + 1}$ | 上涨分钟的量加权平均涨幅加上下跌分钟的量加权平均跌幅(后者为负)。正值说明放量上涨的力度大于放量下跌,买方更激进。分母 $+1$ 只为防零除 |
open30_ret_daily 开盘半小时收益(不入表) |
$C_{30}/C_1 - 1$ | 早盘消化隔夜信息的幅度 |
last30_ret_daily 尾盘半小时收益(不入表) |
$C_{240}/C_{210} - 1$ | 尾盘资金推动的幅度 |
三个「不入表」的日频量会在某个值上堆积(开盘/尾盘收益落在 tick 网格上精确为 0 的很多,跳跃占比被 $\max(\cdot,0)$ 截断成 0 的很多),单日重复率超过入库门禁的 20%,所以只作为中间量参与聚合,它们的 20 日聚合值是连续的,照常入表。
5. 第二步:20 日时序聚合
对每个日频量 $X_t$ 取两种聚合:
$ X^{m20}_t = \operatorname{mean}{X_s : s \in W_t},\qquad X^{s20}_t = \operatorname{std}{X_s : s \in W_t}$
窗口 $W_t$ 是截至 $t$ 的最近 24 个交易日里的有效日,有效日少于 20 个时置空。这样做的原因:分钟表停牌日没有行,如果直接「取最近 20 行」,窗口跨多远取决于这次加工批次里恰好有多少行,同一天在单日增量和历史回填里会算出不同值(实测 micro_combo 中位差 0.108)。代码先把每只股票补齐到完整交易日网格再按固定跨度滚动,两种批次长度的结果差异降到 $2\times10^{-11}$。
两种聚合的经济含义不同:
_m20是「性格」:这只股票平时的日内行为是什么样的,比如习惯性地尾盘拉升、习惯性地开盘放量_s20是「情绪稳定性」:日内行为是不是忽好忽坏。入选的 25 个里有 16 个是_s20,说明在 A 股,日内特征的时变程度比特征本身更有预测力。一只股票若有时风平浪静、有时剧烈跳动,往往是被事件和情绪驱动,而不是被稳定的基本面定价
6. 第三步:因子筛选(52 → 25)
候选:18 个日频量各取 _m20、_s20 共 36 个,另加 9 个日频量(已实现偏度、符号跳跃、Roll 价差、价格冲击斜率、成交量熵、最高/最低价时点、收盘位置、涨跌分钟量比)的聚合,共 52 个。
IC 口径:月末截面(不重叠)、次日开盘到 21 个交易日后开盘的收益、Spearman、年化 ICIR = 月度 ICIR × $\sqrt{12}$。训练段 2016-01 ~ 2019-12 用于挑选,测试段 2020-01 ~ 2026-08 只报告。规则事先定好、一次应用:
- 训练段 |年化 ICIR| ≥ 1.5
- 训练段与测试段 IC 同向
- 两两截面相关 |ρ| > 0.8 时只留训练段 |ICIR| 大的
规则 1、2 剔除 23 个,规则 3 剔除 4 个(rkurt_m20、var_ratio_m20、max_dd_m20、vol_entropy_s20)。
7. 第四步:截面处理与合成
市值中性化(25 个入选因子各自独立做,每个交易日一个截面):
- MAD 去极值:中位数 ± $5 \times 1.4826 \times \mathrm{MAD}$ 截断
- z-score 标准化
- 对标准化后的 $\ln(\text{总市值})$ 做 OLS,取残差 $\tilde f_k$。有效样本少于 20 只时当日置空
合成:
$ \texttt{micro_combo} = \sum_{k=1}^{25} s_k \cdot \frac{\tilde f_k - \operatorname{mean}(\tilde f_k)}{\operatorname{std}(\tilde f_k)}$
- $s_k = -1$:训练段 IC 为正的 4 个(
rs_down_ratio_m20、amihud_m20、jump_ratio_m20、elasticity_s20) - $s_k = +1$:其余 21 个
- 符号在筛选时一次性定下,不随加工区间重估,没有前视
- 等权而非 IC 加权,避免把训练段的噪声写进权重
- 25 个因子必须全部非空才出值。
pl.sum_horizontal会跳过空值,否则全空的股票会被加成 0,正好落在分布中间
纯净版:micro_combo 再去极值标准化,对十个风格因子(Beta、Size、NonLinearSize、BTOP、EY、Growth、Leverage、ResVol、Liquidity、Momentum,均为 cn_stock_prefactors 构造的代理)与申万一级行业哑变量回归,残差即 micro_combo_pure。它衡量的是扣除常见风格和行业之后剩下的日内微观结构信息。
8. 25 个入选因子的经济学含义
下表「方向」指因子值与未来收益的关系:「−」表示值越小越好,「+」表示值越大越好。「增量 ICIR」是再剔除 20 日反转、20 日换手、20 日波动三个传统因子后剩下的年化 ICIR,用来判断这个因子是不是传统价量因子换了个马甲。数值来自同目录主文档的 IC 绩效表。
8.1 A 组:已实现高阶矩与跳跃(5 个)
| 因子 | 方向 | IC / ICIR | 增量 ICIR |
|---|---|---|---|
rkurt_s20 |
− | −0.062 / −3.65 | −1.64 |
rs_down_ratio_m20 |
+ | +0.094 / +2.90 | +2.22 |
rs_down_ratio_s20 |
− | −0.073 / −2.45 | −1.77 |
jump_ratio_m20 |
+ | +0.064 / +1.44 | +0.42 |
vol_of_vol_s20 |
− | −0.063 / −3.31 | −0.90 |
rkurt_s20峰度不稳定性:峰度时高时低,说明这只股票有时安静、有时被几分钟的剧烈波动主导,是典型的事件驱动、消息驱动的交易形态。这类股票更容易吸引短线投机资金,形成「彩票」式溢价,未来收益偏低。它也可以理解为信息不确定性:投资者对它的定价分歧大,按 Miller (1977) 的意见分歧理论,卖空受限下乐观者主导定价,价格偏高rs_down_ratio_m20下行方差占比(本表增量最强的单因子之一):波动主要来自下跌分钟的股票未来收益高,主要来自上涨分钟的未来收益低。与 Bollerslev 等人「好波动/坏波动」的发现一致:上行波动(正向跳跃、急拉)吸引追涨的彩票偏好资金,被高估;下行波动多是流动性冲击或恐慌抛售,提供流动性的一方要求补偿,价格事后回补。剔除 20 日反转后增量仍有 +2.22,说明它不只是「跌多了反弹」,抓的是波动的方向结构rs_down_ratio_s20:涨跌结构本身的不稳定,含义同rkurt_s20,属于情绪驱动的度量jump_ratio_m20跳跃占比:跳跃占比高的股票未来收益略高。但增量只剩 +0.42,原始 IC 主要被波动率解释:$1 - BV/RV$ 偏大往往出现在连续波动低、价格只偶尔「跳一下」的冷门股上,本质接近低波动异象。不建议单独使用vol_of_vol_s20波动离散度的不稳定:日内波动分布形态每天都在变,是事件冲击频繁的信号,方向与rkurt_s20相同;增量 −0.90,与波动率重叠较多
8.2 B 组:流动性与价格冲击(4 个)
| 因子 | 方向 | IC / ICIR | 增量 ICIR |
|---|---|---|---|
amihud_m20 |
+ | +0.079 / +1.85 | +1.12 |
elasticity_s20 |
+ | +0.031 / +1.15 | +0.28 |
vwap_dev_m20 |
− | −0.040 / −1.17 | −0.71 |
vwap_dev_s20 |
− | −0.086 / −1.79 | −0.80 |
amihud_m20分钟非流动性:经典的非流动性溢价(Amihud 2002)。每元成交推动价格越多,交易成本和冲击成本越高,投资者要求更高的预期收益作为补偿。注意它已对市值中性化,捕捉的是同等市值下的流动性差异,不是小市值效应的重复elasticity_s20量价弹性的不稳定:增量仅 +0.28,基本被换手率解释,不建议单独使用vwap_dev_m20收盘相对 VWAP 的平均偏离:长期收在均价之上,意味着尾盘经常有资金把价格推高。A 股尾盘拉升常见于短线资金做收盘价、或散户在尾盘追涨,价格偏离均衡,次日起倾向回落。所以收盘习惯性高于均价的股票未来收益低vwap_dev_s20:尾盘相对均价的偏离忽大忽小,说明尾盘时常有剧烈的资金博弈,同样是投机信号
8.3 C 组:日内时序结构(5 个)
| 因子 | 方向 | IC / ICIR | 增量 ICIR |
|---|---|---|---|
var_ratio_s20 |
− | −0.059 / −2.26 | −1.37 |
ret_ac1_m20 |
− | −0.073 / −1.57 | −0.96 |
ret_ac1_s20 |
− | −0.049 / −2.38 | −1.37 |
absret_ac1_m20 |
− | −0.085 / −2.05 | −1.35 |
absret_ac1_s20 |
− | −0.061 / −3.03 | −2.22 |
ret_ac1_m20分钟收益自相关:流动性好、做市充分的股票,分钟收益呈轻微负自相关(买卖价差弹跳,Roll 1984)。自相关偏正说明价格在分钟级「惯性上涨/下跌」,订单流有持续性,常见于羊群式追涨杀跌。这种由交易行为而非信息驱动的价格延续,事后会回吐,所以自相关越高未来收益越低var_ratio_s20、ret_ac1_s20:日内是反转还是延续的形态不稳定,说明主导交易的力量在变(有时是做市式的均值回复,有时是趋势资金),同属情绪不稳定的信号。方差比与自相关近似满足 $VR \approx 1+2\rho_1$,所以它们的_m20版本相关 0.93,筛选时只留了一个absret_ac1_m20波动聚集度:大波动之后紧跟大波动,说明信息或资金是成批涌入的。在 A 股这更多是短线资金接力和注意力集中造成的,而不是基本面信息逐步释放,价格在这种状态下容易被推过头absret_ac1_s20波动聚集度的不稳定(增量 −2.22,本表最强之一):有时成簇、有时平稳,说明这只股票会间歇性地进入「被炒作」状态。它与传统波动率因子的相关性低,提供了独立信息
8.4 D 组:成交量日内分布形状(4 个)
| 因子 | 方向 | IC / ICIR | 增量 ICIR |
|---|---|---|---|
open30_vol_m20 |
− | −0.067 / −2.13 | −0.38 |
open30_vol_s20 |
− | −0.059 / −3.27 | −0.75 |
vol_gravity_s20 |
− | −0.052 / −3.07 | −1.18 |
vol_hhi_s20 |
− | −0.031 / −1.28 | −0.37 |
(D 组入选 4 个,vol_entropy_s20 因与 vol_hhi_s20 相关 0.91 被剪掉。)
open30_vol_m20开盘量占比:成交集中在开盘半小时,说明交易主要由隔夜消息和集合竞价情绪驱动。散户偏好在开盘根据隔夜新闻下单(Barber-Odean 的注意力驱动买入),机构则更倾向在全天分散执行。开盘量占比高的股票散户参与度高,容易被高估。但增量只有 −0.38,与换手率高度重叠,不建议单独使用open30_vol_s20、vol_gravity_s20成交时间分布的不稳定:有的日子量集中在早盘、有的日子集中在尾盘,说明成交是被零散事件触发的,而不是被稳定的配置型资金按节奏执行。稳定的成交节奏通常对应机构持股和低关注度,未来收益更好vol_hhi_s20成交量集中度的不稳定:含义同上,增量 −0.37,不建议单独使用
8.5 E 组:路径形态(7 个)
| 因子 | 方向 | IC / ICIR | 增量 ICIR |
|---|---|---|---|
ret_asym_m20 |
− | −0.089 / −3.43 | −2.12 |
ret_asym_s20 |
− | −0.081 / −3.59 | −1.27 |
path_eff_m20 |
− | −0.054 / −1.44 | −0.29 |
path_eff_s20 |
− | −0.053 / −1.75 | −0.15 |
max_dd_s20 |
− | −0.074 / −1.65 | −0.57 |
open30_ret_s20 |
− | −0.083 / −1.87 | −0.78 |
last30_ret_s20 |
− | −0.086 / −2.25 | −1.34 |
ret_asym_m20量加权涨跌非对称(增量 −2.12):放量上涨的力度持续大于放量下跌,说明买方愿意付出更高的冲击成本去追价。这种激进买盘在 A 股多来自情绪化的散户和短线游资,推高的价格缺少基本面支撑,未来回落。和 20 日反转的区别在于:反转看的是涨了多少,它看的是怎么涨的,即上涨是否靠放量追价完成。增量 ICIR 证明这部分信息反转因子给不出ret_asym_s20:买卖力量对比的不稳定,情绪化交易信号path_eff_m20、path_eff_s20路径效率:日内单边走势多的股票未来收益低。但增量接近 0:路径效率高基本等价于日收益绝对值大,被反转和波动率解释掉了,不建议单独使用max_dd_s20日内回撤深度的不稳定:有时日内闪崩、有时平稳,增量 −0.57,与波动率重叠较多open30_ret_s20、last30_ret_s20开盘/尾盘半小时收益的波动:开盘半小时是隔夜信息集中消化的时段,尾盘半小时是资金做收盘价和调仓的时段。这两个时段的收益波动大,说明股票经常被消息冲击或尾盘资金操纵,都属于高投机性特征。尾盘版本增量 −1.34,强于开盘版本
8.6 统一的经济学解释
25 个因子里 21 个是负向,且多数是 _s20。把它们放在一起看,micro_combo 值高的股票有这样的画像:
- 日内波动分布厚尾且忽厚忽薄,波动成簇出现
- 分钟价格有惯性,上涨时放量追价,收盘常被推到均价之上
- 成交集中在开盘,成交时间分布每天都在变
- 开盘、尾盘两个敏感时段的收益波动大
这是注意力驱动、散户与短线资金主导的交易形态。A 股成交中个人投资者占比高,这类资金偏好高波动、有故事的股票,愿意为「彩票」支付溢价,同时卖空约束让悲观观点很难进入价格,于是这类股票被系统性高估,在随后一个月回吐。反过来,日内行为平稳、成交节奏稳定、下行波动占比高(被错杀而非被炒作)、流动性略差(需要补偿)的股票,未来收益更好。
合成因子的全样本 rankIC −0.110 强于任何单因子(最强单因子 −0.094),说明五个方向的信息有互补。剔除 20 日反转、换手、波动之后仍有 −0.051 / −2.63,大约一半的预测力是传统日频价量因子给不出的,这部分才是分钟数据真正的价值。
9. IC 表现摘要
口径同第 6 节,数值直接由入库因子计算。
| 因子 | 训练 IC / ICIR(2016-19) | 测试 IC / ICIR(2020-26.08) | 全样本 IC / ICIR | 增量 IC / ICIR |
|---|---|---|---|---|
micro_combo |
−0.112 / −3.35 | −0.111 / −2.50 | −0.110 / −2.73 | −0.051 / −2.63 |
micro_combo_pure |
−0.038 / −3.83 | −0.028 / −2.41 | −0.034 / −2.92 | −0.034 / −2.95 |
micro_combo的 IC 在训练段和测试段几乎一样(−0.112 对 −0.111),ICIR 从 −3.35 降到 −2.50,有衰减但没有塌掉;77% 的月份 IC 方向正确micro_combo_pure的 IC 只有原版的三分之一,说明原版有相当一部分来自风格与行业暴露。但纯净版 ICIR 反而更高,因为风格收益的波动也一起被剔掉了
10. 单因子回测(bigtrader)
设置:复用仓库 hfwarehouse/utils/strategy_backtest.py 的 do_access,即 AlphaMiner.single_factor_backtest() 背后的同一套策略,回测于 2026-10-14 运行。
| 项目 | 设置 |
|---|---|
| 区间 | 2015-03-02 ~ 2026-10-13,共 2824 个交易日 |
| 信号 | -micro_combo(或 -micro_combo_pure),取负号是因为策略选分数最高的股票 |
| 信号再处理 | 每日截面 0.1% / 99.9% 分位去极值 → z-score → 对 32 个行业哑变量 + log 总市值回归取残差 |
| 股票池 | 剔除 ST、未复权价 ≤ 1.2 元、上市不足 365 天、北交所、科创板 |
| 选股与调仓 | 每 5 个交易日调仓,选分数最高的 200 只等权 |
| 成交 | 信号日次日开盘价成交(bigtrader 日频 next-bar fill) |
| 费用 | 买 0.03%、卖 0.08%,单笔最低 5 元;未计滑点 |
| 资金 / 基准 | 2000 万 / 中证 1000(000852.SH) |
整体绩效:
| 因子 | 年化收益 | 基准年化 | 年化超额 | 夏普 | 信息比率 | 最大回撤 | 超额最大回撤 | 月度超额胜率 | 年化单边换手 | 年化费用 |
|---|---|---|---|---|---|---|---|---|---|---|
micro_combo |
15.74% | −0.35% | 16.14% | 0.73 | 1.11 | −45.5% | −26.3% | 63.6% | 12.3 倍 | 1.39% |
micro_combo_pure |
9.41% | −0.35% | 9.80% | 0.46 | 0.94 | −62.6% | −22.3% | 62.9% | 17.5 倍 | 1.98% |
分年度(「超额」为相对中证 1000 的几何超额):
| 年份 | micro_combo 收益 |
超额 | 最大回撤 | micro_combo_pure 收益 |
超额 | 中证 1000 |
|---|---|---|---|---|---|---|
| 2015(3 月起) | 80.11% | 24.17% | −45.5% | 63.01% | 12.38% | 45.05% |
| 2016 | 8.46% | 35.58% | −20.5% | −11.88% | 10.16% | −20.01% |
| 2017 | −9.22% | 9.84% | −16.8% | −14.22% | 3.79% | −17.35% |
| 2018 | −24.43% | 19.70% | −34.1% | −30.24% | 10.50% | −36.87% |
| 2019 | 36.46% | 8.59% | −18.9% | 30.69% | 4.00% | 25.67% |
| 2020 | 23.20% | 3.19% | −14.8% | 30.88% | 9.63% | 19.39% |
| 2021 | 37.28% | 13.91% | −10.4% | 28.90% | 6.95% | 20.52% |
| 2022 | 5.86% | 34.99% | −17.4% | −7.10% | 18.47% | −21.58% |
| 2023 | 15.01% | 22.72% | −10.4% | 10.53% | 17.93% | −6.28% |
| 2024 | 7.71% | 6.43% | −29.9% | 10.47% | 9.17% | 1.20% |
| 2025 | 33.79% | 4.95% | −12.0% | 38.01% | 8.26% | 27.49% |
| 2026(至 10-13) | 1.42% | 9.68% | −17.8% | −3.69% | 4.16% | −7.53% |
分段:
| 因子 | 区间 | 年化超额 | 信息比率 | 超额最大回撤 |
|---|---|---|---|---|
micro_combo |
2016-2019(IC 训练段) | 17.82% | 2.28 | −5.7% |
micro_combo |
2020-2026(IC 测试段) | 13.69% | 0.80 | −26.3% |
micro_combo_pure |
2016-2019 | 7.01% | 1.57 | −4.6% |
micro_combo_pure |
2020-2026 | 10.90% | 0.86 | −22.3% |
怎么读:
- 12 个年度里两个版本的超额全部为正。
micro_combo在 2016、2018、2022 这类熊市年份的超额最大(20%~36%),符合「回避投机股」的逻辑:下跌市里被炒作的股票跌得最狠 - 超额回撤集中在投机性上涨行情里。
micro_combo最大超额回撤发生在 2025-07-22 ~ 2026-06-30(−26.3%),对应 2025-08(中证 1000 单月 +11.7%,组合超额 −6.9%)、2026-04(+10.0%,超额 −7.7%)、2026-06(超额 −15.1%)这几段小盘题材行情;随后 2026-07 中证 1000 单月 −19.7% 时组合 +9.0%,一个月收复。micro_combo_pure的超额最大回撤在 2024-01-17 ~ 2024-02-07 的微盘股流动性危机,2024-11 才收复。这是因子的结构性特征:它系统性地低配高关注度、高投机性的股票,在资金追逐题材时会跑输 - 测试段信息比率从 2.28 降到 0.80,超额收益本身没怎么降(17.8% → 13.7%),衰减主要来自超额波动变大。这和 IC 表里 ICIR 从 −3.35 到 −2.50 的方向一致
- 绝对收益回撤大:组合是满仓多头,2015 年股灾的 −45.5% 主要是市场 beta,不是因子失效。要评价因子本身应看超额列
- 纯净版收益更低、换手更高:剔除风格后 IC 只剩三分之一,多头组合超额从 16.1% 降到 9.8%;纯净残差的截面排序更不稳定,换手从 12.3 倍升到 17.5 倍。纯净版的价值在于和其他因子叠加时不重复下注,单独做多头不如原版
回测的局限:
- 未计滑点与冲击成本。每 5 日换约四分之一的仓位,年化单边换手 12 倍,若每次单边多付 0.1% 冲击成本,年化收益约再降 1.2pp
- 组合从全市场选股等权持有,市值分布与中证 1000 不同,超额里混有一部分规模与等权效应;回测脚本已在信号层面对 log 市值和行业做了中性化,但没有在组合层面约束市值与行业偏离
- 回测脚本不提交平台:仓库的
AlphaMiner.single_factor_backtest()会调用bigalpha.factors.submit_factor_strategy_performance把结果发布到平台,本次直接调用其内部的do_access跑同一套策略,只在本地出结果
11. 使用建议与注意事项
- 优先用
micro_combo/micro_combo_pure,不要单独用增量归零的 6 个因子:path_eff_s20、path_eff_m20、elasticity_s20、vol_hhi_s20、open30_vol_m20、jump_ratio_m20。它们留在表里是为了合成和后续研究 - 与传统因子叠加时用纯净版。原版和 20 日反转、换手、波动有约一半重叠,直接叠加会重复下注
- 筛选偏差:25 个因子是按 IC 挑出来的,入选因子的 IC 天然偏乐观。「训练/测试同向」这条规则也用到了测试段的符号,测试段严格说不是完全干净的样本外,真正的样本外要从 2026-09 之后积累
- 前向收益口径:全文 IC 都用次日开盘到 21 日后开盘。多数子因子是反转方向,换成收盘口径会被系统性放大但不可实现
- 数据边界:分钟数据从 2015-01-05 起,
micro_combo需要 20 个有效日,实际约从 2015 年 2 月起有值;停牌日、一字板日、bar 不齐的日子不出值 - 计算的可复现性:同一天在单日增量和历史回填里算出的值一致(差异 {seo}lt; 10^{-10}$),可以放心做日频增量
\