用途:系统评估单个或多个因子的预测能力,通过 IC/IR 统计检验和分位数回测判断因子是否具备选股能力,并指导因子筛选与组合。适用场景包括单因子有效性检验(动量、价值、质量、波动率等)、多因子组合权重确定、因子衰减分析(不同持有期 IC 变化)、跨行业与跨市场因子差异比较。
工作流:先计算因子值,输出因子 CSV(index=date,columns=codes);再计算收益,输出前向 N 日收益 CSV(结构相同);然后调用 factor_analysis 工具,传入因子 CSV、收益 CSV 和输出目录;最后依据 IC/IR 标准与分位数回测结果判断因子有效性,保留有效因子并按等权或 IC 加权组合。关键点:因子 CSV 与收益 CSV 的行(日期)和列(标的代码)必须完全对齐,收益须为因子观测日之后的前向收益,避免前视偏差。
factor_analysis 参数:factor_csv(必填,因子值 CSV 路径)、return_csv(必填,收益 CSV 路径)、output_dir(必填,结果输出目录)、n_groups(可选,默认 5,分位组数)。输出文件包括 ic_series.csv(每日 IC 序列)、ic_summary.json(IC 均值、标准差、IR、IC>0 占比)、group_equity.csv(各分位组累计净值曲线)。
IC/IR 判读:IC 均值 >0.03 具备基本预测力,>0.05 较强,>0.10 异常偏高需检查前视偏差;IR>0.5 稳定有效,>1.0 极强且罕见;IC>0 占比 >55% 方向稳定,<50% 方向不稳定不可用。负 IC 也可用(反向因子),按绝对值判断并在使用时反转信号方向。
分位数回测:按因子值从低到高将标的分为 N 组(默认 5 组),组内等权持有。判读标准包括单调性(Group_1 到 Group_N 净值应单调上升或下降)、多空价差(最高与最低组净值差,越大选股力越强)、非线性(仅头尾组差异明显时因子可能只在尾部有效)、稳定性(组净值曲线应平滑)。警示信号:各组净值无实质差异说明因子无效;非单调(V 形或倒 V 形)可能为非线性关系需进一步分析;某组净值持续下跌可能可反向使用。
因子组合:等权组合(各因子标准化后等权求和,适合因子数少且 IC 差异小);IC 加权组合(按历史 IC 均值分配权重,weight_i=|IC_mean_i|/sum(|IC_mean_j|));正交化组合(先用 Schmidt 过程正交化去除共线性,再等权组合,适合因子高度相关时)。
常见陷阱:前视偏差(因子用 T 日及之前数据,收益用 T+1 至 T+N);因子分布偏斜(市值、换手率等右偏严重,需先做横截面 rank 或 Z-score 标准化);行业中性化(同行业内因子值相似会导致选股集中,可在行业内做 Z-score 标准化,A 股可用申万一级行业);样本量不足(每个横截面至少 5 个有效标的,分位回测至少需 n_groups 个标的);因子拥挤(经典因子广泛使用后超额收益衰减,需定期检查 IC 时序演化);幸存者偏差(仅用存活股票回测会高估表现,应使用含退市股票的全样本)。
依赖:pip install pandas numpy scipy。可复用 Alpha Zoo 注册表中 450+ 预置 alpha,每个 alpha 经 AlphaMeta 元数据校验(theme、universe、columns_required、decay_horizon、min_warmup_bars)并与 panel["close"] 做形状检查,出现 +/-inf 或 >95% NaN 会被拒绝。示例:from src.factors.registry import Registry;registry = Registry();ids = registry.list(theme="momentum", universe="equity_cn");factor_panel = registry.compute("alpha101_001", panel);factor_panel.to_csv("factor_alpha101_001.csv")。多因子合成可参考 multi-factor 技能的 ZooSignalEngine,浏览目录可参考 alpha-zoo 技能。
产物放置:在回测或 swarm 运行中,将 output_dir 设为 <run_dir>/artifacts/factor/<factor_name>/,每个因子一个子目录,三个标准输出文件放在其中,便于 Run Detail 的 Factor 标签页渲染。