01学完这一课,你能做到什么
学完这一课,你应该能:
- 用决策树和提升树表达“满足多个条件才成立”的选股关系;
- 按时间顺序设计训练、验证、测试和滚动重训;
- 区分准确率、AUC 和最终组合收益;
- 设计下一日收益、未来多日收益、和截面排名标签;
- 检查调参、特征重要性、监控和交易约束。
本课的核心顺序是:先定义任务,再检查时间和标签,最后才选择模型。
- 1任务预测什么
- 2时间何时能知道
- 3标签如何定义
- 4模型怎样学习
- 5组合能否交易
02树模型:把条件组合起来
决策树像一串有条件的判断:先看 是否小于 15,再看 是否大于 0,另一条路径可能改看 。它能表达“只有在这种条件下才成立”的组合关系。这里的阈值只是结构示意,不是已经验证的交易规则。
树的分叉不是抛硬币,而是算法根据损失和数据寻找划分。XGBoost、LightGBM 是梯度提升树框架,会组合多棵树做分类或回归。它们能学习关系,但仍会,也不会自动理解新事件。
更新频率、训练样本、模型版本和上线后的监控,都要提前写进流程。
一句话记住树模型会学条件组合,不会自动消除过拟合。
03梯度与学习率:模型怎样一步步改错
把损失想成山地高度。梯度给出局部最陡的上升方向,优化通常沿负梯度移动;学习率决定每一步走多远。步子太大可能不稳定,太小则训练很慢。
提升树会让后面的树利用损失信息修正当前预测。不要把每个树节点都想成线性模型权重,也不要从比喻推断某个算法一定会自动调整步长。初学者先检查输入、损失、迭代次数和验证结果。
一句话记住学习率控制步长,不能替代时间一致的验证。
04先把下一日涨跌写成可检查的任务
可以先定义:明日收盘价高于今日收盘价记为 1,否则记为 0。平盘归入 0 是这个任务的一部分;如果单独设平盘类别,就已经换了任务。
输入可以包含技术、基本面特征和申万二级行业。行业分类要固定版本:一级可能太粗,三级可能样本不足,不能混用。
一种时间一致的起点是:用过去 120 个交易日训练,预测下一日,并向前滚动;每 20 个交易日重训一次,其余日期沿用上次模型。重训时要保存训练窗口、模型版本和逐日预测。若标签是未来多日收益,窗口末端还要留出标签成熟时间。
股票涨跌可能不平衡,要打印类别数量并和简单基准比较。类别权重只是改变损失贡献,重采样才会改变抽样频率,二者不能混为一谈。
- 1历史窗口120 日
- 2训练标签已成熟
- 3预测下一日
- 4记录模型与结果
- 5重训每 20 日
训练集和测试集会泄漏未来吗
逐张检查机器学习选股中的数据划分、标签成熟时间和调参边界。
下面的训练集、验证集和测试集划分,哪一种使用了未来数据或破坏了时间顺序?
过去 120 日训练,预测下一日
每次预测日 t 时,只用 t 之前已经完成且标签已经成熟的 120 个交易日训练;模型每 20 个交易日重训一次,其余日期沿用上次模型。
05准确率和 AUC:先看模型回答了什么
准确率是预测类别正确的比例,会受到分类阈值和类别比例影响。AUC 看模型把正样本排在负样本前面的能力,不依赖某一个阈值;随机排序的参考值是 0.5,但有限样本会波动。
比如某只股票的测试 AUC 约为 0.487,接近没有有效排序信息。这个结果可以如实保留,不能为了得到赚钱结论就删除失败样本。AUC 低于 0.5 也不能看完测试结果后直接反向交易并把它称为策略。
训练损失很好、验证损失明显更差,提示过拟合或分布变化;两者都差,则要检查任务、数据和模型容量。还应在更晚的 OOT 区间检查稳定性。最终组合收益还受收益幅度、持有方式、费用和交易约束影响,不能由 AUC 单独推出。
准确率 / AUC
检查分类和排序能力。
净收益 / 回撤
还要加入持有、成本和交易规则。
一句话记住AUC 好不等于组合一定赚钱。
06比较 XGBoost 和 LightGBM:同条件实测
比较两个模型时,固定相同特征、标签、时间区间和评估口径。不要把“更快”或“更省内存”的经验数字当成所有环境都成立的规格,应该在自己的数据和版本上测量。
特征重要性只能说明模型使用了哪些输入,不能证明因果。可以把单因子检验、模型重要性和去掉一组特征后的对照实验放在一起看。
LSTM 和 Transformer 也能研究序列与注意力,但不保证优于树模型。因子少仍可能过拟合,因子多也不等于更强。个人研究可以先用少量因子和简单模型,机构研究再按数据、算力和验证结果投入。
一句话记住模型比较要固定条件,速度经验要本地实测。
07有限调参:把搜索边界提前写好
可以为迭代轮数、学习率和叶子数设定有限候选,例如 200/300 轮、0.05/0.02、31/21;也可以用 Optuna 做约 50 次搜索。数字是实验起点,不是固定答案。
正确流程是:先固定训练、验证和最终测试区间,再固定搜索空间和预算;训练后只用验证指标选配置,最后用事先保留的测试集做一次最终评估。时间序列交叉验证应按先后顺序,标签或窗口可能重叠时要留 gap。
搜索越多,越容易偶然迎合验证集。数据质量、标签和泄漏检查,通常比一开始大规模调参更重要。
- 1训练集拟合模型
- 2验证集选配置
- 3冻结不再改规则
- 4测试集最后一次评估
一句话记住测试集只在配置冻结后使用。
08重新设计标签,可能比换模型更重要
可以预测未来 5 日或 20 日收益,也可以预测相对沪深 300、中证 500 等基准的超额收益。还可以按某个日期的未来收益排名,把前 30% 标为正类、后 30% 标为负类,中间 40% 暂不用于二分类。
“未来一个月是否曾达到当前价上方 10%”和“未来一个月期末收盘收益”不是同一个标签;触及过目标也不等于实际能成交。更长期限会减少样本,也可能遇到结构变化,不天然更可靠。
风险调整目标可以结合收益和波动;信息比率目标关注超额收益相对跟踪误差。熊市里跑赢基准仍可能绝对亏损,所以目标名称不能替代结果解释。
收益
预测未来窗口涨跌或收益。
相对
预测相对基准的超额表现。
排名
预测截面中哪些股票更靠前。
09多目标融合:先统一尺度,再谈权重
收益模型偏好上涨幅度,风险调整模型偏好更平稳的路径,信息比率模型关注相对基准表现。它们的原始单位不同,不能把百分比和比率直接平均。
一种做法是先把每个目标变成同一截面的排名分数,再按预设权重融合。假设三项排名分数是 0.6、0.9、0.85,等权均值为 (0.6 + 0.9 + 0.85) ÷ 3 ≈ 0.783。若按综合得分取前 10%,还要验证、集中度和成本。
多个模型可能使用同一批数据并犯相同的错,不会自动产生分散。要分别报告单模型、融合模型和简单基准。
综合分数 = (0.6 + 0.9 + 0.85) ÷ 3 ≈ 0.783
这里只是等权示意,实际权重要在实验前定义。
一句话记住不同单位的目标不能直接平均。
10上线后:监控输入、预测和标签成熟结果
上线后要监控输入分布、缺失比例、预测分布、类别校准,以及标签成熟后的准确率和 AUC。PSI、KS 都可以作为监控方向,但不能只看一个阈值就宣布模型安全。
出现退化时,先区分数据异常、行情变化和流程故障,再决定重训、降级或停用。新闻和政策事件可以作为因子,但必须记录时间戳、来源和处理延迟,不能让语言模型凭空生成价格因果。
树模型通常可以先在本机 CPU 上运行。是否使用云、GPU、CUDA 或低延迟 C++/FPGA 系统,应由实测耗时、内存和业务延迟决定,不要把个人配置当成当前报价或最低要求。
一句话记住监控先找退化原因,再决定是否重训。
11动手任务:把一次选股实验做成可审阅记录
先对自选股票做单因子检验,再用同一时间拆分比较逻辑回归、XGBoost 和 LightGBM。可以从 120 日窗口、20 日重训开始,保存失败日期和无效结果。
然后只改变一种标签,例如把下一日涨跌改成未来 20 日收益,记录任务变化。交付物至少包括:数据字典、标签公式、滚动窗口、分类基准、逐日预测、AUC、准确率、概率检查和扣成本后的组合结果。
调参记录要写搜索次数、空间和验证集;最终测试不能反复拿来挑参数。若没有完整代码、数据和权重,只能交付“新实现与简化实验”的差异清单,不能把未运行的收益填写进去。
一句话记住实验记录要能回答数据何时可用、结果如何得到。
4 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
先检查标签、时间切分和数据是否在决策时可用,再比较模型和收益。
- 训练不能看未来
- AUC不等于收益
- 测试集最后使用
记住这 5 句话
- 01先定义预测任务和标签,再按时间切分训练、验证与测试。
- 02标签必须在训练时已经成熟,未来多日标签要留出间隔。
- 03准确率和 AUC 是模型指标,组合收益还要加入持有、成本和交易约束。
- 04有限调参要冻结测试集;搜索越多,越要警惕迎合验证集。
- 05目标设计、数据质量和监控,往往比盲目更换复杂模型更重要。
完成这一课
读完讲义、动手做一次实验、答对小题,这一课就算学完了。
- 读完讲义
- 完成一轮时间划分判断
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定教学样本
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。