四金_作业

总结

因子更重要还是模型更重要?

因子和模型同样重要,模型相同的情况,不同因子在回测中,差异巨大。相同因子在不同的模型下进行回测,表现也各不相同。

一个好的策略,是因子和模型共同组合得到的。

本次作业的三个模型对比:

  • Random Forest:鲁棒、易调、抗过拟合,但“水平”有限,对时间序列动态特征捕捉不足。

  • Sklearn 原生 GBDT/RandomForest:接口统一、工程简单,但训练慢、难并行、不支持缺失值自动处理,对金融时序非平稳性表现一般。

  • XGBoost:精度高、能学到复杂非线性、支持缺失值与自定义损失,但对超参敏感、训练/调参成本高,且同样容易过拟合于未来不可重现的噪声。

KIMI总结:做股价回归,RandomForest 是“稳健但笨重的大锤”,Sklearn-GBDT/RF 是“顺手但不快的螺丝刀”,XGBoost 则是“锋利却容易割手的手术刀”。先用大锤砸出方向,再拿手术刀精雕细琢,同时永远记得——金融数据里的信号稀少且转瞬即逝,再锋利的刀也敌不过市场的 regime shift。


相同因子下不同模型的区别?

因子可以决定回一个量化交易的潜在收益空间,好的模型可以在回测和实盘中,不断提升这个收益的空间。

模型和因子的相对重要性会随环境变化。相同回测时间不同因子+不同的模型,回测结果不同。


但在当前作业中sklearn的大部分年化收益都优于xgboost,这是因为小样本、低噪声、特征维度有限的环境里,sklearn 的线性/树模型往往更快、更稳,而 XGBoost 因为 过拟合风险 + 参数空间大 + 对样本量敏感,反而容易把噪声当信号,于是出现 sklearn > XGBoost 的年化收益。 但这并不代表“XGBoost 不如 sklearn”,而是 “当前数据/参数/约束” 让 XGBoost 的优势没发挥出来。

部分时间段,xgboost可能优于sklearn

部分时间段,xgboost可能优于sklearn



作业

sklearn年化收益率118%

sklearn年化收益率136%

多模型收益率对比

BigQuant CodeShareBigQuant CodeShareBigQuant CodeShare





随机种子 → 以下内容由模型生成

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 推理 ➜ 每棵树内部已训练好,无需再设


一键记忆表

步骤

必须固定

建议固定

无需固定

必须不固定

数据抽取

抽样时

—

纯拉数

—

特征提取

降维/缩放/缺失插补

切分

数学公式

—

模型训练

所有含随机超参的模型/搜索

—

纯线性

—

模型评估

交叉验证切分

—

指标计算

蒙特卡洛

模型推理

—

—

纯预测

—