/~learn/s/d6934eda
> 📅 2026-10-15 建立 | 本文是「因子有效性检验」板块的方法学与入口说明。
---
---
因子进了系统之后,最常见的三个问题:
本板块用固定方法回答这三问,避免"凭感觉相信一个因子"。
---
| 尺子 | 回答的问题 | 口径 |
| ------ | ----------- | ------ |
| Rank IC | 因子值的横截面排序,能否预测未来收益的排序? | 逐调仓日做 Spearman 秩相关,聚合出 IC 均值 / ICIR / t 值 / 胜率 |
| 开关对照回测 | 把该因子关掉,组合的风险收益变好还是变差? | 同区间、同调仓规则,仅切换该因子,比较累计收益 / 年化 / 夏普 / 最大回撤 |
| IC 均值 | 含义 | ||
| --------- | ------ | ||
| |IC| < 0.03 | 预测力很弱(周频 ETF 截面普遍如此,单因子本就有限) | ||
| \ | t\ | ≥ 2 | 均值显著异于 0(否则视为噪声) |
| IC > 0 | 因子值越高 → 未来收益越高(顺势/质量类因子的期望方向) | ||
| IC < 0 | 因子值越高 → 未来收益越低(反向,或说明该因子其实在做"排雷"而非"选优") |
> ⚠️ 符号方向要先想清楚:反追高因子是"高分=不超买=安全",所以它的 IC 若为正才代表"选出来的安全品种真的更强";若为负,说明短期"强者恒强"压过了均值回归。
---
cross_section_weekly_snapshot 只存 Top10/Bottom10,算不了全截面 IC;必须从 data_cache 加载全池(~111 只 ETF)逐周重算因子值。
- 反追高的估值感知层默认关闭——它用当前 PE 快照 / 当前盈利判断历史某天的贵贱,属前视偏差,且每只 code 每期触发网络调用。检验只测价格核心信号(RSI + 涨幅 + 泡沫顶部 + 良性超买保护 + 超跌奖励)。
- 动量 / 夏普 / 稳定性 / 估值锚的 calculate() 均为纯价格计算,无网络、无前视。
---
# Rank IC(全窗口 2021 起,多周期)
/usr/bin/env -u PYTHONHOME -u PYTHONPATH .venv/bin/python -u \
-m adata.aohan.quant.selection.backtest.factor_ic_analysis \
--start 2021-01-01 --horizons 5,10,20
# 开关对照回测(反追高权重+惩罚 开 vs 关)
/usr/bin/env -u PYTHONHOME -u PYTHONPATH .venv/bin/python -u \
-m adata.aohan.quant.selection.backtest.factor_ab_backtest \
--start 2021-01-01 --top 10
结果落盘:adata/aohan/quant/selection/backtest/ic_results/(ic_summary.csv / ic_series.csv / ab_summary.csv / ab_series.csv)。