Tutorials › Exam FM - Financial Mathematics › The Secant Method for IRR

Exam FM · Internal Rate of Return · Tutorial 486 of 998

The Secant Method for IRR

Use two rate estimates and their net present values to build and apply secant updates, then compare the method’s speed and risks with bracketing.

Intermediate 12 min read

What You'll Learn

  • Derive the secant update from the chord through two NPV estimates.
  • Apply successive updates to estimate an IRR and check the remaining NPV.
  • Identify when the secant denominator is zero or the update is unusable.
  • Compare secant iteration with methods that preserve an IRR bracket.
  • Recognize why same-sign trial NPVs can produce a misleading update.

Why Use the Secant Method?

For an investment with uneven cash flows, the internal rate of return is usually found by solving an NPV equation rather than by rearranging it into a closed-form expression. The secant method is a numerical way to improve a rate estimate: it uses the NPVs at two trial rates to estimate where the NPV will be zero. It does not require an NPV derivative, as Newton’s method does.

The method is efficient when its two estimates are informative and the NPV profile behaves smoothly near the desired root. But it is not a bracketing method: an update does not have to remain between the two estimates, and successive estimates need not enclose a root. That distinction is important when deciding whether an apparently plausible update is trustworthy.

Definition: For cash flows \(C_0,C_1,\ldots,C_n\) at times \(0,1,\ldots,n\), measured in equal periods, define $$ f(i)=\operatorname{NPV}(i)=\sum_{t=0}^{n} C_t(1+i)^{-t}, \qquad i>-1. $$ An internal rate of return is a rate \(i\) in the model’s domain for which \(f(i)=0\). Given two distinct trial rates \(i_0\) and \(i_1\), with \(f(i_1)\ne f(i_0)\), the secant update is $$ i_2=i_1-f(i_1)\frac{i_1-i_0}{f(i_1)-f(i_0)}. $$

The domain condition \(i>-1\) ensures that \(1+i\) is positive, as required for the usual effective rate per period and discount factors. The formula assumes the cash flows are assigned to the stated period ends and that one effective rate per period is being used. For irregularly timed cash flows, the time exponents and rate model must be adjusted; the equal-period formula above should not be applied unchanged.

Why the Secant Update Has This Form

The method replaces the curved NPV profile, temporarily, with the straight line through the two known points \((i_0,f(i_0))\) and \((i_1,f(i_1))\). It then takes the rate where that line crosses the horizontal axis as the next estimate.

1
Write the chord equation.
The slope through the two points is \(\frac{f(i_1)-f(i_0)}{i_1-i_0}\). The line through \((i_1,f(i_1))\) is \(y=f(i_1)+\frac{f(i_1)-f(i_0)}{i_1-i_0}(x-i_1)\).
2
Set the chord value to zero.
Its horizontal intercept satisfies \(0=f(i_1)+\frac{f(i_1)-f(i_0)}{i_1-i_0}(x-i_1)\).
3
Solve for the intercept.
Rearranging gives \(x=i_1-f(i_1)\frac{i_1-i_0}{f(i_1)-f(i_0)}\), which is the secant update.

This derivation explains both the method’s appeal and its risk. A chord can approximate a smooth curve well near a simple root, but it is still only a straight-line approximation. Its intercept can be far from the root when the chord is nearly horizontal or when the trial points do not give useful information about the local NPV profile.

Applying the Update

At each iteration, calculate the NPV at the current trial rate, use the two most recent rate-NPV pairs in the update, and then evaluate NPV at the new rate. Keep adequate precision during the iterations. Rounding a rate or NPV too early can change the next chord and noticeably affect the result.

Worked Example: Improving an IRR Estimate

A hypothetical project requires \(100\) dollars immediately and returns \(120\) dollars one period later. Periods are one year, the rate is effective per year, and the project’s IRR is sought for \(i>-1\). Use the secant method, starting at \(i_0=0.10\) and \(i_1=0.30\), to obtain two updates. Report rates to six decimal places and check the final NPV.

Method. The cash flows are \(C_0=-100\) and \(C_1=120\), so \(f(i)=-100+120/(1+i)\). The common mistake to avoid is reversing the NPV difference in the denominator without also changing the formula’s sign.

At \(i_0=0.10\), $$ f(0.10)=-100+\frac{120}{1.10} =-100+109.090909 =9.090909. $$ At \(i_1=0.30\), $$ f(0.30)=-100+\frac{120}{1.30} =-100+92.307692 =-7.692308. $$

The first update is $$ i_2=0.30-(-7.692308)\frac{0.30-0.10}{-7.692308-9.090909} \approx 0.208333. $$ Using the unrounded values, \(f(i_2)=-0.689655\). The next update is $$ i_3=0.208333-(-0.689655)\frac{0.208333-0.30}{-0.689655-(-7.692308)} \approx 0.199306. $$ At this rate, \(f(i_3)\approx 0.057903\). The second update is $$ i_4=0.199306-(0.057903)\frac{0.199306-0.208333}{0.057903-(-0.689655)} \approx 0.200005. $$

Using unrounded iteration values, the NPV at \(i_4\) is approximately \(-0.000402\) dollars, close to zero. The result is consistent with the exact equation \(-100+120/(1+i)=0\), which gives \(i=0.20\). Thus the reported estimate, \(0.200005\), is a close numerical approximation to the \(20\%\) IRR. The check is the small NPV residual, not simply the apparent stability of the rate digits.

Secant Iteration Compared With Bracketing

A bracket consists of two rates at which the NPV has opposite signs. If the NPV is continuous between those rates, at least one zero lies between them. Bisection preserves that sign-changing interval by repeatedly halving it. Secant iteration instead uses the chord intercept; it may be faster, but does not guarantee that its next estimate lies inside a sign-changing interval.

FeatureSecant methodBracketing method, such as bisection
Information usedTwo rate-NPV pairsAn interval with opposite NPV signs
Derivative requiredNoNo
Root remains enclosedNot guaranteedYes, if continuity and the sign change hold
Typical behavior near a suitable rootOften rapid; the estimates are not forced to move uniformlyPredictable interval reduction, but generally slower
Main numerical riskSmall NPV difference, poor update, or departure from the valid domainSlow convergence or an invalid bracket assumption

For a conventional project with one initial outflow followed by inflows, the NPV is continuous and strictly decreasing for \(i>-1\). If two valid trial rates have opposite-sign NPVs, a root is enclosed between them. A secant estimate computed from those rates may be useful, but the next pair of estimates does not automatically preserve the bracket. After an update, check the NPV signs rather than assuming the original safeguard still applies.

Under suitable smoothness conditions near a simple root, secant iteration typically converges faster than bisection once the estimates are close. This is a local statement, not a guarantee from arbitrary starting values. The method can fail to make progress if the two NPV values are equal, because the denominator is zero; if they are nearly equal, the update can be extremely large. It can also converge to a different root when a profile has more than one root, or fail to converge. Those possibilities are reasons to monitor the rate domain and residual, not reasons to assume every secant output is an IRR.

Worked Example: A Secant Step That Leaves the Valid Domain

A hypothetical one-period project has cash flows \(-100\) dollars at time 0 and \(200\) dollars at time 1. Its effective annual rate is \(i>-1\). A solver uses \(i_0=10\) and \(i_1=11\), where rates are written as decimals (so these are \(1000\%\) and \(1100\%\)). Apply one secant update, diagnose it, and compare with a bracketed calculation.

Method. Here \(f(i)=-100+200/(1+i)\). First calculate the two NPVs: $$ f(10)=-100+\frac{200}{11} =-100+18.181818 =-81.818182, $$ $$ f(11)=-100+\frac{200}{12} =-100+16.666667 =-83.333333. $$ Both NPVs are negative, so these estimates do not bracket the root.

The update is $$ i_2=11-(-83.333333)\frac{11-10}{-83.333333-(-81.818182)} \approx 11-55=-44. $$ This is outside the model domain \(i>-1\). At \(i=-44\), the usual positive discount-factor interpretation does not apply. The update is not a valid IRR estimate.

To compare, use \(i=0.5\) and \(i=2\). Their NPVs are \(f(0.5)=-100+200/1.5=33.333333\) and \(f(2)=-100+200/3=-33.333333\), so they do bracket the root. The secant update from these two points is \(i=2-(-33.333333)(1.5)/(-66.666666)=1\). Checking gives \(f(1)=-100+200/2=0\). The trap was treating any two trial rates as suitable inputs; opposite-sign NPVs provide a safeguard that the first pair lacked.

Practical Checks and Common Mistakes

A secant calculation is not complete merely because the update formula has produced a number. Check that the rate is in the model’s domain, reevaluate NPV at the new rate, and consider whether the rate-NPV pairs still support the intended root. When a sign-changing bracket is available, it is useful to retain it as a check even if secant steps are being used to accelerate the calculation.

  • Using rates where period units do not match. The rate in the discount factors must be per cash-flow period. A rate stated per year cannot be inserted unchanged when the cash flows are in another period unit.
  • Using the wrong NPV order. In the displayed update, the rate difference is \(i_1-i_0\) and the NPV difference is \(f(i_1)-f(i_0)\). Keep these orders paired.
  • Ignoring the denominator. If \(f(i_1)=f(i_0)\), the update is undefined. If the values are nearly equal, it may be numerically unstable.
  • Assuming an update remains bracketed. A secant step can leave the original interval, even when the starting rates had opposite-sign NPVs.
  • Stopping on rate change alone. A small change between two estimates is not sufficient evidence of a root. Also evaluate the NPV residual and check the rate’s validity.
Key takeaway: The secant method estimates the zero of an NPV profile using the intercept of a chord through two trial points. It can converge quickly without a derivative, but unlike bisection it does not guarantee a valid bracket or even a rate in the model domain. Always check the update and its NPV.

Check Your Understanding

For each problem, use the secant formula with the stated rate and NPV values. Keep the cash-flow period and rate units consistent.

  1. An NPV function has \(f(0)=40\) and \(f(0.20)=-10\). Calculate the next secant estimate. (Answer: \(i_2=0.160000\), or \(16.0000\%\))
  2. A one-period project has cash flows \(-200\) dollars at time 0 and \(260\) dollars at time 1. Starting from \(i_0=0.20\) and \(i_1=0.50\), calculate one update. (Answer: \(i_2\approx0.315385\), or \(31.5385\%\))
  3. At rates \(0.08\) and \(0.16\), an NPV function has values \(24\) and \(-12\), respectively. Find the secant estimate. (Answer: \(i_2\approx0.133333\), or \(13.3333\%\))
  4. A one-period project has cash flows \(-150\) dollars and \(195\) dollars. Use \(i_0=0.10\) and \(i_1=0.50\) to calculate the next estimate. (Answer: \(i_2\approx0.330769\), or \(33.0769\%\))
  5. A one-period project has cash flows \(-100\) dollars and \(180\) dollars. Trial rates are \(i_0=3\) and \(i_1=4\). Calculate the update and state whether it is in the usual rate domain. (Answer: \(i_2=-28/9\approx-3.111111\), outside the domain \(i>-1\))
Clinical Biostats