深度学习与因子挖掘
一、深度学习时序模型
LSTM(Long Short-Term Memory)
| 维度 | 说明 |
|---|---|
| 核心结构 | 遗忘门(决定丢弃) + 输入门(决定更新) + 输出门(决定输出) |
| 遗忘门 | f_t = sigmoid(W_f * [h_{t-1}, x_t] + b_f) |
| 输入门 | i_t = sigmoid(W_i * [h_{t-1}, x_t] + b_i) |
| 候选记忆 | C_tilde = tanh(W_c * [h_{t-1}, x_t] + b_c) |
| 细胞状态 | C_t = f_t * C_{t-1} + i_t * C_tilde |
| 输出门 | o_t = sigmoid(W_o * [h_{t-1}, x_t] + b_o) |
| 隐状态 | h_t = o_t * tanh(C_t) |
| LSTM vs RNN | LSTM | RNN |
|---|---|---|
| 长程依赖 | 可捕捉(门控机制) | 梯度消失/爆炸 |
| 训练稳定性 | 稳定 | 不稳定 |
| 参数量 | 4倍RNN | 基准 |
| 竞赛推荐 | 时序任务首选 | 不推荐 |
GRU(Gated Recurrent Unit)
| 维度 | 说明 |
|---|---|
| 核心结构 | 重置门 + 更新门(比LSTM少一个门) |
| 更新门 | z_t = sigmoid(W_z * [h_{t-1}, x_t]) |
| 重置门 | r_t = sigmoid(W_r * [h_{t-1}, x_t]) |
| 候选隐状态 | h_tilde = tanh(W * [r_t*h_{t-1}, x_t]) |
| 隐状态 | h_t = (1-z_t)h_{t-1} + z_th_tilde |
| LSTM vs GRU | LSTM | GRU |
|---|---|---|
| 门数量 | 3个 | 2个 |
| 参数量 | 多 | 少(约3/4) |
| 训练速度 | 慢 | 快 |
| 表达能力 | 强 | 稍弱 |
| 竞赛建议 | 数据量大时 | 数据量小时/快速实验 |
时序建模实践
| 要点 | 说明 |
|---|---|
| 输入构造 | 滑动窗口:用前T步预测后1步 |
| 特征归一化 | 对每个特征做z-score归一化,避免量纲差异 |
| 序列长度 | 过短丢失长程信息,过长引入噪声,通常20~200 |
| 双向LSTM | 同时利用前向和后向信息,但预测任务慎用(可能数据泄露) |
| 多层堆叠 | 2~3层LSTM堆叠,增加表达能力 |
二、半监督学习
伪标签
| 步骤 | 说明 |
|---|---|
| 1. 训练初始模型 | 用有标签数据训练LSTM/GRU |
| 2. 预测无标签数据 | 用模型预测,取高置信度样本 |
| 3. 混合训练 | 有标签+伪标签数据一起训练 |
| 4. 迭代优化 | 重复2-3,逐步提升 |
一致性正则
| 方法 | 说明 |
|---|---|
| Dropout一致性 | 同一样本多次前向(不同Dropout),要求输出一致 |
| 数据扰动一致性 | 对输入加噪声,要求输出一致 |
| 时间扰动 | 对时序数据做时间偏移/缩放,要求预测一致 |
Mixup时序适配
| 维度 | 说明 |
|---|---|
| 方法 | 在特征空间做Mixup:x_mix = lambdax1 + (1-lambda)x2 |
| 注意 | 时序数据需对齐时间步再做Mixup |
| 效果 | 正则化,提高泛化能力 |
三、高频因子挖掘
数据源
| 数据类型 | 字段 | 说明 |
|---|---|---|
| 订单簿(Order Book) | 买/卖各10档价格和数量 | 反映市场供需 |
| 成交数据(Trade) | 价格、数量、方向、时间 | 反映实际交易 |
| K线数据 | OHLCV(开高低收量) | 聚合后的行情 |
订单簿因子
| 因子类别 | 示例因子 | 计算方式 |
|---|---|---|
| 价差因子 | 买卖价差 | ask1 - bid1 |
| 深度因子 | 买卖力量比 | sum(bid_qty) / sum(ask_qty) |
| 加权因子 | 加权中间价 | (bid1ask1_qty + ask1bid1_qty) / (bid1_qty + ask1_qty) |
| 不平衡因子 | 订单不平衡 | (bid_qty - ask_qty) / (bid_qty + ask_qty) |
| 压力因子 | 买/卖压力 | 各档位量价加权 |
成交数据因子
| 因子类别 | 示例因子 | 计算方式 |
|---|---|---|
| 量价因子 | 成交量加权平均价(VWAP) | sum(price*qty) / sum(qty) |
| 方向因子 | 买卖比例 | buy_qty / (buy_qty + sell_qty) |
| 大单因子 | 大单占比 | 大单量 / 总成交量 |
| 动量因子 | 价格动量 | price_t / price_{t-n} - 1 |
买卖单细分因子
| 细分维度 | 说明 |
|---|---|
| 主动买/主动卖 | 以卖价成交=主动买,以买价成交=主动卖 |
| 大单/中单/小单 | 按成交量划分,大单通常>均值+2sigma |
| 买卖力量 | 主动买量 - 主动卖量,反映市场方向 |
联动因子
| 因子 | 说明 |
|---|---|
| 个股与大盘联动 | 个股收益率与大盘收益率的相关性 |
| 行业联动 | 同行业股票收益率的协动性 |
| 期现联动 | 期货与现货价格的价差变化 |
KMeans聚类因子
| 步骤 | 说明 |
|---|---|
| 1. 特征提取 | 对每只股票提取多维度特征(波动率、换手率、市值等) |
| 2. 聚类 | KMeans将股票分为K组 |
| 3. 因子构造 | 聚类标签作为类别因子,或组内均值/离差作为因子 |
| 4. 应用 | 同组股票具有相似特征,可用于配对交易或风险控制 |
四、因子评估
IC(Information Coefficient)
| 指标 | 公式 | 含义 |
|---|---|---|
| IC | corr(factor_rank, return_rank) | 因子值与收益率的秩相关系数 |
| IC均值 | 多期IC的平均 | 因子预测能力 |
| IC标准差 | 多期IC的标准差 | 因子稳定性 |
| ICIR | IC均值 / IC标准差 | 风险调整后预测能力 |
| ICIR评判标准 | ICIR值 | 评价 |
|---|---|---|
| 优秀 | > 0.5 | 强因子 |
| 良好 | 0.3 ~ 0.5 | 可用 |
| 一般 | 0.1 ~ 0.3 | 弱因子 |
| 无效 | < 0.1 | 噪声 |
分层回测
| 步骤 | 说明 |
|---|---|
| 1. 排序分组 | 按因子值将股票分为5~10组 |
| 2. 计算组收益 | 每组等权/市值加权收益 |
| 3. 多空组合 | 顶组 - 底组收益 |
| 4. 单调性 | 组间收益应单调递增/递减 |
五、模型融合
时序竞赛融合策略
| 方法 | 说明 | 适用场景 |
|---|---|---|
| 简单平均 | 多模型预测取平均 | Baseline |
| 加权平均 | 按验证集表现分配权重 | 最常用 |
| Rank平均 | 将预测转为排名再平均 | 预测尺度不一致时 |
| Stacking | 基模型预测作为特征训练元模型 | 最强但易过拟合 |
多模型构建
| 模型类型 | 示例 | 融合价值 |
|---|---|---|
| 树模型 | LightGBM, XGBoost | 捕捉非线性交叉 |
| 深度模型 | LSTM, GRU, Transformer | 捕捉时序依赖 |
| 统计模型 | ARIMA, Prophet | 捕捉趋势和周期 |
| 线性模型 | Ridge, Lasso | 稳定基线 |
六、竞赛实战要点
| 要点 | 说明 |
|---|---|
| 时间泄露 | 严禁用未来数据,验证集按时间划分 |
| 特征稳定性 | 因子在训练集和测试集上IC应一致 |
| 过拟合风险 | 时序数据过拟合严重,需严格时间切分验证 |
| 因子衰减 | 因子有效性可能随时间衰减,需定期更新 |
| 交易成本 | 实盘需考虑滑点、手续费,竞赛通常忽略 |
| 多频率 | 日频/分钟频/Tick频,不同频率因子差异大 |
七、TabNet
| 维度 | 说明 |
|---|---|
| 核心思想 | 针对表格数据的深度学习模型,用注意力机制做特征选择 |
| 逐层特征选择 | 每层通过Mask选择部分特征,类似决策树的特征分裂 |
| 稀疏正则 | 鼓励每层只选少量特征,提高可解释性 |
| 优势 | 无需特征工程即可处理表格数据,端到端训练 |
| 劣势 | 在结构化数据上通常不如LightGBM,训练慢 |
| 竞赛应用 | 作为融合多样性来源,与树模型互补 |
八、Temporal Fusion Transformer(TFT)
| 维度 | 说明 |
|---|---|
| 核心思想 | 面向多变量多步预测的Transformer模型,显式处理静态/动态/已知未来输入 |
| 变量类型 | 静态协变量(不随时间变化) + 动态已知输入(未来可知) + 动态观测输入(仅历史) |
| 可解释性 | 注意力权重可视化特征重要性,变量选择模块输出特征贡献度 |
| 分位数预测 | 输出多个分位数(10%/50%/90%),天然支持区间预测 |
| 优势 | 同时处理多种输入类型,可解释性强,多步预测准确 |
| 竞赛应用 | 多变量多步时序预测,需要可解释性时 |
九、因子中性化与正交化
| 维度 | 说明 |
|---|---|
| 因子中性化 | 去除因子与行业/市值等风险因子的相关性,只保留Alpha信息 |
| 实现方式 | 对因子值做截面回归:factor = alpha + betamarket_cap + gammaindustry + residual,取residual |
| 因子正交化 | 去除多个因子之间的相关性,使因子独立 |
| Symmetric正交 | 对称正交,保持因子排序不变 |
| 竞赛价值 | 中性化后的因子IC更纯净,正交化后的多因子组合更有效 |
十、因子衰减与动态因子权重
| 维度 | 说明 |
|---|---|
| 因子衰减 | 因子有效性随时间递减,近期IC高于远期IC |
| 半衰期 | 因子IC衰减到一半所需时间,不同因子半衰期不同 |
| 动态权重 | 根据近期IC动态调整因子权重,近期IC高的因子权重更大 |
| 实现方式 | 指数加权IC均值:IC_weighted = sum(w_i * IC_i) / sum(w_i),w_i随时间指数衰减 |
| 竞赛应用 | 时序竞赛中动态调整特征权重,适应市场变化 |