股票池:全 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,383 | 100.0% |
| 保留(进入因子计算) | 7,977,756 | 88.3% |
| 日期为空(异常行) | 102 | 0.0% |
| 北交所 | 265,358 | 2.9% |
| ST/*ST | 303,669 | 3.4% |
| 停牌 | 14,557 | 0.2% |
| 上市不足250交易日 | 471,680 | 5.2% |
| 无行业 | 261 | 0.0% |
另有 102 行日期为空,作为异常行记录后跳过,没有中断流程。“无行业”一行只统计前面各步都未被剔除后仍缺行业的行;异常记录.csv 里的“无申万一级行业”口径是全部非北交所行,不看是否已因其他原因被剔除,所以行数更多。
value_roe_raw。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。
| 本次实测 | 中性化前 | 中性化后 |
|---|---|---|
| 合成分数与 ln(总市值) 的日度相关(均值) | 0.311 | ≈ 0(1.6e-14) |
| 行业均值偏离 0 的程度(平均绝对值) | 0.316 | ≈ 0(1.1e-14) |
| 次日 RankIC 均值 | 0.0150 | 0.0172 |
| 次日 RankIC 标准差 | 0.1344 | 0.0705 |
| ICIR(均值/标准差) | 0.111 | 0.244 |
| NW t 值(滞后 20) | 4.68 | 9.48 |
| 20 日 RankIC 均值 | 0.0281 | 0.0400 |
| 十组单调性 Spearman(次日) | −0.05 | 0.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)。
写入数据源 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 |
中性化后 · 次日收益(‰/日)
中性化后 · 20 日收益(%)
中性化前 · 次日收益(‰/日)
| 指标 | 判定 | 含义 |
|---|---|---|
| |IC| ≥ 0.03 | 可用 | 达到后值得继续研究 |
| |IC| ≥ 0.05 | 强 | 少见,需要同时看稳定性 |
| |IC| > 0.10 | 可疑(警惕未来函数) | 过高的 IC 先排查是否用了未来数据 |
| 分组单调性 | 台阶状 = 规律 / 乱跳 = 巧合 | 本报告用 Spearman 与上升对数量化:≥ 0.8 记“台阶状”,0.5~0.8 “偏弱”,其余“乱跳” |
阈值是经验参考线,不是统计检验;判断是否真实,仍以 t 值、分年度稳定性和自检为准。
| 口径 | 均值 | 标准差 | ICIR | t(NW,滞后 20) | t(朴素) | IC>0 占比 | 按课程阈值 |
|---|---|---|---|---|---|---|---|
| 次日 · 中性化后(主结果) | 0.0172 | 0.0705 | 0.244 | 9.48 | 10.61 | 61.4% | 未达可用线 |
| 次日 · 中性化前 | 0.0150 | 0.1344 | 0.111 | 4.68 | 4.84 | 54.4% | 未达可用线 |
| 20 日 · 中性化后 | 0.0400 | 0.0869 | 0.460 | 5.33 | 19.90 | 70.6% | 可用 |
| 20 日 · 中性化前 | 0.0281 | 0.1502 | 0.187 | 2.23 | 8.08 | 58.6% | 未达可用线 |
| 三个分项(次日收益,中性化前的分项 z-score) | |||||||
| 低 PE(1/PE) | 0.0161 | 0.1358 | 0.119 | 4.99 | 5.17 | 54.2% | 未达可用线 |
| 高 ROE | 0.0048 | 0.1228 | 0.039 | 1.52 | 1.70 | 50.7% | 未达可用线 |
| 高股息率 | 0.0157 | 0.1170 | 0.134 | 5.82 | 5.85 | 55.4% | 未达可用线 |
RankIC 为每日截面上因子与随后收益的 Spearman 相关;收益 = 信号日次日开盘买入、持有到下一信号日次日开盘。20 日收益的窗口逐日重叠,朴素 t 被放大约 3.7 倍,应看 NW t; 取每 20 天抽 1 天的非重叠样本复核,20 日 IC 均值 0.0398、朴素 t 4.3,仍为正。
| 口径 | G1 平均收益 | G5 | G10 | G10−G1 | NW t | Spearman | 相邻上升 | 按“台阶/乱跳” |
|---|---|---|---|---|---|---|---|---|
| 次日 · 中性化后 | 0.054% | 0.066% | 0.079% | +0.025% | 1.35 | 0.89 | 5/9 | 台阶状(偏规律) |
| 次日 · 中性化前 | 0.069% | 0.068% | 0.060% | −0.009% | −0.31 | −0.05 | 3/9 | 乱跳(偏巧合) |
| 20 日 · 中性化后 | 0.91% | 1.26% | 1.32% | +0.41% | 1.31 | 0.85 | 6/9 | 台阶状(偏规律) |
| 20 日 · 中性化前 | 1.19% | 1.29% | 1.03% | −0.15% | −0.33 | −0.20 | 4/9 | 乱跳(偏巧合) |
每日按因子分 10 组(c_ntile),组内等权,平均收益为所有信号日的算术平均。
| 组合 | 累计收益 | 年化 | 年化波动 | 夏普 | 最大回撤 | 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)。
| 年份 | RankIC 中性化后 | RankIC 中性化前 | IC 的 NW t | 十组 Spearman | 多空(含费) | 多头 G10(含费) | 基准 | 多头超额 |
|---|---|---|---|---|---|---|---|---|
| 2019 | 0.0202 | 0.0184 | 5.7 | 0.90 | +11.4% | +31.6% | +29.6% | +2.0% |
| 2020 | 0.0158 | 0.0206 | 5.3 | 0.37 | +9.9% | +18.6% | +19.3% | −0.7% |
| 2021 | 0.0124 | 0.0090 | 3.1 | −0.03 | −4.2% | +24.7% | +28.5% | −3.8% |
| 2022 | 0.0131 | 0.0109 | 3.5 | 0.53 | +0.9% | −3.0% | −7.6% | +4.6% |
| 2023 | 0.0217 | 0.0134 | 5.4 | 0.75 | +4.3% | +10.5% | +7.6% | +2.9% |
| 2024 | 0.0179 | 0.0206 | 2.1 | 0.70 | +4.5% | +14.2% | +10.5% | +3.7% |
| 2025 | 0.0191 | 0.0130 | 3.9 | 0.10 | −5.5% | +27.1% | +36.0% | −8.9% |
| 2026(至 10-27) | 0.0174 | 0.0136 | 2.6 | 0.87 | +9.5% | −1.7% | −5.8% | +4.1% |
年度收益由日净值按自然年首尾相除;2026 年不满一年,不要与整年比较。年内 IC 的 t 值只有约 244 个日度样本,波动大。
是,但很小。次日 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),不能与基准区分。
| 项目 | 做法 | 结果 | 结论 |
|---|---|---|---|
| 财报披露滞后 | 把每次 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 行。 | 已记录 |