Buscar el número que anula el error
El precio de un bono se calcula fácilmente a partir de un rendimiento; el rendimiento a partir del precio, no. Se resuelve f(y)=P(y)-precio de mercado=0 buscando. El método de Newton sigue la tangente: desde una estimación y salta a y-f(y)/f'(y), y cerca de la respuesta el número de cifras correctas se duplica aproximadamente en cada paso, así que bastan pocas iteraciones, pero necesita la derivada y puede extraviarse desde un mal inicio. La bisección solo necesita un intervalo [lo,hi] donde f cambia de signo: lo divide por la mitad una y otra vez, así que no puede fallar, pero gana un solo dígito binario por paso, 40 pasos para reducir un intervalo de ancho 65 por debajo de 10⁻¹⁰. El método de Brent, scipy.optimize.brentq, conserva la seguridad del intervalo y añade pasos de interpolación, y suele necesitar tantas evaluaciones como unas pocas bisecciones. Con full_output=True devuelve además un registro cuyo campo function_calls dice cuántas veces evaluó su función.
La misma herramienta invierte la fórmula de Black–Scholes. El precio de una call crece con la volatilidad; para cada precio cotizado se pide a brentq el σ en [10⁻⁴,5] que lo reproduce. Solo funciona si el precio está estrictamente entre el valor intrínseco max(S-Ke^(-rT),0) y el precio de la acción S; fuera no existe volatilidad y la respuesta correcta es NaN, no una excepción, para que una cotización mala no detenga toda una sonrisa. El 9 de octubre de 2026 el rendimiento del Tesoro a 10 años es del 5,24%, así que un bono al 5 % anual a 10 años cuesta 97,121. Newton recupera el rendimiento en 4 iteraciones, Brent en 10 llamadas a la función y la bisección en 40. Las volatilidades implícitas del 10 %, 20 %, 40 % y 80 % vuelven con error menor de 10⁻⁶. Saber lo que cuesta cada método y cuándo puede fallar permite elegir el adecuado para toda una curva de bonos o una cadena de opciones.
- Newton es rápido pero necesita derivada y un inicio decente: aquí tomó 4 pasos.
- La bisección no puede fallar pero es lenta: 40 pasos para un intervalo de ancho 65.
- Use
brentqy trate los casos imposibles: un intervalo más interpolación, y NaN cuando no hay solución.
Lab: qué se califica
- Un precio de bono10 pts
- Newton a mano20 pts
- Bisección a mano15 pts
- Brent con scipy15 pts
- Tres solucionadores lado a lado10 pts
- Volatilidades implícitas15 pts
- El estudio con datos reales15 pts