样本加权:让"新市场"与"重要状态"说话更响
我的掌握程度:
先掌握这个答案
两类:①时间衰减(HAL Life):样本按新旧指数降权(半衰期如250天)——市场结构漂移时「老经验」打折;代价:有效样本进一步减少(老样本≈半聋)。②状态加权:给「目标状态」样本加权重——例如策略将运行在高波动环境→给高波动时段样本×2;或平衡样本(牛熊天数不等→拉平)。与既有工具配合:重叠修正权重(q-711的unique weighting)×时间权重×状态权重=相乘。加权过头症状:验证分数对权重参数极度敏感、模型对近期过拟合(半衰期太短=丢弃历史规律)、样本量有效值暴跌(把3年数据加权成半年)。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
本阶段实战方法 · 把验证流程当作模型的一部分
训练选股模型或使用另类数据时,先保证训练过程没有接触预测时不可得的信息。
- 定义每个样本的特征可得时间和标签覆盖区间,再按预测场景设计时间切分。
- 归一化、缺失填充、特征选择和调参只在训练集拟合;重叠标签要按实际区间purge。
- 用朴素基线和多段滚动样本外比较,报告成本、稳定性、漂移与全部实验次数。
使用边界
- 排行榜或验证集反复用于挑模型后也会过拟合;留一份最终测试集。
- 随机切分不是所有问题都禁止,但金融未来预测必须尊重时点和标签重叠,说明验证目标。
背景 · 从一个困惑说起
默认训练里,2020年的样本与2024年的样本权重相同——但市场已经换了两茬性格。样本加权是给时间轴和状态轴重新分配话语权的工具:谁更代表未来,谁的声音更响。
由此产生的问题
两类加权(时间衰减/状态加权)的动机与做法?权重与purge/标签修正怎么配合?加权过头的症状?
核心概念
两类:①时间衰减(HAL Life):样本按新旧指数降权(半衰期如250天)——市场结构漂移时「老经验」打折;代价:有效样本进一步减少(老样本≈半聋)。②状态加权:给「目标状态」样本加权重——例如策略将运行在高波动环境→给高波动时段样本×2;或平衡样本(牛熊天数不等→拉平)。与既有工具配合:重叠修正权重(q-711的unique weighting)×时间权重×状态权重=相乘。加权过头症状:验证分数对权重参数极度敏感、模型对近期过拟合(半衰期太短=丢弃历史规律)、样本量有效值暴跌(把3年数据加权成半年)。
为什么需要它
①非平稳性的第一响应:金融ML三大差异之一(q-701)有了具体的工程解——不换模型,先换权重;②「为部署环境训练」的意识:模型上线时的市场状态决定训练分布的侧重——这是ML版的「研究服务实盘」;③组合拳完整度:CV用Purged、显著性按有效样本、样本再加权——三件套是金融ML处理时间结构的完整答案。
实际应用场景
起步配置:时间半衰期500天(温和)+高波动状态×1.5(若策略面向绝对收益);权重归一化后输入LightGBM的sample_weight参数。
与之前知识的联系
q-711(有效样本)的延伸应用;q-701(非平稳)的工程响应;q-771(滚动重训)是另一条治漂移的路——重训与加权常组合(月度重训+长半衰期)。
⚠ 常见误解
- 半衰期越短越跟上市场:短半衰期=扔掉统计基础——波动大时模型变成「最近一个月的复读机」;500-1000天是稳妥起点
- 加权能救一个失效的信号:权重改变的是「学多少」,救不了「没信号」——先验证信号存在再谈权重设计
- 状态加权是偷看未来:用「当前状态」加权训练历史≠泄漏(部署环境的先验);但用「未来状态演变」加权才是作弊——边界要写清
🛠 本题实践任务
为你的模型加时间权重(试半衰期10000/750/250三档),用Purged CV比较——找你的U型谷底。回答:你的数据里「历史规律」与「近期漂移」哪个更重要?
💡 提示(先自己想5分钟再看)
三档对比即够(精细扫半衰期=新的过拟合维度);谷底半衰期写进配置与PROTOCOL。
✅ 验收标准
三档对照+你的半衰期选择与理由。时间结构的处理三件套(purge/重训/加权)你已集齐。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(标签重叠、市场状态概念),再用案例、公式和代码帮助理解。此功能需要先启用服务。