使用方法
- 这个年化收益率计算器一共四个数字框。先在「初值」填 10000(示例值),单位元,必须大于 0;它是要当除数的,填 0 无法计算。
- 在「末值」填 10500(示例值),填价格口径的期末市值;在「年数」填 2(示例值),单位是年,允许 0.1~100,可以带一位小数。
- 「期间累计分红」默认 0。手上只有价格序列、不知道分红时保持 0;要按全收益口径算,就填这段时间累计拿到手的分红金额,工具会把它并入末值再折一次年化。
- 「逐年收益率」默认填
50, -30(示例值),用逗号或空格分隔,单位是百分数。填了它,右侧才会出现「算术平均年收益率」和「波动拖累」两张卡;留空则这两张卡显示未填。 - 数字框里按 Enter 直接重算;「逐年收益率」是文本框,Enter 留给换行,用 Ctrl + Enter(macOS 用 Cmd + Enter)触发。
- 下方对照表固定列出"同一笔总收益分别发生在 1~30 年时"的年化收益率,并把常见的简单折算(总收益 ÷ 年数)并排列出。默认显示 12 行,点「加载更多」看完 30 年。
这个年化收益率计算器能解决什么问题
一是把不同持有期的收益放在同一把尺子上。赚 5% 这个数字本身没有意义:一个月赚 5%、两年赚 5%、三十年赚 5%,是完全不同的三件事。本页把它们统一折成年化,示例条件(10000 → 10500,2 年)得到 2.4695%;同样 5% 如果用了 30 年,年化只有 0.1628%,连通胀都跑不过。
二是拆穿"平均收益"这个说法。很多人把逐年的收益率直接平均,得到"平均每年 10%",再按 10% 复利去推未来。示例里的两条收益率 50% 和 −30%,算术平均确实是 10.0000%,但真实年化只有 2.4695%,差了 7.5305 个百分点。差额来自波动:亏 30% 是在已经涨到 15000 的基数上亏的,亏掉的是 4500 元,而不是最初 10000 的 30%。
三是判断一只产品有没有跑赢。拿到净值曲线或对账单,把起点、终点和持有年数填进来,年化数字立刻可以和存款、国债、通胀放在一起比。想比实际购买力,再把年化减去同期通胀率(更严格的做法是用实际收益率 = (1 + 名义) ÷ (1 + 通胀) − 1)。
四是核对别人给的年化是不是口径一致的。同一只基金,用价格口径和全收益口径算出的年化可以差出一大截:示例里价格口径 2.4695%,把 500 元分红并进去就变成 4.8809%,差 2.4114 个百分点。窗口期内分过红的产品,用不含分红的净值曲线算年化,一定会低估。
本页不做这些事:不预测未来收益、不拉取任何行情或净值数据、不处理不定期的追加和赎回(那种情形要用内部收益率逐笔折现)。要算定期定额投入的终值,请用「复利计算器」;要算含通胀后的实际购买力,请用「通货膨胀计算器」。
计算公式:CAGR 与算术平均的差别
本页的主公式是复合年化收益率:CAGR = (末值 ÷ 初值)1 ÷ 年数 − 1,代码里就是 Math.pow(末值 / 初值, 1 / 年数) - 1。它的含义是"假设每年以同一个比例复利增长,涨到今天的倍数需要多大的年增长"。示例:(10500 ÷ 10000)1/2 − 1 = 1.050.5 − 1 = 2.4695%。也可以写成 (1 + 累计收益率)1 ÷ 年数 − 1,两式等价。
逐年的收益率要用几何平均,不能用算术平均。已知k年的年收益率 r₁…r_k,年化等于 ((1+r₁)×(1+r₂)×…×(1+r_k))1/k − 1,即几何平均。算术平均 (r₁ + r₂ + … + r_k) ÷ k 只在各年收益率完全相同时才等于几何平均:连续两年 10% 和 10%,算术平均 10.0000%、年化也是 10.0000%,两者一致;换成 50% 和 −30%,算术平均 10.0000%、年化 2.4695%;换成 +100% 和 −50%,算术平均 25.0000%、年化 0.0000%——翻倍又腰斩,两年下来一分没赚,算术平均却告诉你"每年赚 25%"。
两者的差有一个常用近似式:几何 ≈ 算术 − σ² ÷ 2,σ 是逐年收益率的标准差。示例里 50% 与 −30% 的标准差是 40.00%,σ² ÷ 2 = 8.00%,算出 2.0000%,与真值 2.4695% 差 0.47 个百分点;把序列换成 +20%、−10%、+5%、+15% 这四年,σ = 11.46%,近似式给 6.8438%,真值 6.8631%,误差缩到 0.02 个百分点以内。波动越大、年数越少,这个近似越松。这部分差额业界叫"波动拖累"或"波动成本"。
还有一种是"简单折算",连算术平均都不是。它用 累计收益率 ÷ 年数 直接当成年化。翻倍(累计 100%)用 2 年时间,简单折算给出 50.0000%,正确的年化是 41.4214%,差 8.5786 个百分点;用 30 年翻倍,简单折算 3.3333%,正确年化 2.3374%,差 0.9959 个百分点。年限越长,两者反而越接近,但永远不相等——因为简单折算把复利当成了加法。
含分红再投时的口径要单独说清。净值曲线一般是价格口径(也叫"复权前净值"或"单位净值"),分红派出去的部分不在里面。判断真实回报要用全收益口径:把每一次分红按当日净值买回份额,期末算总市值。若能拿到复权净值(后复权),直接用末值 ÷ 初值即可。本页的处理方式是把「期间累计分红」直接并入末值再折年化,等于假设分红全部按原价再投。
但"分红并进末值"只在两种情况下精确:分红发生在期末一次性收到,或者分红虽然发生在期中、但金额小到可以忽略时间差异。示例里 10000 元本金,第 1 年末收到 500 元分红且一直闲置、第 2 年末连本带价拿到 10500 元,逐笔现金流 −10000 / +500 / +10500 的内部收益率恰好是 5.0000%,而把 500 并进末值的算法给 4.8809%,两者差 0.1191 个百分点。要精确处理期中现金流,得用内部收益率逐笔折现,不能靠一个除法。这也是中国人民银行公告〔2021〕第 3 号对贷款年化利率的要求——以借款人实际占用的本金为基础、按内部收益率法(IRR)折算——道理是同一个:钱占用多久,就必须按多久计息。
完整示例(数值仅作演示)
下面这条链路和页面默认值完全一致:初值 10000 元、末值 10500 元、年数 2 年、累计分红 0、逐年收益率 50% 与 −30%。四张结果卡与对照表算出的关键数字如下:
- 累计收益率 5.0000%,来自
10500 ÷ 10000 − 1 = 0.05; - 年化收益率 2.4695%,来自
1.051/2 − 1 = 0.0246950766; - 简单折算 2.5000%,来自
5% ÷ 2,比正确年化高 0.0305 个百分点; - 算术平均 10.0000%,来自
(50% + (−30%)) ÷ 2,比正确年化高 7.5305 个百分点; - 波动拖累 7.5305 个百分点,σ = 40.00%,近似式
10% − 8% = 2%与真值 2.4695% 差 0.47 个百分点; - 若把两年 50% 与 −30% 的算术平均当成复利率,10000 元会算成
10000 × 1.1² = 12100 元,比实际的 10500 元多出 1600 元,高估 15.24%; - 若期间另有 500 元分红并进末值,全收益口径的年化变成 4.8809%,与价格口径相差 2.4114 个百分点。
再把年数换成别的值看总收益口径的变化:同样 10000 → 10500,若这 5% 是 1 年赚到的,年化 5.0000%;3 年赚到,年化 1.6396%;30 年赚到,年化 0.1628%。总收益一样,年化的差距却有 30 倍。若换成 10000 → 5000(腰斩),1 年的年化 −50.0000%,2 年是 −29.2893%——注意负收益年年化会被"摊薄",这并不代表亏损变少了。
输入范围与年化对照表
下表固定"累计翻倍(总收益 100%)"这一个前提,只改年数,看年化怎么随年数衰减,并和常见的简单折算并排比较。这张表和工具里的 30 年扫描表算法相同,工具只是把门槛数字换成了你填的初值、末值。
| 年数 | 年化收益率 | 简单折算(100÷N) | 差额 |
|---|---|---|---|
| 1 年 | 100.0000% | 100.0000% | 0.0000 个百分点 |
| 2 年 | 41.4214% | 50.0000% | 8.5786 个百分点 |
| 3 年 | 25.9921% | 33.3333% | 7.3412 个百分点 |
| 5 年 | 14.8698% | 20.0000% | 5.1302 个百分点 |
| 10 年 | 7.1773% | 10.0000% | 2.8227 个百分点 |
| 20 年 | 3.5265% | 5.0000% | 1.4735 个百分点 |
| 30 年 | 2.3374% | 3.3333% | 0.9959 个百分点 |
第二张表是"同样两条收益率,算出来的平均完全不同",用来解释为什么必须用几何平均。三组序列的本金都是 10000 元,连续两年:
| 两年的收益率 | 算术平均 | 年化(几何平均) | 波动拖累 | 两年后的钱 |
|---|---|---|---|---|
| +10% / +10% | 10.0000% | 10.0000% | 0.0000 个百分点 | 12,100 元 |
| +50% / −30% | 10.0000% | 2.4695% | 7.5305 个百分点 | 10,500 元 |
| +100% / −50% | 25.0000% | 0.0000% | 25.0000 个百分点 | 10,000 元 |
第三张表把分红口径摆开。同一个账户、同一段两年、同样从 10000 元变成 10500 元的价格,只因分红处理方式不同,年化就有三个答案:
| 口径 | 怎么算 | 年化收益率 |
|---|---|---|
| 价格口径(只看净值) | 10500 ÷ 10000 开 2 次方再减 1 | 2.4695% |
| 全收益口径(分红并入末值) | (10500 + 500) ÷ 10000 开 2 次方再减 1 | 4.8809% |
| 逐笔 IRR(500 元在第 1 年末收到且不再投) | 解 −10000 + 500 ÷ (1+r) + 10500 ÷ (1+r)² = 0 | 5.0000% |
边界与口径说明
- 初值必须大于 0,允许 0.01~100000000 元。它要当除数,填 0 会被直接拒绝并提示;负数在"期末 ÷ 期初"这个模型里没有意义。
- 末值允许 0~1000000000 元,可以填 0。末值 0 时比值是 0,0 开任意次方还是 0,年化给出 −100.0000%。注意这只是公式的算术结果:一旦本金归零,"从 0 恢复到原值"需要的增长率是无穷大,所以 −100% 与"+∞"是同一件事的两面,跨过归零点的收益不能用本页折算。
- 末值不能为负。负比值开分数次方在实数范围内无解(
Math.pow(-0.5, 0.5)得到 NaN),工具会拦下来;做空、杠杆爆仓产生的负净值本身也不是"收益率"。 - 年数 0.1~100 年,可以带一位小数。年数决定开几次方,是这类计算里最容易填错的一项:2024-01-01 到 2026-01-02 是 732 天,按 365 天算 2.005479 年、年化 2.4627%;按 365.25 天算 2.004107 年、年化 2.4644%;四舍五入成整 2 年则是 2.4695%。三种做法差 0.007 个百分点以内,但口径必须前后一致,否则跨年比较时会累积成明显的偏差。
- 分红按"全部原价再投"建模。把分红并进末值,等价于假设每笔分红都在当天按净值买回了份额。分红在期中收到且长期闲置时,这个假设会低估算化(示例里 4.8809% 对 5.0000%),差额随分红金额和闲置时间增大。
- 逐年收益率的每一项都必须大于 −100%。−100% 意味着当年归零,之后所有年份都乘 0,结果恒为 −100%;小于 −100% 在现实里不存在。工具会对非法项给出具体提示,不会静默跳过。
- 浮点精度按 IEEE 754 双精度。开方用的是
Math.pow,结果四舍五入到小数点后 4 位(即 0.0001 个百分点)后显示。金额不超过 10 亿、年数不超过 100 时,舍入误差远小于最后一位,不影响任何判断。 - 未考虑税费与申购赎回费。实际到手收益要扣掉手续费、管理费和个人所得税;本页算的是毛收益口径,用于横向比较不同持有期,不适合直接当"到手赚了多少"。
常见问题
为什么"平均每年 10%"不等于年化 10%?
因为"平均"这个词有两个含义。把 50% 和 −30% 直接相加除以 2 得到算术平均 10.0000%,但它忽略了 10000 元先涨到 15000、再在 15000 的基数上亏 30%(亏 4500 元)这个事实。按连乘算,1.5 × 0.7 = 1.05,年化只有 2.4695%。要按 10% 复利推未来,两年应该涨到 12100 元,实际只有 10500 元,多算了 1600 元。
年化收益率和累计收益率是什么关系?
累计收益率 = 末值 ÷ 初值 − 1,年化 = (1 + 累计收益率)1 ÷ 年数 − 1,两者可以互相换算。示例里累计 5.0000%、2 年,年化 2.4695%;反过来说,只要知道年化和年数,也能反推累计。只有年数等于 1 时,两者数值才相等。
为什么负收益的年化看起来"没那么亏"?
摊薄效应。10000 元两年亏到 5000 元,累计 −50%,但年化是 −29.2893% 而不是 −25%:因为第二年是亏在已经缩水的本金上,同样的百分比亏掉的绝对金额更少。注意年化更"温和"不代表亏损变少,它只是把同一笔总亏损摊到了每一年。
分红算不算进收益里?
要看口径。只填净值(价格口径)时不算,年化会被低估;把「期间累计分红」填上,工具会并入末值算全收益口径。示例里 500 元分红让年化从 2.4695% 升到 4.8809%,差 2.4114 个百分点。如果拿到的是后复权净值,末值里已经含分红,分红框保持 0 即可,别再重复加一次。
年数该按 365 天还是按整年算?
两种都可以,关键是在比较的几组数据里用同一个口径。732 天的例子:按 365 天算 2.005479 年(年化 2.4627%)、按 365.25 天算 2.004107 年(年化 2.4644%)、舍成整 2 年(年化 2.4695%),差不到 0.007 个百分点。短期(几个月)时天数口径的影响会明显放大,这时建议直接用天数 ÷ 365。
逐年收益率留空会怎样?
不影响主计算。「年化收益率」和「累计收益率」只依赖初值、末值、年数,留空照样算;只有「算术平均年收益率」和「波动拖累」这两张卡需要逐年数据,留空时它们会显示"未填逐年序列"。
为什么负数末值算不出来?
因为公式要对"末值 ÷ 初值"开分数次方,负数的偶数次方根在实数范围内不存在,JavaScript 的 Math.pow(-0.5, 0.5) 直接返回 NaN。现实中负净值意味着杠杆穿仓或负债超过资产,它已经不是"投资收益率"这个模型能描述的对象,应该用现金流折现单独处理。
填进去的金额会上传吗?
不会。这个年化收益率计算器的开方、连乘、逐行扫描全部由页面脚本完成,没有任何网络请求,也不写浏览器存储;刷新后输入框回到默认的 10000 / 10500 / 2 / 0 与 50, -30。想自己确认,打开开发者工具的 Network 面板点几次「开始计算」,看不到新请求发出。
相关工具
- 复利计算器:已知年利率算多年后的终值,与本页"由终值反推年化"正好互为逆运算。
- 投资回报率计算器:算的是不折年化的总投资回报率,先拿到累计收益率再回本页折算年化最顺。
- 股票回报计算器:含买卖价、股数与分红的股票收益,可以拿来核对本页的分红口径。
- 股息收益率计算器:只看股息与股价的比例,用于判断分红对全收益年化的贡献有多大。
- 增长率计算器:算两个时点之间的增长率,把它的结果当累计收益率填回本页,就是年化。
- 通货膨胀计算器:把年化收益率和同期通胀率放在一起,才能看出真实购买力的变化。
- 储蓄利息计算器:存款到期本息的单利算法,用来对照"同样是 5%,存款和投资的口径差在哪"。
- 计算器:查看全部计算器工具。