A 股量化多因子模型与策略 (2025-2026)
最后更新: 2026年4月30日 | 状态: 研究就绪 覆盖范围: 情绪周期指标、多因子模型构建、因子择时、机器学习因子模型、回测框架
1. A 股情绪周期指标
A 股市场受散户参与度和政策驱动流动性周期影响显著。传统情绪指标已演变为复合高频信号。
1.1 核心情绪组件
换手率偏离度(TRD) 衡量散户"狂热"与机构稳定性的对比。
信号: TRD > 3.0 表示极端散户过热(短期反转信号)。涨跌停比(LUR) 反映投机广度。注意:主板=10%,创业板/科创板=20%。
信号: LUR > 0.6 = 强势动量区间;LUR < 0.2 = 风险规避。北向资金动量(NBF) 北向(HK→SH/SZ)净流入 5 日滚动总和。作为"聪明钱"机构情绪的代理。
融资余额增速(MBV)
融资余额快速增长通常预示局部顶部。1.2 复合情绪指数(SASI)
使用 PCA 或等权组合标准化组件:
应用: 根据 SASI 区间过滤因子。(如在高 SASI 区间,低配价值因子,超配反转/质量因子)2. 多因子模型构建
现代 A 股量化模型(2025-2026)严格执行对 Barra CNE6 风险模型的正交化,避免风格押注伪装为 alpha。 价值因子,超配反转/质量因子)
2. 多因子模型构建
现代 A 股量化模型(2025-2026)严格执行对 Barra CNE6 风险模型的正交化,避免风格押注伪装为 alpha。### 2.1 标准因子公式与处理
预处理管线:
1. Winsorization: 在 μ±3σ 处截断极端值(推荐 MAD 方法提高鲁棒性)
2. 标准化: 横截面排名 Z-score: Z_i = (X_i - Median(X)) / MAD(X)
3. 行业/市值中性化: 对因子回归行业哑变量和 ln(市值)。使用残差。
| 因子类别 | 具体指标 | 公式/逻辑 | 回看期 |
|---|---|---|---|
| 价值 | 现金流收益率 | CF/P = 经营现金流(TTM) / 市值 |
TTM |
| 调整后盈利收益率 | EP_adj = (净利润 - 非经常性损益) / 市值 |
TTM | |
| 质量 | 应计项目 | Accruals = (ΔCA - ΔCL - ΔCash + ΔSTD - Dep) / 总资产 |
1Y/2Y |
| ROE 稳定性 | -StdDev(8个季度 ROE) |
2Y | |
| 动量 | 中期动量 | MOM = Return_{t-60, t-21}(跳过近月反转) |
60D |
| 反转 | 短期反转 | REV = Return_{t-5, t-1} |
5D |
| 波动率 | 特质波动率 | FF3 模型回归残差标准差 | 60D |
| 情绪 | 分析师修正 | (EPS预测新 - EPS预测旧) / 价格 |
30D 滚动 |
3. 因子择时与区间切换
静态加权(IC-IR)在 A 股因快速区间切换而表现不佳。
3.1 区间识别(HMM)
在以下指标上使用 2 状态隐马尔可夫模型: - 沪深 300 波动率 - 信用脉冲(社融同比增速) - SASI(来自第 1 节)
区间: 1. 牛市/流动性扩张: 超配动量、情绪。低配波动率。 2. 熊市/收缩: 超配质量、高股息、低波动率。 3. 震荡/轮动: 超配反转、分析师修正。
3.2 动态 IC 加权
使用轻量时间序列模型预测下月 IC:
训练目标:最大化 Rank IC 相关性。4. 回测框架配置
^{t+1} ∝ LightGBM(IC_t, IC_{t-1}, ..., SASI_t, Macro_t)
训练目标:最大化 Rank IC 相关性。
---
## 4. 回测框架配置### 4.1 Qlib(AI 原生回测)
微软 Qlib 是国内 ML 驱动量化研究的行业标准。
**配置示例(workflow_config.yaml)**:
```yaml
qlib_init:
provider_uri: "~/.qlib/qlib_data/cn_data"
region: cn
market: &market csi500
benchmark: &benchmark SH000905
data_handler_config: &data_handler_config
start_time: 2018-01-01
end_time: 2026-04-01
fit_start_time: 2018-01-01
fit_end_time: 2023-12-31
instruments: *market
port_analysis_config: &port_analysis_config
strategy:
class: TopkDropoutStrategy
module_path: qlib.contrib.strategy
kwargs:
model: <trained_lgbm_model>
dataset: <dataset>
topk: 50
n_drop: 10 # 卖出底部10只,买入顶部10只新信号
backtest:
start_time: 2024-01-01
end_time: 2026-04-01
account: 10000000
benchmark: *benchmark
exchange_kwargs:
limit_threshold: 0.095 # 现实处理10%涨跌停
deal_price: "close"
open_cost: 0.0003
close_cost: 0.0013 # 含0.05%印花税+0.08%佣金
min_cost: 5
class MultiFactorAlgo(bt.Strategy):
params = (('rebalance_days', 20), ('top_k', 50),)
def __init__(self):
self.rebalance_counter = 0
def next(self):
self.rebalance_counter += 1
if self.rebalance_counter % self.params.rebalance_days == 0:
self.rebalance()
def rebalance(self):
scores = load_scores(self.datas)
targets = sorted(scores, key=lambda x: x.score, reverse=True)[:self.params.top_k]
target_names = [t.name for t in targets]
for position in self.broker.positions:
if position not in target_names:
self.close(position)
target_weight = 1.0 / self.params.top_k
for name in target_names:
size = self.broker.get_cash() * target_weight / self.getdatabyname(name).close[0]
self.order_target_size(self.getdatabyname(name), size)
5. 机器学习因子模型(2025-2026)
5.1 排序学习(GBDT)
标准 MSE 损失对组合构建次优。使用 LambdaMART 或 Xendcg。
LightGBM 配置:
params = {
'objective': 'rank_xendcg', # 适用于横截面排序
'metric': 'ndcg',
'boosting_type': 'gbdt',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.8,
'min_child_weight': 5000, # 防止对微盘股过拟合
'verbose': -1
}
': 0.05,
'feature_fraction': 0.8,
'min_child_weight': 5000, # 防止对微盘股过拟合
'verbose': -1
}# 使用组信息(日期)训练以强制执行横截面排序
train_data = lgb.Dataset(X_train, label=y_train, group=date_groups_train)
model = lgb.train(params, train_data, num_boost_round=1000)
5.2 LLM 增强另类数据
- 财报电话 NLP: 微调中文 LLM(如 Qwen-2.5-7B、GLM-4)提取 A 股管理层讨论与分析(MD&A)文本情绪
- 供应链图(GNN): 建模股票关系为图(客户-供应商、同行业)。GNN 层传播情绪冲击(如特斯拉延期影响中国 EV 电池供应商)
6. 风险管理与组合优化
6.1 均值方差约束优化
约束条件: - Σ w_i = 1(满仓) - |w - w_bench|_1 ≤ 换手限制(如 30% 月度) - w^T B_style = 0(风格中性化:市值、Beta、价值) - w^T B_ind = 0(行业中性化) - w_i ≤ 0.02(单股上限防集中风险)6.2 实际执行成本(2026 标准)
- 印花税: 0.05%(仅卖方)
- 佣金: 0.01%-0.025%(机构账户可协商)
- 滑点: 沪深 300 为 10bps,中证 2000(小盘)为 25bps
- T+1 规则: 当日买入不可卖出。因子模型必须考虑此限制;T 日收盘生成信号在 T+1 开盘执行
7. 可执行策略参数清单
7.1 "Alpha 工厂" 基线配置
- 股票池: 中证 800(流动性)+ 中证 2000(Alpha)。排除 ST、*ST、停牌、IPO<60天
- 调仓: 月度(T+1 执行)
- 持有期: 20 个交易日
- 因子衰减: 半衰期 40 天
- 性能目标: 年化收益 >15%,最大回撤 <15%,信息比率 >1.5
7.2 A 股量化常见陷阱
- 财报前视偏差: 始终使用
ann_date(公告日)而非report_date。财报延迟 1-4 个月发布 - 幸存者偏差: 必须使用时点股票池
- 涨停执行失败: 股票开盘涨停时买单不会成交。回测必须模拟订单簿深度和涨停拒绝率
- 微盘股过拟合: 小盘股(中证 2000)有巨大 alpha 但流动性极差。强制执行 ADV 约束:
持仓价值 < 20日 ADV 的 10%
文档更新日期: 2026年4月30日 | 来源: Qlib 官方文档、Barra CNE6 手册、arXiv 量化论文、社区回测实践、真实 A 股数据验证** ADV 的 10%`
文档更新日期: 2026年4月30日 | 来源: Qlib 官方文档、Barra CNE6 手册、arXiv 量化论文、社区回测实践、真实 A 股数据验证**## 🧪 实盘验证 (2026-04-30)
50 沪深成分股, 新浪源 6850 条真实数据, 2025.10-2026.04:
| 因子 | IC均值 | IR | t值 | 胜率 |
|---|---|---|---|---|
| 市值(Size) | -0.024 | -0.090 | -0.97 | 50.9% |
| 20日动量(Mom) | -0.006 | -0.022 | -0.24 | 49.1% |
| 20日波动率(Vol) | 0.036 | 0.153 | 1.65 | 56.9% |
| 20日换手率(TO) | 0.033 | 0.103 | 1.11 | 54.3% |
⚠️ 所有单因子 IR < 0.2,统计不显著。 理论因子在实战中需要因子合成+择时+另类数据才能产生超额收益。详见 实盘因子验证。