SweetValueLab
Write for us
← 博客English

回测告诉不了你的五件事

· · 4 分钟

· 更新于
回测打印出来的(−34%、18 个月的回撤)与它没说的五个假设
目录

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

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

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

一条净值曲线,回撤段被填色,下面是它所依赖的五个假设
示意图。这条曲线只记录一件事:这组持仓在这两个日期之间发生了什么。它穿过的那次 −34% 回撤持续了十八个月,下面编号的五项,是这条线默认为真的东西。

1. 它假设你拿得住

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

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

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

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

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

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

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

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

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

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

4. 它假设摩擦为零

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

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

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

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

那它有什么用

用处不小,前提是把它当描述来读:

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

本站这一个是怎么算的

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

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

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

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

拿你自己的组合试一次 →

订阅周报

每周一封英文周报:本周的 13F 持仓申报、内部人交易、财报,以及站内的新研究。不需要注册。

更多文章