“你不理财,财不理你”这句话你一定不陌生。钱在手里确实会持续缩水:二十年前能在市中心付个首付,现在只够在郊区买间厕所;今天还能吃大排爆鱼双浇面加蛋,几年后恐怕只能嗦碗阳春面。投资、消费、理财,样样都得动起来。
而且理财要趁早,要坚持——复利可是号称“世界第八大奇迹”。

巴菲特说:人生就像滚雪球,关键是找到湿湿的雪和长长的坡。可他没说,如果你的雪球不够大,很可能滚进坑里就爬不出来了。
前段时间有读者留言,把手头存款买了一款收益 9% 的理财,结果现在取不出来,感觉几年白干。除了安慰他“钱没了还能再赚”,我也确实没更好的办法。
于是有人调侃道:
你不理财,财不离你!
你看中的是人家的收益,人家惦记的却是你的本金。

现在流行一个说法:理财产品收益率超过 3% 就要打问号,超过 7% 很危险,超过 10% 就得做好损失全部本金的准备。
但话说回来,你到底能不能算清楚自己所买理财产品的真实收益率?不妨看几个例子。
【产品 A】
今年 1 月 1 日投入 10 万,10 年后,即第 11 年的 1 月 1 日到期,一次性返还 20 万。
你可能会觉得这很好算:
(20 - 10) / 10 / 10 = 0.1,年化收益 10%?
错!因为你没考虑复利。如果是 1 年期产品,每年产生的利息可以再投资,可上面的计算忽略了这一层。
【产品 B】
今年起,每年 1 月 1 号投入 1 万,连续 10 年共投入 10 万;第 11 年 1 月 1 日到期,一次性返还 20 万。
【产品 C】
今年起,每年 1 月 1 号投入 1 万,连续 10 年共投入 10 万;从第 16 年起,每年 1 月 1 日返还 4 万,连续 5 年共返还 20 万(第 20 年全部还完)。
同样是投入 10 万拿回 20 万,可资金流出的时间不同,年化该怎么计算?
会计学里有一个概念叫 内部收益率(Internal Rate of Return,IRR),专门用来衡量投资回报率。用 IRR 的思路再来分析:
【产品 A】
10 万本金,以年化 IRR 复利滚了 10 次,变成 20 万:
10 * (1 + IRR) ** 10 = 20
(**10 是 Python 中 10 次方的写法。)
借助计算器可以求出 IRR ≈ 7.177%。也就是说,产品 A 的实际年化只有 7.177%,远没有你感觉中的 10% 那么高。
【产品 B】
第一年投入的 1 万以 IRR 复利滚 10 次,第二年滚 9 次,……第十年滚 1 次,加总成 20 万:
1*(1+IRR)**10 + 1*(1+IRR)**9 + ... + 1*(1+IRR)**1 = 20
式子列出来了,可手工求解相当麻烦。产品 C 就更复杂了,连式子都不好写。
别急,算 IRR 有更简单的办法。除了各种在线计算器与小程序,我们直接用 Excel 就能搞定。按投资周期输入现金流(投入为正,返还为负,无操作填 0),然后在单元格里使用 IRR 函数。
比如产品 A 的现金流:

产品 B 和产品 C 也可以类似计算:


得到的 IRR 分别是 12.304% 和 5.623%。
作为万能的 Python,自然也提供了极其便捷的计算方式。对应的函数是 numpy.irr / numpy_financial.irr(NumPy 1.20 版本后 irr 被移除,需单独安装 numpy_financial)。把投资金额以列表形式传入即可:
import numpy_financial as npf
# 产品B
Rb = npf.irr([1,1,1,1,1,1,1,1,1,1,-20])
print(Rb)
# 产品C
Rc = npf.irr([1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,-4,-4,-4,-4,-4])
print(Rc)
结果与 Excel 算出来的完全一致。
掌握了 IRR,很多理财产品宣传中“不能说的秘密”就藏不住了。比如某平台在售的一款产品,声称“定价利率 4.025%”“10 年后可获超 44% 收益”,可看看它的领取方案:

用 Python 一算:
R = npf.irr([10000,0,0,0,0,-200,-200,-200,-200,-200,-13490])
print(R)
实际年化利率只有大约 3.86%。有的产品还会把提前返还的钱对接一个“万能账户”,将万能账户的收益也叠进总收益里宣传,实际偏差就更大了。
再看一个常见的分期贷款:借款 2 万元,日利率 0.04%,分 12 个月,每月还 1797.51 元。

一年下来总共付出 1570.12 元的“手续费”,看似只相当于本金的 7.85%,跟上面那款“利率 4.025%”的产品相比,好像也不算太贵。可别忘了,这笔钱是每月都要还的。用 IRR 算一下:
R = npf.irr([-20000,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51,1797.51])
print(R)
每个月的 IRR 是 1.18%,换算成年化:
(1+R) ** 12 - 1
结果高达 15.15%,远超多数人的投资收益。
借钱一时爽,但出来混迟早要还。不论投资还是借贷,先把账算清楚,少一分冲动,就能少踩很多坑。当然,最重要的一条始终是:永远不要把鸡蛋全放在一个篮子里。如果踩坑难以避免,那就尽量隔离单次损失的影响。如果你也对用编程辅助投资决策感兴趣,云栈社区提供了丰富的技术文章和工具资源。