Skip to content
All library documents

Implied Interest Rate in Black–Scholes via Root Finding

Article Quant Q&A · Author: Al Bundy

Summary

The document shows how to infer the risk-free rate from a European call price in the Black–Scholes model when spot, strike, maturity, and volatility are known. Rather than interpolating normal distribution values manually, it treats the rate as an unknown input to the call-pricing formula and searches for the rate that reproduces the observed premium.

The key justification is that call rho is positive in ordinary cases, so the call price increases with the rate. The stated limiting prices provide bounds for checking whether a solution is feasible, and monotonicity implies a unique rate within those bounds. The response names bisection and Newton–Raphson as suitable root-finding methods and supplies a code example for the given inputs, yielding a rate rounded to the book’s answer. The method assumes the stated Black–Scholes inputs and a correctly interpreted option price; it does not discuss market frictions or model misspecification.

Key ideas

  • Treat the risk-free rate as the unknown parameter in the Black–Scholes call pricing equation.
  • Call rho is positive in ordinary cases, making the price increase as the rate rises.
  • The call price limits provide bounds for checking whether an implied rate can exist.
  • Bisection or Newton–Raphson can find the rate that matches the observed premium.

Tags

Full text
# simple question on rate finding under B&S


# simple question on rate finding under B&S












Under a Black-Scholes model. I have to find the risk free rate interest to within $0.5\%$ p.a. for a european call option on a stock with : $T=1$ year $K=6$, $S_0=5.50$, $\sigma=20\%$. The book says the option is prices at $60p$ (does it means Option$=S_0*0.60$ ?).

The answer is $14.5\%$, but i don't understand how to get it since we do not have all the elements for interpolating $\mathcal N(d)$ ?

## Answer by LocalVolatility (score 1)

https://quant.stackexchange.com/a/31960

Here is the general solution to your problem of finding the implied rate in the Black-Scholes model. It is actually quite similar to finding the implied volatility. First notice that the European plain vanilla rho

\begin{equation} \frac{\partial C_0}{\partial r} = K T e^{-r T} \mathcal{N} \left( d_- \right), \end{equation}

is strictly positive (except for in edge cases). Next note that

\begin{equation} \lim_{r \downarrow -\infty} C_0 = 0, \qquad \lim_{r \uparrow \infty} C_0 = S_0. \end{equation}

Thus, when your initial call price is inbetween the above two bounds, then you can employ a root-search to find the unique solution for the implied interest-rate. Typical approaches are the bisection algorithm or the the Newton-Raphson algorithm.

Here is a simply Python script:

```
import numpy as np
import scipy.stats as st
import scipy.optimize as op

def blackScholesCall(maturity, strike, spot, rate, volatility):
    discount = np.exp(-rate * maturity)
    forward = spot / discount
    totalVolatility = volatility * np.sqrt(maturity)
    dPlus = np.log(forward / strike) / totalVolatility + 0.5 * totalVolatility * totalVolatility
    dMinus = dPlus - totalVolatility
    return discount * (forward * st.norm.cdf(dPlus) - strike * st.norm.cdf(dMinus))

solution = op.root(lambda rate: blackScholesCall(1.0, 6.0, 5.5, rate, 0.2) - 0.6, 0.0)
print "implied rate = %s" % solution.x[0]
```

It outputs

```
implied rate = 0.145974327185
```

Which is rounded to 14.50% in your case.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.