基础概念
核心概念辨析
截面 vs 时序、IC 与 ICIR、因子中性化、未来函数、复权——五个贯穿系统设计的核心概念。
以下五个概念构成本系统绝大多数设计决策的理论依据。
截面 vs 时序
- 时序(time-series):沿单只标的的历史方向看。「这只股票过去 20 天的波动率」是时序量。
- 截面(cross-section):沿同一天的全市场方向看。「今天这只股票的因子值,在全市场排第几」是截面量。
Alpha101 几乎都以 rank 收尾,所以它本质是截面问题:每天给全市场打分排序,而不是盯单只标的等突破。这直接决定了回测引擎为什么用矩阵驱动而非事件驱动。
IC 与 ICIR
衡量一个因子「好不好」的核心指标:
- IC(Information Coefficient):当期因子值与未来收益的截面秩相关系数。IC = 0.05 意味着因子排名与未来收益排名存在微弱正相关;在量化实践中,稳定在 0.03~0.05 已属可用水平。
- ICIR:
IC 的均值 / IC 的标准差,衡量预测能力的稳定性。IC 波动大甚至变号的因子,实用价值远低于 IC 绝对值不高但稳定的因子。
本系统以 IC / ICIR 作为因子筛选与加权的核心指标(factor_selector.py / factor_combiner.py)。计算 IC 时需将当期因子值与未来收益对齐,该操作一旦处理不当,即引入下文所述的未来函数问题。
因子中性化
原始因子里常混进我们不想要的暴露——最典型是行业和市值。比如某因子在科技股上系统性偏高,那它的「信号」可能只是「这是科技股」。
中性化就是把这些已知暴露剥掉:indneutralize(x, IndClass) 在每个行业内对因子值做截面去均值,让剩下的才是因子真正的 Alpha。本系统的行业中性化已补全(commit 3a46f0f),市值中性化与因子正交化仍在路线图上。
未来函数(look-ahead bias)
用了「在当时根本拿不到」的信息——这是回测最致命、也最隐蔽的作弊。
例子:用 T 日的收盘价算因子,又用它去决定 T 日开盘的交易。现实里 T 日开盘时你还不知道 T 日收盘价。回测里这么干,净值会好看得不真实。
本系统用物理隔离杜绝它:
- 回测
_shift_signals在截面维度对每个标的做shift(1),保证 T 日信号只用 T-1 及更早的数据; - 实盘天然在收盘后才跑当天的信号。
这就是第一条不变量。彻底消灭未来函数还需要 Point-in-Time 财务快照(路线图 #21)。
复权(adjustment)
股票存在除权除息与拆股事件。同一标的在除权日前后的价格尺度不一致,未经复权直接计算 returns 会产生虚假的巨幅跳空。
- 前复权 / 后复权 / 不复权会给因子计算带来不同影响:算
returns、delta、滚动统计时,必须用复权后连续的价格序列,否则除权日会污染所有时序因子。 - 实务上,需在数据接入与预处理阶段统一复权口径,并保持回测与实盘一致——One Codebase 原则的又一体现。
延伸
- 相关问题的实际案例,见 问题复盘。