AI交易引擎 · 算法与场景应用(Task 5)| 纯 Python + scikit-learn 后端,覆盖 7 种经典分类器| 仅股票数据
任务:判断个股是否应被选中(合格标的) | 目标变量:Y(Y=True(被选中 / 合格标的))| 数据规模:20772 行 × 20 列 | 候选特征 17 个

缺失值:无缺失值(已检查全部候选特征)。
类别分布:负类 12,383,正类 8,389,正类占比 40.4%。 类别较均衡,可直接建模。
数据时间点:2021-06-30, 2021-09-30, 2021-12-31, 2022-03-31, 2022-06-30(共 5 个季度截面)。
诊断结论:数据为面板截面结构,存在明显的时间顺序,因此后续必须采用时间序列划分而非随机划分,避免未来信息泄露。
| 特征 | mean | std | min | max |
|---|---|---|---|---|
| 企业倍数(EV除EBITDA) | 73.723 | 3523.939 | -12677.529 | 321003.803 |
| 市净率PB(MRQ) | 4.743 | 66.621 | -1214.099 | 8399.390 |
| 市现率PCF(现金净流量TTM) | 7.790 | 9210.963 | -865178.188 | 617521.312 |
| 市现率PCF(经营现金流TTM) | 34.307 | 1167.085 | -79641.758 | 59460.102 |
| 市盈率PE(TTM) | -227.628 | 28697.518 | -3176900.500 | 155726.328 |
| 市盈率PE(TTM,扣除非经常性损益) | 19.610 | 1282.282 | -79457.398 | 56083.674 |
| 市销率PS(TTM) | 13.011 | 740.887 | -7604.115 | 72003.795 |
| 股息率(近12个月) | 1.340 | 1.627 | 0.006 | 41.481 |
| MV | 206.228 | 781.330 | 7.763 | 25836.220 |
| 净利润同比增长率 | 9.078 | 8776.368 | -1009322.117 | 571255.490 |
| 净资产同比增长率 | 17.770 | 395.362 | -25609.678 | 29993.201 |
| 利润总额(同比增长率) | 84.444 | 3295.549 | -94471.911 | 250983.001 |
| 基本每股收益(同比增长率) | 16.832 | 1076.800 | -51868.750 | 55300.000 |
| 总资产同比增长率 | 19.712 | 67.083 | -91.402 | 3062.029 |
| 现金净流量同比增长率 | 93.021 | 64545.411 | -7291646.924 | 5132654.126 |
| 营业利润(同比增长率) | 5.070 | 4863.092 | -539059.241 | 155128.946 |
| 营业总收入(同比增长率) | 41.251 | 1384.182 | -155.235 | 191312.333 |
Y 为布尔值,直接映射:True → 1(被选中 / 合格标的),False → 0。为什么要二分类:量化选股/择时的最终动作是「买 / 不买」的离散决策,用分类模型输出概率,再结合阈值与风控做下单,比直接回归收益更稳健、可解释。
原始字段主要来自行情与财务因子库,按语义可分为四组(变量由行情/财报原始数据加工生成):
这些因子是量化多因子模型里的经典「价值因子」与「成长因子」,作为分类器的输入变量。需要指出:估值倍数之间(如 PE、PB、PS、PCF)天然高度相关,成长性同比指标之间也高度相关,这正是下一节要诊断的多重共线性问题。
用 Pearson 相关系数刻画变量两两线性相关,并用方差膨胀因子 VIF 量化多重共线。两类手段互补:相关性看「两两」,VIF 看「某变量被其余变量联合解释的程度」。



利润总额(同比增长率)~基本每股收益(同比增长率) (r=0.27); 利润总额(同比增长率)~营业利润(同比增长率) (r=0.24); 基本每股收益(同比增长率)~营业利润(同比增长率) (r=0.19);
VIF 最高的是 利润总额(同比增长率)(VIF≈1.1)。
说明估值类因子与成长类因子内部存在严重多重共线,会放大回归系数方差、令树模型偏向少数强相关变量。
对策:① 特征选择时按 |r| 阈值筛选;② 树模型(RF/GBDT)本身对共线较鲁棒;③ 线性模型(LR/SVM)需配合 L2 正则(本报告已对 LR/SVM 调节 C 控制复杂度)。多数单变量与目标的线性相关很弱(|r| 接近 0),说明「选股/涨跌」是非线性、多因子共同作用的难题;这也解释了为何纯线性模型 AUC 仅略高于 0.5,而集成模型略有提升。
采用 |Pearson r| ≥ 0.01 阈值过滤掉与目标几乎无关的噪声变量,从 17 个候选中保留 8 个进入建模:
互信息(非线性关联)排名前 6:基本每股收益(同比增长率(0.015); 营业利润(同比增长率)(0.012); 净利润同比增长率(0.008); 营业总收入(同比增长率)(0.008); 利润总额(同比增长率)(0.005); 企业倍数(EV除EBIT(0.005)。互信息与 Pearson 排序结果大致一致,印证变量以弱线性/弱非线性信号为主。
Date 升序切分:训练集占 70%,测试集占 30%,关闭随机打乱。
训练日期:2021-06-30, 2021-09-30, 2021-12-31, 2022-03-31;测试日期:2022-03-31, 2022-06-30。
训练样本 14,540(正类 6,720),测试样本 6,232(正类 1,669)。
测试集日期严格晚于训练集,杜绝「用未来预测过去」的泄露。数值型特征先做 StandardScaler(z-score,仅用训练集 fit),保证 KNN / LR / SVM 等距离或梯度类模型不被量纲主导,树模型不受量纲影响但保持统一流程。
对 7 种经典分类器,以 时间序列交叉验证(TimeSeriesSplit, 3 折)在训练集上按 AUC 做网格搜索,选出最优关键参数后再在测试集评估。这样既「调了参数」,又避免调参泄露到测试集。
| 模型 | 最优参数 | 参数含义 / 调整逻辑 |
|---|---|---|
| 逻辑回归 LR | C=1.0 | C 控制 L2 正则强度:C 小→强正则→系数更稳;C 大→拟合更强但易过拟合。 |
| 决策树 DT | max_depth=5.0, min_samples_leaf=5.0 | max_depth 控制树深:过深→过拟合;过浅→欠拟合。min_samples_leaf 限制叶样本数。 |
| 随机森林 RF | max_depth=8.0, n_estimators=100.0 | n_estimators 树越多越稳;max_depth 限制单树复杂度,防止单树过拟合。 |
| K 近邻 KNN | n_neighbors=11.0 | n_neighbors(K) 小→模型复杂/敏感;K 大→更平滑。奇数减少平局。 |
| 朴素贝叶斯 NB | var_smoothing=0.001 | var_smoothing 给方差加平滑项,防止零方差导致概率爆炸。 |
| 线性 SVM | C=1.0 | C 为正则反强度:C 大→更强调分类正确(间隔变窄);C 小→间隔更宽更稳。 |
| 梯度提升 GBDT | learning_rate=0.05, n_estimators=200.0 | n_estimators 为迭代轮数;learning_rate 为收缩步长,越小越需更多轮但更稳。 |

上图为各模型「关键参数 → 交叉验证 AUC」曲线,直观展示参数调整如何影响性能:多数模型 AUC 随参数变化平缓,说明本数据信号弱、模型对参数不敏感,调参收益有限——这本身也是重要诊断结论。


| 模型 | Accuracy | Precision | Recall | F1 | AUC |
|---|---|---|---|---|---|
| 逻辑回归 LR | 0.710 | 0.303 | 0.064 | 0.105 | 0.518 |
| 决策树 DT | 0.635 | 0.324 | 0.335 | 0.330 | 0.547 |
| 随机森林 RF | 0.649 | 0.358 | 0.392 | 0.374 | 0.591 |
| K 近邻 KNN | 0.561 | 0.290 | 0.443 | 0.351 | 0.532 |
| 朴素贝叶斯 NB | 0.276 | 0.266 | 0.968 | 0.417 | 0.519 |
| 线性 SVM | 0.732 | 0.000 | 0.000 | 0.000 | 0.559 |
| 梯度提升 GBDT | 0.649 | 0.355 | 0.379 | 0.367 | 0.592 |
高亮行为 AUC 最优模型。所有模型 AUC 集中在 0.46–0.59,整体接近随机,反映该二分类任务难度高、单期财务因子预测力有限。

混淆矩阵显示 FP(把不中选的误判为中选)与 FN 都很多,模型「区分度」不足,与 AUC≈0.5 一致。
线性模型(LR / SVM)展示系数(红负蓝正,符号即方向);树模型(DT / RF / GBDT)展示特征重要性;KNN / NB 无原生重要性,用与目标 |Pearson r| 代理(紫色)。

| 模型 | Top-1 | Top-2 | Top-3 |
|---|---|---|---|
| 逻辑回归 LR | 市净率PB(MRQ) (-0.415) | MV (-0.115) | 市盈率PE(TTM) (+0.067) |
| 决策树 DT | MV (+0.257) | 市净率PB(MRQ) (+0.227) | 基本每股收益(同比增长率) (+0.211) |
| 随机森林 RF | MV (+0.148) | 市净率PB(MRQ) (+0.108) | 基本每股收益(同比增长率) (+0.070) |
| K 近邻 KNN | 基本每股收益(同比增长率) (+0.033) | MV (+0.027) | 利润总额(同比增长率) (+0.022) |
| 朴素贝叶斯 NB | 基本每股收益(同比增长率) (+0.033) | MV (+0.027) | 利润总额(同比增长率) (+0.022) |
| 线性 SVM | 利润总额(同比增长率) (+0.078) | 市现率PCF(现金净流量TT (-0.025) | 营业利润(同比增长率) (-0.016) |
| 梯度提升 GBDT | MV (+0.213) | 市净率PB(MRQ) (+0.149) | 基本每股收益(同比增长率) (+0.145) |

按类别箱线看,Top 变量在正负类间重叠严重,进一步说明单变量区分度低,需要模型去捕捉变量间的交互与非线性组合。
C 控复杂度;树集成类(RF/GBDT)靠 n_estimators × max_depth / learning_rate 控偏差-方差。
本数据中 C、深度、树数等参数对 AUC 影响都很小(调参曲线平缓),说明性能瓶颈在特征信号,而非模型容量——加参数不如加好因子。
② 指标对比:最优 梯度提升 GBDT(AUC=0.592),最弱 逻辑回归 LR(AUC=0.518)。
集成模型(RF/GBDT)普遍略优于单树与线性,但不显著;NB 因特征强相关违背「条件独立」假设而最差。
③ 结论:财务因子对「未来是否中选/盈利」预测力有限(AUC 接近 0.5),建议:增加高频/情绪/资金流等增量因子、做行业中性化、用更长时间窗口、或对模型做 stacking 集成。当前工作台已具备完整的「诊断—建模—对比」能力,可作为因子有效性初筛工具。任务:预测个股未来收益是否为正(盈利 / 亏损) | 目标变量:Next_Ret(Next_Ret > 0(未来盈利))| 数据规模:39616 行 × 22 列 | 候选特征 19 个

缺失值:无缺失值(已检查全部候选特征)。
类别分布:负类 21,237,正类 18,379,正类占比 46.4%。 类别较均衡,可直接建模。
数据时间点:2020/12/31, 2020/3/31, 2020/6/30, 2020/9/30, 2021/12/31, 2021/3/31, 2021/6/30, 2021/9/30, 2022/3/31, 2022/6/30(共 10 个季度截面)。
诊断结论:数据为面板截面结构,存在明显的时间顺序,因此后续必须采用时间序列划分而非随机划分,避免未来信息泄露。
| 特征 | mean | std | min | max |
|---|---|---|---|---|
| 企业倍数(EV除EBITDA) | 57.708 | 2598.863 | -1.267753e+04 | 321003.803 |
| 市净率PB(MRQ) | 4.347 | 48.965 | -1.214099e+03 | 8399.390 |
| 市现率PCF(现金净流量TTM) | -0.441 | 8235.794 | -8.651782e+05 | 617521.312 |
| 市现率PCF(经营现金流TTM) | -9.075 | 3940.461 | -6.578077e+05 | 100786.677 |
| 市盈率PE(TTM) | -130.442 | 21229.304 | -3.176900e+06 | 173792.391 |
| 市盈率PE(TTM,扣除非经常性损益) | 39.243 | 1476.118 | -7.945740e+04 | 128100.642 |
| 市销率PS(TTM) | 10.485 | 546.828 | -7.604115e+03 | 72003.795 |
| 股息率(近12个月) | 1.318 | 1.579 | 5.000000e-03 | 41.481 |
| MV | 198.811 | 774.178 | 5.595000e+00 | 25836.220 |
| 净利润同比增长率 | -172.599 | 43687.266 | -8.482002e+06 | 1350063.159 |
| 净资产同比增长率 | 17.001 | 337.914 | -2.560968e+04 | 29993.201 |
| 利润总额(同比增长率) | 51.415 | 3064.406 | -2.096276e+05 | 250983.001 |
| 基本每股收益(同比增长率) | 10.894 | 1428.890 | -5.186875e+04 | 190100.000 |
| 总资产同比增长率 | 19.385 | 114.937 | -9.649200e+01 | 9446.266 |
| 现金净流量同比增长率 | -603.911 | 136693.896 | -1.909357e+07 | 7537359.449 |
| 经营活动产生的现金流量净额(同比增长率) | -3059.637 | 498536.505 | -9.571646e+07 | 391198.135 |
| 营业利润(同比增长率) | 4.785 | 4043.913 | -5.390592e+05 | 155128.946 |
| 营业总收入(同比增长率) | 31.706 | 1052.175 | -1.552350e+02 | 191312.333 |
| 营业收入(同比增长率) | 31.949 | 1052.312 | -1.552350e+02 | 191312.333 |
Next_Ret 为连续收益率,按 Next_Ret > 0 二值化:盈利 = 1,亏损或持平 = 0。这是金融场景中典型的「涨跌方向」分类任务。为什么要二分类:量化选股/择时的最终动作是「买 / 不买」的离散决策,用分类模型输出概率,再结合阈值与风控做下单,比直接回归收益更稳健、可解释。
原始字段主要来自行情与财务因子库,按语义可分为四组(变量由行情/财报原始数据加工生成):
这些因子是量化多因子模型里的经典「价值因子」与「成长因子」,作为分类器的输入变量。需要指出:估值倍数之间(如 PE、PB、PS、PCF)天然高度相关,成长性同比指标之间也高度相关,这正是下一节要诊断的多重共线性问题。
用 Pearson 相关系数刻画变量两两线性相关,并用方差膨胀因子 VIF 量化多重共线。两类手段互补:相关性看「两两」,VIF 看「某变量被其余变量联合解释的程度」。



营业总收入(同比增长率)~营业收入(同比增长率) (r=1.00); 现金净流量同比增长率~经营活动产生的现金流量净额(同比增长率) (r=0.54); 利润总额(同比增长率)~营业利润(同比增长率) (r=0.25);
VIF 最高的是 营业收入(同比增长率)(VIF≈4283.8)。
说明估值类因子与成长类因子内部存在严重多重共线,会放大回归系数方差、令树模型偏向少数强相关变量。
对策:① 特征选择时按 |r| 阈值筛选;② 树模型(RF/GBDT)本身对共线较鲁棒;③ 线性模型(LR/SVM)需配合 L2 正则(本报告已对 LR/SVM 调节 C 控制复杂度)。多数单变量与目标的线性相关很弱(|r| 接近 0),说明「选股/涨跌」是非线性、多因子共同作用的难题;这也解释了为何纯线性模型 AUC 仅略高于 0.5,而集成模型略有提升。
采用 |Pearson r| ≥ 0.01 阈值过滤掉与目标几乎无关的噪声变量,从 19 个候选中保留 5 个进入建模:
互信息(非线性关联)排名前 6:基本每股收益(同比增长率(0.013); 净利润同比增长率(0.009); 企业倍数(EV除EBIT(0.006); 市盈率PE(TTM,扣除(0.006); 市盈率PE(TTM)(0.006); 营业总收入(同比增长率)(0.005)。互信息与 Pearson 排序结果大致一致,印证变量以弱线性/弱非线性信号为主。
Date 升序切分:训练集占 70%,测试集占 30%,关闭随机打乱。
训练日期:2020/12/31, 2020/3/31, 2020/6/30, 2020/9/30, 2021/12/31, 2021/3/31, 2021/6/30, 2021/9/30;测试日期:2021/9/30, 2022/3/31, 2022/6/30。
训练样本 27,731(正类 13,357),测试样本 11,885(正类 5,022)。
测试集日期严格晚于训练集,杜绝「用未来预测过去」的泄露。数值型特征先做 StandardScaler(z-score,仅用训练集 fit),保证 KNN / LR / SVM 等距离或梯度类模型不被量纲主导,树模型不受量纲影响但保持统一流程。
对 7 种经典分类器,以 时间序列交叉验证(TimeSeriesSplit, 3 折)在训练集上按 AUC 做网格搜索,选出最优关键参数后再在测试集评估。这样既「调了参数」,又避免调参泄露到测试集。
| 模型 | 最优参数 | 参数含义 / 调整逻辑 |
|---|---|---|
| 逻辑回归 LR | C=10.0 | C 控制 L2 正则强度:C 小→强正则→系数更稳;C 大→拟合更强但易过拟合。 |
| 决策树 DT | max_depth=3.0, min_samples_leaf=5.0 | max_depth 控制树深:过深→过拟合;过浅→欠拟合。min_samples_leaf 限制叶样本数。 |
| 随机森林 RF | max_depth=8.0, n_estimators=200.0 | n_estimators 树越多越稳;max_depth 限制单树复杂度,防止单树过拟合。 |
| K 近邻 KNN | n_neighbors=11.0 | n_neighbors(K) 小→模型复杂/敏感;K 大→更平滑。奇数减少平局。 |
| 朴素贝叶斯 NB | var_smoothing=1e-05 | var_smoothing 给方差加平滑项,防止零方差导致概率爆炸。 |
| 线性 SVM | C=10.0 | C 为正则反强度:C 大→更强调分类正确(间隔变窄);C 小→间隔更宽更稳。 |
| 梯度提升 GBDT | learning_rate=0.05, n_estimators=200.0 | n_estimators 为迭代轮数;learning_rate 为收缩步长,越小越需更多轮但更稳。 |

上图为各模型「关键参数 → 交叉验证 AUC」曲线,直观展示参数调整如何影响性能:多数模型 AUC 随参数变化平缓,说明本数据信号弱、模型对参数不敏感,调参收益有限——这本身也是重要诊断结论。


| 模型 | Accuracy | Precision | Recall | F1 | AUC |
|---|---|---|---|---|---|
| 逻辑回归 LR | 0.552 | 0.436 | 0.205 | 0.279 | 0.531 |
| 决策树 DT | 0.516 | 0.434 | 0.478 | 0.455 | 0.528 |
| 随机森林 RF | 0.550 | 0.460 | 0.371 | 0.411 | 0.544 |
| K 近邻 KNN | 0.524 | 0.437 | 0.437 | 0.437 | 0.518 |
| 朴素贝叶斯 NB | 0.571 | 0.410 | 0.037 | 0.067 | 0.496 |
| 线性 SVM | 0.571 | 0.381 | 0.023 | 0.044 | 0.517 |
| 梯度提升 GBDT | 0.553 | 0.465 | 0.376 | 0.415 | 0.544 |
高亮行为 AUC 最优模型。所有模型 AUC 集中在 0.46–0.59,整体接近随机,反映该二分类任务难度高、单期财务因子预测力有限。

混淆矩阵显示 FP(把不中选的误判为中选)与 FN 都很多,模型「区分度」不足,与 AUC≈0.5 一致。
线性模型(LR / SVM)展示系数(红负蓝正,符号即方向);树模型(DT / RF / GBDT)展示特征重要性;KNN / NB 无原生重要性,用与目标 |Pearson r| 代理(紫色)。

| 模型 | Top-1 | Top-2 | Top-3 |
|---|---|---|---|
| 逻辑回归 LR | 经营活动产生的现金流量净额( (-1.132) | 营业总收入(同比增长率) (+0.284) | 基本每股收益(同比增长率) (+0.218) |
| 决策树 DT | 市净率PB(MRQ) (+0.341) | 营业利润(同比增长率) (+0.213) | 利润总额(同比增长率) (+0.194) |
| 随机森林 RF | 市净率PB(MRQ) (+0.104) | MV (+0.092) | 基本每股收益(同比增长率) (+0.078) |
| K 近邻 KNN | 基本每股收益(同比增长率) (+0.035) | 股息率(近12个月) (+0.026) | 利润总额(同比增长率) (+0.020) |
| 朴素贝叶斯 NB | 基本每股收益(同比增长率) (+0.035) | 股息率(近12个月) (+0.026) | 利润总额(同比增长率) (+0.020) |
| 线性 SVM | 经营活动产生的现金流量净额( (-0.661) | 股息率(近12个月) (+0.399) | 营业总收入(同比增长率) (+0.310) |
| 梯度提升 GBDT | 市净率PB(MRQ) (+0.168) | MV (+0.137) | 基本每股收益(同比增长率) (+0.101) |

按类别箱线看,Top 变量在正负类间重叠严重,进一步说明单变量区分度低,需要模型去捕捉变量间的交互与非线性组合。
C 控复杂度;树集成类(RF/GBDT)靠 n_estimators × max_depth / learning_rate 控偏差-方差。
本数据中 C、深度、树数等参数对 AUC 影响都很小(调参曲线平缓),说明性能瓶颈在特征信号,而非模型容量——加参数不如加好因子。
② 指标对比:最优 随机森林 RF(AUC=0.544),最弱 朴素贝叶斯 NB(AUC=0.496)。
集成模型(RF/GBDT)普遍略优于单树与线性,但不显著;NB 因特征强相关违背「条件独立」假设而最差。
③ 结论:财务因子对「未来是否中选/盈利」预测力有限(AUC 接近 0.5),建议:增加高频/情绪/资金流等增量因子、做行业中性化、用更长时间窗口、或对模型做 stacking 集成。当前工作台已具备完整的「诊断—建模—对比」能力,可作为因子有效性初筛工具。图表已导出为外部 PNG 文件,位于 analysis_assets/ 目录。