内部收益率计算器

免费在线内部收益率(IRR)计算器。输入任意现金流序列和初始猜测值,即可得到 IRR 以及在该折现率下的 NPV。采用 Newton-Raphson 算法并以二分法兜底,稳健收敛。

找到让 NPV 等于零的折现率。 先填写初始投入(可选),再按期填入现金流(正值代表收入,负值代表支出)。计算器会自动求解让 NPV 等于零的内部收益率,并显示累计现金流入、流出以及运行累计现金流曲线。

内部收益率 (IRR)
净现值(在 IRR 处)
总现金流入
总现金流出
净现金流

理解内部收益率(IRR)

什么是 IRR?

内部收益率(IRR)是让一系列现金流的净现值(NPV)等于零的折现率。通俗地讲,就是使项目现金流入刚好偿付现金流出的"年化盈亏平衡回报率"。 \[ 0 = \sum \frac{CF_t}{(1 + IRR)^{t}} \]

其中 \(CF_t\) 是第 \(t\) 期的现金流。第 0 期通常是初始投资,进行折现。

IRR vs. NPV vs. ROI

  • IRR —— 一个比率,可直接与资金成本(必要回报率)比较。
  • NPV —— 一个金额,取决于你选择的折现率。
  • ROI —— 简单比值,忽略货币时间价值。

IRR 是 NPV = 0 时对应的那个折现率,三者回答的是互补的问题。

算例

项目今天投入 10,000 元,未来三年分别回收 3,000、4,200、6,800 元:

\[ NPV(r) = -10000 + \frac{3000}{1+r} + \frac{4200}{(1+r)^{2}} + \frac{6800}{(1+r)^{3}} \]

令 NPV = 0 求得 IRR ≈ 25.65%——项目的盈亏平衡年化回报率。

求解方法

IRR 没有解析解,我们使用:

  1. Newton-Raphson:速度快,靠近根时二次收敛,需要合理的初始值。
  2. 二分法兜底:Newton 不收敛时启用,鲁棒但慢。

两种方法都收敛到 1e-7 以内或最多 200 轮迭代。

多个 IRR

当现金流多次变号(例如先正后负再正)时,NPV(r) = 0 这个多项式可能有 多个实数根。此时 IRR 含义模糊,应改用资金成本下的 NPV。

常见误区

  1. 再投资假设:IRR 隐含假设所有中间现金流按 IRR 本身再投资,现实中几乎不可能成立。MIRR(修正 IRR)允许指定独立的再投资率。
  2. 规模盲区:1,000 元投入翻倍和 100 万元投入翻倍的 IRR 都是 100%,但意义不同。需要结合规模和 NPV 综合判断。
  3. 时点偏好:IRR 偏向奖励早期回款的项目,可能让人忽视长周期价值创造。
  4. 必要回报率对比:IRR 一定要和资金成本比较才有意义。15% 的 IRR 如果成本是 12% 就是亏的;如果是 8% 就是赚的。

何时使用 IRR

  • 规模和回款节奏相近的互斥项目对比。
  • 给非财务背景的干系人汇报(IRR 作为百分比直观易懂)。
  • 做完整 NPV/DCF 分析前的快速筛选。

资本预算与估值仍应以 NPV 为主指标,把 IRR 当作一致性校验。

工具说明

IRR 采用 Newton-Raphson + 二分法兜底;NPV 在求得的 IRR 处重算以验证收敛;图表用 Chart.js(MIT)绘制——绿色柱表示流入、红色柱表示流出,琥珀色折线为累计现金流,方便观察回本时点。

开源许可声明:IRR/NPV 数学由本工具独立实现,算法为 Newton-Raphson + 二分法兜底;图表使用 Chart.js by Chart.js contributors(MIT),本地打包引入。

常见问题解答

多少 IRR 算好?
取决于你的资金成本和项目风险。早期创业项目可能要求 30%+;成熟公用事业债券 6% 即可接受。IRR 一定要和必要回报率比较,不能只看绝对数字。
为什么 IRR 显示'无解'?
通常是因为现金流没有正负号变化(全正或全负),或者 IRR 方程没有实数根。请确保同时存在流出和流入,并避免重复输入初始投入。
为什么 NPV at IRR 显示的不是零?
我们在相邻两次迭代差值低于 1e-9 时停止。残差极小(几分钱)属于正常收敛现象。
IRR 和年化 ROI 有什么区别?
ROI = 总收益 ÷ 初始投入,忽略时间因素。IRR 是在同样现金流模式下的等价年化回报率。IRR 是有时间维度考量的 ROI。
为什么同一个项目会出现两个不同的 IRR?
现金流多次变号时,NPV(r) = 0 可能有多个实数根,IRR 含义模糊,此时更稳妥的做法是用资金成本下的 NPV 来决策。
累计线代表什么?
累计线显示从第 0 期到当前期为止的现金流之和。曲线与零轴相交的点就是项目的回本时点(payback period)。
初始投入应该填在独立输入框还是现金流列表里?
两种方式都可以——本工具把独立输入视为第 0 期,列表中的现金流视为第 1、2、3 … 期。如果想全部填在列表里,把独立输入框设为 0 即可。