Financial Modeling
Solve Implied Loan & Annuity Interest Rate from Payment, Principal, and Term
Back out the periodic interest rate and nominal APR of a level-payment loan or equipment lease using quadratic Newton-Raphson iteration and verify zero payment residual with PMT.
Why loan interest rate has no algebraic closed form
The present-value annuity equation PV * r / (1 - (1 + r)^(-N)) = Payment is a degree-(N + 1) polynomial in (1 + r), so no radical formula exists for general N >= 5. Spreadsheet engines solve it iteratively from a linear Taylor seed r_0 = 2 * (N * Payment / PV - 1) / (N + 1).
Evaluating three analytic Newton-Raphson updates inside LET converges to 6+ decimal places across standard consumer, auto, and equipment-finance APRs, while an explicit N * Payment = PV check handles 0% promotional financing without dividing by zero.
| Loan Parameter | Example Input | Solved Output | Verification |
|---|---|---|---|
| Principal (PV) | 10,000.00 | Monthly Rate = 0.010000 | 1.00% per month |
| Term (N months) | 24 | Nominal APR = 0.1200 | 12.00% annual (12 * r) |
| Monthly Payment | 470.734722 | Effective EAR = 0.1268 | (1 + r)^12 - 1 |
| PMT Residual Check | ABS(PMT) - Payment | 0.00 | Exact payment tie-out |
3-Step Newton-Raphson Periodic Rate Solver
Start from rate_0 = 2 * (nper * pmt_amt / pv_amt - 1) / (nper + 1) and apply three Newton steps f(r) / f'(r), guarding zero-interest loans when ABS(nper * pmt_amt - pv_amt) < 0.0001.
=LET(pv_amt, B2, nper, B3, pmt_amt, B4, rate_0, 2 * (nper * pmt_amt / pv_amt - 1) / (nper + 1), res_0, pv_amt * rate_0 / (1 - (1 + rate_0) ^ (-nper)) - pmt_amt, slp_0, pv_amt * ((1 - (1 + rate_0) ^ (-nper)) - rate_0 * nper * (1 + rate_0) ^ (-nper - 1)) / ((1 - (1 + rate_0) ^ (-nper)) ^ 2), rate_1, rate_0 - res_0 / slp_0, res_1, pv_amt * rate_1 / (1 - (1 + rate_1) ^ (-nper)) - pmt_amt, slp_1, pv_amt * ((1 - (1 + rate_1) ^ (-nper)) - rate_1 * nper * (1 + rate_1) ^ (-nper - 1)) / ((1 - (1 + rate_1) ^ (-nper)) ^ 2), rate_2, rate_1 - res_1 / slp_1, res_2, pv_amt * rate_2 / (1 - (1 + rate_2) ^ (-nper)) - pmt_amt, slp_2, pv_amt * ((1 - (1 + rate_2) ^ (-nper)) - rate_2 * nper * (1 + rate_2) ^ (-nper - 1)) / ((1 - (1 + rate_2) ^ (-nper)) ^ 2), IF(ABS(nper * pmt_amt - pv_amt) < 0.0001, 0, ROUND(rate_2 - res_2 / slp_2, 6)))Round-Trip Payment Verification with PMT
Feed the solved periodic rate back into -PMT(E2, B3, B2) to confirm that the implied payment matches the contractual quote to the cent.
=ROUND(-PMT(E2, B3, B2) - B4, 2)Try the example
Use the original values or change them to test your understanding.