四金_作业
由bqf6mces创建,最终由bqf6mces 被浏览 36 用户
总结
因子更重要还是模型更重要?
因子和模型同样重要,模型相同的情况,不同因子在回测中,差异巨大。相同因子在不同的模型下进行回测,表现也各不相同。
一个好的策略,是因子和模型共同组合得到的。
本次作业的三个模型对比:
- Random Forest:鲁棒、易调、抗过拟合,但“水平”有限,对时间序列动态特征捕捉不足。
- Sklearn 原生 GBDT/RandomForest:接口统一、工程简单,但训练慢、难并行、不支持缺失值自动处理,对金融时序非平稳性表现一般。
- XGBoost:精度高、能学到复杂非线性、支持缺失值与自定义损失,但对超参敏感、训练/调参成本高,且同样容易过拟合于未来不可重现的噪声。
KIMI总结:做股价回归,RandomForest 是“稳健但笨重的大锤”,Sklearn-GBDT/RF 是“顺手但不快的螺丝刀”,XGBoost 则是“锋利却容易割手的手术刀”。先用大锤砸出方向,再拿手术刀精雕细琢,同时永远记得——金融数据里的信号稀少且转瞬即逝,再锋利的刀也敌不过市场的 regime shift。
\
相同因子下不同模型的区别?
因子可以决定回一个量化交易的潜在收益空间,好的模型可以在回测和实盘中,不断提升这个收益的空间。
模型和因子的相对重要性会随环境变化。相同回测时间不同因子+不同的模型,回测结果不同。
但在当前作业中sklearn的大部分年化收益都优于xgboost,这是因为小样本、低噪声、特征维度有限的环境里,sklearn 的线性/树模型往往更快、更稳,而 XGBoost 因为 过拟合风险 + 参数空间大 + 对样本量敏感,反而容易把噪声当信号,于是出现 sklearn > XGBoost 的年化收益。 但这并不代表“XGBoost 不如 sklearn”,而是 “当前数据/参数/约束” 让 XGBoost 的优势没发挥出来。
\
作业
\
随机种子 → 以下内容由模型生成
sklearn 里,同一数据集 + 相同代码,多次训练却得到 不同预测结果,造成这种问题的原因可能为1、模型本身带随机性,2、没有给随机数生成器设置np.random.seed(42)设置随机种子,导致多次回测中,结果不一致。
是否需要设置随机种子:
把 5 个步骤拆成 “必须固定 / 建议固定 / 无需固定 / 必须不固定” 四类,直接给出可落地的清单。(默认使用 sklearn + XGBoost;如无特别说明,固定值统一用 random_state=42
或 seed=42
)
1 数据抽取
-
纯 SQL / API 拉数 ➜ 无需固定
-
若抽样(如按月随机采样) ➜ 必须固定
df.sample(frac=0.8, random_state=42)
2 特征提取
子步骤 | 是否固定 | 示例 |
---|---|---|
计算价量因子 | 纯数学公式 | 无需固定 |
标准化 / 归一化 | 涉及随机分位数 | 必须固定 StandardScaler , QuantileTransformer(random_state=42) |
PCA / ICA / FA 降维 | 随机初始化 | 必须固定 PCA(random_state=42) |
缺失值多重插补 IterativeImputer |
内部随机 | 必须固定 random_state=42 |
训练-验证切分 | 时间序列外 ➜ 顺序切分不随机;随机切分 ➜ 必须固定 | TimeSeriesSplit 无需,train_test_split 需 random_state=42 |
3 模型训练
模型 | 随机源 | 固定方式 |
---|---|---|
sklearn 线性模型(Ridge/Lasso/ElasticNet) | 无 | 无需 |
sklearn 树模型(RF/GBDT) | bootstrap & 特征抽样 | 必须固定 random_state=42 |
sklearn RandomizedSearchCV |
随机采样超参 | 必须固定 random_state=42 |
XGBoost | 列/行抽样、树初始化 | 必须固定 seed=42, random_state=42 |
XGBoost 早停 | 验证集划分 | 若自己切分需固定;用 TimeSeriesSplit 则无需 |
4 模型评估
- 交叉验证 / 滚动窗口 ➜ 切分方式固定(
TimeSeriesSplit
已天然固定顺序) - 评估指标计算 ➜ 无需固定
- 蒙特卡洛稳健性检验 ➜ 故意不固定(多次随机种子跑分布)
5 模型推理(线上)
- 纯预测 ➜ 无需固定(模型已训练好,权重确定)
- 集成 Bagging 推理 ➜ 每棵树内部已训练好,无需再设
一键记忆表
步骤 | 必须固定 | 建议固定 | 无需固定 | 必须不固定 |
---|---|---|---|---|
数据抽取 | 抽样时 | — | 纯拉数 | — |
特征提取 | 降维/缩放/缺失插补 | 切分 | 数学公式 | — |
模型训练 | 所有含随机超参的模型/搜索 | — | 纯线性 | — |
模型评估 | 交叉验证切分 | — | 指标计算 | 蒙特卡洛 |
模型推理 | — | — | 纯预测 | — |
\