Skip to content

Chapter 1 of 7

Time Value of Money

Excel's time-value-of-money toolkit lets an analyst move between lump sums, streams, and rates without leaving the spreadsheet. The workhorse is `=NPV(rate, value1, value2, ...)`, which discounts its first argument by one period, its second by two, and so on. A critical gotcha is that the period-zero outflow is not part of that discount ladder, so an analyst must list it separately — typically as `+ initial_investment` — for the formula to produce a true net present value. By contrast, `=PV(rate, nper, pmt, [fv], [type])` discounts a level annuity or single future sum, taking the annuity payment and number of periods rather than a vector of cash flows. Companion functions `=IRR(cashflows)` and `=XIRR(values, dates)` return the discount rate that drives net present value to zero, with XIRR accepting actual transaction dates rather than assuming equal periods; `=XNPV(rate, values, dates)` provides the same flexibility on the present-value side when cash flows arrive on irregular dates.

Several functions exist for solving a rate or a number of periods when the cash flow pattern is known. `=RATE(nper, pmt, pv, [fv], [type], [guess])` uses Excel's goal-seeking to back out the periodic interest rate of an annuity, while `=NPER(rate, pmt, pv, [fv], [type])` answers the inverse question — how many periods it takes to amortize a loan or reach a savings goal. `=EFFECT(nominal_rate, periods_per_year)` converts a nominal rate compounded n times per year into the effective annual rate that should be used for cross-product comparison. `=MIRR(cashflows, finance_rate, reinvest_rate)` refines IRR by replacing the unrealistic assumption that interim cash flows are reinvested at the IRR itself; instead, the modeler specifies separate borrowing and reinvestment rates that reflect how the firm actually deploys capital. The closed-form annuity present-value factor \(\frac{1 - (1+r)^{-n}}{r}\) is exactly what `=PV(rate, n, -1)` computes in one cell.

For loan and growth modeling, `=PMT(rate/12, n_months, -principal)` returns the periodic payment, where the sign of the principal is flipped so the result is a positive outflow. To break a single payment into its components, `=IPMT` and `=PPMT` produce the interest and principal share respectively for any period, and `=CUMIPMT` and `=CUMPRINC` aggregate those amounts across any window of periods — making it straightforward to populate an interest schedule or compute a cumulative tax shield. Compound growth uses the closed form \(\text{Principal} \cdot (1 + r/n)^{n t}\), but the equivalent `=FV(rate, nper, pmt, pv, type)` is usually faster and easier to audit. CAGR itself reduces to the simple identity \((E/S)^{1/n} - 1\), while an annuity-due pattern (payments at the start of each period) is achieved by passing 1 as the final argument of FV or PMT.

All chapters
  1. 1Time Value of Money
  2. 2Bonds, Yield & Cost of Capital
  3. 3Valuation & DCF Mechanics
  4. 4Financial Statement Modeling & Ratios
  5. 5Lookups, References & Dynamic Arrays
  6. 6What-If, Optimization & Simulation
  7. 7Data Shaping, Dates, Pivots & DAX

Drill it

Reading is not remembering. These come from the Excel Formulas For Financial Analysts deck:

Q

NPV formula in Excel?

=NPV(rate, value1, value2, ...) + initial_investment — NPV discounts from period 1; include the initial outflow (often negative) separately.

Q

IRR formula?

=IRR(cashflows) — first cashflow usually negative (investment), then inflows.

Q

XNPV vs NPV?

NPV: assumes equal-period intervals.XNPV(rate, values, dates): handles irregular dates.

Q

XIRR vs IRR?

IRR: equal periods.XIRR(values, dates): irregular dates — used when actual cash flow timing varies.