年复合增长率计算器

输入期初值与期末值,用几何平均算出真正的年化增速;也可以只给两个日期,按实际天数折算年数,处理跨闰年、不满整年的不规则区间。

年复合增长率20.11%
总涨幅150.00%
总倍数2.5000×
折算年数5.000000 年
结果区上方的数字是页面打开时的默认示例(期初 10000、期末 25000、5 年),点一次按钮后显示的才是按你输入算出的值。

提示:在任意输入框里按 Enter 就能直接计算;切换「计算口径」会自动重算;下方明细表默认 12 行,点「加载更多」每次追加 12 行。

逐年复利明细(按上面的 CAGR 从期初值往后推,第 0 行为期初)
年次年末价值(按同一 CAGR 复利)当年增长额累计涨幅
第 0 年10,000.000.000.00%
第 1 年12,011.242,011.2420.11%
第 2 年14,427.002,415.7544.27%
第 3 年17,328.622,901.6273.29%
第 4 年20,813.833,485.21108.14%
第 5 年25,000.004,186.17150.00%
第 6 年30,028.115,028.11200.28%
第 7 年36,067.506,039.39260.67%
第 8 年43,321.557,254.06333.22%
第 9 年52,034.588,713.02420.35%
第 10 年62,500.0010,465.42525.00%
第 11 年75,070.2812,570.28650.70%

使用方法

  1. 口径一,按年数。在「期初值 PV」填 10000、「期末值 FV」填 25000、「年数 n」填 5,这就是页面打开时的默认组合。年复合增长率计算器把这三个数换算成一个年化百分比,结果是 20.11%。
  2. 口径二,按日期区间。把「计算口径」切到「按日期区间」,起始日期填 2020-01-01、结束日期填 2025-01-01。这时年数不再由你填写,而是用两个日期之间的实际天数除以 365.25 折算出来:1827 天 ÷ 365.25 = 5.002053 年,对应的 CAGR 是 20.10%。不满整年、跨闰年、间隔不是 12 的倍数的情形都用这个口径。
  3. 点「计算年复合增长率」,或在任意输入框里按 Enter。结果区给出 CAGR、总涨幅、总倍数和实际参与运算的年数,另外附一行「总涨幅 ÷ 年数」的算术口径作对照。
  4. 下方「逐年复利明细」把算出的 CAGR 当作固定年增速,从期初值往后推 30 年。默认只渲染 12 行,点「加载更多」每次追加 12 行;点「导出 CSV」下载带 BOM 的表格文件,点「复制对照表」把整张表以制表符分隔的文本送进剪贴板,可以直接粘到 Excel 里分列。
  5. 点「载入示例」随时回到 10000 → 25000 / 5 年的默认组合。

这个年复合增长率计算器能解决什么问题

一是把「一共涨了多少」翻译成「每年平均涨了多少」。基金年报和产品宣传里常见「三年翻了 2.5 倍」这种说法,但它无法横比:三年 2.5 倍和五年 2.5 倍完全是两回事,换算成年化后才有统一标尺,20.11% 与 9.60% 一眼能比出高低。

二是识破算术平均造成的错觉。一个项目第一年涨 50%、第二年跌 50%,加法平均是 0%,听起来「没赚没亏」,实际 10000 元只剩 7500 元;真值是几何平均 (1.5 × 0.5)(1 ÷ 2) − 1 = −13.40%。凡把各年涨幅相加再除以年数的算法都是错的。

三是处理不规则的时间间隔。实际业务里的期初和期末很少刚好隔满一年:股权退出日、基金成立日、项目验收日都可能落在年中间。本页用实际天数除以 365.25 得到年数,再开相应次方根,避免「按整年硬凑」带来的偏差。

四是反推目标可达性。想知道「五年把 1 万做到 10 万要多高的年化」,把 FV 改成 100000,得到 58.49%,拿去对照自己的投资假设比拍脑袋靠谱。

本页不做这些事:不处理定投、分批买入这类多次现金流(那种情形要用内部收益率 IRR,不能用 CAGR);不把通胀和汇率折算进去,所以算出来的是名义增速;也不判断这条增长曲线是否可持续。想看清不同复利频率下的终值金额,用页面底部的「未来价值主张计算器」;想把名义增速换成购买力口径,用「通货膨胀计算器」。

计算原理:几何平均、n 次方根与 ACT/365.25

公式只有一行:CAGR = (FV ÷ PV)(1 ÷ n) − 1。代码里对应 Math.pow(fv / pv, 1 / years) - 1。这个式子就是几何平均的标准化写法:把 n 个增长期的总倍数开 n 次方根,再减 1,得到「如果每年都按同一个比率增长,这个比率是多少」。

为什么指数是 1 ÷ n,而不是 1 ÷ (n − 1)。因为 n 表示期初到期末之间经历了几个增长期。从 2020 年初到 2025 年初正好走完 5 个完整年度,中间有 5 次增长,所以开 5 次方根。写成 1 ÷ (n − 1) 是常见笔误,它算的其实是「增长率的标准差自由度」那一套,与 CAGR 无关。

为什么必须用几何平均。资产价值按乘法链式变化:第二年的起点是第一年的终点,所以倍数要相乘(1.5 × 0.5 = 0.75)而不是相加,要还原每年的代表倍数就得开方。算术平均只对加法结构成立,用在乘法结构上会系统性高估收益,波动越大高估越严重。

日期口径为什么要除以 365.25。回归年的平均长度是 365.2422 天,取 365.25 是金融业沿用多年的近似值,通常写作 ACT/365.25。不用 365 的理由:跨闰年时用 365 会把同一段时间在不同起止年份算成不同的年数,365.25 能让「四年一闰」的周期自洽。默认示例里 1827 天按 365.25 算是 5.002053 年、CAGR 20.10%,按「整 5 年」算则是 20.11%,差 0.01 个百分点。

从输入到输出的完整链条。两个日期经 Date.parse 解析成 UTC 毫秒 → 相减除以 86400000 得整天数 → 除以 365.25 得年数 → Math.pow(fv / pv, 1 / years) 得总倍数 → 减 1 得 CAGR → 乘 100 保留两位小数。翻倍年数用 Math.log(2) / Math.log(1 + CAGR),即把 (1+r)t = 2 两边取自然对数解出的 t,与「72 法则」同源但不需要口诀。

多期不规则间隔怎么处理。如果有若干个不同日期的取值点,正确的做法是分两步:先对每一段单独算期间年化 (V_i ÷ V_(i-1))^(1 ÷ ΔT_i) − 1,再把各段的倍数连乘后开总年数方根,等价于直接用首尾两个点算一次性 CAGR。两者必然相等,因为指数运算的乘法可以合并。举例:12000(2019-04-01)→ 15000(2021-10-01,914 天 = 2.502396 年,期间年化 9.3269%)→ 21000(2023-07-01,638 天 = 1.746749 年,期间年化 21.2431%)→ 25000(2025-01-01,550 天 = 1.505818 年,期间年化 12.2756%),总跨度 2102 天 = 5.754962 年,一次性 CAGR 与三段几何平均都等于 13.60%。这条性质正是几何平均口径自洽的证据。

本页的年复合增长率计算器只依赖 Math.pow、Math.log 和日期差值,没有任何迭代求解,所以它对同样输入永远给出同样结果,不存在收敛误差。

完整示例(数值仅作演示)

下面三组都来自默认值与真实计算,逐条给出中间量,方便你手工复算核对:

示例一,年数口径。PV = 10000,FV = 25000,n = 5。

示例二,日期口径。起始 2020-01-01,结束 2025-01-01,PV 与 FV 同上。

示例三,多期不规则间隔。四个取值点 12000 → 15000 → 21000 → 25000,日期依次是 2019-04-01、2021-10-01、2023-07-01、2025-01-01,各段跨度 914、638、550 天。三段期间年化分别是 9.3269%、21.2431%、12.2756%,总跨度 5.754962 年,一次性 CAGR 与几何平均都等于 13.60%。三段差异很大(从 9.33% 到 21.24%),合并后的 13.60% 才是可对外引用的口径。

年数、倍数与所需 CAGR 对照表

第一张表固定「10000 变成 25000」(2.5 倍),看年数拉长后 CAGR 怎么衰减。同一条增长曲线换个时间尺度看,数字会差很多,这也是必须写明时间口径的原因:

年数 n所需年复合增长率总涨幅按此 CAGR 翻倍需
1 年150.00%150%0.76 年
2 年58.11%150%1.51 年
3 年35.72%150%2.27 年
4 年25.74%150%3.03 年
5 年(默认)20.11%150%3.78 年
10 年9.60%150%7.56 年
15 年6.30%150%11.35 年
20 年4.69%150%15.13 年
30 年3.10%150%22.69 年

第二张表反过来用:给定目标倍数(2 倍、3 倍),看不同期限需要多高的 CAGR。做目标规划时这张表比第一张更常用:

期限翻倍(2 倍)所需 CAGR翻三倍(3 倍)所需 CAGR
1 年100.00%200.00%
2 年41.42%73.21%
3 年25.99%44.22%
5 年14.87%24.57%
10 年7.18%11.61%
15 年4.73%7.60%
20 年3.53%5.65%
30 年2.34%3.73%

第三张表把「翻倍年数」的精确值和口口相传的「72 法则」放在一起,可以看出法则只在 8% 附近最准(7% 时精确 10.24 年、法则 10.29 年,差 0.04 年),利率越高偏差越大(20% 时精确 3.80 年、法则 3.60 年,差 −0.20 年):

CAGR精确翻倍年数 ln2 ÷ ln(1+r)72 法则估算差值
5%14.21 年14.40 年+0.19 年
7%10.24 年10.29 年+0.04 年
10%7.27 年7.20 年−0.07 年
15%4.96 年4.80 年−0.16 年
20%3.80 年3.60 年−0.20 年

输入范围、边界与精度说明

常见问题

为什么不能把每年的涨幅加起来除以年数?

因为资产价值走的是乘法链。10000 元先涨 50% 变成 15000,再跌 50% 变成 7500,算术平均是 0%,但账户实实在在少了 2500 元;几何平均 (1.5 × 0.5)0.5 − 1 = −13.40% 才是真实年化。跨度越长,两种算法的差距越大。

为什么按日期算比按整年算出来的 CAGR 略低一点?

因为 2020-01-01 到 2025-01-01 实际是 1827 天,除以 365.25 得到 5.002053 年,比整 5 年多了 0.002053 年。分母变大,开方后的年化比率就略小,CAGR 从 20.11% 降到 20.10%。差异很小,但在十年以上的长期口径、或者金额较大时会累积出可观的差别,所以涉及具体日期时建议用日期口径。

期末值填 0 会怎样?

会得到 −100%,这是合法结果,表示本金全部亏光。填负数则会被拒绝,因为负数的 (1 ÷ n) 次方在实数范围内没有定义。想表达「亏了 50%」,应该填原来的一半,而不是负数。

多期数据是不是要先算出各段年化再平均?

先算各段年化是对的,但千万不能取算术平均。正确做法是把各段倍数相乘(各段 (1 + r_i) 连乘),再对总年数开方根。各段时间长度不一样时还必须按时间加权,否则短区间会获得和长区间一样的权重,结果偏高。

翻了 2.5 倍到底是涨了 150% 还是 250%?

都是从 10000 变成 25000 的说法,区别在基数。涨幅 =(25000 − 10000) ÷ 10000 = 150%;倍数 = 25000 ÷ 10000 = 2.5,是「2.5 倍」。中文里「翻了 2.5 倍」有歧义,严谨写法是「涨到 2.5 倍」或「上涨 150%」,本页两个数都给出就是为了避免混淆。

三年 2.5 倍和五年 2.5 倍差多少年化?

三年需要 35.72%,五年只要 20.11%,差约 15.6 个百分点。总倍数一样时,时间越短意味着每年要涨得越猛,而长期能维持的高增速有上限。看到「X 年涨了 Y 倍」的宣传,先换算成年化再横向比较。

CAGR 可以为负吗?负的 CAGR 说明什么?

可以,而且很常见。当 FV 小于 PV 时比值小于 1,开方后仍小于 1,减 1 就是负数。−13.40% 表示这份资产平均每年缩水 13.40%。负 CAGR 到 −100% 是下限,对应本金归零;数值上不会比 −100% 更低,因为比值不可能小于 0。

CAGR 能用来比较波动完全不同的两个项目吗?

只能比「同等期限内的平均增速」,不能比风险。A 每年稳定涨 10%,两年后是 1.21 倍;B 第一年翻倍、第二年跌 39.5%,两年后也是 1.21 倍,两者 CAGR 同为 10%。但 B 的账户曾冲到 2 倍再回落,中途急用钱就会被迫在低点卖出。要看风险得另看回撤幅度、波动率和最大亏损,CAGR 里没有这些信息。

相关工具