跳到内容
🛠️ToolsShed

IRR计算器

计算一系列现金流的内部收益率(IRR)。

未来现金流

年份 1
年份 2
年份 3
年份 4

关于此工具

内部收益率(IRR)是评估投资或项目盈利能力和效率的关键指标。该计算器确定使所有现金流的净现值(NPV)等于零的折现率,为您提供代表投资年回报率的单一百分比。理解IRR可以帮助投资者和财务专业人士在不考虑投资规模或期限的情况下,基于相同的标准比较不同的投资机会。

要使用此计算器,请输入您的初始投资(通常为负值)和所有后续现金流,并按时间顺序输入各自的年份。该工具将使用数值方法迭代求解IRR。IRR通常用于评估资本投资、企业并购、房地产交易和项目可行性。当您需要在竞争性投资机会之间做出决策或评估项目是否达到所需回报率时,它特别有价值。

请注意,IRR假设现金流以IRR率本身进行再投资,这在现实中可能并不总是成立的;在复杂情景中可以使用修正IRR(MIRR)来解决这一问题。此外,对于非常规现金流模式,IRR可能会产生多个解。该计算器提供主要IRR值,在现金流遵循常规模式(初始支出后跟随流入)时最为可靠。

常见问题

代码实现

def npv(rate: float, cash_flows: list) -> float:
    """Net Present Value at given rate."""
    return sum(cf / (1 + rate) ** t for t, cf in enumerate(cash_flows))

def irr(cash_flows: list, max_iter: int = 1000, tol: float = 1e-7) -> float | None:
    """Internal Rate of Return via Newton-Raphson iteration."""
    # Check sign change
    positives = any(cf > 0 for cf in cash_flows)
    negatives = any(cf < 0 for cf in cash_flows)
    if not (positives and negatives):
        return None

    rate = 0.1  # initial guess
    for _ in range(max_iter):
        f = npv(rate, cash_flows)
        # Derivative: d/dr NPV = sum(-t * cf / (1+r)^(t+1))
        df = sum(-t * cf / (1 + rate) ** (t + 1) for t, cf in enumerate(cash_flows))
        if df == 0:
            break
        new_rate = rate - f / df
        if abs(new_rate - rate) < tol:
            return new_rate
        rate = new_rate
    return None

# Example: invest $1000, receive $300, $400, $500 over 3 years
cash_flows = [-1000, 300, 400, 500]
result = irr(cash_flows)
if result is not None:
    print(f"IRR = {result * 100:.2f}%")
    print(f"NPV at IRR ≈ {npv(result, cash_flows):.6f}")  # should be ~0

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.