开通会员
首页›量化基础›正文

什么是回测?量化策略为什么一定要先回测

什么是回测?量化交易回测是什么意思

福
福瑞
10月6日1 阅读
什么是回测


如果你想到一个交易方法,比如:

“股价站上20日均线就买入,跌破20日均线就卖出。”

这个方法听起来很简单。

但问题是:它真的能赚钱吗?

你不能拿真钱先试几年,再决定这个方法好不好。

所以量化交易里有一个非常重要的步骤,叫做:

回测。

简单来说,回测就是把你的交易规则放到过去的历史数据里跑一遍,看看如果当时真的按照这个方法交易,最后会发生什么。


一、回测到底在做什么

假设现在是2026年。

你设计了一个策略:

  • 股价突破过去20天最高价时买入;
  • 跌破10日均线时卖出;
  • 每次只买一只股票;
  • 每次投入10万元。

你可以把这套规则放到过去10年的历史行情里。

程序会按照每天真实出现过的价格,一天一天往前跑。

比如:

2018年3月5日,满足买入条件。

程序记录一次买入。

2018年4月2日,满足卖出条件。

程序再记录一次卖出。

然后继续往后跑。

直到把10年的数据全部跑完。

最后,你可能得到这样一份结果:

初始资金:10万元

最终资金:18万元

累计收益:80%

最大回撤:22%

胜率:46%

一共交易:137次

这就是一次最基础的回测。

它回答的其实只有一个问题:

如果过去真的按照这套规则交易,会发生什么?

注意,是“过去会发生什么”。

不是“未来一定会发生什么”。

这两个概念一定要分清楚。


二、为什么做量化策略之前一定要回测

很多交易策略听起来都很有道理。

比如:

“跌得多了就会反弹。”

“强者恒强。”

“突破新高说明趋势来了。”

“低估值股票长期收益更高。”

每一句话听上去都可以讲出一套逻辑。

但市场里最不缺的就是“听起来有道理”。

真正的问题是:

历史数据支不支持这个说法?

举个很简单的例子。

有人告诉你:

每次股价连续下跌5天,第6天买入,持有3天,大概率赚钱。

如果没有回测,这只是一个观点。

如果你把它放到过去15年的全部股票数据里测试,发现:

测试了20万次交易机会,

平均收益只有0.03%,

再扣掉手续费和滑点以后,变成负收益。

那这个策略基本就没有继续研究的必要了。

回测最大的价值,就是帮你把:

“我觉得有效”

变成:

“历史数据到底怎么说”。

这也是量化交易和纯主观判断之间非常重要的区别。


三、回测不是为了证明自己是对的

这是很多刚接触量化的人最容易犯的错误。

有了一个策略之后,他们会不断修改参数。

比如最开始测试的是:

20日均线上穿60日均线买入。

发现效果一般。

于是改成:

18日和55日。

还是一般。

继续改:

17日和53日。

收益突然很好。

于是得出结论:

“17日均线和53日均线是最佳参数。”

这时候就要小心了。

因为你有可能不是发现了市场规律,而只是不断修改参数,直到碰巧找到了一组最适合过去数据的数字。

这有点像做一张已经知道答案的试卷。

你不断改答案,最后当然可以考100分。

但换一张新试卷,可能马上就不及格。

这就是量化交易里非常重要的一个问题:

过拟合。

所以真正好的回测,不是为了证明你的策略有多厉害。

而是要尽可能找出:

这个策略为什么可能失效。


四、一个策略回测赚钱,就能直接实盘吗

不能。

这是回测里最重要的一句话之一。

假设一个策略过去10年的回测结果是:

年化收益25%,

最大回撤12%,

夏普比率1.8。

看起来非常漂亮。

但真实交易时,还会遇到很多回测没有完全体现的问题。

例如:

1. 手续费

交易次数越多,成本越高。

如果一个策略每天交易几十次,看起来每次赚一点点,手续费可能就把利润吃掉了。

2. 滑点

回测里可能显示:

你在10.00元买入。

但现实中你下单时,真正成交的价格可能是10.02元。

这2分钱,就是滑点的一部分。

3. 流动性

有些股票每天成交量很小。

回测可能默认你能一次买入1000万元。

现实中却可能根本没有那么多卖单给你成交。

4. 数据问题

如果历史数据本身有错误,回测结果也会跟着错。

比如:

股票复权处理错误;

退市股票被删除;

停牌数据没有正确处理。

这些问题都可能让策略看起来比实际更好。

所以一个完整的量化研究流程,一般不是:

策略 → 回测 → 实盘

而更接近:

想法 → 回测 → 检查数据 → 检查交易成本 → 样本外测试 → 模拟交易 → 小资金实盘

回测只是其中非常重要的一步,但不是最后一步。


五、做回测时最应该看什么

很多新手看到回测报告,第一眼只看一个数字:

收益率。

比如:

策略A:年化30%

策略B:年化18%

于是马上得出结论:

策略A更好。

其实远远不够。

一个最基础的回测,至少要看下面几个指标:

收益率

赚了多少钱。

最大回撤

最差的时候亏了多少。

夏普比率

为了获得这些收益,你承担了多大的波动。

胜率

一共交易这么多次,有多少次是赚钱的。

盈亏比

赚钱的时候平均赚多少,亏钱的时候平均亏多少。

交易次数

结果是不是只靠少数几次交易撑起来的。

交易成本

手续费和滑点有没有算进去。

这些指标组合起来,才比较接近一个策略真实的样子。

所以后面我们会分别讲:

什么是收益率;

什么是最大回撤;

什么是夏普比率;

什么是胜率;

什么是盈亏比。

当这些概念看懂以后,你基本就能读懂大部分量化策略的回测报告了。


六、举一个最简单的回测例子

假设我们有一个非常简单的策略:

当沪深300指数站上200日均线时持有,跌破200日均线时空仓。

初始资金10万元。

我们把它放到过去15年的数据里。

程序会做几件事:

第一步,读取每天的沪深300指数价格。

第二步,计算每天的200日均线。

第三步,判断当天指数是否高于均线。

第四步,根据规则决定持有还是空仓。

第五步,计算每天资金的变化。

最后画出一条资金曲线。

这样我们就能看到:

这套策略过去15年赚了多少钱;

在哪一年亏得最多;

什么时候表现最好;

什么时候表现最差;

有没有连续几年跑输市场。

这时候你看到的,已经不再是一句:

“长期均线可以过滤熊市。”

而是一整套可以检查的数据结果。

这就是回测的意义。


七、回测最容易给人一种错觉

回测图经常非常漂亮。

尤其是一条从左下角慢慢涨到右上角的资金曲线,很容易让人产生一种感觉:

找到赚钱机器了。

但要记住:

回测研究的是过去。

而交易发生在未来。

过去有效的规律,未来可能继续有效,也可能变弱,甚至完全消失。

所以一份好的回测报告真正应该告诉你的,不只是:

这个策略过去赚了多少钱。

还应该告诉你:

它在哪些环境下赚钱;

在哪些环境下亏钱;

最差的时候会怎样;

如果参数稍微变化,结果还是否成立;

如果换一段历史数据,结果是否还成立。

这些问题,往往比“年化收益是多少”更加重要。


最后

可以把回测理解成量化交易里的“历史模拟考试”。

你先把自己的交易规则放到过去的市场里跑一遍。

如果连过去的数据都经不起检验,就没有必要急着拿真钱交易。

但如果回测结果很好,也不能说明未来一定赚钱。

回测真正的作用,是帮助我们筛掉明显无效的想法,同时更清楚地了解一个策略可能赚多少钱,又可能承担多大的风险。

所以以后当你看到一个量化策略,第一件事不要问:

“这个策略赚钱吗?”

更应该先问:

“它是怎么回测的?”

因为很多时候,真正决定一份回测报告是否可信的,并不是最后那条漂亮的收益曲线,而是它背后的测试方法。

# 基础概念
//参与评论
?
还没有评论,来说第一句