# hf_prefactors_ky_industry_rotation ## 文献来源 - **标题**: 《A 股行业动量的精细结构——市场微观结构研究系列(4)》 - **作者**: 魏建榕、傅开波 - **机构**: 开源证券 - **时间**: 2020-03-02 研报指出 A 股行业指数只存在微弱的动量效应:申万一级行业指数的 Ret20 因子多空对冲信息比率仅 0.47,且 2009—2012 年间行业之间曾持续呈现反转效应。研报用「切割」的手法剖析隐藏在行业动量中的精细结构,给出两个行业轮动模型。**纵向切割**(黄金律模型)把行业指数每日收益率拆成日内收益率与隔夜收益率,分别加总为日内因子 M0 与隔夜因子 M1,实证显示 M0 呈动量效应、M1 呈反转效应,把两个方向背离的打分相加得到行业总得分。**横向切割**(龙头股模型)从成分股微观动力学出发:按 20 日成交金额累计占比切出龙头股与普通股,用两者 20 日平均涨幅之差度量成分股之间「领先-滞后、互相牵引」的牵引力。 > 粒度说明:研报的因子都是**行业指数**粒度的轮动因子。本项目的表结构要求 `date` + `instrument` 主键,因此把行业层面的因子值广播到该行业的全部成分股,每只股票带上所属申万一级行业的因子值。下游既可直接当个股因子用,也可按行业去重还原成行业轮动信号。 ## 表结构 - **表名**: `hf_prefactors_ky_industry_rotation` - **主键**: `date` + `instrument` - **记录粒度**: 每个交易日每只股票一条记录(因子值为该股所属申万一级行业的行业级因子) | 字段 | 类型 | 可空 | 含义 | | ---- | ---- | ---- | ---- | | `date` | `PlDatetime` | 否 | 交易日期 | | `instrument` | `PlString` | 否 | 股票代码 | | `ind_intraday_momentum_m0` | `PlFloat64` | 是 | 日内因子 M0,所属行业指数过去 20 个交易日日内收益率(今收/今开-1)之和,呈动量效应,值越大未来收益越高 | | `ind_overnight_reversal_m1` | `PlFloat64` | 是 | 隔夜因子 M1,所属行业指数过去 20 个交易日隔夜收益率(今开/昨收-1)之和,呈反转效应,值越小未来收益越高 | | `ind_golden_rule_score` | `PlFloat64` | 是 | 黄金律模型总得分,M0 由低到高打分与 M1 由高到低打分之和,值越大未来收益越高 | | `ind_leader_ret_60pct` | `PlFloat64` | 是 | 所属行业龙头股(λ=60%)的 20 日平均涨幅 | | `ind_common_ret_60pct` | `PlFloat64` | 是 | 所属行业普通股(λ=60%)的 20 日平均涨幅 | | `ind_leader_traction_60pct` | `PlFloat64` | 是 | 牵引力因子 G(λ=60%),等于 `ind_leader_ret_60pct` 减 `ind_common_ret_60pct`,研报最优切割参数,值越大未来收益越高 | | `ind_leader_traction_40pct` | `PlFloat64` | 是 | 牵引力因子 G(λ=40%),口径同上 | | `ind_leader_traction_80pct` | `PlFloat64` | 是 | 牵引力因子 G(λ=80%),口径同上 | ## 依赖数据 | 依赖表 | 频率 | 用到的字段 | 用途 | | ---- | ---- | ---- | ---- | | `cn_stock_prefactors` | 日频 | `date`、`instrument`、`sw2021_level1`、`sw_level1_open`、`sw_level1_close`、`amount`、`change_ratio`、`suspended` | `date` + `instrument` 作为输出骨架,`sw2021_level1` 既用于把个股聚合成行业也用于把行业因子广播回成分股;`sw_level1_open` / `sw_level1_close` 构成行业指数日频序列,拆出日内与隔夜收益率;`amount` 为龙头股切割的排序与累计依据;`change_ratio` 累乘得到成分股 20 日涨幅;`suspended` 与前述字段共同判定窗口内交易日是否有效 | 两个模型都回溯 20 个交易日,隔夜收益率额外需要前一个交易日,`_build` 统一倒退 21 个交易日取数,故单日增量的实际扫描区间约为输出区间的 21 倍(日频表,扫描成本可忽略)。 ## 因子列表 ### ind_intraday_momentum_m0 **中文名**: 日内因子 M0 **描述**: 黄金律模型纵向切割出的日内成分。研报的核心想法是在交易日内的不同时段,交易者成分存在系统性差异,因而呈现不同的市场行为特征。实证结果显示日内因子 M0 呈现动量效应,即 M0 数值越大的行业分组,年化收益率越高。 **构建逻辑**: 1. 对每个行业指数,回溯取其过去 20 日的行情数据; 2. 把行业指数的每日收益率拆解为日内收益率(今收/今开-1)与隔夜收益率(今开/昨收-1); 3. 将过去 20 个交易日的日内收益率加总,得到日内因子 M0。 **项目实现说明**: - 计算频率:研报原文为每个自然月月底计算,本项目按项目规范改为每个交易日计算 - 记录粒度:研报的因子是行业指数粒度,本项目广播到该行业的全部成分股 - 行业指数口径:取 `cn_stock_prefactors` 的申万一级行业指数开盘价与收盘价(`sw_level1_open` / `sw_level1_close`) - 有效交易日:要求行业指数在 21 个交易日的窗口内(20 日窗口 + 隔夜收益率多用的前一天)开盘价与收盘价都可用,否则该行业当日因子值置空 ### ind_overnight_reversal_m1 **中文名**: 隔夜因子 M1 **描述**: 黄金律模型纵向切割出的隔夜成分。实证结果显示隔夜因子 M1 呈现反转效应,即 M1 数值越大的行业分组,年化收益率倾向于越低,与日内因子 M0 方向相反。 **构建逻辑**: 步骤同 `ind_intraday_momentum_m0`,第 3 步改为将过去 20 个交易日的隔夜收益率加总,得到隔夜因子 M1。 **项目实现说明**: - 计算频率、记录粒度、行业指数口径、有效交易日:同 `ind_intraday_momentum_m0` ### ind_golden_rule_score **中文名**: 黄金律模型总得分 **描述**: 综合利用日内动量与隔夜反转两个方向背离的效应构造的行业轮动打分。研报给出的五分组净值曲线中,多头组合由每月底总得分最高的 5 个行业构成,年化收益 19.5%;多空对冲年化收益 8.56%、年化波动 12.6%、信息比率 0.68,明显优于传统动量因子(信息比率 0.47),且对回溯天数的敏感度明显低于传统动量因子。 **构建逻辑**: 1. 对每个行业指数,回溯取其过去 20 日的行情数据; 2. 计算每个行业指数的日内因子 M0 与隔夜因子 M1; 3. 将 N 个行业指数按照 M0 值从低到高分别打 1 分至 N 分; 4. 将 N 个行业指数按照 M1 值从高到低分别打 1 分至 N 分; 5. 将两项打分相加,得到每个行业的总得分。 **项目实现说明**: - 计算频率、记录粒度、行业指数口径、有效交易日:同 `ind_intraday_momentum_m0` - 并列处理:打分用 SQL 的 `RANK()`,DAI 的 `RANK()` 对并列值取排名均值。行业指数的 M0 / M1 为连续值,实际极少出现并列 ### ind_leader_ret_60pct **中文名**: 龙头股 20 日平均涨幅(λ=60%) **描述**: 龙头股模型的中间量。研报用它与普通股涨幅之差度量行业内成分股之间「领先-滞后、互相牵引」的动力学关系,用以解释「为何月度频率上个股是反转效应、而行业指数(个股的集合)却是动量效应」这一困惑。 **构建逻辑**: 1. 对某个行业,回溯取过去 20 日的成分股数据; 2. 将成分股按近 20 日成交金额从大到小排序,逐一累积成交金额; 3. 取累计成交金额占比达到 λ%(此处 60%)的成分股认定为龙头股,余下则为普通股; 4. 计算龙头股的近 20 日平均涨幅 R_龙头。 研报在设计上明确了三处细节:其一,龙头股的排序依据推荐采用「成交金额」而非市值类指标,因为成交金额既能大致反映经营规模(基本面因素),也顾及到了交易活跃度(市场行为因素);其二,龙头股的切割比例落实在「成交金额」上而非「个股数量」上,理由同上;其三,牵引力因子选择「R_龙头 - R_普通」而非除以成分股收益率标准差,因为后者着重于检验显著性,而前者着重于考察普通股补涨或补跌空间的大小。 **项目实现说明**: - 计算频率、记录粒度:同 `ind_intraday_momentum_m0` - 切割边界:研报表述为「取累计成交金额占比达到 λ%」,本项目按成交金额降序累计,把使累计占比**首次达到或超过** λ% 的那只股票一并计入龙头股,其后为普通股 - 20 日平均涨幅:研报未说明是「个股 20 日累计涨幅的组内均值」还是「组内日均涨幅」,本项目取前者,即先算每只成分股过去 20 日的累乘收益($\prod(1+r_t)-1$),再在组内等权求平均 - 有效交易日:要求成分股在 20 个交易日的窗口内无一天缺失成交额或涨跌幅且未停牌,否则该股不参与当日的龙头 / 普通股切割 ### ind_common_ret_60pct **中文名**: 普通股 20 日平均涨幅(λ=60%) **描述**: 龙头股模型的中间量,与 `ind_leader_ret_60pct` 对应的另一半。研报结论是龙头股呈动量效应、普通股呈反转效应。 **构建逻辑**: 步骤同 `ind_leader_ret_60pct`,第 4 步改为计算普通股的近 20 日平均涨幅 R_普通。 **项目实现说明**: - 计算频率、记录粒度、切割边界、20 日平均涨幅、有效交易日:同 `ind_leader_ret_60pct` ### ind_leader_traction_60pct **中文名**: 牵引力因子 G(λ=60%) **描述**: 龙头股模型的最终因子,研报给出 λ=60% 时效果最佳。多头组合由每月底 G 因子最高的 5 个行业构成,年化收益 17.7%;多空对冲年化收益 12.9%、年化波动 11.2%、信息比率 1.15,优于黄金律模型。研报另设计了四个参照模型(按个股数量切割、改用标准差标准化、改按总市值排序),在各自最优切割参数下的信息比率均明显低于龙头股模型。 **构建逻辑**: 取龙头股与普通股的近 20 日平均涨幅之差。 ```math G = R_{龙头} - R_{普通} ``` **项目实现说明**: - 计算频率、记录粒度、切割边界、20 日平均涨幅、有效交易日:同 `ind_leader_ret_60pct` ### ind_leader_traction_40pct **中文名**: 牵引力因子 G(λ=40%) **描述**: 口径同 `ind_leader_traction_60pct`,切割比例取 40%,用于观察切割参数对因子强度的影响(研报图 6 对 λ 做了遍历)。 **构建逻辑**: 同 `ind_leader_traction_60pct`,λ 取 40%。 **项目实现说明**: - 计算频率、记录粒度、切割边界、20 日平均涨幅、有效交易日:同 `ind_leader_ret_60pct` ### ind_leader_traction_80pct **中文名**: 牵引力因子 G(λ=80%) **描述**: 口径同 `ind_leader_traction_60pct`,切割比例取 80%。 **构建逻辑**: 同 `ind_leader_traction_60pct`,λ 取 80%。 **项目实现说明**: - 计算频率、记录粒度、切割边界、20 日平均涨幅、有效交易日:同 `ind_leader_ret_60pct` ## 复现核对 **核对口径**: 2015-01-05 ~ 2026-09-30(140 个月末截面);**行业级**核对——把本表广播到成分股的因子值按(交易日, 申万一级行业) 去重还原成 31 个行业的截面,前向收益取申万一级行业指数 21 个交易日的收盘到收盘收益,rankIC 按行业截面计算。个股级截面 IC 对本表不具可比性(同行业全部成分股共享一个取值,个股截面 IC 被严重稀释,实测全部落在 ±0.006 内),故本表的两列实测值均为**行业级**,第二列为逐日行业截面。研报给出的是行业五分组多空对冲的收益与信息比率,没有给 IC,故数值不可直接对照,只能核对方向与排序。 | 因子 | 本项目(月末截面 rankIC / 年化 rankICIR) | 本项目(逐日 rankIC) | 研报原文 | 出处 | | ---- | ---- | ---- | ---- | ---- | | `ind_intraday_momentum_m0` | +0.0238 / +0.28 | +0.0020 | 呈动量效应:M0 越大的分组年化收益越高(未给 IC) | 研报图 3 | | `ind_overnight_reversal_m1` | +0.0044 / +0.06 | -0.0140 | 呈反转效应:M1 越大的分组年化收益倾向越低(未给 IC) | 研报图 3 | | `ind_golden_rule_score` | +0.0149 / +0.22 | +0.0117 | 多头年化 19.5%、多空年化 8.56%、年化波动 12.6%、信息比率 0.68(未给 IC) | 研报图 4 | | `ind_leader_ret_60pct` | +0.0107 / +0.14 | -0.0213 | 龙头股呈动量效应(未给数值) | 研报第 3 节正文 | | `ind_common_ret_60pct` | +0.0007 / +0.01 | -0.0240 | 普通股呈反转效应(未给数值) | 研报第 3 节正文 | | `ind_leader_traction_60pct` | +0.0195 / +0.29 | -0.0051 | λ=60% 为最优:多头年化 17.7%、多空年化 12.9%、年化波动 11.2%、信息比率 1.15(未给 IC) | 研报图 6 与图 7 | | `ind_leader_traction_40pct` | +0.0024 / +0.04 | -0.0034 | 研报未披露,无法核对(研报图 6 仅以曲线给出不同 λ 的信息比率) | 研报图 6 | | `ind_leader_traction_80pct` | +0.0150 / +0.20 | -0.0023 | 研报未披露,无法核对(同上) | 研报图 6 | 方向核对的结论是**大部分成立、但强度远弱于研报**: - **方向正确的四项**: `ind_intraday_momentum_m0` 行业级 rankIC +0.0238(动量,与研报图 3 一致);`ind_golden_rule_score` +0.0149(得分越高收益越高,与研报一致);`ind_leader_traction_60pct` +0.0195(牵引力越大收益越高,与研报一致);且 `ind_leader_ret_60pct` (+0.0107) 高于 `ind_common_ret_60pct` (+0.0007),与研报「龙头股动量、普通股反转」的切割逻辑一致。 - **λ=60% 为最优也复现了**: 三个切割比例的行业级 rankIC 为 60% 的 +0.0195 > 80% 的 +0.0150 > 40% 的 +0.0024,与研报图 6「λ=60 时效果最佳」一致。 - **方向性矛盾一项(待确认)**: `ind_overnight_reversal_m1` 研报结论是**反转效应**(M1 越大收益越低,应为负 IC),本项目行业级 rankIC 为 **+0.0044**(接近 0、符号为正),逐日行业截面为 -0.0140(符号为负)。两个口径符号相反、绝对值都很小,无法判定,标为**待确认**。 - **强度差距**: 本项目行业级年化 rankICIR 全部落在 0.01 ~ 0.29,而研报给出黄金律模型多空信息比率 0.68、龙头股模型 1.15。两者口径不同(研报是五分组多空组合的收益波动比,本项目是 IC 序列的信息比率),不能直接相减,但量级差距仍然明显。 差异来源: - **样本区间是主因**。研报回测区间覆盖 2009 ~ 2020,本项目为 2015-01 ~ 2026-09。本工作区此前一项独立研究已记录「2020—2026 年行业层面的 alpha 贡献约为 0,收益几乎全部来自行业内选股」,与本次行业级 rankICIR 接近 0 的结果互相印证,因此这里的弱结果更可能是行业轮动效应本身在近年衰减,而不是实现偏差。 - **研报指标不可直接对照**。研报只给五分组多空净值与信息比率,未给任何 IC / ICIR 数值;而研报自己也指出「2009—2012 年期间行业之间曾持续呈现反转效应」,说明该模型对区间敏感。 - **记录粒度**。本表按项目规范把行业级因子广播到成分股,`date` + `instrument` 主键下的个股截面 IC 没有分辨力,故本小节一律用行业级口径核对;下游若要复现研报的行业轮动绩效,应先按行业去重再分组。 ## 示例数据 按 `date`、`instrument` 排序后的前 5 行与后 5 行,由 `update_docs()` 推送文档时自动填充。 | date | instrument | ind_intraday_momentum_m0 | ind_overnight_reversal_m1 | ind_golden_rule_score | ind_leader_ret_60pct | ind_common_ret_60pct | ind_leader_traction_60pct | ind_leader_traction_40pct | ind_leader_traction_80pct | |---------------------|------------|--------------------------|---------------------------|-----------------------|----------------------|----------------------|---------------------------|---------------------------|---------------------------| | 2026-09-30 00:00:00 | 000001.SZ | 0.021545 | -0.016578 | 47.000000 | 0.008137 | -0.005829 | 0.013966 | 0.018468 | 0.016593 | | 2026-09-30 00:00:00 | 000002.SZ | 0.129606 | -0.063739 | 62.000000 | 0.132000 | 0.027490 | 0.104510 | 0.055072 | 0.051760 | | 2026-09-30 00:00:00 | 000006.SZ | 0.129606 | -0.063739 | 62.000000 | 0.132000 | 0.027490 | 0.104510 | 0.055072 | 0.051760 | | 2026-09-30 00:00:00 | 000007.SZ | -0.030855 | -0.025683 | 41.000000 | -0.032617 | -0.036234 | 0.003617 | 0.014289 | -0.007164 | | 2026-09-30 00:00:00 | 000008.SZ | -0.080462 | 0.007740 | 8.000000 | -0.041932 | -0.036745 | -0.005187 | -0.049293 | -0.008378 | | 2026-09-30 00:00:00 | 920978.BJ | -0.031332 | -0.004677 | 21.000000 | 0.009840 | -0.032184 | 0.042024 | 0.079301 | 0.033800 | | 2026-09-30 00:00:00 | 920981.BJ | -0.087817 | 0.037571 | 4.000000 | -0.025543 | -0.018296 | -0.007247 | -0.020691 | 0.026643 | | 2026-09-30 00:00:00 | 920982.BJ | 0.001618 | -0.007763 | 35.000000 | 0.050024 | 0.016285 | 0.033739 | 0.122783 | 0.074292 | | 2026-09-30 00:00:00 | 920985.BJ | -0.075129 | -0.008944 | 16.000000 | -0.029519 | -0.033104 | 0.003585 | 0.003719 | -0.002677 | | 2026-09-30 00:00:00 | 920992.BJ | 0.038555 | -0.016969 | 49.000000 | 0.087831 | 0.006715 | 0.081117 | 0.113044 | 0.072604 |
开源证券行业轮转 (hf_prefactors_ky_industry_rotation)
数据描述:
文档
用例
表结构
| 字段 | 字段类型 | 字段描述 |
| ind_common_ret_60pct | double | 所属行业普通股(λ=60%)的 20 日平均涨幅。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| ind_leader_ret_60pct | double | 所属行业龙头股(λ=60%)的 20 日平均涨幅。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| ind_golden_rule_score | double | 黄金律模型总得分,M0 由低到高打分与 M1 由高到低打分之和,值越大未来收益越高。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| ind_intraday_momentum_m0 | double | 日内因子 M0,所属行业指数过去 20 个交易日日内收益率(今收/今开-1)之和,呈动量效应,值越大未来收益越高。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| ind_leader_traction_40pct | double | 牵引力因子 G(λ=40%),口径同 λ=60% 版本。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| ind_leader_traction_60pct | double | 牵引力因子 G(λ=60%),龙头股减普通股的 20 日平均涨幅,研报最优切割参数,值越大未来收益越高。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| __PARTITION__ | string | - |
| date | timestamp[ns] | 交易日期 |
| ind_overnight_reversal_m1 | double | 隔夜因子 M1,所属行业指数过去 20 个交易日隔夜收益率(今开/昨收-1)之和,呈反转效应,值越小未来收益越高。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| ind_leader_traction_80pct | double | 牵引力因子 G(λ=80%),口径同 λ=60% 版本。来源:魏建榕、傅开波. 2020-03-02. 《A 股行业动量的精细结构——市场微观结构研究系列(4)》. 开源证券 |
| instrument | string | 股票代码 |
表名:hf_prefactors_ky_industry_rotation
起始时间:
最近更新时间: