The Bisection Method
Finding where a function crosses zero by repeatedly cutting the search interval in half — slow but bulletproof, the numerical equivalent of a guaranteed-to-work guessing game.
Prerequisites: Limits and Continuity
An options desk needs the implied volatility that makes Black-Scholes match a quoted market price. There's no algebraic formula to invert Black-Scholes for volatility directly — you have to search for it. The bisection method is the simplest, most robust way to search: given a range you're sure contains the answer, repeatedly cut it in half, keeping whichever half must still contain the crossing point. It's slower than fancier methods, but it essentially cannot fail, which is exactly why it's often the fallback of last resort inside pricing libraries.
An analogy: the number-guessing game
Think of the classic game where someone picks a number between 1 and 100 and you guess, being told only "higher" or "lower" after each try. The optimal strategy is always guess the midpoint: start at 50, and whichever half you're told to go to, guess its midpoint next. Each guess eliminates exactly half of the remaining possibilities, so you're guaranteed to nail a number between 1 and 100 in at most 7 guesses (), no matter how unlucky your guesses "feel." Bisection is this exact strategy applied to a continuous function instead of an integer.
The math, one piece at a time
Suppose is a continuous function and you know and have opposite signs — one positive, one negative — for some interval . The Intermediate Value Theorem guarantees crosses zero somewhere inside , since a continuous function can't jump from positive to negative without passing through zero. Bisection exploits exactly this guarantee: compute the midpoint and evaluate . If has the same sign as , the root must be in (replace with ); otherwise it's in (replace with ). Repeat.
In words: every iteration, the interval known to contain the root is replaced by whichever half still brackets a sign change, so the interval width exactly halves each step: . The error after iterations is bounded by half the current interval width, so hitting a target precision takes iterations — a number you can compute in advance, unlike most other root-finders.
Worked example 1: implied volatility by hand
Suppose a call's Black-Scholes price, as a function of volatility , gives (model price $2.10 below market at 10% vol) and (model price $3.40 above market at 50% vol) — a sign change, so the true implied vol lies in . Midpoint : suppose (still positive, same sign as ), so the root is in . Midpoint : suppose (negative, same sign as ), so the root is in . Midpoint : suppose , root in . After 3 iterations the interval has shrunk from width 0.40 to width 0.05 — each step halved it, exactly as guaranteed, narrowing in on an implied vol near 22-23%.
Worked example 2: counting iterations needed
Starting interval (a plausible bound for a rate solved via bootstrapping) and target precision . Required iterations: , so 16 iterations guarantee the answer within 0.0001 — regardless of how badly-behaved is elsewhere, as long as it's continuous and the sign change holds.
What this means in practice
Bisection is the fallback root-finder built into most pricing libraries for implied volatility, yield-to-maturity, and any "invert this monotone pricing function" problem, precisely because it never diverges or overshoots the way Newton's method can. It's typically used either on its own when robustness matters more than speed, or as a safety net wrapped around a faster method like Newton-Raphson or Brent's method: if the fast method's step would leave the known bracketing interval, fall back to a bisection step to guarantee progress.
Bisection repeatedly halves an interval known to contain a root, using only the sign of at the midpoint to decide which half to keep — it converges at a fixed, guaranteed rate of one bit of precision per iteration, and cannot fail as long as the function is continuous and the starting interval truly brackets a sign change.
The classic mistake is starting bisection on an interval where and have the same sign, either because there's no root inside (or there are two, canceling the sign change) — the method will silently run and converge to a meaningless point, or need an explicit check that fails, rather than reliably finding a genuine root. Always verify and have opposite signs before starting, and be aware that if the function crosses zero an even number of times inside , the endpoints can still have matching signs while roots exist inside.
Related concepts
Practice in interviews
Further reading
- Burden & Faires, Numerical Analysis, ch. 2
- Press et al., Numerical Recipes, ch. 9