什么是回测?为什么不能只看收益率

青 青柠量化
2026-10-11
连跌5天组合10年亏71%,扣成本亏86%,同期全市场等权却涨了104%。

一句话结论:回测是用历史数据检验规则的唯一办法,但只看一个收益率数字会被骗。第 1 课的「连跌 5 天买入」单笔平均赚 0.85%,真按每天分仓去买,10 年组合亏了 71%。

上一课我们拆开了一个策略的三个部分。这一课讲怎么检验它:回测是什么,以及一份回测结果为什么不能只看收益率。

连跌5天组合10年亏71%,扣成本亏86%,同期全市场等权却涨了104%。
连跌5天组合10年亏71%,扣成本亏86%,同期全市场等权却涨了104%。

一、回测是什么

回测就是把写好的规则放到历史行情里,假装从过去某一天开始执行,看每一笔交易的结果。

一次回测需要四样东西:

需要什么例子
一条明确的规则连跌 5 天,第二天开盘买入,持有 5 天
历史数据2016 年以来全 A 股的复权日线(第 2 课讲过为什么要复权)
成交假设用第二天开盘价买;一字涨停买不进
成本假设每笔来回扣 0.15%

回测程序按时间顺序逐日检查规则,满足条件就记一笔买入,到期记一笔卖出,最后汇总成一份报告。

回测不是什么

  • – 不是预测。 回测只说明这条规则在过去的表现,不保证未来。
  • – 不是模拟盘。 模拟盘是往后走、用实时行情;回测是往回看、用历史行情。
  • – 不是看图找规律。 在图上找几个成功案例谁都会,回测要把所有符合条件的情况都算进去,包括失败的。

二、青柠数据实验:同一条规则,三种算法

我们用第 1 课检验过的口诀「跌多了总会反弹」:

  • – 规则:连跌 5 天,第二天开盘买入,持有 5 天后收盘卖出。
  • – 股票池:全 A 股,排除 ST 和北交所。
  • – 区间:2016 年 1 月至 2026 年 9 月,共 227,698 笔交易。

算法 1:单笔平均收益

把 22.8 万笔交易的收益加起来求平均:

指标数值
平均每笔收益+0.85%
胜率51.9%

看起来不错:每笔平均赚 0.85%,胜率过半。一年交易 50 次,岂不是能赚 40% 以上?

算法 2:扣掉成本、扣掉大盘

指标数值
平均每笔收益+0.85%
扣掉 0.15% 成本后+0.70%
扣掉同期市场平均后(超额)+0.01%
两样都扣掉−0.14%

同一天随便买一只股票持有 5 天,平均也能赚这么多。扣掉成本和大盘,这条规则没有优势。

算法 3:真的拿一笔钱去做

前两种算法有一个隐藏假设:每笔交易都投入同样的钱,不管那天有多少个信号。但真实账户的钱是有限的。

我们按真实账户的方式算一遍:把资金分成 5 份,每天用 1 份等额买入当天所有信号,持有 5 天后卖出;当天没有信号,这份钱就空着。

连跌 5 天(不扣成本)连跌 5 天(扣成本)同期全市场等权
10 年总收益−71.1%−86.3%+103.7%
年化收益−10.9%−16.9%+6.8%
最大回撤−85.2%−91.2%−42.1%
回撤是否恢复至今没有至今没有2020 年 7 月恢复

单笔平均 +0.85% 的规则,真金白银地做,10 年亏掉七成。 同期什么都不想、等额买入全部股票,翻了一倍。

为什么差这么多

因为信号扎堆。连跌 5 天的信号平时每天几十个,大跌之后一天能冒出几千个。大跌后往往有反弹,这几千笔交易收益很高,把「平均每笔」拉了上去。

但真实账户在这种日子里没法多投钱:那一天的几千只股票,只能分到那一份资金。按「每天」而不是「每笔」平均,这条规则的平均收益是 −0.13%,不是 +0.85%。

信号扎堆时,单笔平均+0.85%变成按日平均−0.13%。
信号扎堆时,单笔平均+0.85%变成按日平均−0.13%。

2024 年最典型:这一年有 36,547 笔信号,平均每笔赚 2.67%,一年就占了 10 年全部单笔收益加总的一半。

每年的组合收益

年份连跌 5 天组合全市场等权
2016−23.4%+1.0%
2017−25.5%−3.0%
2018−58.4%−28.7%
2019−15.5%+32.5%
2020−11.5%+21.8%
2021+6.7%+26.1%
2022−1.5%−10.1%
2023+4.4%+8.7%
2024+26.9%+4.6%
2025+32.3%+40.0%
2026−11.5%+0.1%
11年里连跌5天组合只有2022年和2024年跑赢全市场等权。
11年里连跌5天组合只有2022年和2024年跑赢全市场等权。

11 年里只有 2022 年和 2024 年跑赢了全市场。

另外两条规则

我们又试了两条常见规则,结果更差:

规则交易笔数单笔平均胜率10 年组合(不扣成本)
连跌 5 天,持有 5 天227,698+0.85%51.9%−71.1%
放量 2 倍且涨超 5%,持有 5 天189,902−0.65%41.6%−97.3%
收盘创 60 日新高,持有 20 天464,940−0.14%43.0%−80.4%

「放量大涨追进去」这种常见做法,平均每笔亏 0.65%,组合 10 年几乎亏光。


三、只看收益率会漏掉的五件事

从上面的实验可以总结出,看一份回测结果至少要问五个问题:

要问的问题为什么本课的例子
是单笔平均,还是组合收益?单笔平均忽略了资金有限、信号扎堆+0.85% 对比 −71%
扣成本了吗?A 股每笔来回有佣金、印花税、滑点0.85% 变 0.70%
跑赢大盘了吗?牛市里买什么都赚超额只有 +0.01%
收益集中在少数时候吗?靠一两次行情赚的钱很难复制2024 年贡献一半;去掉最赚的 1% 交易,平均从 0.85% 降到 0.54%
中间最多亏过多少?亏 85% 的账户,没人能坚持到最后最大回撤 −85%,10 年没恢复

还有一点:收益率要看年化。 「累计赚了 100%」如果用了 10 年,年化只有 7%;如果用了 2 年,年化是 41%。下一课会讲年化收益、最大回撤、夏普比率这些指标怎么算、怎么看。


四、常见误区

「回测收益高,实盘就能赚」
回测只是过去的表现。而且像本课这样,换一种算法,结论可能从赚钱变成亏钱。

「胜率过半就是好策略」
连跌 5 天胜率 51.9%,组合依然亏 71%。

「交易成本很小,可以忽略」
单笔 0.15% 看起来不大,但持有 5 天的策略一年要交易约 50 次,一年就是 7.5% 的成本。

「回测里出现过的赚钱规则都能用」
如果试了 100 条规则,挑出最好的那条,它很可能只是运气好。这叫过拟合,第 56 课专门讲。


在青柠中实操

  1. 1. 在策略编辑里写一条规则,比如「连续下跌 5 天买入,持有 5 天卖出」。
  2. 2. 先用单只股票做一次回测,在可视化回测里逐笔看清每次买卖发生在哪里。
  3. 3. 再用批量回测在全市场跑同一条规则,看全市场的胜率和平均收益,和单只股票的结果对比。

青柠的回测按复权价格计算,次日开盘成交,一字涨停买不进。想直接看已经回测过的策略,可以去青柠策略市场:

策略库回测 · 沪深A股 · 近 1 年日 K · 默认参数 更新于 2026-09-11 19:02 · 每日重算
# 策略 类型 年化收益 夏普 最大回撤 胜率 评级
01 左侧趋势抄底·急跌收阳 趋势 +1.3% 0.85 16.4% 83% A 导入复现
02 MACD金叉死叉 趋势 +0.9% 0.08 20.8% 35% PRO 导入复现
03 RSI超买超卖 震荡 +0.8% 0.23 30.8% 45% PRO 导入复现

下一课讲怎么读懂一份完整的回测报告:年化收益、最大回撤、夏普比率、胜率、盈亏比。


常见问题

回测需要多长的历史数据?
至少要覆盖一轮牛市和一轮熊市。A 股 2016 年以来有 2018 年的熊市、2019–2021 年的结构性牛市,10 年左右的数据比较合适。

回测用每天的收盘价成交可以吗?
不行。信号是收盘后才确定的,当天收盘时你还不知道信号是否成立。用第二天开盘价成交更接近实际。

为什么组合回测要「把资金分成 5 份」?
规则是持有 5 天,每天都可能有新信号。资金分成 5 份,每天用 1 份,5 天后正好轮回来,这样每天都有钱可用,也不会超出总资金。这是一种简化,实际回测引擎会按可用资金逐笔计算。

同一个回测,青柠和别的软件结果不一样?
很常见。复权方式、成交价格、成本、涨跌停处理都会影响结果。看回测报告时先确认这些口径。


口径说明

股票池为全 A 股,排除 ST(按当前名称)和北交所,价格后复权。信号日收盘满足条件,次日开盘买入,持有 N 日后收盘卖出;次日一字涨停视为买不进并剔除。信号区间 2016-01-04 至 2026-09-24(持有 20 天的规则至 2026-09-03),组合区间 2016-01-04 至 2026-10-09。成本按每笔来回 0.15% 计算。超额收益为单笔收益减去同日全部股票同口径收益的平均。组合按持有天数把资金分为 N 份,每天用 1 份等额买入当天全部信号,无信号时该份资金空仓;未模拟跌停卖不出和容量限制。全市场等权为全部股票每日收益的等权平均。数据由青柠量化回测数据库计算。历史统计不代表未来表现,不构成投资建议。

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

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

免费下载客户端

写下你的看法

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