:root{--brand-1:#18794e;--brand-2:#3dd68c;--brand-3:#2bb673;--brand-soft:#3dd68c22;} .hero .kicker{color:var(--brand-2)} .nav .ep{color:var(--brand-2)} .sec h2 .num{color:var(--brand-2)} .quote::before{background:var(--brand-1)} .quote .q-text .em{color:var(--brand-2)} .quote .q-water .pg{color:var(--brand-2)} .widget .w-title{color:var(--brand-2)} .takeaway h3{color:var(--brand-2)} .takeaway ol li::marker{color:var(--brand-2)} .next .nx-label{color:var(--brand-2)} .formula .eq{color:var(--brand-2)} a{color:var(--brand-2)} .comp.c1 .tag{background:var(--brand-soft);color:var(--brand-2)} /* 因子挑选器 */ .factorsel .flist{display:flex;flex-direction:column;gap:6px;margin:12px 0;max-height:280px;overflow-y:auto;padding-right:4px} .factorsel .frow{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg-mute);border:1px solid var(--divider);border-radius:6px;font-size:12.5px;cursor:pointer;transition:all .15s} .factorsel .frow:hover{border-color:var(--brand-1)} .factorsel .frow.sel{background:var(--brand-soft);border-color:var(--brand-1)} .factorsel .frow .fbox{width:16px;height:16px;border:2px solid var(--divider);border-radius:4px;flex:none;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:700} .factorsel .frow.sel .fbox{background:var(--brand-1);border-color:var(--brand-1)} .factorsel .frow .fname{flex:1;color:var(--t1);font-family:var(--mono);font-size:12px} .factorsel .frow .fic{width:54px;text-align:right;font-family:var(--mono);font-weight:600} .factorsel .frow .fic.hi{color:var(--green-1)} .factorsel .frow .fic.mid{color:var(--yellow-1)} .factorsel .frow .fic.lo{color:var(--red-1)} .factorsel .frow .fcorr{width:50px;text-align:right;font-family:var(--mono);color:var(--t3);font-size:11px} .factorsel .summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px} .factorsel .summary .sc{background:var(--bg-mute);border:1px solid var(--divider);border-radius:8px;padding:12px;text-align:center} .factorsel .summary .sc .sl{font-size:11px;color:var(--t3);margin-bottom:4px} .factorsel .summary .sc .sv{font-size:20px;font-weight:700;font-family:var(--mono)} .factorsel .summary .sc.n .sv{color:var(--brand-2)} .factorsel .summary .sc.ic .sv{color:var(--green-1)} .factorsel .summary .sc.div .sv{color:var(--cyan-1)} .factorsel .verdict{margin-top:12px;padding:13px;border-radius:8px;font-size:13px;text-align:center} .factorsel .verdict.ok{background:var(--green-soft);color:var(--green-1);border:1px solid var(--green-1)} .factorsel .verdict.warn{background:var(--yellow-soft);color:var(--yellow-1);border:1px solid var(--yellow-1)} .factorsel .verdict.bad{background:var(--red-soft);color:var(--red-1);border:1px solid var(--red-1)} .factorsel .hint{font-size:11.5px;color:var(--t3);margin-top:8px;text-align:center}
量化交易实战 · 第 16 期 · 第二季

150 个因子全用?算不过来还互相抄

Alpha101/Alpha158 因子挑选 · factor selection by IC

Alpha101 有 101 个因子,Alpha158 有 158 个——全塞进模型,算不动、过拟合、还互相重复。怎么挑?用 IC(信息系数):IC 高的因子有预测力,要留;IC 高但彼此相关性高的因子在重复,只留一个。挑出"高 IC + 低相关"的子集,10-20 个因子往往比 150 个效果好,因为少了过拟合、多了可解释。
⏱ 约 10 分钟 🎯 做多因子模型、被因子淹没的人 📦 源:vnpy §9

01IC 是什么:因子的"预测力"分数

IC(Information Coefficient,信息系数)= 因子值和未来收益的相关系数。IC=0.05 算弱,0.1 算不错,0.2 算很强。IC 越高,因子越能预测未来涨跌。

但 IC 高还不够——还要看IC 的稳定性(ICIR,IC 的夏普)。一个因子 IC 均值 0.1 但时高时低、有时负的,不如 IC 均值 0.08 但一直正的。所以挑因子要看 ICIR,不是单看 IC。

另一个维度是因子间相关性。两个因子 IC 都 0.1,但彼此相关 0.9——等于一个因子算了两次,没增加信息。挑因子要"高 IC + 低相关",让每个因子贡献独立信息。这就是为什么 150 个里挑 10-20 个往往更好:去重后剩下的才是真信息。

150 个因子是信息,
也是噪声——挑出来才是。
灏天文库 · 量化交易实战 P.48

02因子挑选器:按 IC 选子集

下面 12 个因子(模拟 Alpha101 里的),按 IC 排序,标注彼此相关性。勾选因子组成子集,看子集的"有效 IC 贡献"——选太多高相关的会重复,选高 IC 低相关的最划算。

🔬 因子挑选器(IC 选子集)
勾选因子,看子集有效贡献。目标:高 IC + 低相关。
已选因子数
0
子集平均 IC
—
有效贡献(去重)
—
勾选因子查看评估。
提示:有效贡献 = ΣIC / (1+平均相关)。选高相关因子会拉低有效贡献。

03挑选流程:从 150 到 15

完整的因子挑选流程,从 150 个因子到最终 15 个:

150 因子 → 算 IC/ICIR → 滤掉 IC<0.03 → 算相关矩阵 → 聚类去重 → 每簇留最高 ICIR → ~15 个因子

关键步骤是聚类去重:把 150 个因子按相关性聚类(如层次聚类),相关高的归一簇,每簇只留 ICIR 最高的一个。这样既去重又保多样性。剩下的因子彼此相关低、各自 IC 高,是"独立信息源"。

另一个细节:IC 要分行业算。一个因子在科技股 IC 0.1,在能源股 IC -0.05——平均下来 IC 看着低,其实它在科技股很强。所以要分行业看 IC,挑在某行业强的因子,做行业中性化。这就是为什么 Alpha101 实战要配行业分类。

去重后剩下的,
才是真信息。
灏天文库 · 量化交易实战 P.49

04带走这套清单

✅ 因子挑选 6 条可执行规则

  1. 先算 IC/ICIR:IC<0.03 的因子直接滤掉,没预测力。
  2. 看 ICIR 不只看 IC:IC 稳定比 IC 高更重要,ICIR 是 IC 的夏普。
  3. 算相关矩阵聚类去重:相关高的归一簇,每簇只留最高 ICIR。
  4. 目标 10-20 个:去重后剩下的独立信息源,比 150 个全用更稳。
  5. 分行业算 IC:某因子可能只在某行业强,做行业中性化。
  6. 定期重算:因子会失效(alpha decay),每季度重算 IC 淘汰失效的。
挑因子像挑队友:
能干且不重复。
灏天文库 · 量化交易实战 P.50