分类
绩效
难度
进阶
适用场景
EA 评估回测

复合年增长率(CAGR)

复合年增长率是把多年期收益按复利折算成年化后的数字,它把长短不一的回测结果拉到同一把尺子上,从而让两个在不同时间跨度上测试过的策略可以互相比较。

亦称:CAGR, 年化收益率, 年增长率

更新于

一句话讲清

如果账户每年都按同一个百分比增长,并且恰好停在它实际停下的位置,那个年度百分比会是多少?它是一个被抹平的平均值,而不是对策略真正经历过的任何某一年的描述。

为什么重要

在你知道它花了多长时间之前,总收益毫无意义,而回测几乎从来长度都不一样。CAGR 是让两个结果可比的那道换算,也正是这道换算,掩盖了两个端点之间的路径有多么颠簸。

  • 它把测试长度从比较中剔除。十年赚 100% 与三年赚 100% 是两种不同的产品,只有年化数字才说得清哪个是哪个。
  • 它天然与最大回撤配成一对。每年的收益除以最糟糕的下跌,是最粗糙的风险调整读法,而且两个数字必须来自同一个窗口。
  • 它能揭穿用短窗口做的营销。引用一段九个月测试里的百分比,等于引用一个年化之后通常会缩水的数字,因为那段行情好的日子被不到一年的时间除掉了。
  • 它假定有复利,而多数零售 EA 并不复利。固定手数的 EA 让余额沿直线增长,所以它的真实曲线和它的 CAGR 描述的是两个不同的账户。

如何计算

CAGR = (期末余额 ÷ 期初余额)^(1 ÷ 年数) − 1
期初余额
被测窗口第一根 K 线时的账户余额——也就是测试器里的初始入金,而不是第一笔盈利单之后的余额。
期末余额
同一窗口最后一笔平仓时的余额。未平仓头寸不计入;净值与余额是两回事,而 CAGR 按惯例取余额。
年数
该窗口经过的日历时间,写成小数。天数 ÷ 365.25 对任何实际用途都足够接近。

指数是样本真正覆盖的年数,包含小数部分:一次从 2019-01-01 跑到 2026-04-01 的运行是 7.25 年,不是 7 年。用整年数去算会把数字吹大。两个余额必须是同一币种,并且来自同一次运行;把回测接到前推记录上,得到的数字哪一边都描述不了。

多少算高、多少算低

  • 低于 5% 低于无风险利率所能给的——这份风险什么也没买到
  • 5–15% 不高,但若搭配一个浅回撤仍然站得住脚
  • 15–35% 一个成本贴近现实、可信的零售 EA 在按增长来定手数时会落到的区间
  • 35–80% 需要解释——检查手数、杠杆,以及这次测试是否复利
  • 高于 80% 几乎总是复利、曲线拟合,或者两者兼有。在前推测试重现之前,一律按未经证实处理

需要一起看的指标

单一数字无法描述一套策略。下列指标会改变这个数字的读法。

示例

一个 EA 在 10,000 美元的入金上接受测试,跑完时停在 18,000 美元。窗口正好五年。CAGR 要回答的问题是:怎样一个恒定的年度增速,会产生同样的期末余额。

期初余额
10,000 美元
期末余额
18,000 美元
总共 +80%——但在除以所花的时间之前,这个总数什么也说明不了。
窗口长度
5.00 年
CAGR
12.5%

同样这 8,000 美元的盈利若摊到十年,就是 6.1% 的 CAGR——利润分毫不差,描述的却是一个截然不同的策略。

计算 (18,000 ÷ 10,000)^(1 ÷ 5) − 1 = 1.8^0.2 − 1 = 0.125

结果 12.5% 的复合年增长率

怎么读这个数字

CAGR 是两个端点加一段时长的摘要。中间发生的一切都得从别的数字里读出来,所以永远不要单独引用它。

区间 含义
窗口不足一年 把不完整的一年年化,会把样本碰巧做到的任何事情放大。一段四个月的强势会被外推成策略从未维持住过的数字。
一到三年 可读,但很可能只覆盖了单一的市场状态。一旦另一种状态进入样本,就该预料到这个数字会移动。
五年以上,且已计入成本 值得引用的窗口。长到足以包含不止一种市场状态,也让成本诚实地累积起来。
引用时没有附上同一次运行的回撤 从构造上就是残缺的。30% 的 CAGR 配 15% 回撤,与 30% 的 CAGR 配 55% 回撤,不是可比的主张。
  • 在比较两个 EA 之前,先用 CAGR 除以最大回撤。这个比值回答的是每一单位痛苦买到了多少收益,而这是光看百分比做不到的。
  • 检查这次测试是否复利,并且留意误差偏向哪一边。固定手数的账户沿直线增长,于是在跨越多年的窗口上,复利公式反而落在朴素的年均数字之下而不是之上——在本站公开的十四次运行里,它十四次都更低。lattice-weave 在 7.16 年里赚了 99.4%,相当于每年入金的 13.9%,但 CAGR 只有 10.12%。这两个数字都不是账户真正经历过的某一年:手数恒定时,同样一笔以美元计的盈利,占小余额的比例要大于占已经变大的余额的比例。
  • 自己重算,而不是相信别人引用的数字。期初余额、期末余额和窗口长度只是三个数,算术只需要几秒钟,而且经常和标题对不上。
  • 负的 CAGR 在算术上完全成立,也值得一读。它告诉你账户是以怎样的复利速度被摧毁的,这比一句『回测亏钱了』有信息量得多。

mt5depot 的 EA 页面会写明被测窗口及其起止日期,并公开完整的成交流水,所以年化数字可以从源头重新推导,而不必从标题里拿。把十四个全部重算,得到的是 0.48% 到 32.08%,中位数 4.0%——有八个落在 5% 以下,恰好有一个够到上面 15–35% 的区间。那一个是在与其他运行相同的 10,000 USD 入金上、以 0.1 手同时开着二十四条腿的组合。这就使这个区间成了一句关于手数设定的陈述,而不是对策略的判决:百分比追踪的是同时开着多少仓,而不是优势本身的质量。请把这个区间与该次运行所用的入金与手数之比放在一起读,否则它衡量的是资金管理,而不是优势本身。

常见误区

把 CAGR 当成对明年的预测

它描述的是被抹平后的一条历史路径。一个由一个异常出色的年份加四个平淡年份堆出 20% CAGR 的策略,从来没有哪一年真的做到过 20%,而这个数字里也没有任何东西暗示它将会做到。

把短回测年化

把三个月放大成一年,会把优势和运气一起乘以四。这是让一个平庸结果摇身变成营销数字最常见的路径,而且只要窗口长度没有写在数字旁边,它就是隐形的。

拿复利的 CAGR 去和固定手数的结果比较

复利与固定手数会从完全相同的成交序列中产生不同的曲线。把一方的年化数字摆到另一方面前,奖励的是资金管理设置,而不是策略本身。

忽略这个数字是在多大的入金上算出来的

百分比只有相对于产生它的余额才有意义。同一个 EA 用同样的手数放在 1,000 美元的入金上,承担的相对风险是十倍,它的百分比收益也就不是同一个主张。

常见问题

MT5 的 EA 有多少 CAGR 算好?
在一个成本贴近现实的多年测试上,大致 15% 到 35% 对零售 EA 而言是可信的区间,前提是同一次运行的最大回撤要并列写出。高于 80% 的数字几乎总是来自复利、激进的手数设定或过度拟合的窗口,而不是来自可持续的优势。
MetaTrader 5 会给出 CAGR 吗?
不会。策略测试器会给出净利润总额、回撤和一组比率,但没有年化增长率。你需要自己用初始入金、最终余额和被测窗口的长度算出来。
为什么我的 EA 实际年收益低于回测的 CAGR?
通常是因为回测复利而实盘账户不复利,或者因为点差、佣金和滑点定得过于乐观。这两者都会压低期末余额,而公式里的指数会让哪怕很小的降幅也在年化数字上显现出来。
CAGR 和平均年收益率有什么区别?
平均值是把每年的收益相加再除以年数,因此忽略了结果出现的先后顺序。CAGR 是几何速率:它考虑到亏损 50% 需要盈利 100% 才能回本,所以当收益波动时,它总是低于算术平均。

相关文章