Seek Returns

如何在 Excel 中计算 FVIFA

如果你想估算一串等额付款在未来会累积成多少钱,比如退休账户定投、定期储蓄,或者其他固定金额的持续投入,那么 FVIFA(Future Value Interest Factor of an Annuity,年金终值系数) 就是最核心的乘数。把这个系数乘上每期付款金额,你就能得到整串付款在期末的未来价值。它是货币时间价值计算里非常常用的一个基础工具,而在 Excel 里,用一个单元格就能算出来。

这篇文章会讲清楚 FVIFA 到底代表什么、闭式公式是什么、怎么在 Excel 里输入、怎么用内置 FV 函数交叉核对,以及最容易让人算错的一点:普通年金(ordinary annuity)和先付年金(annuity due)到底差在哪里。

FVIFA 到底在衡量什么?

FVIFA 表示这样一个数:如果你在接下来的 nn 个期间里,每期末都投入 1 元,并且每期都按固定利率 rr 计息,那么到第 nn 期末,这一串投入总共会变成多少钱。

因为它是按“每期投入 1 元”定义的,所以本质上它是一个乘数。只要你知道某个利率和期数组合下的 FVIFA,那么任何等额付款流的终值都可以写成:

终值=FVIFA(r,n)×每期付款金额\text{终值} = \text{FVIFA}(r, n) \times \text{每期付款金额}

这也是它好用的原因:同一组 (r,n)(r, n) 只要算一次,之后换不同的付款金额都可以直接套用。

在使用前,有两件事一定要先弄清楚:

  1. 利率和期数必须使用同一时间单位。 如果你是按月付款,那么 rr 必须是月利率,nn 也必须是月数;如果是按年付款,那两者就都按年。把年利率和月期数混在一起,是最常见的错误。
  2. FVIFA 默认每笔付款都发生在期末。 这就是“普通年金”的约定。如果付款发生在每期开始时,也就是“先付年金”,那么系数会更大,刚好比普通年金多乘一个 (1+r)(1 + r)。后面会专门讲这一点。

FVIFA 公式

闭式公式如下:

FVIFA(r,n)=(1+r)n1r\text{FVIFA}(r, n) = \frac{(1 + r)^{n} - 1}{r}

其中:

它不难理解。对于普通年金来说,第一笔付款会复利 n1n - 1 个期间,第二笔会复利 n2n - 2 个期间,最后一笔因为正好在最终期末投入,所以不会再产生任何复利。把这串等比数列加总起来,就得到上面的闭式公式。

在 Excel 中计算 FVIFA

你需要哪些数据

你只需要两个数字:每期利率和期数。可以按下面的方式摆放:

单元格内容
A1Rate
A20.05
B1Periods
B210
C1FVIFA
C2(输入公式)

分步操作

  1. A2 输入利率。 如果年利率是 5%,输入 0.05。如果是按月付款、名义年利率 5%,那就输入 =0.05/12。利率必须和付款频率一致。
  2. B2 输入期数。 如果是 10 年、按年付款,输入 10。如果是 10 年、按月付款,输入 =10*12
  3. C2 输入 FVIFA 公式:
    =((1+A2)^B2-1)/A2
    
    按下回车。以 r = 0.05n = 10 为例,Excel 会返回 12.5779(四位小数),这就是 FVIFA。
  4. 可选:继续算出实际付款流的终值。D1 输入 Payment,在 D2 输入付款金额,比如 1000。在 E1 输入 Future Value,在 E2 输入:
    =C2*D2
    
    Excel 会返回 12577.89,也就是每年期末投入 1,000 元,持续 10 年、年利率 5% 时,最终大约会累积到 12,577.89 元。
Excel 工作表:C2 中为 FVIFA 公式,下方用 FV 函数交叉验证,右侧给出每年 1,000 元付款流的终值
Excel 工作表:根据每期利率和期数计算 FVIFA,并用内置 FV 函数交叉验证

用 Excel 的 FV 函数交叉验证

Excel 内置的 FV 函数可以直接计算年金终值,不必先经过 FVIFA。你可以用它来验证自己算出来的 FVIFA 是否正确。

C4 输入一个标签,比如 FV check,然后在 C5 输入:

=FV(A2, B2, -1, 0, 0)

各参数含义如下:

这个结果应该同样返回 12.5779。如果不一致,通常就是利率和期数没有对齐,或者你不小心把付款类型设成了先付年金。

普通年金 vs. 先付年金

标准 FVIFA 公式假设每笔付款发生在期末,这就是普通年金。如果付款发生在期初,也就是先付年金,那么每一笔付款都会多享受一个期间的复利,公式就会变成:

FVIFAdue(r,n)=(1+r)n1r×(1+r)\text{FVIFA}_{\text{due}}(r, n) = \frac{(1 + r)^{n} - 1}{r} \times (1 + r)

在 Excel 里,你可以直接在 C2 的公式后面再乘一个 (1+A2)

=((1+A2)^B2-1)/A2*(1+A2)

也可以继续用 FV 函数,只是把 type 改成 1

=FV(A2, B2, -1, 0, 1)

r = 0.05n = 10 为例,先付年金的 FVIFA 是 13.2068,比普通年金高大约 5%,差异正好来自每笔付款都多复利了一个期间。

实战例子:退休账户定投

假设你每年年末向退休账户投入 6,000 元,持续 30 年,预期年化回报率为 7%。

如果改成每年年初投入:

两者差出来的大约 4 万元,体现的就是每笔投入多复利一个期间、持续 30 年之后的影响。这也是为什么“早点投入”和“晚点投入”在长期复利场景下差别会越来越大。

常见错误

常见问题

FVIFA 和 Excel 的 FV 函数有什么区别?

它们算的是同一类东西,只是 FV 是直接返回终值的函数,而 FVIFA 是“每投入 1 元,对应多少未来价值”的乘数。如果你只想快速得到一个终值,直接用 FV 更省事;如果你想把同一个系数反复套用到不同的付款金额上,先算 FVIFA 会更方便。

现在还需要查 FVIFA 表吗?

一般不需要了。FVIFA 表在电子表格不普及时很有用,因为乘方手算很麻烦。现在有了 Excel,一个单元格就能解决。表格最大的剩余价值,更多是做教材题或快速核对答案。

利率等于 0 怎么办?

因为闭式公式分母是 r,所以在 r = 0 时公式本身没有定义。但在这个边界情况下,FVIFA 其实就等于期数 n。原因很简单:没有利息时,每期投入 1 元,持续 n 期,最后自然就是 n 元。Excel 的 FV 函数能正确处理这种情况,但代数公式要你自己单独判断。

FVIFA 能用于不等额付款吗?

不能。FVIFA 默认每期付款金额相同。如果你的付款高低不一,就应该把每笔现金流单独列出来,分别复利到终点,而不是继续套用一个统一的年金系数。

怎么处理通胀?

FVIFA 算出来的是名义终值。如果你想换算成今天购买力对应的价值,可以直接把实际利率(扣除通胀后的利率)代入公式,或者先算出名义终值,再除以 (1+π)n(1 + \pi)^{n},其中 π\pi 是每期预期通胀率。不要把名义利率和实际利率混在同一个公式里使用。

为什么 FVIFA 看起来像等比数列求和?

因为它本来就是。第一笔付款会复利 n1n - 1 个期间,最后一笔则复利 0 个期间,所以整串现金流本质上就是一个等比数列: (1+r)n1+(1+r)n2++1(1 + r)^{n-1} + (1 + r)^{n-2} + \dots + 1 把这串数列求和,就得到闭式公式: (1+r)n1r\frac{(1 + r)^{n} - 1}{r} 把它当作等比数列来理解,是记住这个公式最轻松的方法之一。