---
title: "回测告诉不了你的五件事"
description: "一条净值曲线只答得准一个问题。剩下五件事它默认替你做了假设，而读的人经常以为它说过。"
date: 2026-09-06
updated: 2026-09-19
tags: [回测, 基础]
author: "Allen Yan"
image: https://sweetvaluelab.com/blog/img/157f857380da6e79.png
lang: zh-Hans
canonical: https://sweetvaluelab.com/blog/zh/what-a-backtest-cannot-tell-you
---

回测能准确回答一个问题：这一组固定的持仓，在一段已经走完的时间里，中途最多跌到哪儿，最后剩下多少。这个问题它答得很好。

麻烦在后面。数字出来，脑子里会自动接上第二句：这个策略行。接着是第三句：以后也行。再接着是第四句：这种跌法我扛得住。这三句话都不在回测的输出里。

下面五条，是那条曲线替你默认掉的东西。

![一条净值曲线，回撤段被填色，下面是它所依赖的五个假设](https://sweetvaluelab.com/blog/img/4ae70ad1f81258de.svg "示意图。这条曲线只记录一件事：这组持仓在这两个日期之间发生了什么。它穿过的那次 −34% 回撤持续了十八个月，下面编号的五项，是这条线默认为真的东西。")

## 1. 它假设你拿得住

任何回测都会穿过回撤，并假设你也穿过去了：眼看三分之一的钱在十八个月里没了，同时所有人都在告诉你这次不一样。净值曲线上没有一个字段记录你割肉的那个月，而那个月通常就是纸面结果和你实际结果之间的全部差距。

所以最大回撤的深度要看，长度更要看。标普 500 从 2007 年 10 月的高点跌下去，再回到同一个点位，用了五年半。年化收益率不会告诉你这件事，它只有一个数字。

## 2. 它假设那段窗口有代表性

截止到今天的十年，包含的是一组特定的利率水平和一次特定的风格轮动。把同一组持仓放回 2000 到 2010 年，不少策略会直接翻面。

对一个漂亮结果的诚实读法是"它熬过了这一种环境"。换一种环境会怎样，这个窗口里没有答案。

防身办法很便宜：同一个组合，换几个起点和几个长度，各跑一遍。结论只在其中一个窗口成立的话，那说的就是那段行情。

## 3. 它假设你当年挑标的时没有后见之明

这条最要命，而且在输出里完全看不见。挑出今天的赢家再往回测，选择本身已经包含了答案。

"这十只股票过去十年涨得好"是真的，也是没用的。"一条我 2015 年就能写清楚的规则会挑中它们"才是可以检验的说法。两句话之间隔着整个问题。

基金也一样。能拿来回测的都是活下来的那些，平庸的早就清盘或者合并了，业绩记录跟着一起消失。

## 4. 它假设摩擦为零

这里的回测都是税前毛口径：不算佣金，不算买卖价差，不扣分红预提税，再平衡产生的资本利得税也不算。在应税账户里，光税一项就能吃掉收息策略相当一部分的优势，而且每年都来，不是最后才结账。

换手越高，纸面数字对策略越是美化。买入持有几乎不损失什么。每月再平衡损失可观。

## 5. 它假设那个时点不是运气

起止日期本身就是杠杆。把一个十年窗口跨着一次崩盘挪动半年，排在前面的和被它打败的可能直接换位。一个依赖特定起点的结论，说的就是那个起点的事。

## 那它有什么用

用处不小，前提是把它当描述来读：

- **量出你正在签下的风险。** 最大回撤、它持续多久、波动率，这几个数跨环境的稳定性远高于收益率。
- **比较结构。** [SPY 对比 QQQ](https://sweetvaluelab.com/tools/portfolio-backtest/compare/spy-vs-qqq) 问的是集中度和行业权重，也就是[市场宽度](https://sweetvaluelab.com/blog/zh/how-to-read-market-breadth)每天在数的那件事，两边都是在窗口开始之前就写好的规则。
- **看清分红贡献了多少。** 取现和再投入之间的差别是关于过去的算术（见[总回报 vs 价格回报](https://sweetvaluelab.com/blog/zh/total-return-vs-price-return)）。
- **否掉一个想法。** 样本内就失败的策略，样本外不会被救回来。

## 本站这一个是怎么算的

[组合回测](https://sweetvaluelab.com/tools/portfolio-backtest)算出来的全是历史：复权日线价格，加上真实发生过的分红，中间没有模型。组合每个交易日都按市价重估一次，一年 252 个观测，按月末采样只有 12 个。所以回撤是月末之间真实走出来的那个，两个月末之差看不见它。每一笔分红按除息日当天的现金处理，金额用与之匹配的复权每股金额。它从不使用复权后含息的价格序列，因为那会把收入算两遍。开启再投入时，分红按当天收盘价买入零碎股；关掉时，现金就闲置。

权重只决定开仓那一笔交易，之后就随市值漂移，这也是买入并持有的人真实经历的。不再平衡，不追加，不算税，不算佣金。窗口取所有持仓价格历史的交集，某个持仓的历史短于你要求的窗口时，工具会把它真正使用的起始日期明确显示出来。那种悄无声息、又总是往好看方向偏的错误，通常就是从这里进来的。股息削减只在「每股年度总额」和「每次除息的平均金额」双双下降时才报出来，所以一笔只是跨了年度边界的付款不会被算成削减。

[FIRE 计算器](https://sweetvaluelab.com/tools/fire-calculator)是另一种东西。它是完全跑在你浏览器里的蒙特卡洛模拟：按月复利，每个月的收益围绕你选的均值独立抽样、年化波动率按 12 的平方根折算，支出按今天的钱表述、在模拟内部逐年通胀。

用它去搞清楚你当年要熬过什么。下一个十年押不押韵，是另一个问题。
