The magic happened in the loop:

Do While Abs(x1 - x0) > tolerance fx0 = Application.Run(FunctionName, x0) fx0_plus_delta = Application.Run(FunctionName, x0 + delta) derivative = (fx0_plus_delta - fx0) / delta x1 = x0 - fx0 / derivative x0 = x1 Loop He linked it to his volatility model—a user-defined function named PriceError() that returned the difference between the market price and the model price.

In four iterations, the Newton Raphson method had done what Goal Seek couldn’t do in forty. It converged like a hawk diving on a mouse. The portfolio’s implied volatility: .

“If you cannot calculate the analytic derivative, use the Secant approximation: f’(x) ≈ (f(x + δ) − f(x)) / δ.”