1. 回测与实盘的鸿沟:为什么回测赚钱实盘亏?

说实话,这个问题我几乎每周都会被问到。

「老师,我的策略回测曲线漂亮得像教科书,年化50%,最大回撤不到5%。结果一上实盘,三天亏了8%。」

嗯,这太典型了。我自己入行头两年,至少踩过七八次这样的坑。今天咱们就把这个「回测赚钱实盘亏」的谜底彻底揭开。

1.1 回测不是真相,是「后视镜」

回测的本质是什么?

说白了,就是用历史数据验证你的交易逻辑。但历史数据有个致命问题——它已经发生了。你拿着今天的策略去回测昨天的行情,就像拿着答案去对题目,当然全对。

我见过最夸张的一个案例:有人用2015年股灾数据做回测,策略在暴跌中赚了3倍。他兴奋地实盘,结果2016年熔断行情一来,策略直接崩了。为什么?因为2015年的暴跌是「流动性危机」,2016年是「情绪性踩踏」,看似都是跌,但微观结构完全不同。

核心认知: 回测验证的是「历史相关性」,不是「未来因果性」。你看到的漂亮曲线,可能只是数据挖掘的巧合。

1.2 六大鸿沟,一个比一个致命

我根据自己的实战经验,把回测到实盘的坑归纳为六类。你想想看,你的策略中了几个?

鸿沟类型 回测中的表现 实盘中的真相 杀伤力
滑点与手续费 按收盘价成交,手续费忽略 实际成交价差0.1%,高频策略直接废掉 ★★★★★
流动性陷阱 假设无限流动性,想买就买 小盘股一买就拉涨停,一卖就砸跌停 ★★★★★
过拟合 参数优化到极致,曲线完美 换个时间段就失效,参数敏感 ★★★★☆
幸存者偏差 只用了当前还在的股票 退市的、ST的都没算进去 ★★★★☆
未来函数 无意中用了未来数据 比如用当天收盘价做开盘信号 ★★★★★
心理与执行 机器自动运行,毫无情绪 实盘时手抖、犹豫、提前平仓 ★★★☆☆

1.3 滑点:回测里最隐蔽的杀手

我刚开始做高频策略时,回测年化收益120%。当时觉得自己要发财了。

结果实盘第一天,亏了2%。我查了半天,发现是滑点问题。回测里我假设按卖一价成交,但实际交易时,我的订单量稍微大一点,就把卖一吃掉了,成交在卖二、卖三。一来一回,每笔交易多亏0.3%。

高频策略一天交易几十次,这0.3%的滑点累积起来,就是毁灭性的。

我的建议: 回测时至少按「对手盘价格+0.1%」计算滑点。如果是小市值股票,滑点要设到0.3%甚至更高。别心疼那点收益,这是在给你的策略买保险。

1.4 过拟合:曲线越漂亮,实盘越危险

你见过那种回测曲线吗?

净值曲线45度角向上,最大回撤几乎看不见,夏普比率3.0以上。很多新手看到这种曲线就兴奋,觉得找到了圣杯。

但我的经验是:回测曲线越完美,过拟合的概率越高。

为什么?因为市场本质上是随机的。一个真正有效的策略,它的回测曲线应该是「有波折的上升」,而不是「平滑的直线」。平滑意味着你用了太多参数去拟合历史数据,把噪音当成了信号。

避坑指南: 我曾经花三个月优化一个均线策略,把参数从5日到120日全部遍历,找到了一个「最优组合」。结果实盘一周就亏了10%。后来我才明白,那个最优组合只是恰好拟合了那段时间的行情,换个时间段就完全失效。

1.5 幸存者偏差:你看到的都是活下来的

这个问题在A股尤其严重。

很多人在回测时,直接用了当前沪深300的成分股。但你想过没有?十年前的那些成分股,有多少已经跌成渣了?有多少已经退市了?

我做过一个实验:用同样的策略,一组用「当前成分股」回测,另一组用「历史成分股」回测。结果前者的年化收益是后者的2.3倍。为什么?因为当前成分股都是经过市场筛选的「幸存者」,它们本身就比历史成分股表现好。

关键点: 回测时一定要用「当时存在的股票」,而不是「现在存在的股票」。否则你的策略可能只是在赌「好公司能一直好下去」,而不是真正的交易逻辑。

1.6 未来函数:最愚蠢也最常见的错误

嗯,这个错误我自己也犯过。

有一次我写了一个策略,信号是「如果今天收盘价突破20日均线,明天开盘买入」。回测结果非常好,年化40%。

但后来我发现代码里有个bug:我用的「今天收盘价」实际上是「明天收盘价」——因为数据索引搞错了。也就是说,我的策略是用未来的数据去预测过去,当然百发百中。

这种错误在回测中非常隐蔽,尤其是当你用pandas做数据对齐时,一不小心就会引入未来数据。

检查方法: 在回测代码中加入一行断言:assert (signal.index[-1] < data.index[-1]),确保信号时间永远早于数据时间。这个小技巧救了我好几次。

1.7 心理鸿沟:人不是机器

最后这个坑,说实话,最难克服。

回测时,你看着曲线下跌,心里毫无波澜,因为你知道它最终会涨回来。但实盘不一样。当你的账户真金白银在亏,当浮亏达到10%、20%,你的手会抖,你的心会慌。

我见过太多人,策略回测时严格执行,实盘时却提前平仓、追涨杀跌、甚至手动干预。结果就是:回测赚的钱,实盘全亏回去了。

我的教训: 实盘前,先用模拟盘跑三个月。不是为了验证策略,而是为了验证你自己的执行力。如果模拟盘都做不到严格执行,那实盘更不可能。

1.8 核心逻辑图:回测到实盘的鸿沟

下面这张图,是我自己总结的「回测到实盘鸿沟全景图」。你可以把它当成一个检查清单,每次迁移策略前,逐项核对。

回测到实盘鸿沟全景图 回测世界 实盘世界 六大鸿沟 ① 滑点与手续费 回测:按收盘价成交,手续费忽略 实盘:实际成交价差0.1%~0.5% ② 流动性陷阱 回测:假设无限流动性 实盘:小盘股一买就拉涨停 ③ 过拟合 回测:参数优化到极致,曲线完美 实盘:换个时间段就失效 ④ 幸存者偏差 回测:只用当前还在的股票 实盘:退市的、ST的都没算 ⑤ 未来函数 回测:无意中用了未来数据 实盘:用未来预测过去,当然准 ⑥ 心理与执行 回测:机器自动运行,毫无情绪 实盘:手抖、犹豫、提前平仓

1.9 小结:别把回测当圣杯

回测是一个工具,不是答案。它告诉你「过去这样能赚钱」,但市场不会重复过去。

我个人习惯是:回测只用来排除明显无效的策略,而不是用来选择「最优策略」。如果一个策略在回测中表现平平,但逻辑清晰、参数稳定,我反而更愿意实盘试试。

记住一句话:回测是筛选器,实盘是试金石。

行动清单:
1. 回测时加入0.1%~0.3%的滑点
2. 用历史成分股,而不是当前成分股
3. 检查代码中是否有未来函数
4. 用不同时间段做交叉验证
5. 实盘前先跑三个月模拟盘
专注资料整理