精华帖子

滚动 ICIR 的多因子选股策略

由bq5973r5创建,最终由bq5973r5 被浏览 5 用户

1. 策略定位与适用场景

本策略为沪深300范围内的多因子选股 / 指数增强策略。通过在每次调仓前对因子权重进行滚动训练,以**最大化组合因子的 ICIR(信息系数稳定性)**为目标,构建更稳健的选股信号并形成可交易组合。

2. “滚动训练 + 周期调仓”框架

2.1 训练窗口与预测周期

  • 预测目标:未来 H=5 个交易日收益(forward return)
  • 训练窗口:过去 TRAIN_WINDOW=252 个交易日(约 1 年)
  • 训练频率:回测期内对每个交易日都可训练一套权重(用于生成当日信号)

2.2 调仓节奏

  • 调仓周期:REBALANCE_DAYS=5
  • 仅在调仓日更新目标持仓;非调仓日保持持仓不变\n目的:
  • 与 H 的预测周期对齐,避免信号过期
  • 控制换手与成本,提升可执行性

3. 因子体系(方向约定)

策略使用 5 个经典且互补因子,并统一到“值越大越看好”的方向:

  • f1:估值(PE)-1 / pe_ttm(低PE更好)
  • f2:估值(PB)-pb(低PB更好)
  • f3:质量(ROE)roe_avg_ttm(高ROE更好)
  • f4:拥挤度/热度(换手)-turn(低换手更好,偏避开拥挤)
  • f5:短期动量momentum_5(动量越强越好)

股票池与过滤条件:

  • 沪深300成分股
  • 剔除 ST、停牌
  • PE、PB 为正,ROE 不为空

4. 信号构建方法(核心逻辑)

4.1 标签:未来 H 日收益

对每只股票构造未来收益作为监督信号:

  • fwd_ret(t) = close(t+H) / close(t) - 1

4.2 训练样本:每日IC序列

在训练窗口内,对每个交易日做截面统计:

  1. 对 5 个因子做截面 rank(分位排序)
  2. 计算每个因子的 ICcorr(factor_rank, fwd_ret)
  3. 得到当天一个 5 维 IC 向量\n训练窗口内累积得到 IC 矩阵:IC_mat ∈ R^(N_days × 5)

4.3 权重学习:最大化组合ICIR

对 IC 矩阵估计:

  • μ = mean(IC_mat, axis=0)(每因子平均IC)
  • Σ = cov(IC_mat)(IC协方差:稳定性 + 重复信息)

求解权重并归一化:

  • w_raw = solve(Σ, μ)
  • w = w_raw / sum(|w_raw|)(抑制权重极端化、便于控制敞口)

解释:

  • μ 高 → 因子长期更有预测力 → 倾向加权
  • Σ 大/相关高 → 因子不稳定或重复信息多 → 倾向降权
  • 归一化用于避免权重过度集中,保持组合敞口可控

5. 选股与组合构建

5.1 因子标准化与综合打分

用于当日打分的因子做横截面标准化(normalize),然后用当日权重打分:

  • score = Σ(w_i * f_i_norm)

5.2 选股与权重

  • 选取得分最高的 TOPN=30 只股票
  • 等权配置:每只 1/TOPN

等权优点:

  • 风险更平滑、降低单票极端暴露
  • 避免分数噪声导致权重过度倾斜
  • 便于客户理解、审计与复现

5.3 调仓过滤(仅调仓日执行)

虽然可生成每日候选持仓,但仅在调仓日输出并执行组合更新(每 5 个交易日)。

6. 风险提示

  • 因子有效性漂移:滚动训练可缓解但无法消除
  • 市场系统性风险:权益策略在极端行情下仍可能回撤
  • 成本与冲击:费率已计入,但大资金需评估冲击成本与容量
  • 风格与行业暴露:如需严格约束,建议在组合层增加行业/风格/单票上限等约束模块

策略源码:

https://bigquant.com/codesharev3/28af575f-0873-4b44-a61c-4ab1fbf6e9cc

\

{link}