{{ summaryTitle }}
{{ summaryValue }}

{{ summaryLine }}

Finding{{ resultsReady ? findingLabel : '—' }} Periods{{ resultsReady ? computation.values.period_count : '—' }} Sign changes{{ resultsReady ? computation.values.sign_changes : '—' }}

{{ primaryCopyAnnouncement }}

Periodic cash-flow inputs
Enter 2–30 amounts in one consistent currency or unit. The result is a rate per interval; dates and annualization are not inferred.
PeriodCash flowRemove
%
The 10% default is a comparison assumption for the same equal interval as each cash-flow row.
{{ row.label }}
{{ row.display }}
Root {{ index + 1 }}{{ formatPercent(root.rate) }}
Relative residual
{{ formatResidual(root.residual) }}
Isolation domain
Positive discount factors
Final bracket width
{{ formatPercent(root.bracketWidth) }}
{{ findingLabel }}{{ noRootExplanation }}
Calculation method:
Rates are periodic. Irregular dates require XIRR, and annualization requires an explicit interval frequency.
NPV(r) = Σ CFₜ / (1 + r)ᵗ = 0
{{ row.label }}
{{ row.display }}{{ row.detail }}
This is calculation evidence, not an investment recommendation. Verify cash-flow forecasts, equal-period timing, and the decision method when the result is consequential.

{{ chartExportStatus }}

The chart renderer is unavailable. The same discounted values remain in the cash-flow ledger.

PeriodCash flowDiscount factorDiscounted contributionCopy
{{ row.period }}{{ formatCashFlow(row.cashFlow) }}{{ formatFactor(row.discountFactor) }}{{ formatCashFlow(row.discountedCashFlow) }}
NPV at {{ formatPercent(computation.values.hurdle_rate) }}{{ formatCashFlow(computation.values.hurdle_npv) }}

{{ ledgerExportStatus }}

Cash flows spread across time cannot be compared by adding them alone. An amount received later is discounted because capital has an opportunity cost and future forecasts carry risk. Net present value (NPV) applies a chosen discount rate to that timing. Internal rate of return (IRR) reverses the question and finds the rate that makes the cash-flow series have an NPV of zero.

IRR is a rate per cash-flow interval. Monthly rows produce a monthly IRR, quarterly rows a quarterly IRR, and annual rows an annual IRR. The intervals must be equal. A list of actual transaction dates needs XIRR or another date-aware method because ordinary periodic IRR does not infer day counts or annualize its answer.

Negative cash flow
Money invested, paid, or otherwise leaving the project at that period.
Positive cash flow
Money returned or received at that period.
Hurdle rate
A separately chosen comparison rate used to calculate NPV. It does not select or change an IRR root.
IRR root
A rate greater than −100% at which the ordered periodic cash flows sum to zero after discounting.

A conventional project often has one initial outflow followed by inflows and therefore one economically relevant root. Cash flows that change sign more than once can have several IRRs or none. In that situation, reporting the first rate found by a guess-based solver can create false certainty. Every valid root must be considered alongside NPV, financing assumptions, project scale, and the reason cash-flow signs reverse.

IRR also hides scale. A small project with a high rate can create less value than a larger project with a lower rate. It assumes only the zero-NPV relationship represented by the cash flows; it does not by itself establish a reinvestment rate, forecast quality, financing availability, or investment suitability.

Use IRR as calculation evidence within a broader decision. Forecast errors, omitted cash flows, unequal timing, and multiple roots can matter more than extra decimal places in the reported rate.

How to Use This Tool:

Keep every row in one currency or unit and one equal time interval, starting with period 0 now.

  1. Enter 2 to 30 ordered Cash flows. Use negative values for outflows and positive values for inflows, with at least one of each sign.
  2. Add or remove period rows until the sequence matches the full decision horizon. Do not omit a terminal cost, salvage value, or intermediate reinvestment merely because it changes the result.
  3. Use a supplied example to examine a one-root, multiple-root, or no-root pattern, or replace every amount with your own cash flows.
  4. Open Advanced to set the Hurdle rate per period. This changes comparison NPV and discounted contributions only.
  5. Read the finding before the percentage. A result may show one distinct root, several roots, no finite root, or incomplete numerical certification.
  6. Check sign changes, root residuals, and NPV contributions before using the result. For irregular dates, stop and use a date-aware XIRR method instead.

Interpreting Results:

Internal rate of return finding labels and interpretation
FindingMeaningDecision check
One distinct rootOne validated rate above −100% makes periodic NPV approximately zero.Compare NPV at the hurdle rate and verify the equal-period forecast.
Multiple distinct rootsMore than one rate satisfies the IRR equation.Do not choose the most attractive root; use NPV and cash-flow economics to evaluate the project.
No finite IRRNo validated rate above −100% makes NPV zero.Use NPV or another decision measure rather than forcing a percentage.
Solver incompleteThe full root set could not be certified within the numerical bounds.Do not substitute a guessed result; verify with an independent numerical method.

Cash-flow sign changes are an ambiguity warning, not a root count. One sign change is consistent with at most one positive discount-factor root. More sign changes permit multiple roots but do not guarantee them.

The hurdle-rate NPV answers a different question from IRR. Positive NPV means the entered cash flows exceed the chosen periodic discount requirement; negative NPV means they fall short. Changing that hurdle does not alter any IRR shown.

Technical Details:

Periodic IRR is defined by the ordered cash-flow sequence rather than by a starting guess. Period 0 is undiscounted. Each later amount is divided by one plus the periodic rate raised to its period number.

Formula Core:

For cash flows C0 through Cn, every reported IRR r satisfies the zero-NPV equation in the domain r > −1.

0=NPV(r)= t=0n Ct(1+r)t ,r>1

The hurdle-rate NPV uses the same sum with the entered comparison rate instead of a solved root. Compensated summation reduces accumulated floating-point error in that comparison.

Transformation Core:

Substituting x = 1 / (1 + r) changes the problem into finding every positive real root of a cash-flow polynomial. Each positive x maps back to one finite rate above −100%.

P(x)= t=0n Ctxt=0 , r=1x1
  1. Leading and trailing zero coefficients are removed without changing the finite root set.
  2. Derivative roots divide the positive domain into intervals where the polynomial is monotonic.
  3. Sign-changing intervals are solved by bounded bisection; stationary roots are tested separately.
  4. Near-duplicate candidates are merged, then each root must meet a relative polynomial residual of at most 5 × 10−9.
  5. Validated roots are converted to percentages and sorted from lowest to highest.

The solver supports cash-flow magnitudes up to 1015, a hurdle rate greater than −99.99% and no more than 1,000,000%, and up to 220 bisection iterations per bracket. These are numerical operating bounds, not reasonable financial assumptions.

Limitations:

  • Intervals are equal and dates are not accepted or inferred.
  • The periodic rate is not automatically annualized. Compounding a monthly or quarterly IRR requires an explicit frequency assumption.
  • IRR does not resolve mutually exclusive projects with different sizes or timing as reliably as a well-chosen NPV comparison.
  • No reinvestment rate is assumed; modified IRR (MIRR) is a different measure.
  • Forecast quality, taxes, financing constraints, risk, and liquidity remain outside the calculation.

Worked Examples:

One periodic return

Cash flows of −100,000, 30,000, 35,000, 40,000, and 45,000 have one validated IRR of about 17.0937% per period. At a 10% hurdle rate, their NPV is about 16,986.54 in the same cash-flow unit.

Two valid roots

Cash flows of −100, 230, and −132 change sign twice and produce two IRRs: 10% and 20% per period. Both solve the equation. The sequence needs an NPV-based decision rule rather than selecting one IRR.

References: