Skip to content

9.10 回测报告模板

课前导读

本节目标

学完能解决什么困惑:回测做完后,怎样把策略、数据、成本、指标和风险边界写成别人能复查的报告。

适合谁学:已经学过回测指标、成本、参数扫描、Walk-forward 和蒙特卡洛检查的读者。

难度:中级。

用时:约 45 分钟。

第 9 章前面的内容,帮助你从“跑出一条曲线”走向“检查一套研究”。

但只会计算还不够。

如果回测结果不能被复查,不能解释规则,不能说明风险,它就很难变成可靠学习材料。

一份统一回测报告,就像策略的体检报告和出厂说明书。

它不只写“赚了多少”,还要写“怎么来的、靠什么假设、哪里可能失真、下一步该做什么”。

本节会给出一张可直接复制使用的中文报告模板。


知识正文

1. 类比:体检报告不能只写体重

如果你去体检,医生只告诉你“体重 70 公斤”,你会觉得信息不够。

你还想知道血压、血糖、心率、肝肾功能、检查日期、参考范围和医生建议。

回测报告也是如此。

只写“年化收益 18%”没有意义。

你还需要说明数据来自哪里,规则是什么,成本怎么扣,最大回撤多少,参数是否稳健,测试期表现怎样。

没有这些信息,收益数字就像孤零零的体重。

看起来明确,实际上无法判断健康状况。

关键直觉

回测报告不是宣传页,而是复查清单;它的价值在于让别人知道结果能不能被信任。

2. 报告要回答的八个问题

一份合格的回测报告,至少回答八个问题。

第一,策略想解决什么投资问题。

第二,使用了哪些数据。

第三,交易规则是否清楚。

第四,成本和成交假设是否接近现实。

第五,核心指标表现如何。

第六,参数和样本外表现是否稳健。

第七,风险边界在哪里。

第八,结论是继续研究、暂停观察,还是放弃。

这八个问题缺一个,报告就可能误导读者。

3. 统一报告结构

建议所有回测报告都使用固定结构。

固定结构会带来三个好处。

第一,减少漏项。

第二,方便横向比较不同策略。

第三,方便未来复盘当时为什么做出某个结论。

mermaid
graph TD
    A["策略说明"] --> B["数据与样本"]
    B --> C["交易规则"]
    C --> D["成本与成交假设"]
    D --> E["核心指标"]
    E --> F["稳健性检查"]
    F --> G["风险边界"]
    G --> H["结论与下一步"]

请注意,这个结构不是为了把报告写长。

它是为了让每个结论都有来源。

如果某个策略没有经过参数扫描,就在稳健性部分诚实写“未完成”。

如果没有处理停牌和涨跌停,就在风险边界里写清楚。

报告最重要的品质不是漂亮,而是诚实。

4. 模板一:策略说明

策略说明要让完全不了解你研究的人,也能知道你在做什么。

字段填写要求示例
策略名称简短、可识别日线均线趋势过滤策略
研究目的解释要验证什么想法观察收盘价站上中期均线后是否有趋势延续
适用市场写清 A 股范围沪深主板中流动性较好的股票
策略类型趋势、反转、事件等中期趋势观察
不做什么写出边界不预测涨停,不参与 ST 样本,不做盘中高频

“不做什么”非常重要。

新手报告常常只写买入条件,却不写策略边界。

边界不清楚,后面就容易把任何行情都解释成策略适用。

5. 模板二:数据与样本

数据部分是报告的地基。

地基不清楚,后面所有指标都不稳。

字段填写要求检查问题
数据来源行情、财务、公告来自哪里是否合法、可复查
数据区间起止日期是否覆盖多种市场环境
股票池纳入哪些股票是否有幸存者偏差
复权口径前复权、后复权或不复权是否和规则匹配
缺失处理停牌、缺失价量如何处理是否记录处理方式
可得性数据当时是否可见是否偷看未来

A 股回测尤其要注意可得性。

财报不是报告期结束当天就能使用。

指数成份股也可能在历史中发生调整。

如果你用今天的成份股名单回测过去很多年,就可能忽略已经被剔除的股票。

这些问题不写进报告,指标再好也要打折。

6. 模板三:交易规则

交易规则要写成可执行语言。

不要写“趋势好时买入”。

要写“当收盘价上穿 20 日均线,且下一交易日可成交时,按收盘后信号在下一交易日执行观察买入”。

规则模块必填内容示例
入场条件什么时候买入或建仓收盘价上穿 20 日均线
出场条件什么时候卖出收盘价跌破 20 日均线
仓位规则每次投入多少单只股票固定观察仓位
信号时间信号何时出现收盘后确认
执行时间何时执行下一交易日按假设成交
禁止条件哪些情况不交易涨跌停、停牌、流动性不足

这部分要让量化开发能够照着实现。

如果开发读完还要追问“到底哪天买”,说明规则不够清楚。

7. 模板四:成本与成交假设

成本部分不能省。

第 9 章已经反复强调,成本会改变策略生死。

项目填写内容示例
佣金买卖双边或具体费率按成交金额估算
印花税A 股卖出端税费卖出时计入
过户费按规则估算买卖均计入或按当前口径说明
滑点预期价与成交价偏差按固定比例估算
涨跌停处理无法成交时如何处理当日不成交,顺延或放弃
停牌处理停牌期间如何处理保持持仓,复牌后按规则检查
流动性过滤成交额或换手限制低流动性样本剔除或降权观察

这里不要求你做到机构级精细。

但必须把假设写出来。

不写成本的回测,默认不可信。

8. 模板五:核心指标

核心指标要同时覆盖收益和风险。

不要只展示最好看的指标。

指标解释报告写法
累计收益期末资金相对期初变化写明扣费前后
年化收益折算到一年后的平均速度不能单独使用
最大回撤从高点到低点的最大下跌必须和收益一起看
波动率资金曲线颠簸程度观察持有压力
夏普比率单位波动对应的收益注意样本和频率
胜率盈利交易占比要配合盈亏比
盈亏比平均盈利与平均亏损关系判断赚亏结构
交易次数策略触发频率检查成本压力

指标部分最好加入一句人话解释。

例如:

本策略年化收益看起来尚可,但最大回撤接近收益水平,说明持有过程压力较大,不能只看收益结论。

这种解释比单纯贴表格更有教学价值。

9. 模板六:稳健性检查

稳健性部分把 9.7 到 9.9 的内容统一起来。

检查项必填问题结论写法
参数扫描是否存在平台期15 到 30 日均线区域相对稳定
孤岛最优最优点周围是否塌陷未发现明显单点依赖
Walk-forward测试期是否独立8 轮中 5 轮表现可接受
成本敏感性成本加严后是否崩掉滑点提高后收益下降但未反转
蒙特卡洛不利顺序下回撤如何较差情形回撤超过预设边界
分年份表现是否依赖单一年份2020 年贡献较高,需要谨慎

如果某项没有做,就写“未完成”,不要空着。

空白会让读者误以为没有问题。

“未完成”反而诚实地提示下一步要补。

10. 模板七:风险边界

风险边界是报告里保护读者的部分。

它要告诉读者:这份回测在哪些情况下可能失真。

风险类型报告应写内容
数据风险数据缺失、复权口径、成份股偏差
成交风险涨跌停、停牌、流动性不足、滑点低估
样本风险样本时间太短或市场环境单一
参数风险参数过多、扫描过宽、孤岛最优
执行风险实盘中无法严格按规则执行
情绪风险连续亏损导致人为改规则

风险边界不是给策略找借口。

它是在告诉自己和读者:哪些地方不能过度解读。

一份没有风险边界的报告,很容易变成收益展示。

11. 模板八:结论与下一步

结论不要只写“可以”或“不可以”。

建议使用三类结论。

结论类型含义下一步
继续研究指标和稳健性初步可接受增加样本、复查细节
暂停观察有亮点但风险或证据不足补充测试,不扩大使用
暂不采用逻辑不清或稳健性差归档经验,避免重复踩坑

对新手来说,“暂停观察”是很重要的结论。

不是每份报告都必须导向交易。

很多研究的价值,是帮你排除不可靠想法。

这同样是在进步。

12. 一个完整的小型报告示例

下面是教学用简版,不代表任何真实策略建议。

模块示例内容
策略名称A 股日线均线趋势过滤策略
研究目的验证中期均线是否能减少震荡中的无效交易
数据区间2018-2024 年日线样本
股票池流动性较好的沪深主板样本
入场规则收盘价上穿 20 日均线后,下一交易日观察买入
出场规则收盘价跌破 20 日均线后,下一交易日卖出
成本假设计入佣金、印花税、过户费和固定滑点
核心指标年化收益中等,最大回撤可接受但不低
参数扫描15-30 日均线区域相对稳定
Walk-forward多轮测试期有波动,未出现全面失效
蒙特卡洛不利顺序下最大回撤接近风险边界
风险边界对震荡市敏感,低流动性股票可能成交失真
结论暂停观察,补充分年份和更严格成本测试

这个示例最重要的地方是结论克制。

它没有因为某些指标不错就说“可以实盘”。

它把风险边界和下一步写了出来。

这比一个夸张收益数字更专业。

13. 专业老师视角:报告要能教学

老师看报告,不只看结果。

老师会看你是否按顺序讲清楚。

先讲策略逻辑,再讲数据口径。

先讲规则,再讲成本。

先讲指标,再讲稳健性。

最后才讲结论。

如果顺序反了,读者会被收益数字先入为主。

好的报告应该让读者即使不同意你的结论,也能看懂你的推理路径。

14. 投资者视角:报告要能保护决策

投资者读报告,是为了避免被漂亮曲线诱惑。

因此报告里必须有暂停条件。

例如最大回撤超过某个边界时暂停复查。

连续亏损超过历史压力测试范围时暂停复查。

实际滑点明显高于报告假设时暂停复查。

如果报告没有这些边界,实盘中就容易边亏边改解释。

统一模板可以把情绪挡在门外。

它提醒你:研究时写下的规则,比亏损时临时想到的理由更可靠。

15. 量化开发视角:报告要能复现

开发者最关心版本。

报告里要写清数据版本、代码版本、参数版本和运行时间。

如果未来有人复跑结果不一致,才能定位差异。

建议报告末尾保留一个复现信息表。

复现字段示例
数据版本daily_data_v2026_05_09
代码版本backtest_engine_v01
参数文件ma_strategy_params_v03
运行时间2026-05-09 20:30
随机种子42
报告作者研究者姓名或编号

这些字段看起来朴素,却能极大减少以后复查成本。

量化研究不是一次性截图。

它是一条可以回头追踪的证据链。

16. 写报告时的常见错误

第一,只放收益曲线,不放回撤曲线。

第二,只写最优参数,不写参数范围。

第三,只展示总样本,不展示分阶段表现。

第四,只写扣费后收益,却不写费用假设。

第五,只写“策略有效”,不写在哪些条件下可能失效。

第六,结论过度兴奋,直接从回测跳到实盘。

这些错误都不是格式问题。

它们会影响你的投资判断。

报告模板的存在,就是为了让你每次都被迫回答这些问题。


交互实验室

请把下面模板复制到自己的研究笔记中。

每次完成一个回测,都按同一顺序填写。

如果某项还没做,就写“未完成”和原因。

统一回测报告模板表

模块必填字段你的填写
1. 策略说明名称、目的、适用市场、策略类型、不做什么
2. 数据与样本来源、区间、股票池、复权口径、缺失处理、可得性
3. 交易规则入场、出场、仓位、信号时间、执行时间、禁止条件
4. 成本假设佣金、印花税、过户费、滑点、涨跌停、停牌、流动性
5. 核心指标累计收益、年化收益、最大回撤、波动率、夏普、胜率、盈亏比、交易次数
6. 稳健性检查参数扫描、Walk-forward、成本敏感性、蒙特卡洛、分年份表现
7. 风险边界数据风险、成交风险、样本风险、参数风险、执行风险、情绪风险
8. 结论与下一步继续研究、暂停观察或暂不采用;下一步具体动作
9. 复现信息数据版本、代码版本、参数版本、运行时间、随机种子

练习 A:把模糊结论改成专业结论

请把下面句子改写得更可靠。

这个策略收益不错,可以考虑使用。

参考改写:

本策略在当前样本中扣费后收益为正,但最大回撤接近预设边界。参数扫描显示 15-30 日均线区域相对稳定,Walk-forward 中仍有部分测试期亏损。当前结论为暂停观察,下一步补充更严格滑点和分年份测试。

练习 B:检查报告缺项

下面是一份不完整报告。

已写内容缺少什么
年化收益 16%缺最大回撤、成本假设、样本区间
使用 20 日均线缺参数扫描和选择理由
回测 2019-2024缺股票池、数据来源、可得性
结论是策略有效缺风险边界和下一步动作

请用自己的话补全每一行缺项。

练习 C:写最后三句话

每份报告最后都建议写三句话。

第一句,当前证据支持什么。

第二句,当前证据不支持什么。

第三句,下一步具体做什么。

模板如下:

当前证据支持:________。

当前证据不支持:________。

下一步动作:________。

一个合格答案是:

当前证据支持:该策略在部分中期趋势环境中有一定过滤噪声能力。

当前证据不支持:直接扩大资金使用或认为未来收益稳定。

下一步动作:补充更严格滑点、分年份表现和连续亏损压力测试。


核心复盘

知识清单

  • [ ] 我知道回测报告不能只写收益,还要写数据、规则、成本和风险。

  • [ ] 我能用统一模板输出策略说明、数据样本、交易规则和成本假设。

  • [ ] 我会同时展示收益指标、风险指标和交易频率。

  • [ ] 我会把参数扫描、Walk-forward、蒙特卡洛等稳健性检查写进报告。

  • [ ] 我知道风险边界不是借口,而是防止过度解读的护栏。

  • [ ] 我能把结论写成继续研究、暂停观察或暂不采用,而不是情绪化判断。

  • [ ] 我会记录数据版本、代码版本、参数版本、运行时间和随机种子。

金句总结

一份好的回测报告,不是证明自己对了,而是让未来的自己也能复查当时为什么这样判断。

本文档仅供学习交流用途,不构成任何投资建议。股市有风险,入市需谨慎。