mcpField
B
backtest-expert

backtest-expert

github.com/nicepkg其他28899 次安装40 周前更新
代码仓库

关于 backtest-expert

面向系统化交易者的策略回测方法技能,帮助制定规则并检验策略能否承受悲观假设。重点是压力测试、样本外验证与避免过度拟合,而非追求纸面收益最大化。

主要功能

  1. 01明确假设并编写无歧义规则
  2. 02测试交易成本与执行摩擦
  3. 03分析参数敏感性和市场周期
  4. 04进行逐步样本外验证
  5. 05识别回测偏差与失效模式

适用场景

  1. 01验证策略是否适合实盘
  2. 02排查回测结果过于乐观的原因
  3. 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. 在训练期(例如第 1~3 年)优化
  2. 在验证期(第 4 年)测试
  3. 向前滚动并重复
  4. 比较样本内与样本外的表现

警示信号:

  • 样本外表现低于样本内表现的 50%
  • 需要频繁重新优化参数
  • 参数在不同期间发生显著变化
6. 评估结果

需要回答的问题:

  • 策略优势能否在悲观假设下依然成立?
  • 表现能否在不同参数变化下保持稳定?
  • 策略能否在多个市场状态下奏效?
  • 样本量是否足以达到统计置信度?
  • 结果是否切合实际,而非“好得令人难以置信”?

决策标准:

  • ✅ 部署:通过所有压力测试,且表现可接受
  • 🔄 优化:核心逻辑合理,但需要调整参数
  • ❌ 放弃:未通过压力测试,或依赖脆弱的假设

关键测试原则

惩罚策略

在各个方面增加阻力:

  • 佣金设得高于实际水平
  • 滑点设为典型水平的 1.5-2 倍
  • 按最坏情况成交
  • 拒绝订单
  • 部分成交

理由:能够经受住悲观假设考验的策略,在实盘交易中往往表现更好。

寻找平台期,而非峰值

寻找表现稳定的参数范围,而不是会造成表现突增的最优值。

好:止损在 1.5% 到 3.0% 之间任意取值,策略都能盈利
差:止损必须恰好设为 2.13%,策略才有效

表现稳定说明策略确实具有优势;最优值范围狭窄则表明可能存在曲线拟合。

测试所有案例,而非挑选个例

错误做法:研究那些表现出色的精选“市场领头股”
正确做法:测试所有符合条件的股票,包括表现不佳的股票

选择性地挑选案例会造成幸存者偏差,并高估策略质量。

将想法生成与验证分开

直觉:可用于生成假设
验证:必须完全以数据为依据

切勿让自己对某个想法的执着影响对测试结果的解读。

常见失败模式

及早识别这些模式,节省时间:

  1. 参数敏感性:只有使用精确的参数值才有效
  2. 特定市场环境:某些年份表现出色,其他年份表现糟糕
  3. 滑点敏感性:加入现实成本后无利可图
  4. 样本量过小:交易次数太少,无法获得统计置信度
  5. 前视偏差:结果“好得令人难以置信”
  6. 过度优化:参数过多,样本外结果不佳

详细示例和诊断框架请参阅 references/failed_tests.md。

可用的参考文档

方法论参考

文件:references/methodology.md

何时阅读:需要了解具体测试技术的详细指导时。

内容:

  • 压力测试方法
  • 参数敏感性分析
  • 滑点与摩擦建模
  • 样本量要求
  • 市场环境分类
  • 常见偏差和陷阱(幸存者偏差、前视偏差、曲线拟合等)
失败测试参考

文件:references/failed_tests.md

何时阅读:策略未通过测试,或希望从过去的错误中吸取教训时。

内容:

  • 失败为何有价值
  • 常见失败模式及示例
  • 案例研究文档框架
  • 评估回测的危险信号清单

重要提醒

时间分配:花 20% 的时间生成想法,80% 的时间尝试推翻它们。

不依赖特定情境的要求:如果策略需要“完美情境”才能奏效,就不足以稳健地用于系统化交易。

危险信号:如果回测结果好得令人难以置信(胜率 >90%、回撤极小、择时完美),请仔细检查是否存在前视偏差或数据问题。

工具限制:了解回测平台的特性(插值方法、对低流动性的处理方式、数据对齐问题)。

统计显著性:微小优势需要大量样本才能得到验证。每笔交易有 5% 的优势,需要 100 笔以上交易才能与运气区分开来。

主观交易与系统化交易的差异

此技能专注于系统化/量化回测,其特点包括:

  • 所有规则都预先编写为代码
  • 执行时不依赖临场判断或“感觉”
  • 在所有历史案例上测试,而非挑选个例
  • 刻意剥离情境信息(新闻、宏观因素)

主观交易者的研究方式不同——对于需要主观判断的交易设置,此技能可能并不适用。

评论

支持 Markdown