滚动 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序列
在训练窗口内,对每个交易日做截面统计:
- 对 5 个因子做截面 rank(分位排序)
- 计算每个因子的 IC:
corr(factor_rank, fwd_ret) - 得到当天一个 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
\