真实样例
下面是在真实数据上跑出来的原始产物:可切换查看 input.md 与 output.md,不是效果图。
任务句帮我把「20 日反转 × 换手放大」这个因子做一次体检,看看能不能进策略。
因子体检 · 20 日反转 × 换手放大
结论
档位:C(六道门禁过 0 / 6,排他结论:独立)
一句话:这个组合赚不到钱:20 日反转在池内只有微弱正 IC,换手放大同期是反向暴露,两者等权相加后互相抵消,六道统计门禁一道都没过。
指标
| 指标 | 数值 |
|---|---|
| RankIC 均值 | -0.0005 |
| IC 均值(Pearson) | +0.0016 |
| ICIR | -0.022 |
| t 值(20 日块) | -0.08 |
| IC 胜率 | 51.6% |
| 十分位多头年化(无成本) | -1.80% |
| 十分位多头年化(佣金+印花) | -3.34% |
| 十分位多头年化(再加滑点) | -6.68% |
| 涨停拦截率 | 0.4% |
| 多头换手率(每期) | 71.8% |
| 与 20 日反转基准的相关性 | +0.487(独立) |
逐年 RankIC:2022 -0.0095 · 2023 -0.0080 · 2024 -0.0166 · 2025 +0.0169
十分位组年化
| 组 | 年化 | 累计 |
|---|---|---|
| D1 | +1.67% | +7.98% |
| D2 | +4.61% | +23.24% |
| D3 | +8.17% | +43.87% |
| D4 | +4.66% | +23.47% |
| D5 | +0.38% | +1.78% |
| D6 | +2.55% | +12.36% |
| D7 | +2.73% | +13.29% |
| D8 | +6.09% | +31.50% |
| D9 | +8.63% | +46.73% |
| D10 | -1.80% | -8.09% |
口径
- 股票池:中证500 逐年 PIT(Y 年用 Y-1 年末名单,每期约 500 只)
- 区间:2022-01-04 ~ 2026-08-19,共 1121 个交易日、平均每期 494 只
- 调仓周期:H = 10 个交易日;因子 t 日收盘计算,远期收益 t → t+10 收盘
- 数据源:本地后复权日线 parquet(东财口径,数据截至 2026-09-08)
- 成本:佣金万 2 双边 + 印花税千 0.5;滑点档再加双边各 0.1%
- 因子定义:CSRank(-ret20) + CSRank(vol5/vol60),H=10 日调仓
门槛逐项
| 门槛 | 阈值 | 实际 | 结果 |
|---|---|---|---|
| G1 RankIC 绝对值 | >= 0.03 | 0.0005 | 不过 |
| G2 ICIR 绝对值 | >= 0.30 | 0.022 | 不过 |
| G3 t 值(20 日块) | >= 4 | 0.08 | 不过 |
| G4 IC 胜率 | >= 58% | 51.6% | 不过 |
| G5 逐年同号 | 每个完整年度同号 | 2022 -0.0095 / 2023 -0.0080 / 2024 -0.0166 / 2025 +0.0169 | 不过 |
| G6 头部不塌陷 | D10 >= D8 | D8 +6.09% / D10 -1.80% | 不过 |
排他
与基准库中的 20 日反转 的截面 Spearman 相关性为 +0.487,|ρ| = 0.487 < 0.7,判定 独立。
也就是说,它并没有被基准因子完全代表;问题是它自己也没带来稳定信息,而不是「换了个马甲」。
拆开看:钱被哪一半吃掉了
| 组件 | RankIC 均值 | IC 胜率 |
|---|---|---|
| 20 日反转(单项) | +0.0346 | 55.3% |
| 换手放大(单项) | -0.0358 | 56.7% |
| 等权组合 | -0.0005 | 51.6% |
- 反转单项的 RankIC 为 +0.0346,勉强越过 G1 的 0.03 门槛,但 IC 胜率只有 55.3%,仍达不到 58% 的硬门槛。
- 换手放大单项的 RankIC 为 -0.0358,方向为负:在这段样本里,放量更像是拥挤度而不是趋势确认。
- 两项等权相加后 RankIC 归零。组合没有创造新信息,只是把两个方向相反的暴露互相抵消。
解读
20 日反转表达的是「短期超跌反弹」:在流动性尚可的中盘股里,跌多了会有资金回补。换手放大表达的是「关注度与筹码交换」:放量既可能是启动,也可能是出货;在 2022–2026 的中证500 样本里,后者的权重更大。
两者相乘/相加并不能自动变成「缩量超跌」这类更精确的条件。真正值得继续验证的方向是 条件化:只在换手未放大时取反转暴露,而不是把换手当成同权加分项。
使用建议
- 这个等权组合不建议入库:六道门禁 0/6,且拆解后没有稳定增量信息。
- 若继续研究,先固定 H=10 与中证500 池,改为条件化表达(例如
CSRank(-ret20) * (1 - CSRank(vr))或仅在 vr 低分位内取反转),再跑一次体检;不要因为一次回测好看就上调仓位。 - 单反转在池内有微弱正 IC,但胜率不足;可作为其他因子的中性化/正交化输入,不建议单独作为交易信号。
边界
- 本地 parquet 不含退市股,存在幸存者偏差,结论偏乐观。
- 十分位组合按收盘价成交,未建模涨跌停无法买入的极端情况;涨停拦截率 0.4% 仅为调仓日近似。
- 2022–2026 是单一区间,风格切换后结论可能翻转;门槛在 2020–2023 全 A 窗口校准。
- 本报告为历史统计检验,不构成投资建议;过往表现不代表未来。
运行记录
- 环境
- Windows 11 · Python 3.14.4 · pandas 3.0.3 · numpy 2.4.6
- 时间
- 2026-11-02T14:36:00+08:00
- 数据源
- 本地后复权日线 parquet(截至 2026-09-08)
- 状态
- ok
- 样例文件
- input.md · output.md
中证500 逐年 PIT,2022-01-04 至 2026-08-19,1121 个交易日;六道门禁 0/6,定档 C;与 20 日反转基准相关性 +0.487(独立)。拆解显示反转单项 RankIC +0.0346、换手放大 -0.0358,等权相加抵消。

运行在
Claude CodeCursorCodexGemini CLI
你会得到
- 六道统计门禁逐项结论
- IC / RankIC / ICIR / t 值口径表
- 逐年 IC 与十分位分组年化
- 与基准因子库的相关性排他
- A / B / C 定档与下一步建议
适合
- 在研报或论坛看到新因子,想先验证再写进策略
- 自己攒了一个因子思路,想快速知道是否过拟合
- 两个因子看起来很像,想确认是不是同一个东西的马甲
不适合
- 生成买卖建议或预测个股涨跌
- 对财务基本面因子做量价口径的体检
- 数据不足两年时强行下结论
ICRankICICIR因子相关性十分位过拟合
安装需要什么环境?
Python 3.11+、pandas / numpy、A 股日线数据(自备 parquet / CSV,或用 eltdx 现场取数)、至少 24 个完整月度。完整的分 Agent 目录写在 install.md 里。
需要 API key 吗?
不需要额外 key。运行所需的只是它声明的数据源与环境。
能用自己的数据跑吗?
可以。样例使用 Windows 11 · Python 3.14 · 本地后复权日线 parquet;换成你的数据时,按 install.md 里的字段与路径说明改。 跑不通就把缺口写清楚,不要用估算值填。
样例是怎么跑出来的?
运行时间 2026-11-02T14:36:00+08:00,Windows 11 · Python 3.14.4 · pandas 3.0.3 · numpy 2.4.6。 产物原样保留:output.md 是实际输出,原始数据在 samples/factor-audit/raw/。 不修图、不美颜、不用效果图。
能保证结果能直接用于交易吗?
不能。Skill 只负责把口径、取数和输出结构固化下来,结论要你自己复核。 FinanSI 不提供投资建议,也不对任何标的做推荐。



