历史上最好的参数,换一段行情还可靠吗?

前进式验证与分阶段考核

约 15 分钟1 个动手实验4 道小题

学完你能说清楚用时间向前推进的训练与测试,检查策略能否走出样本。

01学完这一课,你能做到什么

假设你用 2025 年全年数据挑出一组参数,结果非常漂亮。问题是:这组参数只是记住了这一段数据,还是在下一段行情里也有用?

学完这一课,你应该能:

  1. 区分回测、调参和验证;
  2. 用 IS(样本内)和 OOS()设计;
  3. 计算并解释样本内外的夏普和表现退化;
  4. 保存每轮窗口、参数、成本和异常,避免把测试数据再次用于开发;
  5. 把验证结果接到模拟、小规模试用、主力和暂停规则中;
  6. 检查数据、执行、参数、行情环境与部署条件。

回测是在历史数据上模拟策略,调参是在候选参数中选择,验证是在没有参与选择的数据上检查选择结果。三者全部使用同一段数据,容易把偶然适配当成可复制规律。

一句话记住选参数和验参数,必须用不同的数据。

02为什么全年最优参数还不够

双均线可以有很多候选周期,例如 5/20、10/60、5/30。假设你用 2025 年的全部数据挑出最好的一组,再用同一年报告“表现很好”,这个结果主要说明参数适合这段已被查看的数据,还没有检验它对未来的适应性。

这就像背熟一套试题的答案。换一套题,成绩可能下降。市场结构变化、数据量不足、噪声和遗漏成本都可能导致样本外表现下降。看到下降时,要检查多个原因,不能只凭一次结果断定唯一原因。

就是参数过度贴合已有样本,像记住题目而不是掌握解题方法。降低它的第一步,是在选择参数和检验参数时隔开时间。

两种结果的含义

同一段数据内表现好

说明参数在被查看的数据上有效,可能包含择优偏差。

后续未见数据也稳定

才更接近对未知数据的检验,但仍有样本误差。

一句话记住样本内漂亮,不等于样本外可复制。

03让训练窗和测试窗向前滚动

IS 是 in-sample,指用于选择参数的训练区间;OOS 是 out-of-sample,指没有参与这次选择的后续测试区间。Walk-forward(前进式验证)每轮都按时间向前推进,只使用当时已经可获得的数据。

每轮固定做四步:

  1. 取截至当前时点可用的历史数据;
  2. 在训练窗里比较候选参数,按预先写好的规则选出参数;
  3. 冻结参数,在紧接着的测试窗运行;
  4. 保存这段 OOS 结果,向前移动,再重新训练。

可以用“前三个月训练、后三个月测试、再向前挪两个月”理解滚动窗口,但测试月份可能重叠。重叠结果不能把同一个月份的收益重复拼接。更简单的教学方案是让测试期长度等于步长,或者提前规定每个日期只采用哪一轮预测。

假设有约 800 个交易日,训练窗 120 日,测试窗 60 日,步长也是 60 日:

  • 第 1—120 个交易日训练,第 121—180 个交易日测试;
  • 第 61—180 个交易日训练,第 181—240 个交易日测试;
  • 继续向前移动。

这里的“日”是交易日。800 个交易日大致跨越数年,但实际日历跨度取决于数据覆盖。

滚动窗口保持训练长度固定,更强调近期环境;扩展窗口则不断累计旧数据,保留更多历史。两种方案对应不同假设,应该在比较结果前确定,不能因为哪一个结果更漂亮就来回切换。

一轮前进式验证
  1. 1训练窗 IS选择参数
  2. 2冻结参数不再查看测试结果
  3. 3测试窗 OOS运行后续数据
  4. 4记录结果再向前移动

一句话记住先训练、再冻结、后测试,再向前移动。

动手试试

前进式验证实验

调整训练窗和测试窗,比较固定分段和滚动前进两种方式下,样本内和样本外的表现差距。

WALK-FORWARD LAB

前进式验证:训练一次,再去看未知数据

先在训练窗里挑出表现最好的 N,再冻结它到紧接着的测试窗。数据只用于教学,不代表真实行情。

教学样本(模拟数据) · 约 3 年日收益 · 无风险收益率设为 0
训练窗长度
测试窗长度
推进方式
规则:过去 N 天收益之和为正才持有,N 从 5 / 10 / 20 / 40 / 60 日中选择;每轮只用训练窗挑参数,不偷看测试窗。
时间轴

每一轮的训练窗与测试窗

10 轮
训练窗 IS测试窗 OOS
表现对比

每轮夏普:样本内 vs 样本外

无风险收益 = 0
IS 夏普OOS 夏普
样本内平均夏普+2.37训练窗择优后的平均
样本外平均夏普+1.05冻结参数后的下一段
表现差距−55.5%按平均夏普计算

这组设置下,样本外平均夏普比样本内低 55.5%。这提醒你:训练窗里的漂亮成绩,不能直接当成未来表现。

完成条件

调整至少一次窗口长度,并把两种推进方式都看过,再完成本实验。

04读懂样本内外的指标

可以用来比较风险调整后的表现。对固定频率收益,先算每期,也就是策略收益减去同频率无风险收益;再用平均超额收益除以它的标准差。需要年化时,要在合适的假设下乘以每年期数的平方根。

假设教学中把无风险收益设为 0,某段收益的平均值是 0.02,标准差是 0.04:

夏普 = 平均超额收益 ÷ 标准差

0.02 ÷ 0.04 = 0.5。

不同频率、年化方法和下的夏普不能直接比较。标准差为 0 时,这个比值也没有通常的解释。不要把整段累计收益减去年利率后,直接除以任意频率的波动。

IS 夏普是参数选择期表现,通常会因择优而偏乐观;OOS 夏普是冻结参数后的后续表现,更接近未知数据检验,但仍有样本误差。

假设 IS 夏普约 1.5,OOS 夏普约 0.34。表现退化量可以写成:

退化比例 = (IS − OOS) ÷ IS

(1.5−0.34)÷1.5 = 1.16÷1.5 ≈ 77.3%。

这里的 77.3% 是一种表现退化量,不是“过拟合概率 77.3%”。如果分母为 0、为负数或非常接近 0,比例会失真,应改看指标本身和各窗口分布。OOS/IS 也只有在分母为正且不接近 0 时,才适合作为辅助观察。

可以看到低于 30%、30%—70%、高于 70%三档,也有人把 50%作为预警。它们是不同的门槛设想,工具必须选定一套配置并写明依据。低于 30%不等于安全上线,高于 70%也不能只凭一个数字自动淘汰策略。

示例:样本内外夏普
IS1.50
OOS0.34

数值来自教学示例,需结合窗口数量、成本和分布解读。

一句话记住退化比例描述表现变化,不是过拟合概率。

05保存一份真正可检查的验证记录

每一轮至少保存:训练起止、测试起止、候选参数集合、选择指标、最终参数、训练结果、测试结果、交易次数、成本、和异常。尝试过多少套策略、多少次参数搜索也要记录,不能只留下成功实验。

双均线、和 反转都可以放进不同标的和窗口里比较。某个组合在某段数据里较稳定,只说明那段观察结果,不能推广为某只股票永远适合该策略。

检查时按这个顺序:

  1. 数据:有没有未来信息、变化、错误价格、缺失值和存续偏差?
  2. 执行:信号何时可知,用哪个时点成交,是否考虑成本、和成交限制?
  3. 参数:是不是只有一个极窄参数点特别好,附近参数是否也一致?
  4. 环境:测试期在趋势、波动和上是否与训练期差异很大?
  5. 规则:最后才考虑简化规则、减少参数或更换策略假设。

如果你看了 OOS 结果后又修改规则,这段数据就参与了开发,不能继续称为完全未见测试。应保留后续样本或新的前进窗口。需要较长标签持有期的模型,还要检查标签是否跨入测试区间,必要时增加隔离区。

可以每周给五个示例策略做一次体检,但评估频率和调参频率要分开。每周检查,不等于每周追着最优参数重配。交易次数少时,短期夏普可能很不稳定,测试时长要结合持有周期和样本数量。

一句话记住记录所有尝试,别只留下成功结果。

06验证之后还要模拟与分阶段执行

一个更完整的顺序是:前进式验证 → 不同行情阶段的回测检查 → paper trading(纸上交易或模拟运行)→ 小规模试用。有人用“每关淘汰 80%”来强调筛选严格,但没有统计来源,不能把它当成真实淘汰率。

模拟要检查在线数据、调度、延迟、滑点假设、信号生成和账户记录是否能协同工作。模拟盈利不保证实盘盈利。本地软件的撮合规则也要和真实市场差异分开记录。

可以把策略生命周期分成五阶段。下面都是教学示例,不是资金配置建议:

  • 孵化:提出逻辑,完成历史回测和前进式验证;补查数据可得性、成本、基线和样本外设计。
  • 模拟:累计约 20 个交易日,收益为正,最大回撤低于 5%;还要看交易次数、运行稳定性、成交假设和行情覆盖。
  • 小规模试用:示例权重 5%,约 20 日夏普高于 0.5;还要看实际成本、偏离、账户风险和短样本不确定性。
  • 主力:示例权重约 30%,持续监测;还要检查与其他策略的相关性、容量和总。
  • 暂停或退役:连续 14 日夏普低于 0.3,或最大回撤超过 20%;要预先写明观察窗口、撤单、复核和恢复处理。

另一个教学例子用 10 万元本金、试用 1 万元、主力 3—5 万元说明比例没有统一标准。不要把 5%、1 万元和 30%—50%拼成一套确定建议。更多资金可能带来冲击和容量风险,不代表风险必然下降。

如果收益和回撤达标但天数不足,仍然停在原阶段。还要区分交易笔数和交易日,不能让系统自行猜。机构通常采用多维考核;只有一至三个策略的个人项目,用一张规则表和日志就能起步。系统可给升级或降级建议,但应由责任人复核。自动化执行也要预先定义权限和例外处理。

从验证到执行
  1. 1前进式验证未见窗口
  2. 2阶段回测不同市场环境
  3. 3模拟检查在线链路
  4. 4小规模试用验证真实偏离
  5. 5主力或暂停按规则复核

一句话记住阶段升级靠证据,暂停也要提前写规则。

07把验证要求落实到数据、平台和系统

研究代码能在 macOS 运行,不等于本地券商交易组件也支持 macOS。MiniQMT 等组件可能存在平台限制。应逐模块测试行情读取、信号计算、网页界面、模拟和券商连接,不要笼统承诺全平台运行。数据供应商的套餐、权限、积分、接口和券商准入也会变化,不能把某个时点的积分数量写成长期保证。向券商核实时,要逐项问清行情、历史数据、Python 接口、交易权限、账户类型和运行环境。

实盘页面可以按“选择标的 → 绑定策略 → 监测信号 → 展示依据 → 按授权处理订单”设计。管理如果还没实现,应单独标为缺口。研究报告、晨会和板块轮动是辅助研究模块,不等同于自动下单。

前复权会让当前价格与历史序列更便于连续比较,但也会改变历史价格的表示。回测必须写明复权口径、公司行为处理、信号序列和实际成交价格的映射。绝对价位阈值、分红现金和股数变化尤其要检查。

周期选股与单标的入出场不是同一件事。应该在每个历史调仓日,使用当时可见的股票池和形成排名,再设权重、调仓频率、成交约束和费用,逐期计算组合收益。不能拿今天选出的股票直接回看历史。

板块分析中的涨幅一阶变化、二阶变化,必须先定义差分步长和平滑方式。离散涨幅变化不能不加说明就称为无条件可用的数学导数。

一个选股 Skill 可以封装低 、低 、较低负债、较高流动比率等规则,但要先写清指标口径和阈值。几个筛选条件不能完整代表任何投资人的全部方法。向模型提供 、板块、新闻、财务和估值数据时,应要求它列出条件情景;模型不能给出确定无误的未来买卖价格,结论要能追溯输入并接受后续检验。

测试要用场景定义验收:指定数据和参数的布林带回测能否复现;研究问题是否返回来源和缺口;网络超时是否正确报错。接口测试不能只看 HTTP 成功,还要检查字段和数据口径。Gradio 适合快速搭建,Vue、React 也可以选择,先跑通小项目再扩展。先在满足交易组件要求的本地环境验证,再讨论服务器;云服务器不会自动解决权限、登录、稳定性和安全问题,也不等于全天无故障。

一句话记住能运行不等于能交易,先逐模块验收。

08动手任务:提交三份可复核成果

持续学习时,把精力从不断追新框架转向行业和企业研究。GPU、CPU、存储、HBM、光模块只是观察产业链时的例子;还要从产品、客户、供需、资本支出、盈利和估值逐项建立认识。可以用公开财报、公告和研报练习信息差、逻辑差和预期差,先维护少量观察标的与模拟研究记录,不把热门板块标签当成低风险保证。

先跑通一个小项目,再逐步修改和扩展。最终提交三份成果:

  1. 一份交割单归因报告,写清数据口径和缺口;
  2. 一份前进式验证表,列出多个时间窗口、冻结参数和各段 OOS 结果,检查是否重复计算;
  3. 一张策略生命周期规则表,写清当前阶段、升降条件、观察时长、资金上限、触发处理和复核人。

验收时回答三个问题:参数是什么时候选出的?OOS 有没有参与过开发?失效时怎样发现和处理?还要标注哪些能力只有设计和模拟,哪些已有真实运行证据。单次历史收益漂亮,不如一套可追溯的工作流程。

一句话记住参数、OOS 和生命周期,都要留下证据。

检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01前进式验证中,哪一步最符合规则?
02教学中无风险收益设为 0,平均收益 0.02、标准差 0.04,夏普是多少?
03IS 夏普 1.5、OOS 夏普 0.34,退化比例约是多少?
04看过 OOS 结果后修改策略,原来的 OOS 还能叫完全未见测试吗?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · 前进式验证与分阶段考核前进式验证最重要的原则是什么?

每轮只用当时可见数据选参,冻结后测试后续窗口,并保存完整记录。

  • IS 选参,OOS 验证
  • 退化不是概率
  • 看过 OOS 就要换测试集
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01回测、调参和验证分工不同;全年最优参数只说明适配已查看数据,不能直接代表未来可复制。
  2. 02Walk-forward 在每轮训练窗选参数、冻结后测试,再向前移动;要避免重叠 OOS 被重复计数。
  3. 03夏普要统一频率、无风险收益、年化和成本口径;IS 1.5、OOS 0.34对应约 77.3%的表现退化,不是过拟合概率。
  4. 04验证记录要保存窗口、参数、结果、交易次数、成本、回撤、异常和所有尝试,并分开评估与调参。
  5. 05验证后还要经过模拟、分阶段试用和人工复核;数据、执行、平台和部署条件都要逐项验收。
完成这一课

完成这一课

读完讲义、动手做一次实验、答对小题,这一课就算学完了。

  • 读完讲义
  • 完成一次前进式验证
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定种子生成的模拟收益序列,用于演示样本内外差异。

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。