← 返回首页

我的策略回测年化60%,实盘第一个月亏了15%:聊聊回测报告里最常见的7个谎言

💤 小Q · 2026-09-04 · 量化策略

一个惨痛的开场

先自曝家丑。 今年6月,我写了一个动量+基本面过滤的选股策略,回测结果漂亮得让我想请全公司喝奶茶:年化60%,最大回撤8%,夏普比率2.3。我当时看着那条几乎45度角往上走的净值曲线,心想:打工是不可能打工的,财务自由就在眼前。 实盘第一个月,亏了15%。 奶茶没喝成,我倒是要了一份冰美式,坐在电脑前复盘了一整晚。结论是:策略本身不算差,但我的回测从头到尾都在骗我。而且骗我的不是什么高深的东西,是7个每个量化新手都会踩的坑。 今天把这7个谎言全部摊开,配上我踩坑的真实数据。如果你也在写策略,建议逐条对照——我敢打赌,你的回测报告里至少藏着其中3个。

谎言一:幸存者偏差——你的股票池是「鬼魂名单」

这是最隐蔽也最致命的一个。 我6月那次回测,用的股票池是从当前的沪深300成分股列表拿的。听起来没什么问题对吧?问题大了。今天的沪深300成分股,是过去几年层层筛选后「活下来」的赢家。你拿一张2026年的赢家名单去回测2020年的行情,等于开了上帝视角。 我后来重新跑了一遍:同一个策略,用「时点成分股」(也就是每个回测日都用当天的真实成分股)来跑,年化收益从60%直接掉到31%。近一半的收益,是幽灵贡献的。 更狠的是退市股。A股这几年退市常态化,2024、2025两年退了上百家。如果你的回测里根本没有这些股票,那你永远避开了所有退市雷——但实盘里,你踩雷的概率一分都不会少。 自查方法:问自己一个问题——「我的股票池里,有没有2023年还在、2025年退市的公司?」如果没有,别看了,回测作废。

谎言二:前视偏差——你在用未来的数据做过去的决定

经典案例:用年报数据选股。 A股年报的披露截止日期是4月30日,但很多公司一二月份就发了业绩预告。我最初的回测里,2023年的策略在2024年1月1日就开始用2023年报的ROE数据做筛选了——可那时候年报还没出啊!这就是「未来函数」,策略偷看了答案。 更隐蔽的是财务数据的修正。很多数据接口给你的财报数字是最新修正版,不是当时披露的原始版。公司重述财报、会计差错调整,你的历史数据也跟着变了,但实盘的你可没这个待遇。 修复后我的策略年化又掉了6个百分点。加上幸存者偏差那一刀,60%已经变成25%了。心疼吗?心疼。但这就是真相。 自查方法:对每个输入因子问一句——「这个数据,在那个历史时点,一个普通人真的能拿到吗?」拿不到,就是作弊。

谎言三:成交价幻觉——你买的从来不是收盘价

我的回测默认所有交易都按当天收盘价成交。天真了。 实盘里,收盘价附近挂单,你能成交的量有限;小盘股你想买50万,可能自己就把价格买上去1-2%。这就是冲击成本。再加上滑点——下单瞬间价格的跳动——每次交易的真实成本比回测里高得多。 我后来给回测加了最保守的假设:买入价+0.3%,卖出价-0.3%。就这一行代码,年化再砍4个点。策略换手率越高,这一刀越疼——这也是为什么高频策略在回测里遍地黄金,一上实盘就集体装死。

谎言四:手续费小气鬼——0.025%和0.1%差的是人生

佣金、印花税、过户费。卖出还有0.05%的印花税(2023年调过一次,但一直存在)。很多回测框架默认手续费是万2.5,但那是佣金的上限优惠价,很多人实际费率没那么低,而且没人把印花税和过户费算全。 我算过一笔账:我的策略年换手率12倍,手续费从万2.5改成千1.3(佣金+印花税+过户费的保守估计),一年下来收益差了11%。11%啊朋友们,够买多少杯奶茶了。

谎言五:过拟合——你不是在回测,是在「背答案」

调参数调到年化最高,这件事的本质是什么?是你把策略 « 适配 » 到了历史上的每一个噪音。历史数据里的噪音,未来不会再重复,但你对参数的迷信会。 我的判断标准现在很简单:一个策略如果参数改动±20%(比如20日均线改成16日或24日),年化收益就腰斩,那这个策略就是过拟合产物,直接扔。真正稳健的策略,参数在合理区间内平移,表现是平滑变化的,不是悬崖峭壁。 另外,样本外测试是底线:用2016-2022的数据开发,2023-2025的数据验证。样本外表现打个七折才是你对它的合理预期。

谎言六:回撤测量的盲人摸象——只看最大回撤是自欺欺人

回测报告写着「最大回撤8%」,看起来很温柔。但最大回撤只是一个数字,它不告诉你:回撤持续了多久?修复用了多少天?回撤期间的日度波动有多折磨人? 我那个策略,回测最大回撤8%只出现了一次,但回撤超过5%的次数一年有11次,平均每次持续23天。实盘里连续三周看着账户变绿,你还记得「回测最大回撤只有8%」吗?你只记得割肉的按钮在哪里。 所以现在我评估策略,除了最大回撤,还看两个指标:最长回撤持续天数Calmar比率(年化收益÷最大回撤)。后者低于1的策略,我基本不考虑——赚得慢、亏得快,这买卖不划算。

谎言七:市场状态Single Story——牛市里测出来的英雄,熊市里全是狗熊

我的60%策略,回测区间主要覆盖了2024年底到2025年上半年的修复行情。换句话说,我是在牛市里测试了一个「牛市策略」。 后来我把2022-2023的熊市数据喂进去:同期最大回撤27%,年化-3%。同一个策略,换一段行情判若两人。 这就是为什么我一直强调市场状态检测的重要性——任何策略都有它舒服的市场状态,你需要知道你的策略在什么状态下会翻车,并且在翻车场景出现前主动降仓。策略没有全天候的,但你可以做一个知道「今天天气不适合出门」的司机。

复盘:60%是怎么一步步变成22%的

把七个坑全部修复后,我的策略真实预期收益是这样的:
  • 原始回测:年化60%(鬼故事)
  • 修复幸存者偏差:→ 31%
  • 修复前视偏差:→ 25%
  • 加入滑点和真实手续费:→ 21%
  • 样本外验证打七折:→ 约15%
  • 从60%到15%,缩水75%。但这个15%是能信的15%。 实盘三个月,这个策略跑了年化17%左右,和修正后的回测预期基本吻合。亏吗?和当初幻想的财务自由比,亏。但和大多数回测年化60%、实盘亏15%的人比,我算是花了学费买到了真东西。

    写在最后

    量化交易最讽刺的地方在于:它用代码消灭了人性弱点,但写代码的人本身就带着人性弱点。我们渴望暴富,于是回测给了我们年化60%;我们害怕自己的策略不行,于是无意识地忽略每一个不利于它的假设。 回测不是用来证明你聪明的,是用来证伪你天真的。 下次你看到一条漂亮的净值曲线,不管是自己跑的还是别人晒的,先默念一遍这七个谎言。如果那条曲线还站着,再考虑相信它。 (本文数据来自我自己的回测框架,参数细节就不贴了,免得又有人拿去无脑复刻——毕竟你们连我的滑点假设都没看全。)
    量化策略回测陷阱幸存者偏差前视偏差Python实战A股小Q风格2026年9月