01学完这一课,你能做到什么
学完这一课,你应该能:
- 按训练、预测、评估的顺序组织一次截面预测实验;
- 区分稳健 Z-score、MAD 缩尾和普通标准化;
- 检查数据范围、缺失、预热窗口和标签成熟时间;
- 解释为什么 50 只股票上的 XGBoost 不能直接证明胜过 300 只股票上的复杂模型;
- 用统一条件判断一组模型对比是否公平,并把 和交易结果分开看。
本课的核心不是追一个漂亮结果,而是知道结果在什么条件下才可以比较。
- 1数据检查股票、日期、因子、缺失
- 2稳健处理只用允许的信息拟合
- 3滚动训练按时间向前推进
- 4截面评估IC、Rank IC、稳定性
- 5交易核对成本、流动性、执行
一句话记住比较模型前,先比较实验条件。
02三组实验分别回答什么
可以把案例拆成三组不同问题:
- 用 10 只股票和 52 个检查数据分布、缺失与预处理;
- 用公开数据流程计算每天的截面预测指标;
- 用自选 50 只股票和 52 个因子训练简化的 XGBoost,预测未来 5 日相对收益。
三组实验的股票池、日期、特征和模型不同,所以它们是方法练习,不是同一场比赛。数据集是输入材料,模型参数是训练后的结果,预测结果是模型对指定样本的输出,三者不能混成一个文件或一个结论。
标准顺序是:先确定输入特征 X 和未来标签 Y;再用训练集拟合处理器和模型;参数固定后预测未见数据;最后将预测和已经实现的标签比较。训练结束前不能偷看测试期标签。
输入材料
包含特征、标签和分割信息。
学习后的结果
参数和输出都要绑定样本、时间与版本。
一句话记住数据、模型参数、预测输出是三种东西。
03稳健标准化:先处理极端值,再统一尺度
普通 Z-score 以均值为中心、标准差为尺度。遇到极端值时,均值和标准差可能被拉动。稳健 Z-score 改用中位数和 MAD(中位数绝对偏差,表示数据离中位数有多远)来降低极端值的影响。
MAD = median(|xᵢ − m|)
其中 m 是中位数。稳健尺度常写为:
s = 1.4826 × MAD
稳健分数是:
zᵢ = (xᵢ − m) ÷ s
假设某个值减中位数后为 30,MAD=15,则稳健尺度为 1.4826×15=22.239,稳健分数约为 30÷22.239≈1.35。实际例子若缺少完整数组,不能只凭一个数字复算全部过程。
如果按规则把分数截到 [-3,3],某点原分数为 6.63,处理后就是 3。截断会把更大的极端值合并,可能改变树模型的切分,所以也要记录截断数量。MAD 或标准差为 0 时,要提前定义回退策略。
均值和标准差
适合分布较稳定的情况,极端值可能影响中心和尺度。
中位数和 MAD
对极端值更不敏感,但不保证均值变成 0。
zᵢ = (xᵢ − median) ÷ (1.4826 × MAD)
之后是否截到 [-3,3],必须写进处理规则。
一句话记住标准化先写清中心、尺度和截断。
04先验证十只股票的数据
打开数据后,先打印日期范围、股票代码、重复行、每只股票的记录数、因子列数和缺失比例。再看处理前后的分位数、最小值、最大值、中位数、均值、标准差和截断数量。
52 个指标可能包含较长预热窗口。例如 60 日指标在样本开始阶段没有足够历史,不能强行填成有效值。随机抽几个日期手算或位置,用来检查程序是不是读错列或错位。
如果模型报“数据不连续”,先定位具体股票和日期,再区分正常休市、停牌、采集遗漏与索引错误。不要把所有日期强行补齐;补值规则本身也会影响模型。
- 1结构日期、股票、重复行
- 2因子52 列与预热窗口
- 3缺失正常休市还是采集问题
- 4手算抽查动量、布林带位置
- 5处理前后对比分位数与截断数量
一句话记住先定位缺失原因,不要一律补齐。
05数据包和模型权重:加载前先确认类型
一组目录里可能有 CSI300 和 CSI800 的训练、验证、测试文件,合计约 2GB。文件名或说明如果把它们称作“权重”,也不能直接相信。
加载前要检查每个文件的对象类型和内容:它可能是数据集、处理器统计量,或真正的模型检查点。六个数据分割文件不自动等于已经训练好的模型。如果确实有权重,还要核对网络结构、特征顺序、训练区间和所需预处理。
路径要遵守项目配置,不要把文件随意放在根目录后假设程序能找到。序列化文件来源和完整性必须记录;不要从不可信来源直接反序列化 PKL。
一句话记住文件后缀和名称不能证明文件内容。
06每天计算截面 IC 和 Rank IC
对交易日 t 的每只可评估股票生成预测,再取得对应的未来 5 日标签,才能计算当天的截面相关。
Pearson IC 衡量预测数值和真实收益的线性相关;Spearman Rank IC 衡量预测排序和真实排序的相关。两者回答不同问题,程序变量名也要分开。
不能把所有日期和所有股票混在一起算一个相关,就称它为截面指标。应按交易日分别聚合,再报告 IC 均值、标准差、、有效股票数和缺失日期。某次运行得到约 0.06、经验观察线约 0.05,只能作为该次配置下的结果;没有随机种子、原表和多次运行,就不能宣称稳定复现。
数值相关
预测分数和真实收益的线性关系。
排序相关
预测排名和真实排名的关系。
一句话记住IC 是预测评价,不是账户收益。
哪一组模型对比是公平的
比较股票池、日期、标签、预处理和样本外划分,判断实验结论能否直接对照。
请判断这组模型对比是否公平,并说明哪些实验条件必须统一。
同一股票池的基线与 XGBoost
两套模型都使用同一批股票、同一段训练与样本外日期、同一个未来 5 日标签和同一套缺失处理。A 是线性基线,B 是 XGBoost,按交易日分别计算 IC 和 Rank IC。
07用 50 只股票建立滚动 XGBoost
简化实验可以用 2023—2025 年、50 只跨行业股票、52 个因子和 120 个交易日滚动训练窗口,预测随后 5 日的收益或截面标准化标签。目标究竟用 Z-score 还是百分位,必须先固定,不能一会儿换一种。
如果每只股票约有 722 根日 K,未扣预热和缺失时,股票—日期行数约为:
样本行数 = 股票数 × 日期数 = 50 × 722 = 36,100 行
这表示约 36,100 个股票—日期样本,不是只有 50 个训练样本。实际有效行数要在过滤后打印。
滚动训练时,训练窗口末尾必须排除尚未成熟的未来 5 日标签。每次保存训练起止、有效股票池、处理器、模型、预测日期和测试标签。股票池如果用今天的代表公司倒推三年前,还会有或选择偏差。
20 日动量、布林带位置、RSI 与布林带交互、RSI14、多头排列和 差值等可以作为观察对象,但它们在一个样本里重要,不等于在所有市场都是最佳因子。单因子 IC 和模型重要性也要分开报告。
- 1过去 120 日训练窗口
- 2拟合处理器与模型只用训练信息
- 3向前预测固定参数
- 4等待标签成熟未来 5 日走完
- 5按日期评估IC 与 Rank IC
一句话记住滚动窗口要等未来标签成熟。
08怎样才算公平的模型对比
公平比较至少要统一:股票池、日期范围、预测标签、数据处理信息范围、划分、评估指标和缺失处理。还要记录计算成本、训练时间、内存、和。
50 只股票的 XGBoost 和 300 只股票的复杂模型,如果股票池、时间、标签或预处理不同,就不能直接排成能力排行榜。较高 IC 可能来自更集中的股票池、不同的数据质量、标签定义或偶然性。小股票池不一定更容易预测,只是条件变了。
树模型能自动学习一部分条件交互,但人工特征工程仍可能把有用结构明确表达出来;神经网络端到端学习,也不代表数据设计可以省略。复杂模型如果没有可重复增量,保留简单方案很合理;有增量也要确认它覆盖工程和交易成本。
预测 IC 高不等于账户净收益高。还要考虑真实最小价位单位、敏感性、成交量、参与率、拆单、T+1、、停牌和未成交。先把一个可复查的工具跑稳,再增加模型复杂度。
股票池与日期
两边使用同样的股票范围和时间切分。
标签与处理
预测期限、标准化和缺失规则一致。
指标与成本
同一评估口径,并把交易成本单独核对。
一句话记住条件不一致,结果就不能直接排高低。
4 道小题
全部答对,这一课就算真正读懂了。答错了会告诉你为什么。
这一课,浓缩成一张卡
学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。
先核对股票池、日期、标签、预处理、样本外划分和评估指标是否一致。
- 标签口径要统一
- 按日期算 IC
- 预测不等于收益
记住这 5 句话
- 01数据、模型参数和预测输出要分开;训练、预测、评估按时间顺序执行。
- 02稳健 Z-score 用中位数和 MAD,是否截断以及零尺度回退都要预先定义。
- 03IC 与 Rank IC 应按交易日计算和聚合,IC 高不等于账户净收益高。
- 0450 只股票上的 XGBoost 与 300 只股票上的复杂模型,条件不同就不能直接比较。
- 05公平比较要统一股票池、日期、标签、预处理、样本外划分和指标,再核对成本与执行。
完成这一课
读完讲义、动手做一次实验、答对小题,这一课就算学完了。
- 读完讲义
- 完成一次公平模型对比判断
- 通过随堂自测
实验数据AI+金融投资训练营教学样本。固定教学样本
固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。