Net Present Value & the Internal Rate of Return

NPV adds up a whole cash-flow stream in today's dollars at a rate you pick; the IRR is the one rate that makes that sum exactly zero — and it isn't always unique.

By the end you'll be able to compute the IRR of a cash-flow stream, apply the NPV accept/reject rule at a required rate, and recognize when a stream might have more than one IRR.

Predict: as you raise the discount rate, does NPV rise or fall — and where does the project stop being worthwhile? Drag i and watch the zero-crossing.

Pick a cash-flow stream below, then drag i to move the current-rate marker along the NPV(i) curve. The IRR marker(s) sit exactly where the curve crosses zero — try the alternating-signs stream to see two of them at once.

NPV at i = 10.00%: $41.32accept

IRR: 13.07%

NPV(i) for the selected stream — drag i and watch where the curve crosses zero
NPV(i) current i IRR (NPV = 0) zero line

NPV translates an entire stream of payments and receipts into one number in today's dollars; the IRR is just the special rate at which that number lands on exactly zero.

Intuitive

Line up every payment and receipt on a timeline, shrink each one back to today using your chosen rate, and add them all up — that total is the NPV. Raise the rate and every future dollar shrinks harder, so for a normal "pay now, collect later" project the total falls as the rate rises. Slide the rate up until the total lands exactly on zero, and you've found the IRR: the break-even rate at which the project neither gains nor loses value.

Formal

For a cash-flow stream \(C_0, C_1, \ldots, C_n\) at times \(0, 1, \ldots, n\), \(\mathrm{NPV}(i) = \sum_t C_t \cdot v^t\), where \(v = 1/(1+i)\). The IRR, \(i^*\), is the rate solving \(\mathrm{NPV}(i^*) = 0\). The yield equation \(\sum_t C_t x^t = 0\) (with \(x = 1+i\)) is a degree-\(n\) polynomial, so by Descartes' rule of signs the number of positive roots is at most the number of sign changes in the ordered cash flows. A conventional stream (one sign change) has a unique positive IRR; a stream that alternates sign more than once can have several IRRs, or none.

Applied

A business compares the NPV at its required rate (cost of capital) against zero: NPV > 0 means the project clears the hurdle, so accept it. For a conventional stream this is the same test as "IRR > required rate." But when comparing several projects against each other, lean on NPV at the required rate rather than ranking by IRR — IRR ignores project scale and implicitly assumes any cash it frees up gets reinvested at the IRR itself, which is rarely realistic.

Worked example

Pay 1000 today; receive 600 at the end of year 1 and 600 at the end of year 2. The yield equation is \(-1000 + 600v + 600v^2 = 0\). Dividing by 200: \(3v^2+3v-5=0\), so \(v = (-3+\sqrt{69})/6 \approx 0.88444\) and \(1+i^* = 1/v \approx 1.13064\), giving IRR ≈ 13.07%. At a required rate of 10%, \(\mathrm{NPV}(0.10) = -1000 + 600(0.90909) + 600(0.82645) \approx\) +41.32 — positive, so the project clears a 10% hurdle, matching IRR ≈ 13.07% > 10%. Set the demo's rate slider to 10% and check the same number.

Your turn

Same idea, different numbers: pay 1000 today, receive 650 at the end of each of the next two years. Yield equation: \(-1000 + 650v + 650v^2 = 0\). Dividing by 50: \(13v^2+13v-20=0\), so \(v = (-13+\sqrt{1209})/26 \approx 0.83734\). Now finish it: \(1+i^* = 1/0.83734 \approx\) ____, so \(i^* \approx\) ____

Reveal the answer

\(1+i^* = 1/0.83734 \approx 1.19430\), so IRR ≈ 19.43%. Notice this is a different stream from the worked example above (650 vs. 600 each year), so it lands on a different IRR — there's no shortcut that reuses the earlier answer.

More info — why the curve can rise, not just fall

As you saw when balancing an equation of value, a higher rate always shrinks a single future amount more the longer you wait for it. For a conventional stream (all the outflow up front, all the inflows later), that shrinkage is one-directional — every inflow gets discounted harder as i rises, so NPV falls monotonically and crosses zero exactly once. But when signs alternate — say an outflow, then an inflow, then another outflow — raising i also shrinks that later outflow, which can pull NPV back up before it falls again. That tug-of-war between differently-timed positive and negative terms is exactly what produces the hump — and the second zero-crossing — in the alternating-signs preset above. See the Internal rate of return link in Dive deeper for the general argument.

Check your understanding

Question 1 of 4

You pay 800 today and receive 500 at the end of each of the next two years. Find the yield rate (IRR).

Question 2 of 4

A cash-flow stream is −100 at time 0, +500 at time 1, and −600 at time 2 — two sign changes. What does this tell you about its IRR?

Question 3 of 4

The internal rate of return is really a special case of which general tool from time value of money?

Question 4 of 4

Buying a bond for its price, then collecting coupons and the redemption value, is itself a cash-flow stream. What is the bond's yield rate, in NPV/IRR terms?

Recap

  • \(\mathrm{NPV}(i) = \sum_t C_t \cdot v^t\); the IRR (yield rate) is the rate \(i^*\) that makes \(\mathrm{NPV}(i^*) = 0\).
  • Accept a project when NPV > 0 at the required rate — for a conventional stream, that's the same as requiring IRR to beat the required rate.
  • A conventional stream (one sign change) has a unique IRR; a stream whose signs alternate more than once can have several IRRs, or none — Descartes' rule of signs caps the count.
  • When ranking multiple projects, use NPV at the required rate rather than comparing IRRs directly.

Dive deeper

Sources

  • Net Present Value and the Internal Rate of Return