Use two previous function values to solve a pricing equation without a derivative, and see why fast local convergence does not preserve a root bracket.
Secant method
The secant method is a derivative-free root-finding algorithm: it replaces a function by the straight line through its two most recent evaluated points and takes that line’s zero as the next guess. In quantitative finance, the function can be a model price minus a market price, with yield or implied volatility as the unknown. Secant steps are useful when prices can be evaluated but their derivatives are unavailable or costly.
The method buys speed by reusing information. It also gives up the interval guarantee of bisection: even two starting guesses on opposite sides of a root do not ensure that later guesses continue to surround it.
Replace the tangent by a chord
Newton–Raphson uses the derivative at the current guess. Secant uses the divided difference between the last two guesses instead:
The line is f(xn)+sn(x−xn); setting it to zero gives the update. It must have a nonzero slope. After two initial function evaluations, caching the previous values means each new update normally requires just one new evaluation. There is no separately chosen finite-difference bump. MIT’s secant-method notes explain this reuse of the preceding iterate.
For a financial setup, Root-Finding and Numerical Integration develops the bond-yield equation and the Newton/bisection comparison. The full lesson requires membership; its public preview shows the purpose and outline.
A fast sequence that loses its bracket
Use the transparent, dimensionless equation f(x)=x2−2, seeking the positive root r=2, with x0=1 and x1=2. The first step is
x2=2−22−(−1)2−1=34.
Continuing with the two most recent guesses gives this exact-arithmetic ledger. Decimal guesses are rounded for display.
Index n
Exact xn
Decimal xn
Exact residual f(xn)
0
1
1.0000000000
−1
1
2
2.0000000000
2
2
4/3
1.3333333333
−2/9
3
7/5
1.4000000000
−1/25
4
58/41
1.4146341463
2/1681
5
816/577
1.4142114385
−2/332929
6
47321/33461
1.4142135621
−1/1119638521
Five updates after the two starts use seven function evaluations with caching. The last guess is about 3.16×10−10 from a high-precision reference for 2. That is a comparison against this known reference, not an error certificate supplied by secant.
The revealing moment is earlier: x2=4/3 and x3=7/5 are both below the root. Their residuals are both negative. The initial bracket has disappeared because ordinary secant retains the latest pair rather than retaining opposite signs. The next step reaches 58/41, outside that latest pair. The method is extrapolating, not always interpolating between its current inputs.
Synthetic x squared minus 2. The chord through (1, minus 1) and (2, 2) proposes x2 equal to 4/3, where the actual residual is minus 2/9. The next guess 7/5 also has a negative residual, so the last pair no longer brackets the positive square root of 2. At n6 the residual is approximately minus 8.931 times 10 to the minus 10.
Original dimensionless example: the chord intercept proposes the next guess, while the evaluated point shows its actual residual. Shaded rows 2 and 3 both lie below the root.
Why the golden ratio appears
Near a simple root, secant can converge faster than linearly. More precisely, for a sufficiently smooth function, sufficiently close distinct starts, f′(r)=0 and the usual nondegeneracy f′′(r)=0, the generic local order is
φ=21+5≈1.618.
Writing en=xn−r, the leading error relation is
en+1≈2f′(r)f′′(r)enen−1.
Matching powers in a local law ∣en+1∣≈C∣en∣p gives p2=p+1. This explains the order between linear and quadratic; it does not promise a fixed number of iterations from arbitrary starts. Multiple roots, vanishing leading coefficients, finite termination and rounding can change the behaviour. Hampton’s university notes derive the local error relation and its assumptions.
What a solver must report
A useful secant result includes the returned parameter, its residual, the last step, evaluation count and a stopping reason. Several failures deserve an explicit outcome:
Flat chord. For g(x)=(x−1)2, distinct starts 0 and 2 both give 1. The denominator is zero even though a root exists at 1. A nearly cancelling denominator can also make the slope unreliable.
Invalid proposal. A step may leave the admissible financial domain, reach an undefined point or overflow. For the same g, starts 0 and 1.999 propose 1000, so even nearby-looking residual values can launch a very large step. Do not silently clip the proposal.
Stagnation or exhausted budget. A repeated floating-point guess is evidence of no representable progress. Stop explicitly if progress fails or the iteration/evaluation limit is reached.
A small step, for example
∣xn+1−xn∣≤xtol+rtol∣xn+1∣,
is a parameter-change diagnostic. It does not bound ∣xn+1−r∣. Check the residual separately and interpret it in its own units; changing a price residual’s scale changes its numerical size. SciPy explicitly warns that its step-based Newton/secant termination does not guarantee that a root has been found.
When a continuous residual has a verified sign-changing bracket and retaining it matters, Brent’s method combines interpolation with a bisection safeguard. That is a different algorithm from unrestricted secant; SciPy’s Brent documentation describes its bracketing requirement.
Sources
Yossi Farjoun. The Secant Method, MIT OpenCourseWare, 18.S997, Fall 2011.
Marshall Hampton. Scalar Root Finding, University of Minnesota Duluth; secant/regula falsi and local convergence sections.
SciPy. newton and brentq, official API documentation.
John V. Guttag. Introduction to Computation and Programming Using Python: With Application to Understanding Data, 2nd edition, MIT Press, copyright 2016, §3.5, pp. 37–38. Derivative-based square-root iteration for comparison.