投资 ROI/IRR/NPV

投资回报/内部收益率/净现值

416 次访问

投资回报 ROI / IRR / NPV

现金流(每行一个数,t=0 为初始投资,通常为负数)

贴现率 % (NPV 用)

· ROI(投资回报率)= (总回报 − 总投入) / 总投入

· NPV(净现值)= Σ CF_t / (1 + r)^t · 大于 0 = 项目可行

· IRR(内部收益率)= 使 NPV = 0 的贴现率 · IRR > 资金成本则可行

· 回本期:累计现金流转正的年份

关于本工具

了解工具定位 · 使用场景 · 对比优势

输入初始投资额、每期现金流和折现率,一键计算投资回报率(ROI)、内部收益率(IRR)和净现值(NPV),并对比三个指标的结果差异。创业者评估项目可行性、投资者比较不同标的、财务人员做预算决策时,直接填入数字即可。所有计算在浏览器内完成,数据不上传服务器。

使用场景

🏢

设备采购比选

工厂需要采购一条产线,方案 A 投入 200 万、年净现金流 80 万持续 5 年;方案 B 投入 300 万、年净现金流 110 万持续 7 年。单看回收期 A 更短,但 NPV 和 IRR 能考虑资金时间价值。本工具输入两套方案的期初投入与各期现金流,直接输出 NPV 与 IRR 对比,帮采购经理判断哪个方案真正跑赢融资成本。

📈

加盟品牌评估

加盟一家奶茶店,加盟费 30 万、装修设备 20 万,预估前三年每年净利 25 万、第四年起因竞争下滑至 15 万。本工具把 5 年现金流输入,计算 IRR 是否高于银行理财或同行平均水平。如果 IRR 低于 10%,说明这笔钱投定期存款可能更稳妥。

💰

房产翻新投资

买一套老房花 50 万翻新,持有 3 年卖出预计售价 120 万,但每年物业费 / 税费 / 空置成本合计 3 万。本工具把买入成本、翻新支出、持有期现金流、最终售价全部输入,算出 NPV(贴现率用同期房贷利率 4.5%)和 IRR。若 NPV > 0 且 IRR > 4.5%,说明这笔生意跑赢持有现金。

🎓

教育投资决策

花 20 万读一个在职 MBA,毕业后预期每年涨薪 5 万持续 10 年。本工具输入学费支出(首年)与未来 10 年的增量现金流,计算 IRR 是否超过同期教育贷款利率(约 6%)。如果 IRR 只有 4%,说明这笔教育投资的回报可能不如提前还贷。

🏭

技术改造立项

工厂计划投入 100 万升级自动化设备,预计每年节省人工成本 30 万,但设备 5 年后残值仅 10 万。本工具输入期初投资、每年节省的现金流、残值,用 IRR 与公司资本成本(如 8%)对比。若 IRR > 8%,技术改造可立项;否则资金应优先用于其他项目。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具Excel (IRR/XIRR/NPV 函数)财务计算器 (HP 12C 等)
数据隐私纯浏览器计算,数据不上传服务器文件保存在本地,但需注意宏安全设置完全离线,无数据外泄风险
处理速度输入即出,毫秒级响应需手动输入公式、拖动填充,秒级计算按键输入,计算速度取决于熟练度,秒级
操作门槛无公式记忆,填写字段即可需掌握 IRR/XIRR/NPV 函数语法及参数顺序需熟悉 RPN 或代数输入逻辑及财务键位
现金流频率支持等间隔 (年/月) 与不等间隔 (日期)IRR 要求等间隔;XIRR 支持不等间隔基础型号仅支持等间隔现金流
结果精度浮点数计算,小数点后 6 位受 Excel 迭代计算设置影响,默认精度有限内置算法,精度受限于设备位数
多方案对比单次计算一个方案,需手动记录对比可建立多列模型,公式自动联动,对比方便需手动记录或切换寄存器,对比繁琐
平台依赖任何浏览器,无需安装需安装 Microsoft Excel 或兼容软件需购买专用硬件设备

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在「初始投资」输入框填写现金流出金额(正数),单位与后续现金流一致
  2. 在「现金流」表格中逐期输入预期现金流入金额(正数),可点击「+」添加更多期数
  3. 在「折现率」输入框填写年化折现率(百分比,如 10 表示 10%),仅 NPV 计算需要
  4. 点击「计算」按钮,页面同时显示 ROI(百分比)、IRR(百分比)、NPV(金额)三项结果
  5. 点击「复制结果」按钮将当前数值复制到剪贴板,或点击「重置」清空所有输入

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
初始投资: 100000, 年现金流: [30000, 30000, 30000, 30000, 30000]ROI: 50% | IRR: 15.24% | NPV(10%): 13723.6典型场景:5年等额回本,正NPV说明项目可行
初始投资: 50000, 年现金流: [10000, 20000, 30000]ROI: 20% | IRR: 19.44% | NPV(10%): -1748.9典型场景:递增现金流,ROI为正但NPV为负
初始投资: 10000, 年现金流: [2000, 2000, 2000, 2000, 2000]ROI: 0% | IRR: 0% | NPV(10%): -2418.4边界case:刚好回本(总现金=初始投资)
初始投资: 100000, 年现金流: [50000, -20000, 80000]ROI: 10% | IRR: 8.72% | NPV(10%): -4245.3边界case:现金流含负值(亏损年份)
初始投资: 0, 年现金流: [1000, 1000, 1000]ROI: ∞ | IRR: 无穷大 | NPV(10%): 2486.9边界case:零初始投资,ROI无意义
初始投资: 100000, 年现金流: [100000]ROI: 0% | IRR: 0% | NPV(10%): -9090.9易错case:1年回本,用户常误以为IRR=100%
初始投资: 100000, 年现金流: [0, 0, 0, 0, 150000]ROI: 50% | IRR: 8.45% | NPV(10%): -6857.6易错case:前期无收益,NPV可能为负

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 混淆现金流符号方向(正负号反了)

错误
初始投资 10000,后续每年收回 3000,全部填正数
修复
初始投资填 -10000(现金流出),后续每年收回填 +3000(现金流入)

NPV/IRR 公式要求现金流出用负号、流入用正号;符号反了会算出荒谬结果(如 IRR 为负值或 NPV 被低估)

2. 把年化利率直接当 IRR 用

错误
年利率 5%,IRR 填 5%
修复
IRR 是使 NPV=0 的折现率,与名义年利率不同;需输入实际现金流序列让工具计算

IRR 是求解出的隐含收益率,不是输入的参数;用户常把借款利率或存款利率误填为 IRR

3. 现金流期数不匹配(少一期或多一期)

错误
5 年项目只输入 4 笔现金流
修复
期初(第 0 期)投资 + 第 1-5 年每年现金流 = 共 6 个时间点

NPV/IRR 按时间序列逐期计算;遗漏第 0 期或末尾期会导致折现基准偏移,结果偏差可达 20%+

4. 用 Excel IRR 思维输入空单元格

错误
第 2 年无现金流,留空或填 0 但跳过该行
修复
第 2 年无现金流必须填 0,且保持时间序列连续

工具按行号顺序计算,跳过行相当于压缩了时间轴,导致 IRR 高估(实际资金占用时间更长)

5. 净现值(NPV)与折现率单位不一致

错误
年现金流 + 月折现率 1%
修复
年现金流对应年折现率;月现金流对应月折现率(年/12)

NPV 公式要求现金流周期与折现率周期严格匹配;混用会导致折现因子错误,NPV 偏差可达数倍

6. 把投资回收期当 IRR 理解

错误
3 年回本,IRR 就是 33%
修复
IRR 需输入具体现金流序列计算,与回本年限无直接换算关系

回本年限是静态指标,IRR 考虑资金时间价值;同样 3 年回本的项目,前期回款多的 IRR 更高

7. 输入超大金额导致精度溢出

错误
投资金额 9999999999999999(16 位以上整数)
修复
金额控制在 10^12 以内(万亿级),或使用科学计数法前确认工具支持

JavaScript Number 安全整数范围约 9e15,超出后浮点精度丢失,IRR 迭代计算可能不收敛

8. 忽略 IRR 多解情况(非正常现金流)

错误
项目有正负交替现金流,直接取工具算出的唯一 IRR
修复
检查现金流符号变化次数:变化 >1 次时可能存在多个 IRR,应参考 NPV 曲线

笛卡尔符号法则:现金流符号每变化一次可能多一个实根;工具默认返回第一个解,可能不是经济含义上的那个

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

NPV = Σ (CF_t / (1 + r)^t) - I_0

变量说明

  • NPV — 净现值(元)
  • CF_t — 第 t 期现金流入(元)
  • r — 折现率(小数形式)
  • t — 期数(年或月)
  • I_0 — 初始投资额(元)

示例

初始投资 100 万元,第 1 年回收 30 万,第 2 年回收 50 万,第 3 年回收 60 万,折现率 10%。则 NPV = 30/(1.1)^1 + 50/(1.1)^2 + 60/(1.1)^3 - 100 = 27.27 + 41.32 + 45.08 - 100 = 13.67 万元。NPV > 0,项目可行。

适用范围

适用于常规项目投资决策,要求各期现金流独立且折现率恒定。不适用于现金流符号多次变化(此时 IRR 可能多解)或折现率随时间波动的情形。公式基于标准财务学(Brealey & Myers《公司理财》)。

原理图

输入现金流期初投入 + 每期净现金流浏览器内计算牛顿法 / 迭代求解ROI / IRR / NPV结果面板数值 + 盈亏判断对比折线图示例输入期初:-10000第1年:3000第2年:4000计算过程NPV = Σ CFₜ/(1+r)ᵗIRR:NPV=0 时的 rROI = (收益-成本)/成本示例输出NPV = 1,234 元IRR = 12.5%ROI = 20%
用户输入 本地处理 输出结果 示例说明

开发者集成

3 种主流语言 · 复制即用

import numpy as np
from numpy_financial import irr, npv

# 现金流:第0年投入-1000,第1-5年每年回收300
cashflows = [-1000, 300, 300, 300, 300, 300]

# 净现值(折现率10%)
npv_value = npv(0.10, cashflows)
print(f"NPV = {npv_value:.2f}")  # NPV = 137.24

# 内部收益率
irr_value = irr(cashflows)
print(f"IRR = {irr_value:.4f}")  # IRR = 0.1524 (15.24%)

# 投资回报率(简单ROI)
total_return = sum(cashflows[1:])
roi = (total_return - abs(cashflows[0])) / abs(cashflows[0])
print(f"ROI = {roi:.2%}")  # ROI = 50.00%
package main

import (
	"fmt"
	"math"
)

// NPV 计算净现值
func NPV(rate float64, cashflows []float64) float64 {
	var npv float64
	for i, cf := range cashflows {
		npv += cf / math.Pow(1+rate, float64(i))
	}
	return npv
}

// IRR 使用牛顿法计算内部收益率
func IRR(cashflows []float64) float64 {
	guess := 0.1
	for i := 0; i < 1000; i++ {
		npv := NPV(guess, cashflows)
		// 导数近似
		derivative := (NPV(guess+0.0001, cashflows) - npv) / 0.0001
		if math.Abs(derivative) < 1e-12 {
			break
		}
		guess -= npv / derivative
		if math.Abs(npv) < 1e-6 {
			break
		}
	}
	return guess
}

func main() {
	cashflows := []float64{-1000, 300, 300, 300, 300, 300}

	// 净现值(折现率10%)
	fmt.Printf("NPV = %.2f\n", NPV(0.10, cashflows)) // 137.24

	// 内部收益率
	fmt.Printf("IRR = %.4f\n", IRR(cashflows)) // 0.1524

	// 简单ROI
	totalReturn := 0.0
	for _, cf := range cashflows[1:] {
		totalReturn += cf
	}
	roi := (totalReturn - math.Abs(cashflows[0])) / math.Abs(cashflows[0])
	fmt.Printf("ROI = %.2f%%\n", roi*100) // 50.00%
}
// 净现值计算
function npv(rate, cashflows) {
  return cashflows.reduce((acc, cf, i) => acc + cf / Math.pow(1 + rate, i), 0);
}

// 内部收益率(牛顿法)
function irr(cashflows) {
  let guess = 0.1;
  for (let i = 0; i < 1000; i++) {
    const npvVal = npv(guess, cashflows);
    const derivative = (npv(guess + 0.0001, cashflows) - npvVal) / 0.0001;
    if (Math.abs(derivative) < 1e-12) break;
    guess -= npvVal / derivative;
    if (Math.abs(npvVal) < 1e-6) break;
  }
  return guess;
}

const cashflows = [-1000, 300, 300, 300, 300, 300];

// 净现值(折现率10%)
console.log(`NPV = ${npv(0.10, cashflows).toFixed(2)}`); // 137.24

// 内部收益率
console.log(`IRR = ${irr(cashflows).toFixed(4)}`); // 0.1524

// 简单ROI
const totalReturn = cashflows.slice(1).reduce((a, b) => a + b, 0);
const roi = (totalReturn - Math.abs(cashflows[0])) / Math.abs(cashflows[0]);
console.log(`ROI = ${(roi * 100).toFixed(2)}%`); // 50.00%

常见问题

7 个高频疑问

ROI、IRR、NPV 这三个指标到底有什么区别?我该用哪个?
ROI(投资回报率)最简单,只看总收益除以总成本,不考虑时间因素,适合短期粗略评估。NPV(净现值)把未来每一笔现金流按折现率折算到今天,算出项目到底是赚还是亏,适合长期项目。IRR(内部收益率)是让NPV等于0的那个折现率,用来比较不同规模项目的收益率高低。简单说:ROI看总账,NPV看绝对值,IRR看效率。如果项目周期超过一年,优先看NPV和IRR;如果只是投一笔钱几个月就回本,ROI够用。
为什么我算出来的NPV是负数,但ROI是正数?哪个准?
两个都准,只是角度不同。ROI只算总收益减总成本,没考虑钱的时间价值——比如你第1年投100万,第5年才收回120万,ROI是20%,但算上折现率(比如5%),这120万折算到今天可能只有94万,NPV就是-6万。这说明项目表面赚钱,实际跑输通胀或资金成本。这种情况下以NPV为准更合理,尤其当项目周期超过一年、资金有机会成本时。
这个工具里的折现率应该填多少?填错了会怎样?
折现率一般填资金的机会成本,比如你的贷款利率、行业平均回报率或公司要求的基准收益率。个人投资者可以用银行理财年化(约2-3%)或房贷利率(约4-5%);企业项目通常按WACC(加权平均资本成本)或行业基准(如10-15%)。填高了NPV偏低,容易误判好项目为不可行;填低了NPV虚高,可能投了其实不赚钱的项目。建议用不同折现率多算几次做敏感性分析。
为什么我填了每年现金流,IRR算出来是0%或显示错误?
IRR算不出来通常有三种情况。一是现金流符号变化次数不够——IRR要求至少有一期现金流出(负数)和一期的现金流入(正数),如果所有年份都是正数或都是负数,算法找不到解。二是现金流模式导致多个IRR(比如中间有正有负交替多次),工具只会返回第一个找到的解,可能不准确。三是初始投资为0,IRR数学上无定义。检查第一年是否填了负数(投入资金),后续年份是否有正数(回款)。
这个工具能算房地产投资的回报率吗?比如首付+月供+卖房收入?
可以。把首付款、中介费、装修费等一次性投入填到第0年或第1年(负数),每月月供按年度汇总填入对应年份(负数),卖房净收入(售价减剩余贷款)填到最后一年(正数)。注意月供中的本金部分不是成本而是资产累积,但工具按现金流处理,只要如实填每年的实际现金进出,NPV和IRR就是准确的。如果月供包含本金和利息,建议只填利息部分作为成本,本金部分在最后卖房时一并回收。
工具里的现金流必须按年填吗?如果是按月或按季的项目怎么处理?
目前字段按年设计。如果是按月或按季的项目,可以手动折算成年现金流——比如每月净收入1万,一年就是12万填到对应年份。注意折现率也要对应调整:如果现金流按年填,折现率用年利率;如果想把月现金流直接填进去,需要把年折现率除以12(近似),但工具不支持按月输入,建议统一归总成年数据。短期项目(比如3个月)直接填到第1年,IRR和NPV仍然有参考意义。
工具算出来的结果小数点后保留几位?误差大吗?
ROI保留2位小数(百分比),NPV保留2位小数(金额),IRR保留4位小数(百分比)。计算使用双精度浮点数,误差在10的负12次方量级,对日常投资决策完全无影响。唯一需要注意:IRR是迭代逼近求解(牛顿法),如果现金流跨度大(比如50年),迭代次数上限100次,极端情况下(如现金流非常规分布)可能收敛到局部解而非全局解,此时建议配合NPV一起判断。
选择 打开 +新窗口 esc关闭