use_brc=True 是怎么筛因子的

从打开开关到最终 35 个入选因子的完整步骤。方框里的字是实际做的事,括号里是代码里对应的参数。

1 打开 use_brc=True 三个开关 use_ssm / use_mprob / use_brc 互斥,同时开两个直接报错 2 强制关掉 IC-only,改走完整回测 必须算出十分组与多空组合,否则拿不到多头超额、多空年化这些收益指标 3 每个源因子先做预处理,展开成 13 个派生面 按日横截面平均名次 → 可交易但缺值的填中位名次 → 在名次上做滚动统计 raw 通道:直接用名次 原始值,不做中性化 neu 通道:先做中性化 10 列风格因子(行业版再加 31 个行业哑变量) 4 逐日回测(每个派生面 × raw/neu × gap1/gap5 各跑一遍) 十分组收益 → IC_mean / IR / 多空年化 / 夏普 / 回撤 / 多头超额 / SSM / MPROB 同一天再算 BRC:按因子升序排好股票,对每个切点算判别力,取两半的较小值 5 写出 summary_*_candidates.parquet(20 列) 其中 BRC / BRC_S / BRC_L 三列是本轮新增的 6 候选池:只留 ratio_mean ≥ 0.5 的因子 当天有值股票数占可交易股票数的比例,平均下来要过半 7 中性化通道过 BRC 门槛:BRC ≥ 0 BRC 带方向,反向预测的因子(BRC 为负)在这里直接丢掉 8 neu_ic 通道的排序键从 |IC_mean| 换成 BRC 降序 这一步是 use_brc 与 use_ssm 最大的区别:SSM 只当门槛,BRC 直接当排序键 9 相关性去重:与已选因子 |相关| ≥ 0.5 就跳过 比的是中性化 IC 时间序列的相关系数,从排在前面的因子开始逐个看 10 名额分配:neu_ic 通道取前 35 个 本轮配置下 neu_ret / raw_ret / raw_ic 三个通道名额都是 0,只有这一条生效 11 产物:gap5_selected.parquet / gap1_selected.parquet 外加 source_selected.parquet(去掉派生后缀的源因子名) 本轮 hm104:gap5 35 个、gap1 35 个、源因子 52 个 12 后续:base 落盘 → 对入选因子跑 fulltest → 出 doc 只对筛出来的这几十个做完整回测与画图,不碰没入选的 BRC 是什么 看右边侧栏