多阶段回测验证框架——在提交昂贵的完整周期回测前,使用短期窗口(冒烟/压力/中等/完整)快速筛选,节省...
渐进验证器 : 停止在从开始就注定要进行的反向测试上浪费3小时
功能概述
渐进验证器 : 停止在从开始就注定要进行的反向测试上浪费3小时是一项面向实际任务的技能,主要用于这种技能执行一个多阶段验证管道, 15分钟内消除不良策略。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
渐进式验证器(Progressive Validator)
停止在注定失败的回测上浪费 3 小时。本技能实现了一个多阶段验证流水线,可在 15 分钟内淘汰无效策略,而非耗时 3 小时。
适用场景
- “验证该策略”
- “运行渐进式测试流水线”
- “该策略是否值得执行完整回测?”
- 为新策略变体规划验证顺序时
验证流水线
15 分钟 30 分钟 1 小时 3 小时
+-----------+ +-----------+ +-----------+ +-----------+
| SMOKE | 通过 | STRESS | 通过 | MEDIUM | 通过 | FULL |
| 3 个月 |------>| 5 个月 |------>| 18 个月 |------>| 3 年 |
| 最大回撤 < 50% | | 最大回撤 < 45% | | 最大回撤 < 42% | | 最大回撤 < 40% |
+-----------+ +-----------+ +-----------+ +-----------+
| 失败 | 失败 | 失败 | 失败
v v v v
拒绝 拒绝 拒绝 拒绝
(损失 15 分钟) (损失 45 分钟) (损失 1.5 小时) (损失 3 小时以上)
无渐进式验证时:每个失败策略均耗费 3 小时。 启用渐进式验证后:绝大多数失败可在 15–45 分钟内捕获。
验证阶段
第一阶段:冒烟测试(Smoke Test)
- 时间范围:2024-01-01 至 2024-03-31(3 个月)
- 耗时:约 15–20 分钟
- 阈值:最大回撤 < 50%
- 目的:捕获编译错误、逻辑缺陷及灾难性结构问题
- 覆盖范围:2024 年第一季度(含主要科技股上涨行情)
第二阶段:压力测试(Stress Test)
- 时间范围:2024-02-01 至 2024-06-30(5 个月)
- 耗时:约 25–30 分钟
- 阈值:最大回撤 < 45%
- 目的:检验策略在最严峻市场环境下的生存能力
- 覆盖范围:2024 年上半年 —— 历史上对期权策略而言最严酷的“绞肉机”时期
第三阶段:中等测试(Medium)
- 时间范围:2024-01-01 至 2025-06-30(18 个月)
- 耗时:约 45–60 分钟
- 阈值:最大回撤 < 42%
- 目的:在牛市/熊市转换及季节性效应下验证策略稳健性
- 覆盖范围:完整 2024 年波动周期 + 2025 年初复苏阶段
第四阶段:全周期测试(Full Period)
- 时间范围:2023-01-01 至 2026-01-31(3 年)
- 耗时:约 2–3 小时
- 阈值:最大回撤 < 40%,夏普比率 ≥ 2.0,收益率 ≥ 300%
- 目的:最终准入测试 —— 与已验证有效的策略对标
- 覆盖范围:完整市场周期,包括 2023 年 AI 行情、2024 年回调、2025 年复苏
使用方法
配置时间窗口
在配置中定义验证窗口:
BACKTEST_WINDOWS = {
"smoke_test": {
"start": "2024-01-01",
"end": "2024-03-31",
"max_dd": 0.50,
"expected_time": "15-20 min",
"purpose": "Eliminate garbage fast",
},
"stress_test": {
"start": "2024-02-01",
"end": "2024-06-30",
"max_dd": 0.45,
"expected_time": "25-30 min",
"purpose": "Survive worst conditions",
},
"medium": {
"start": "2024-01-01",
"end": "2025-06-30",
"max_dd": 0.42,
"expected_time": "45-60 min",
"purpose": "Bull/bear transition stability",
},
"full": {
"start": "2023-01-01",
"end": "2026-01-31",
"max_dd": 0.40,
"expected_time": "2-3 hours",
"purpose": "Final benchmark acceptance",
},
}
逐阶段执行
前提条件:本技能协调各验证阶段;实际回测提交由 backtest-poller 技能(
cli.py)处理。请确保该技能已安装并位于系统 PATH 中,再运行以下命令。
# 第一阶段:冒烟测试(Smoke) # (调用 backtest-poller 技能的 cli.py) python3 ../backtest-poller/cli.py submit --main-file strategy.py --name "M31_smoke" # 查询下一步应执行的阶段: python3 validator.py next M31 strategy.py # 冒烟测试完成后记录结果: python3 validator.py record M31 smoke_test --status passed --drawdown 0.32 --sharpe 2.1 # 第二阶段:压力测试(Stress)——仅当冒烟测试通过后执行 python3 ../backtest-poller/cli.py submit --main-file strategy.py --name "M31_stress" python3 validator.py record M31 stress_test --status passed --drawdown 0.38 --sharpe 2.0 # 第三阶段:中等测试(Medium)——仅当压力测试通过后执行 python3 ../backtest-poller/cli.py submit --main-file strategy.py --name "M31_medium" python3 validator.py record M31 medium --status passed --drawdown 0.35 --sharpe 2.3 # 第四阶段:全周期测试(Full)——仅当中等测试通过后执行 python3 ../backtest-poller/cli.py submit --main-file strategy.py --name "M31_full" python3 validator.py record M31 full --status passed --drawdown 0.30 --sharpe 2.5 --profit 3.2
跳过规则
并非所有修改都需从冒烟测试开始:
| 变更类型 | 起始阶段 |
|---|---|
| 入场逻辑变更 | 冒烟测试(Stage 1) |
| 结构性变更(仓位管理、生存机制) | 冒烟测试(Stage 1) |
| 仅盈利管理逻辑变更 | 中等测试(Stage 3) |
| 日期或参数微调 | 与此前相同阶段 |
早停(Early-Stop)集成
本技能与 backtest-poller 技能(独立包)协同工作。backtest-poller 的早停功能实时监控最大回撤,若在任务完成进度达 20% 后即突破阈值,则立即终止该回测任务 —— 无需等待注定失败的完整执行。本验证器在本地追踪各阶段的通过/失败状态,因此您始终清楚应从何处恢复验证流程。
依赖项:请安装 backtest-poller 技能以启用提交(submit)和早停(early-stop)功能。本验证器自身不执行回测提交操作。
时间节省示例
测试 5 个策略变体,其中 3 个为无效策略:
| 方法 | 耗时 |
|---|---|
| 仅执行全周期回测 | 5 × 3 小时 = 15 小时 |
| 采用渐进式验证 | 3 × 15 分钟 + 1 × 45 分钟 + 1 × 3 小时 = 约 4.5 小时 |
节省:约 70% 的计算时间。
规则
- 未经充分理由,不得跳过任何阶段。 上述跳过规则表定义了唯一允许的例外情形。若入场逻辑或生存结构发生变更,必须从冒烟测试(Smoke)开始。
- 策略必须通过当前阶段,方可进入下一阶段。 若当前阶段因早停或失败而未通过,则不得推进至下一阶段。
- 验证过程中禁止修改阶段阈值。 在不同阶段间更改
max_dd将破坏渐进式验证的保障机制。所有阈值须在验证启动前确定。 - 每次验证运行仅限一个策略变体。 各阶段之间不得修改策略代码 —— 其目的在于对同一份代码,在日益严苛的时间窗口下持续验证其表现。
- 务必记录每一次结果,包括失败情形。 使用命令
python3 validator.py record持久化保存结果。未记录的结果将导致--status passed|failed next和status命令失效。
热门AI工具
相关专题
本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。
0
2026.11.12
本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。
0
2026.11.12
本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。
0
2026.11.12
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章