批量回测:一个策略在全市场、分年份是否都稳定

青 青柠量化
2026-10-18

看完一次完整回测,总收益正的、回撤可以接受,能上线了吗?还不够。总收益是把所有年份的好年坏年搅在一起的平均,你需要知道策略在每一年单独看是什么表现——这就是批量回测要解决的问题。


什么是批量回测

批量回测指的是:把同一个策略,在不同的时间段、不同的股票池、不同的市场环境下分别跑一遍,看结果是否一致稳定。常见的拆分维度:

  • – 分年度: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。收益未计交易成本。历史统计不代表未来表现,不构成投资建议。

读到这里,不如自己验证一次

文章里的逻辑,你可以在青柠量化里用真实数据重新跑一遍。免费,零代码。

免费下载客户端

写下你的看法

邮箱仅用于回复通知,不会公开。