价值因子检验报告

因子 value_roe_neutral(低 PE_TTM + 高 ROE_avg_TTM + 高股息率,行业与市值中性化)数据表 nancy_roe_12019-01-02 ~ 2026-10-27生成于 2026-10-28
口径:信号日收盘后生成,次日开盘买入,持有到下一信号日的次日开盘;日度检验;多空为月度调仓、单边费用 0.15%。红涨绿跌。

一、概览与结论

存疑
一句话结论:次日 RankIC 均值 0.0172,Newey-West t = 9.5,统计上显著,8/8 个年份为正;但幅度低于课程“可用”线 0.03(20 日口径 0.040 达到)。十组大体向上(Spearman 0.89),但相邻 9 对里只有 5 对上升,G10−G1 的 t = 1.35,不显著。含费用多空年化 3.9%、夏普 0.41、t = 0.96,2021、2025 年亏损,不能认定稳定。
次日 RankIC 均值(中性化后)
0.0172
ICIR 0.24 · NW t 9.5 · IC>0 占 61.4%
20 日 RankIC 均值
0.0400
NW t 5.3(朴素 t 19.9 被重叠窗口放大 3.7 倍)
G10−G1 日均收益差
+0.025%
NW t 1.35 · 不显著
十组单调性(Spearman)
0.89
9 对相邻组中 5 对上升
多空年化(含费用)
3.9%
不含费用 5.1% · 月度调仓
多空夏普 / 最大回撤
0.41 / −28.3%
NW t 0.96 · 月度胜率 55.9%
单边换手(每次调仓)
15.1%
折合年化约 181% · 单次费用拖累 0.091%
做多 G10 相对基准
+0.8%
年化超额(含费)· NW t 0.34

二、因子加工说明

2.1 股票池与加工步骤

股票池:全 A 股,剔除 ST/*ST、停牌、北交所、上市不足 250 个交易日;区间 2019-01-02 ~ 2026-10-27(1,894 个交易日,共 5,366 只股票出现过),每个交易日有后续收益的有效样本 3,344 ~ 4,934 只。 上市天数取 cn_stock_factors_base.trading_days(LEFT JOIN),缺失时用 list_days×245/365 折算;本次非北交所行没有缺失,折算分支未被触发(0 行)。

剔除原因(逐行只记第一个原因)股票-日行数占比
全部股票-日(含北交所)9,033,383100.0%
保留(进入因子计算)7,977,75688.3%
日期为空(异常行)1020.0%
北交所265,3582.9%
ST/*ST303,6693.4%
停牌14,5570.2%
上市不足250交易日471,6805.2%
无行业2610.0%

另有 102 行日期为空,作为异常行记录后跳过,没有中断流程。“无行业”一行只统计前面各步都未被剔除后仍缺行业的行;异常记录.csv 里的“无申万一级行业”口径是全部非北交所行,不看是否已因其他原因被剔除,所以行数更多。

  1. 缺失值:PE 缺失或为 0 的 1,477 行,用同日同申万一级行业的中位数填充;ROE 缺失 0 行、股息率缺失 0 行;填充后仍缺失而丢弃 0 行。
  2. 亏损股:PE 为负的 1,637,999 行(20.5%)不填充,直接取 1/PE 为负的盈利收益率,在“低 PE”方向上排最差。股息率为 0 的 2,301,158 行(28.8%)不做填充,保留为 0。
  3. 标准化:三个分项各自在当日截面做 1%/99% 缩尾,再 z-score;低 PE 取 1/PE,高 ROE 取 roe_avg_ttm,高股息率取 dividend_yield_ratio。
  4. 合成:三项 z-score 等权平均,再做一次截面 z-score,得到中性化前的 value_roe_raw。
  5. 中性化:当日截面上,把合成分数对“申万 2021 一级行业哑变量 + ln(总市值)”回归,取残差,再 z-score,得到 value_roe_neutral。全程是一条 DAI SQL(c_group_quantile_cont / c_winsorize / c_zscore / c_neutralize_resid),没有逐日 pandas 循环。

两个分项共线性:EP 与 ROE 的日度相关 0.75,EP 与股息率 0.47,ROE 与股息率 0.30。

2.2 为什么要中性化:用本次运行的前后对比说明

通俗地说:低估值、高股息的股票往往扎堆在少数行业,也常常是大市值公司。不处理的话,分数高低很大程度只是“你买了哪个行业、买了大公司还是小公司”,而不是“同行业、同规模里谁更便宜”。 中性化就是在同一行业、同样市值的股票之间比较,把这两个已知的“捷径”扣掉,剩下的才是估值、盈利、分红本身的信息。
本次实测中性化前中性化后
合成分数与 ln(总市值) 的日度相关(均值)0.311≈ 0(1.6e-14)
行业均值偏离 0 的程度(平均绝对值)0.316≈ 0(1.1e-14)
次日 RankIC 均值0.01500.0172
次日 RankIC 标准差0.13440.0705
ICIR(均值/标准差)0.1110.244
NW t 值(滞后 20)4.689.48
20 日 RankIC 均值0.02810.0400
十组单调性 Spearman(次日)−0.050.89
月度多空年化(含费用)−3.8%3.9%

读法:中性化前,分数与市值的日度相关为 0.31、行业间差异明显;中性化后两者被扣到接近 0。 次日 RankIC 均值略升(0.0150 → 0.0172),但每天 IC 的波动几乎减半(0.134 → 0.070),所以 ICIR 与 t 值约翻一倍。 月度多空从 −3.8% 变为 3.9%:信号主要是中性化之后才出现的。

为什么中性化前多空为负:「猜测」中性化前的“便宜”分数被行业和规模风格主导,风格轮动的盈亏盖过了个股间的估值差异;这一解释本次没有做行业归因,未验证。

三个分项单独看(次日 RankIC,中性化前的分项 z-score):低 PE 0.0161(NW t 5.0)、 高 ROE 0.0048(t 1.5,不显著)、高股息率 0.0157(t 5.8)。

2.3 落库与耗时

写入数据源 nancy_roe_1(因子列 value_roe_neutral,同表还有中性化前分数、三个分项与行业、市值):7,977,756 行,主键 (date, instrument) 唯一,不同键 7,977,756 个; 回读 7,977,756 行,与 SQL 结果逐值比较,最大绝对差 0.0。

步骤耗时(秒)
第一步 因子加工(一条 SQL,含诊断)164.3
第二步 写入并回读校验35.6
第三步 SQL 计算 IC 与分组(含面板、自检数据)163.7
第三步 统计检验与自检214.0

三、检验图表

① 逐日 RankIC 与 60 日均值

次日收益口径、中性化后因子;横线为 0 轴。浅线为逐日值,深线为 60 日均值。

② 累计 RankIC

逐日 RankIC 累加。线越陡,说明单位时间里因子方向越稳定地为正。

③ 十组次日平均收益

按因子值每日分 10 组(G1 最低 → G10 最高),柱高为各组平均收益;前两幅为中性化后,第三幅为中性化前(与第一幅同刻度)。

中性化后 · 次日收益(‰/日)

中性化后 · 20 日收益(%)

中性化前 · 次日收益(‰/日)

④ 十组累计净值

每日等权持有、日度再平衡、不计费用;悬停时按当日净值从高到低排序。G1 绿 → G10 红。

⑤ 多空组合累计净值

多头 G10、空头 G1,各自等权,月度调仓,次日开盘成交;含费用按单边 0.15% 对换手额计。股票账户不能做空,此处是因子纯度的度量,不是可执行方案。

⑥ 逐日 RankIC 分布

取 0.5%~99.5% 分位内分 40 箱(外侧并入端点箱)。均值 0.0172,中位数 0.0180,偏度 −0.10,超额峰度 0.68;5%~95% 分位为 −0.101 ~ 0.132。

⑦ 分年度平均 RankIC

2026 年为截至 2026-10-27 的部分年份。

四、指标表

课程阈值

指标判定含义
|IC| ≥ 0.03可用达到后值得继续研究
|IC| ≥ 0.05强少见,需要同时看稳定性
|IC| > 0.10可疑(警惕未来函数)过高的 IC 先排查是否用了未来数据
分组单调性台阶状 = 规律 / 乱跳 = 巧合本报告用 Spearman 与上升对数量化:≥ 0.8 记“台阶状”,0.5~0.8 “偏弱”,其余“乱跳”

阈值是经验参考线,不是统计检验;判断是否真实,仍以 t 值、分年度稳定性和自检为准。

4.1 RankIC 指标

口径均值标准差ICIRt(NW,滞后 20)t(朴素)IC>0 占比按课程阈值
次日 · 中性化后(主结果)0.01720.07050.2449.4810.6161.4%未达可用线
次日 · 中性化前0.01500.13440.1114.684.8454.4%未达可用线
20 日 · 中性化后0.04000.08690.4605.3319.9070.6%可用
20 日 · 中性化前0.02810.15020.1872.238.0858.6%未达可用线
三个分项(次日收益,中性化前的分项 z-score)
低 PE(1/PE)0.01610.13580.1194.995.1754.2%未达可用线
高 ROE0.00480.12280.0391.521.7050.7%未达可用线
高股息率0.01570.11700.1345.825.8555.4%未达可用线

RankIC 为每日截面上因子与随后收益的 Spearman 相关;收益 = 信号日次日开盘买入、持有到下一信号日次日开盘。20 日收益的窗口逐日重叠,朴素 t 被放大约 3.7 倍,应看 NW t; 取每 20 天抽 1 天的非重叠样本复核,20 日 IC 均值 0.0398、朴素 t 4.3,仍为正。

4.2 十组分层

口径G1 平均收益G5G10G10−G1NW tSpearman相邻上升按“台阶/乱跳”
次日 · 中性化后0.054%0.066%0.079%+0.025%1.350.895/9台阶状(偏规律)
次日 · 中性化前0.069%0.068%0.060%−0.009%−0.31−0.053/9乱跳(偏巧合)
20 日 · 中性化后0.91%1.26%1.32%+0.41%1.310.856/9台阶状(偏规律)
20 日 · 中性化前1.19%1.29%1.03%−0.15%−0.33−0.204/9乱跳(偏巧合)

每日按因子分 10 组(c_ntile),组内等权,平均收益为所有信号日的算术平均。

4.3 多空与多头(月度调仓)

组合累计收益年化年化波动夏普最大回撤NW t
多空 · 含费用(主结果)33.5%3.9%10.9%0.41−28.3%0.96
多空 · 不含费用45.2%5.1%10.9%0.51−27.9%1.20
仅多头 G10 · 含费用197.5%15.6%21.9%0.77−26.6%2.22
G1 组本身(空头腿持有的标的)· 含费用76.8%7.9%27.9%0.41−38.0%1.11
股票池等权基准(日度再平衡,不计费用)179.6%14.7%25.4%0.67−34.0%1.89
多空 · 中性化前因子 · 含费用−25.1%−3.8%17.3%−0.14−46.8%−0.33
多头 G10 相对基准的超额(净值比)6.4%0.8%7.9%0.14−24.5%0.34

首次建仓 2019-01-03,共 94 次调仓,多空两侧各约 434 只。单边换手:多头 17.1%、空头 13.1% / 次。 月度多空胜率 55.9%,单月最差 −14.2%(2024-10-31)。

4.4 分年度表现

年份RankIC 中性化后RankIC 中性化前IC 的 NW t十组 Spearman多空(含费)多头 G10(含费)基准多头超额
20190.02020.01845.70.90+11.4%+31.6%+29.6%+2.0%
20200.01580.02065.30.37+9.9%+18.6%+19.3%−0.7%
20210.01240.00903.1−0.03−4.2%+24.7%+28.5%−3.8%
20220.01310.01093.50.53+0.9%−3.0%−7.6%+4.6%
20230.02170.01345.40.75+4.3%+10.5%+7.6%+2.9%
20240.01790.02062.10.70+4.5%+14.2%+10.5%+3.7%
20250.01910.01303.90.10−5.5%+27.1%+36.0%−8.9%
2026(至 10-27)0.01740.01362.60.87+9.5%−1.7%−5.8%+4.1%

年度收益由日净值按自然年首尾相除;2026 年不满一年,不要与整年比较。年内 IC 的 t 值只有约 244 个日度样本,波动大。

五、结论(通俗版)

IC 是不是显著为正?

是,但很小。次日 RankIC 均值 0.0172,NW t = 9.5;用滞后 5/10/40 重算 t 分别为 9.9/9.7/9.6,结论不依赖滞后阶数。 8/8 个年份均值为正,前后两半样本分别是 0.0156 和 0.0188。 按课程阈值,次日口径低于“可用”线 0.03;20 日口径 0.040 达到“可用”,t = 5.3。随机因子对照里 60 次的最大 |t| 只有 3.0,真实因子远超随机水平。

十组是不是单调?

大体向上,但不是整齐的台阶。Spearman 0.89,但 9 对相邻组里只有 5 对上升:G1~G4 的平均收益几乎一样(0.054%、0.053%、0.057%、0.054%), 差别主要出现在 G5 以后,最高的是 G8 而不是 G10。G10−G1 日均 +0.025%,t = 1.35,不显著。分年度看,2020、2021、2025 年的 Spearman 低于 0.5。 中性化前的十组没有单调性(Spearman −0.05),G10 反而是最低的一组。

多空是不是稳定?

不稳定。含费用年化 3.9%、夏普 0.41、NW t = 0.96,最大回撤 −28.3%; 8 个年份里 6 个为正,2021、2025 年亏损,月度胜率 55.9%。费用拖累年化约 1.2%。 只做多 G10 的年化 15.6%,相对股票池等权的年化超额 +0.8%(t = 0.34),不能与基准区分。

是否值得继续研究:值得小范围继续,但不建议直接作为独立因子使用。理由:信号真实存在(显著、跨年份同向、通过随机对照),但强度弱、经济意义不足以覆盖交易成本。 分项 IC 显示,低 PE 与高股息率各自显著,高 ROE 单独不显著。可以考虑的方向(均为待验证的设想):把它作为多因子组合里的估值/红利成分,而不是单独选股; 检验去掉 ROE 或改用质量口径是否更好;换成月度或季度频率的 IC。任何基于本报告结果的调整都需要样本外检验。

六、风险、说明与自检

样本与方法的边界

自检结果

项目做法结果结论
财报披露滞后把每次 ROE_TTM 的数值变动日与财务表里的公告日对齐(126,353 次变动)。91.7% 在公告当日(含周末公告顺延到下一交易日)更新,98.3% 在 1 个交易日内;没有任何一次变动早于公告日(提前 0 次)。公告日到报告期末的间隔中位 31 天、95 分位 113 天,另有 8 条公告日早于报告期末的记录,仅记录,未逐条核实。未见前视
滞后 ≥ 2 个交易日的变动共 2,092 次,拆开看。其中 2,024 次集中在 2026-06-11 一天(中位滞后 29 个交易日):这批变动的中位绝对变化 1e-17,只有 3 个超过 0.001,变动前后截面排序 Spearman 0.9990,对截面排序影响很小;原因未核实,「猜测」数据源当天整体重算或刷新。 其余 67 次零散发生,滞后 15~154 个交易日,原因未查明,「猜测」历史数据补修订或补公告。 这些都是“更新得更晚”,只会削弱信号,不会制造前视。有未解释尾部
单日跳变2026-06-16/17 两只股票的 ROE_TTM 单日由 0 跳到非 0 又回到 0。002731.SZ 跳到 0.148,688121.SH 跳到 0.047,次日即恢复。两只股票这几天的因子值为空(不在股票池内),未进入检验。原因未核实,「猜测」数据源异常值。已记录并跳过
因子额外滞后把因子再往后推 1/2/5/10/20/60 个交易日后重算 IC(图 ⑧)。均值由 0.0172 缓慢降到 0.0129(滞后 60 日),t 约 7.4。这个结果不能排除前视:因子日度自相关高达 0.997(20 日 0.96),推后几天本来就几乎不变。它只能说明信号不依赖最近几天的数据,与上一行的公告日对齐一起看才有意义。不能单独证明
随机因子对照各生成 60 个纯随机因子(逐日独立;以及与真实因子同样持续的随机因子,日度自相关 0.998),走同一套 IC 计算。最大 |NW t| 分别为 2.96 和 2.79;|t|>2 的占比 5% 和 10%(随机下约 5% 属正常)。真实因子的 NW t = 9.48,高于全部随机结果。通过
与过去收益的关系因子与过去 N 日涨幅的日度秩相关(中性化后)。1 日 0.004、20 日 −0.026、60 日 −0.046、120 日 −0.057、250 日 −0.042:与过去 20~250 日涨幅轻微负相关,没有追涨特征。 这符合“买便宜的”这一定义,未单独做归因。无追涨特征
退市股是否在样本内2019 年起退市的 238 只股票是否出现在因子表里。234 只出现过;4 只从未入池(600680.SH,2019-05-23、000043.SZ,2019-12-16、600247.SH,2021-03-22、600485.SH,2021-06-01)。有 76 只在退市前 60 天以上就离开了样本:其中 71 只主要因为已被标为 ST,5 只主要因为停牌,其他原因 0 只。也就是说样本没有回避退市股,但按规则 ST 之后的阶段不在样本里。已覆盖
异常数据(已记录并跳过)全部写入 异常记录.csv,流程未中断。开盘价为 0 或缺失但有成交量:95 行、17 只,集中在 2026-09-21 ~ 2026-10-27,按不可成交处理;无申万一级行业:301 行、29 只(2019-01-02 ~ 2024-05-31),无法中性化,已从股票池剔除;日期为空 102 行。已记录

⑧ 因子额外滞后后的平均 RankIC

横轴为额外滞后的交易日数(0 为原因子)。缓慢下降符合因子本身变化很慢的特征,不能单独证明没有前视。