关于 backtest-expert
面向系统化交易者的策略回测方法技能,帮助制定规则并检验策略能否承受悲观假设。重点是压力测试、样本外验证与避免过度拟合,而非追求纸面收益最大化。
主要功能
- 01明确假设并编写无歧义规则
- 02测试交易成本与执行摩擦
- 03分析参数敏感性和市场周期
- 04进行逐步样本外验证
- 05识别回测偏差与失效模式
适用场景
- 01验证策略是否适合实盘
- 02排查回测结果过于乐观的原因
- 03评估参数变化对策略的影响
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nicepkg/ ai-workflow --skill backtest-expert安装后在 Claude Code 中输入/backtest-expert确认已加载。
附带文件references/failed_tests.mdreferences/methodology.md
详细介绍
回测专家
采用专业方法对交易策略进行系统化回测,优先关注稳健性,而非乐观的结果。
核心理念
目标:寻找“最不容易失效”的策略,而不是纸面上“利润最高”的策略。
原则:加入摩擦因素,对假设进行压力测试,观察哪些策略能够经受考验。如果策略在悲观条件下依然表现稳健,那么它更有可能在实盘交易中奏效。
何时使用此技能
在以下情况下使用此技能:
- 开发或验证系统化交易策略
- 评估某个交易想法是否足够稳健,可以投入实盘实施
- 排查回测结果可能产生误导的原因
- 学习正确的回测方法
- 避免常见陷阱(曲线拟合、前视偏差、生存偏差)
- 评估参数敏感性和对市场状态的依赖性
- 对滑点和执行成本设定切合实际的预期
回测工作流
1. 陈述假设
用一句话定义策略优势。
示例:“财报公布后跳空高开超过 3%,并在首小时内回落至前一日收盘价的股票,提供了均值回归机会。”
如果无法清楚地阐述策略优势,就不要继续测试。
2. 将规则明确编码,不留主观判断空间
明确规定以下内容:
- 入场:确切条件、时机、价格类型
- 退出:止损、止盈目标、基于时间的退出
- 仓位规模:固定金额、投资组合占比、按波动率调整
- 筛选条件:市值、成交量、板块、波动率条件
- 标的范围:哪些工具符合条件
关键:不允许主观判断。每项决策都必须基于规则且没有歧义。
3. 运行初步回测
测试范围:
- 至少 5 年(最好 10 年以上)
- 多个市场状态(牛市、熊市、高波动率、低波动率)
- 切合实际的成本:佣金 + 保守估计的滑点
检查初步结果是否具备基本可行性。如果策略存在根本性缺陷,就重新调整假设。
4. 对策略进行压力测试
测试时间的 80% 应花在这一步。
参数敏感性:
- 将止损设为基准值的 50%、75%、100%、125%、150% 进行测试
- 将止盈目标设为基准值的 80%、90%、100%、110%、120% 进行测试
- 将入场/退出时间前后调整 ±15~30 分钟
- 寻找表现稳定的“平台区”,而不是狭窄的尖峰
执行摩擦:
- 将滑点增加至典型估算值的 1.5~2 倍
- 模拟最差成交情况(以卖一价 + 1 个最小报价单位买入,以买一价 - 1 个最小报价单位卖出)
- 加入真实的订单拒绝情形
- 使用悲观的佣金结构进行测试
时间稳健性:
- 按年分析表现
- 要求大多数年份的期望收益为正
- 确保策略不依赖 1~2 个异常出色的时期
- 分别在不同市场状态下进行测试
样本量:
- 绝对最低要求:30 笔交易
- 建议:100 笔以上交易
- 高置信度:200 笔以上交易
5. 样本外验证
滚动前向分析:
- 在训练期(例如第 1~3 年)优化
- 在验证期(第 4 年)测试
- 向前滚动并重复
- 比较样本内与样本外的表现
警示信号:
- 样本外表现低于样本内表现的 50%
- 需要频繁重新优化参数
- 参数在不同期间发生显著变化
6. 评估结果
需要回答的问题:
- 策略优势能否在悲观假设下依然成立?
- 表现能否在不同参数变化下保持稳定?
- 策略能否在多个市场状态下奏效?
- 样本量是否足以达到统计置信度?
- 结果是否切合实际,而非“好得令人难以置信”?
决策标准:
- ✅ 部署:通过所有压力测试,且表现可接受
- 🔄 优化:核心逻辑合理,但需要调整参数
- ❌ 放弃:未通过压力测试,或依赖脆弱的假设
关键测试原则
惩罚策略
在各个方面增加阻力:
- 佣金设得高于实际水平
- 滑点设为典型水平的 1.5-2 倍
- 按最坏情况成交
- 拒绝订单
- 部分成交
理由:能够经受住悲观假设考验的策略,在实盘交易中往往表现更好。
寻找平台期,而非峰值
寻找表现稳定的参数范围,而不是会造成表现突增的最优值。
好:止损在 1.5% 到 3.0% 之间任意取值,策略都能盈利
差:止损必须恰好设为 2.13%,策略才有效
表现稳定说明策略确实具有优势;最优值范围狭窄则表明可能存在曲线拟合。
测试所有案例,而非挑选个例
错误做法:研究那些表现出色的精选“市场领头股”
正确做法:测试所有符合条件的股票,包括表现不佳的股票
选择性地挑选案例会造成幸存者偏差,并高估策略质量。
将想法生成与验证分开
直觉:可用于生成假设
验证:必须完全以数据为依据
切勿让自己对某个想法的执着影响对测试结果的解读。
常见失败模式
及早识别这些模式,节省时间:
- 参数敏感性:只有使用精确的参数值才有效
- 特定市场环境:某些年份表现出色,其他年份表现糟糕
- 滑点敏感性:加入现实成本后无利可图
- 样本量过小:交易次数太少,无法获得统计置信度
- 前视偏差:结果“好得令人难以置信”
- 过度优化:参数过多,样本外结果不佳
详细示例和诊断框架请参阅 references/failed_tests.md。
可用的参考文档
方法论参考
文件:references/methodology.md
何时阅读:需要了解具体测试技术的详细指导时。
内容:
- 压力测试方法
- 参数敏感性分析
- 滑点与摩擦建模
- 样本量要求
- 市场环境分类
- 常见偏差和陷阱(幸存者偏差、前视偏差、曲线拟合等)
失败测试参考
文件:references/failed_tests.md
何时阅读:策略未通过测试,或希望从过去的错误中吸取教训时。
内容:
- 失败为何有价值
- 常见失败模式及示例
- 案例研究文档框架
- 评估回测的危险信号清单
重要提醒
时间分配:花 20% 的时间生成想法,80% 的时间尝试推翻它们。
不依赖特定情境的要求:如果策略需要“完美情境”才能奏效,就不足以稳健地用于系统化交易。
危险信号:如果回测结果好得令人难以置信(胜率 >90%、回撤极小、择时完美),请仔细检查是否存在前视偏差或数据问题。
工具限制:了解回测平台的特性(插值方法、对低流动性的处理方式、数据对齐问题)。
统计显著性:微小优势需要大量样本才能得到验证。每笔交易有 5% 的优势,需要 100 笔以上交易才能与运气区分开来。
主观交易与系统化交易的差异
此技能专注于系统化/量化回测,其特点包括:
- 所有规则都预先编写为代码
- 执行时不依赖临场判断或“感觉”
- 在所有历史案例上测试,而非挑选个例
- 刻意剥离情境信息(新闻、宏观因素)
主观交易者的研究方式不同——对于需要主观判断的交易设置,此技能可能并不适用。