看完一次完整回测,总收益正的、回撤可以接受,能上线了吗?还不够。总收益是把所有年份的好年坏年搅在一起的平均,你需要知道策略在每一年单独看是什么表现——这就是批量回测要解决的问题。
什么是批量回测
批量回测指的是:把同一个策略,在不同的时间段、不同的股票池、不同的市场环境下分别跑一遍,看结果是否一致稳定。常见的拆分维度:
- – 分年度:2016年、2017年……每年单独计算超额收益和胜率
- – 分牛熊:沪深300在250日均线上方(牛市)vs 下方(熊市)
- – 分股票池:大盘股 vs 小盘股;不同行业
- – 分市场区间:如国庆节前后、一季报披露期等
本课重点看分年度的检验,这是发现"只靠某一两年行情"的策略最直接的方法。
实验:MA20金叉的11年分年度表现
策略:MA20金叉(股价从下方穿过20日均线),次日开盘买,持有20个交易日后收盘卖出。股票池:全A股,排除ST、北交所,价格不低于3元,后复权。
| 年份 | 信号数 | 超额收益 | 胜率 |
|---|---|---|---|
| 2016 | 28,921 | −0.09% | 55.2% |
| 2017 | 30,405 | −0.07% | 46.0% |
| 2018 | 35,763 | −0.48% | 32.3% |
| 2019 | 40,511 | −0.11% | 52.1% |
| 2020 | 43,230 | +0.41% | 47.5% |
| 2021 | 47,448 | +0.07% | 52.1% |
| 2022 | 52,004 | −0.19% | 46.2% |
| 2023 | 60,880 | −0.11% | 44.5% |
| 2024 | 59,291 | −0.15% | 47.7% |
| 2025 | 68,535 | −0.06% | 59.6% |
| 2026(截至10月) | 49,862 | −0.58% | 44.2% |
超额收益 = 策略收益 − 同日全市场平均(20日口径)。
11年里只有2年超额为正(2020年和2021年),年均超额 −0.12%,标准差 0.26%。 如果只看这一个策略的总回测曲线,你会看到一条在2020–2021年拉高的曲线,但实际上它9年里跑输了市场平均。
这不是说MA20金叉没用——这个策略在第10课里已经详细分析过。它的绝对收益是正的,能赚钱,但要beat市场平均需要更多条件(牛市趋势)。分年度检验把这个特性清楚地展示出来了。
与MACD金叉对比:两个策略的分年超额
| 年份 | MA20金叉超额 | MACD金叉超额 |
|---|---|---|
| 2016 | −0.09% | −0.02% |
| 2017 | −0.07% | −0.06% |
| 2018 | −0.48% | −0.20% |
| 2019 | −0.11% | +0.07% |
| 2020 | +0.41% | +0.15% |
| 2021 | +0.07% | −0.03% |
| 2022 | −0.19% | −0.03% |
| 2023 | −0.11% | −0.21% |
| 2024 | −0.15% | −0.20% |
| 2025 | −0.06% | −0.16% |
| 2026 | −0.58% | +0.05% |
两个策略都在2020年有最好的超额表现,说明超额收益主要来自牛市环境,而不是策略本身的独特优势。如果这两个策略的超额高度相关,组合在一起也无法分散风险。
分年数据怎么读
看正超额年数比例:MA20金叉是 2/11,MACD金叉约 3/11。比例越低,策略越依赖特定行情。
看超额的标准差:标准差越大,说明不同年份的表现差异越大,策略的不确定性越高。MA20金叉标准差 0.26%,在正常范围内但偏高。
看最差年份:2018年MA20超额 −0.48%,2026年截至当前 −0.58%,这两年是熊市/震荡市,趋势类策略表现普遍差。如果最差年份能接受,说明策略在坏市中也不会"爆"。
看行情对应关系:2020年超额最高,对应A股大幅上涨;2018年超额最低,对应大幅下跌。这告诉你策略是顺势的,在震荡市里会跑输。这是正常的,只要你了解它的特性就能管理预期。
分年检验的判断标准
没有绝对的及格线,但下面几点可以作为参考:
| 指标 | 较好 | 需要关注 |
|---|---|---|
| 正超额年数比例 | ≥ 7/10 | < 5/10 |
| 最差年超额 | ≥ −0.5% | < −1.0% |
| 超额标准差 | < 0.3% | > 0.5% |
| 牛熊分化 | 牛市稍好、熊市稍差 | 只有牛市有效 |
如果某个策略有10年历史但8年超额来自1–2年,这个策略的"有效历史"其实只有1–2年,统计意义非常有限。
常见误区
误区一:总收益高=每年都好
不对。MA20金叉全程收益是正的,但11年里9年跑输市场。总收益可以被一两年的大幅上涨"救活"。
误区二:分年检验通过就稳了
还不够。分年度是基本检验,还需要分年做样本外(见第59课样本外检验)、参数平原检验(见第57课参数实验室),以及检查是否存在未来函数和幸存者偏差(见第60课)。
误区三:负超额年份代表策略失效
不一定。趋势策略在震荡市跑输是正常的,重要的是看总体的信息比(信息比 = 均值/标准差),以及你是否愿意接受这个策略的特性。
在青柠中实操
青柠量化回测报告的分年统计页面,会自动展示每一年的:
- – 信号数(了解数据量)
- – 持有期收益均值
- – 超额收益(相对当日全市场平均)
- – 胜率
操作步骤:运行完整回测 → 点击回测报告 → 切换到「分年统计」标签页。如果某年的数据明显异常(超额远高或远低),建议点进去看那年的具体信号,确认原因。
批量参数扫描:如果要同时对比多个参数组合的分年表现,可以在参数实验室里勾选「显示分年」,批量对比多组参数在每一年的稳定性。
常见问题
Q:信号数逐年增加(如从28,921增到68,535),正常吗?
正常。随着A股上市公司增多,全市场信号数也会增加。更需要关注的是每家公司的平均信号频率是否有异常变化。
Q:2026年只有10个月的数据,超额 −0.58% 是否有代表性?
数据点越少,结论越不可靠。部分年份数据(如2026年1–10月)要谨慎解读,不能直接和完整年份比较。
Q:分年度用"超额"还是"绝对收益"更好?
超额更好。绝对收益在牛市里会被大盘涨幅抬高,熊市里会被压低,看不出策略本身的真实能力。超额已经剔除了大盘影响,更能反映策略逻辑是否有效。
口径说明
分年统计按自然年划分,2026年数据截至最新交易日。超额收益相对同日全市场(非ST、排除北交所、价格 ≥3 元)的同口径均值。次日一字涨停买不进记 NULL。收益未计交易成本。历史统计不代表未来表现,不构成投资建议。
读到这里,不如自己验证一次
文章里的逻辑,你可以在青柠量化里用真实数据重新跑一遍。免费,零代码。