8 Black-Scholes
This chapter expands the discussion of the very important Black-Scholes formulas for the values of European calls and puts. Options are written on asset prices, not dividend-reinvested asset prices, with which we have been primarily dealing to this point. U.S. companies pay dividends quarterly (if they pay dividends). If the option will mature before the next dividend is paid (to be more precise, if it matures before the next ex-dividend date, which is when the stock begins trading without right to the subsequent dividend) then dividends are not an issue. We discuss a model suitable for valuing options that mature after one or more upcoming dividend payments in ?sec-c:americans. In this chapter, we make a simplifying assumption. We assume that dividends are paid continuously at a rate proportional to the underlying asset price. The Black-Scholes assumptions are that the underlying asset pays a constant dividend yield \(q\) and has price \(S\) satisfying \[ \frac{\,\mathrm{d}S}{S} = (\mu - q) \,\mathrm{d}t + \sigma\,\mathrm{d}B \qquad(8.1)\]
for a Brownian motion B. Here \(\sigma\) is assumed to be constant (though we will allow it to vary in a non-random way at the end of the chapter) and \(\mu\) can be a quite general random process. It is also assumed that there is a constant continuously-compounded risk-free rate \(r\).
Under these assumptions, we complete the discussion of Chapter 6 and Section 7.2 to derive option pricing formulas. Recall that, to price a European call option, all that remains to be done is to calculate the probabilities of the option finishing in the money when we use the risk-free asset and the underlying asset as numeraires. We do this using the results of Section 7.8.
8.1 European Call and Put Values
In Section 7.8—see Equation 7.2—we learned that under the Black-Scholes assumption Equation 8.1 we have \[\frac{\,\mathrm{d}S}{S} =( r-q)\,\mathrm{d}t+\sigma\,\mathrm{d}B^*\; ,\] where \(B^*\) is a Brownian motion under the risk-neutral probability.1 on the volatility coefficients and on \(B\) and \(B^*\) to distinguish the Brownian motion driving \(S\) from the Brownian motion driving \(Y\) and to distinguish their volatilities are not needed here. In ?sec-s:geometricbrownianmotion, we observed that this is equivalent to \[\,\mathrm{d}\log S = \left(r-q-\frac{1}{2}\sigma^2\right)\,\mathrm{d}t + \sigma\,\mathrm{d}B^*\; .\]
A European call option pays \(S_T-K\) at date \(T\) if \(S_T>K\) and 0 otherwise. Again letting \[\begin{equation*} x = \begin{cases} 1 & \text{if $S_T>K$}\; ,\\ 0 & \text{otherwise}\;, \end{cases} \end{equation*}\] the payoff of the call can be written as \(xS_T-xK\). This is equivalent to one share digital minus \(K\) digitals, with the digitals paying in the event that \(S_T>K\). The share digital is worth \(\mathrm{e}^{-q T}S_0\mathrm{N}(d_1)\) at date \(0\) and each digital is worth \(\mathrm{e}^{-rT}\mathrm{N}(d_2)\). Note that ?eq-digital_d2 and Equation 6.1 for \(d_1\) and \(d_2\) imply \(d_2 = d_1-\sigma{\sqrt{T}}\). Therefore, combining the results of the previous two sections yields the Black-Scholes formula:
The value of a European call option at date \(0\) is \[ \mathrm{e}^{-q T}S_0\mathrm{N}(d_1)-\mathrm{e}^{-rT}K\mathrm{N}(d_2)\;, \qquad(8.2)\]
where \(d_1\) is defined in Equation 6.1 and \(d_2 = d_1-\sigma{\sqrt{T}}\).
A European put option pays \(K-S_T\) at date \(T\) if \(S_T<K\) and 0 otherwise. As before, let \[\begin{equation*} y = \begin{cases} 1 & \text{if $S_T<K$}\; ,\\ 0 & \text{otherwise}\;. \end{cases} \end{equation*}\] The payoff of the put option is \(yK-yS_T\). This is equivalent to \(K\) digitals minus one share digital, all of the digitals paying when \(S_T<K\). Thus, we have:
The value of a European put option at date \(0\) is \[ \mathrm{e}^{-rT}K\mathrm{N}(-d_2)-\mathrm{e}^{-q T}S_0\mathrm{N}(-d_1)\;, \qquad(8.3)\]
where \(d_1\) is defined in Equation 6.1 and \(d_2 = d_1-\sigma{\sqrt{T}}\).
The values of the European put and call satisfy put-call parity, and we can also find one from the other by2 \[ \mathrm{e}^{-rT}K + \text{Call Price} = \mathrm{e}^{-q T}S_0+ \text{Put Price}\;. \qquad(8.4)\]
The following figure shows how the Black-Scholes call and put values depend on the underlying asset price and other model parameters. The call and put values are computed with the following code.
Code
import numpy as np
from scipy.stats import norm
def black_scholes_call(S, K, r, sigma, q, T):
"""
Inputs:
S = initial stock price
K = strike price
r = risk-free rate
sigma = volatility
q = dividend yield
T = time to maturity
"""
if sigma <= 0 or T <= 0:
return max(0, np.exp(-q * T) * S - np.exp(-r * T) * K)
= (np.log(S / K) + (r - q + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
d1 = d1 - sigma * np.sqrt(T)
d2 = norm.cdf(d1)
N1 = norm.cdf(d2)
N2 return np.exp(-q * T) * S * N1 - np.exp(-r * T) * K * N2
def black_scholes_put(S, K, r, sigma, q, T):
"""
Inputs:
S = initial stock price
K = strike price
r = risk-free rate
sigma = volatility
q = dividend yield
T = time to maturity
"""
if sigma <= 0 or T <= 0:
return max(0, np.exp(-r * T) * K - np.exp(-q * T) * S)
= (np.log(S / K) + (r - q + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
d1 = d1 - sigma * np.sqrt(T)
d2 = norm.cdf(-d1)
N1 = norm.cdf(-d2)
N2 return np.exp(-r * T) * K * N2 - np.exp(-q * T) * S * N1
8.4 Greeks
The derivatives (calculus derivatives, not financial derivatives!) of an option pricing formula with respect to the inputs are commonly called Greeks. The most important Greek is the option delta. This measures the sensitivity of the option value to changes in the value of the underlying asset. The following table shows the standard Greeks, with reference to the Black-Scholes pricing formula.
Input | Input Symbol | Greek | Greek Symbol | ||
---|---|---|---|---|---|
Stock price | \(S\) | delta | \(\delta\) | ||
delta | \(\delta\) | gamma | \(\Gamma\) | ||
- Time to maturity | \(-T\) | theta | \(\Theta\) | ||
Volatility | \(\sigma\) | vega | \(\cal{V}\) | ||
Interest rate | \(r\) | rho | \(\rho\) |
The second line of the above shows \(\delta\) as an input.3 Of course, it is not an input but instead is calculated. Gamma, the derivative of \(\delta\), is the second derivative of the option price with respect to the underlying asset price. The reason for calculating \(\Theta\) as the derivative with respect to \(-T\) instead of \(T\) is that the time-to-maturity \(T\) decreasing (\(-T\) increasing) is equivalent to time passing, so \(\Theta\) measures the change in the option value when time passes.
We can calculate these from the Black-Scholes formula using the chain rule from differential calculus. The derivative of the normal distribution function \(\mathrm{N}\) is the normal density function \(\mathrm{n}d\) defined as \[\mathrm{n}(d) = \frac{1}{\sqrt{2\pi}}\mathrm{e}^{-d^2/2}\; .\] One can easily verify directly that \[ \mathrm{e}^{-q T}S\mathrm{n}(d_1)=\mathrm{e}^{-rT}K\mathrm{n}(d_2)\;, \qquad(8.5)\]
which simplifies the calculations for the Black-Scholes call option pricing formula. For this formula, the Greeks are as follows: \[\begin{align*} \delta &= \mathrm{e}^{-q T}\mathrm{N}(d_1) + \mathrm{e}^{-q T}S\mathrm{n}(d_1)\frac{\partial d_1}{\partial S} -\mathrm{e}^{-rT}K\mathrm{n}(d_2)\frac{\partial d_2}{\partial S}\\ &= \mathrm{e}^{-q T}\mathrm{N}(d_1) + \mathrm{e}^{-q T}S\mathrm{n}(d_1)\left(\frac{\partial d_1}{\partial S}-\frac{\partial d_2}{\partial S}\right)\\ &=\mathrm{e}^{-q T}\mathrm{N}(d_1)\;,\\ \Gamma &=\mathrm{e}^{-q T}\mathrm{n}(d_1)\frac{\partial d_1}{\partial S}= \mathrm{e}^{-q T}\mathrm{n}(d_1)\frac{1}{S\sigma\sqrt{T}}\;, \end{align*}\] \[\begin{align*} \Theta &=-\mathrm{e}^{-q T}S\mathrm{n}(d_1)\frac{\partial d_1}{\partial T} +q \mathrm{e}^{-q T}S\mathrm{N}(d_1) \\ &\quad + \mathrm{e}^{-rT}K\mathrm{n}(d_2)\frac{\partial d_2}{\partial T} -r\mathrm{e}^{-rT}K\mathrm{N}(d_2)\\ &=\mathrm{e}^{-q T}S\mathrm{n}(d_1)\left(\frac{\partial d_2}{\partial T}-\frac{\partial d_1}{\partial T}\right)\\ &\quad + q \mathrm{e}^{-q T}S\mathrm{N}(d_1)-r\mathrm{e}^{-rT}K\mathrm{N}(d_2)\\ &=-\mathrm{e}^{-q T}S\mathrm{n}(d_1)\frac{\sigma}{2\sqrt{T}}+ q \mathrm{e}^{-q T}S\mathrm{N}(d_1)-r\mathrm{e}^{-rT}K\mathrm{N}(d_2)\;,\\ \cal{V}&=\mathrm{e}^{-q T}S\mathrm{n}(d_1)\frac{\partial d_1}{\partial \sigma} - \mathrm{e}^{-rT}K\mathrm{n}(d_2)\frac{\partial d_2}{\partial \sigma}\\ &=\mathrm{e}^{-q T}S\mathrm{n}(d_1)\left(\frac{\partial d_1}{\partial \sigma}-\frac{\partial d_2}{\partial \sigma}\right)\\ &=\mathrm{e}^{-q T}S\mathrm{n}(d_1)\sqrt{T}\;,\\ \rho &=\mathrm{e}^{-q T}S\mathrm{n}(d_1)\frac{\partial d_1}{\partial r} - \mathrm{e}^{-rT}K\mathrm{n}(d_2)\frac{\partial d_2}{\partial r} +T\mathrm{e}^{-rT}K\mathrm{N}(d_2)\\ &=\mathrm{e}^{-q T}S\mathrm{n}(d_1)\left(\frac{\partial d_1}{\partial r}-\frac{\partial d_2}{\partial r}\right)+T\mathrm{e}^{-rT}K\mathrm{N}(d_2)\\ &=T\mathrm{e}^{-rT}K\mathrm{N}(d_2)\;. \end{align*}\]
We can calculate the Greeks of a European put option from the call option Greeks and put-call parity (assuming \[q=0\]): \[\text{Put Price} = \text{Call Price} +\mathrm{e}^{-rT}K- \mathrm{e}^{-q T}S_0\; .\] For example, the delta of a put is the delta of a call (with the same strike and maturity) minus \(\mathrm{e}^{-q T}\), and the gamma of a put is the same as the gamma of the corresponding call.
To see how the Greeks respond to changes in the various inputs to the Black-Scholes formula (e.g., interest rate (\(r\)), time to maturity (\(T\)) and volatility (\(\sigma\))), we encourage readers to interact with the plot below. The code used for the calculations is here:
Code
import numpy as np
from scipy.stats import norm
def d1(S, K, r, sigma, T):
"""
Computes d1 used in Black-Scholes.
"""
return (np.log(S / K) + (r + 0.5 * sigma**2) * T) / (sigma * np.sqrt(T))
def d2(S, K, r, sigma, T):
"""
Computes d2 used in Black-Scholes.
"""
return d1(S, K, r, sigma, T) - sigma * np.sqrt(T)
def call_price(S, K, r, sigma, T):
"""
Black-Scholes price for a call option.
"""
= d1(S, K, r, sigma, T)
d_1 = d2(S, K, r, sigma, T)
d_2 return S * norm.cdf(d_1) - K * np.exp(-r * T) * norm.cdf(d_2)
def put_price(S, K, r, sigma, T):
"""
Black-Scholes price for a put option.
"""
= d1(S, K, r, sigma, T)
d_1 = d2(S, K, r, sigma, T)
d_2 return K * np.exp(-r * T) * norm.cdf(-d_2) - S * norm.cdf(-d_1)
def greeks(S, K, r, sigma, T, option_type="call"):
"""
Return the main Greeks for Black-Scholes.
Parameters
----------
S : float or numpy array
Underlying price.
K : float
Strike price.
r : float
Risk-free interest rate.
sigma : float
Volatility.
T : float
Time to maturity (in years).
option_type : str
'call' or 'put'.
"""
= d1(S, K, r, sigma, T)
d_1 = d2(S, K, r, sigma, T)
d_2 = norm.pdf(d_1)
pdf_d1 = norm.cdf(d_1)
cdf_d1 = norm.cdf(d_2)
cdf_d2
if option_type == "call":
# Delta
= cdf_d1
delta # Gamma (same for call & put)
= pdf_d1 / (S * sigma * np.sqrt(T))
gamma # Vega (same for call & put, but typically scaled by 0.01 if desired in %)
= S * pdf_d1 * np.sqrt(T)
vega # Theta
= - (S * pdf_d1 * sigma) / (2 * np.sqrt(T)) \
theta - r * K * np.exp(-r * T) * cdf_d2
# Rho
= K * T * np.exp(-r * T) * cdf_d2
rho else: # put
# Delta
= cdf_d1 - 1
delta # Gamma (same for call & put)
= pdf_d1 / (S * sigma * np.sqrt(T))
gamma # Vega (same for call & put)
= S * pdf_d1 * np.sqrt(T)
vega # Theta
= - (S * pdf_d1 * sigma) / (2 * np.sqrt(T)) \
theta + r * K * np.exp(-r * T) * norm.cdf(-d_2)
# Rho
= - K * T * np.exp(-r * T) * norm.cdf(-d_2)
rho
return delta, gamma, vega, theta, rho
8.5 Theta and Gamma in Delta Hedges
Let \(C(t, S_t)\) denote the value at date \(t\) of a European call option that matures at \(T>t\) under the Black-Scholes assumption. This value is given by the Black-Scholes call formula, taking the initial underlying asset price to be \(S_t\) and the time to maturity to be \(T-t\). Ito’s formula tells us that
\[ \,\mathrm{d}C = \frac{\partial C}{\partial S}\,\mathrm{d}S + \frac{\partial C}{\partial t}\,\mathrm{d}t + \frac{1}{2}\frac{\partial^2C}{\partial S^2} (\,\mathrm{d}S)^2 \]
Using our notation for Greeks, this is \[ \,\mathrm{d}C = \delta \,\mathrm{d}S + \Theta \,\mathrm{d}t + \frac{1}{2}\Gamma (\,\mathrm{d}S)^2 = \delta \,\mathrm{d}S - \Theta \,\mathrm{d}t + \frac{1}{2}\Gamma \sigma^2 S^2 \,\mathrm{d}t\,. \]
If we sell a call option and combine the proceeds with borrowed funds to buy \(\delta\) shares of the underlying asset, as discussed in ?sec-c:deltas, then the change in the portfolio value is \[\delta (\,\mathrm{d}S + q S \,\mathrm{d}t) - (\delta S - C)r\,\mathrm{d}t - \,\mathrm{d}C\] which simplifies to \[\delta q S \,\mathrm{d}t - (\delta S - C)r\,\mathrm{d}t - \Theta \,\mathrm{d}t - \frac{1}{2}\Gamma \sigma^2 S^2 \,\mathrm{d}t\,. \qquad(8.6)\]
Several aspects of this are noteworthy. First, as noted earlier, the delta hedge eliminates the exposure to changes in the price of the underlying—there is no \(\,\mathrm{d}S\) term in Equation 8.6. Second, \(\Theta\) is negative, because it captures the time decay in the option value; being short the option means the portfolio will profit from time decay at rate \(-\Theta\). Third, this portfolio is short gamma. We can also say it is short convexity, the term convexity referring to the convex shape of the option value as a function of the price of the underlying, which translates mathematically to a positive second derivative (gamma).4 The volatility in the stock makes convexity valuable, and a portfolio that is short convexity will suffer losses. Finally, the portfolio is earning dividends but paying interest.
It is straightforward to check, from the definitions of \(\Theta\), \(\Gamma\) and \(\delta\) in the preceding section, that the sum of the terms in Equation 8.6 is zero. The time decay in the option value and dividends received on the shares of the underlying exactly offset the losses due to convexity and interest. Therefore, the delta hedge is a perfect hedge. The portfolio, which has a zero cost, neither earns nor loses money. This is true not only on average but for every possible change in the stock price.
8.6 Implied Volatilities
All of the inputs into the option pricing formulas are in theory observable, except for the volatility coefficient \(\sigma\). We can estimate \(\sigma\) from historical data (see ?sec-c:stochasticvolatility), or estimate it from the prices of other options. The latter method exploits the fact that there is a one-to-one relationship between the price given by the Black-Scholes formula and the \(\sigma\) that is input, so one can take the price as given and infer \(\sigma\) from the formula. The \(\sigma\) computed in this way is called the implied volatility. The implied volatility from one option can be used to price another (perhaps non-traded or less actively traded) option.
Even if we acknowledge that the model is not correct, the computation of implied volatilities is still useful for characterizing market prices, because we can quickly describe an option as expensive or cheap depending on whether its implied volatility is large or small. Somewhat paradoxically, it is less easy to see if an option is expensive or cheap by looking at its price, because one must consider the price in the context of the exercise price and maturity. To some extent, the implied volatility normalizes the price relative to the exercise price and maturity. Of course, it does not always pay to sell expensive options or buy cheap options, unless they are expensive or cheap relative to an accurate model!
If we compute implied volatilities for options with the same maturity but different strikes, we will typically obtain different implied volatilities for different options. If we plot implied volatility against the strike, the pattern one normally sees for equities and equity indices is the implied volatility declining as the strike increases until the strike is somewhere near the current value of the underlying (so the option is at the money). The implied volatility then generally flattens out or increases slightly at higher strikes. The graph looks like a twisted smile (smirk). This pattern has been very pronounced in equity index option prices since the crash of 1987. This moneyness structure of implied volatilities is inconsistent with the Black-Scholes model. It suggests that the risk-neutral return distribution is not lognormal but instead exhibits a higher likelihood of extreme returns than the lognormal distribution (i.e., it has fat tails) with the likelihood of extreme negative returns being higher than the likelihood of extreme positive returns (i.e., it is skewed).
8.7 Exercises
Exercise 8.1 Use put-call parity to derive the Greeks of a put option, and write a Python function that computes the value and Greeks.
Exercise 8.2 Consider delta and gamma hedging a short call option, using the underlying and a put with the same strike and maturity as the call. Calculate the position in the underlying and the put that you should take, using the analysis in ?sec-s:gammahedging. Will you ever need to adjust this hedge? Relate your result to put-call parity.
Exercise 8.3 Compute the value of an at-the-money call option (\(S=K\)) using the Python code for volatilities \(\sigma = .01, .02, \ldots, 1.0\). Plot the call value against the volatility.
Exercise 8.4 Repeat the previous problem for \(S=1.2K\) (an example of an in-the-money call option).
Exercise 8.5 The file CBO\EQuotes.txt (available at ) contains price data for call options on the S&P 500 index. The options expired in February, 2003, and the prices were obtained on January 22, 2003. The first column lists various exercise prices. The second column gives the bid price and the third column the ask price. Import this data into a Python program and compute and plot the implied volatility against the exercise price using this data. Use the ask price as the market price for the option. The options have 30 days to maturity (so \(T=30/365\)). At the time the quotes were downloaded, the S&P 500 was at 884.25. According to the CBO\E, the dividend yield on the S&P 500 was 1.76%. Use 1.25% for the risk-free interest rate.
Exercise 8.6 Attempt to repeat the previous problem using the bid price as the market price of the option. If this doesn’t work, what is wrong? Does this indicate there is an arbitrage opportunity?
There is no other risky asset price \(Y\) in this model, so the subscripts we used in Section 7.8↩︎
The put-call parity relation follows from the fact that both the left and the right-hand sides are the prices of portfolios that have value \(\max(S_T,K)\) at the maturity of the option. To see this for the left-hand side, note that \(\mathrm{e}^{-rT}K\) is sufficient cash to accumulate to \(K\) at date \(T\), allowing exercise of the call when it is in the money and retention of the cash \(K\) otherwise. For the right-hand side, note that \(\mathrm{e}^{-q T}S_0\) is enough cash to buy \(\mathrm{e}^{-q T}\) shares of the stock at date \(0\) which, with reinvestment of dividends, will accumulate to one share at date \(T\), enabling exercise of the put if it is in the money or retention of the share otherwise.↩︎
The delta is frequently denoted by the upper case \(\Delta\), but we will use the lower case, reserving the upper case for discrete changes, e.g., \(\Delta t\). One may have noticed also that the symbol for vega is a little different from the others; this reflects the fact that vega is not actually a Greek letter.↩︎
A curious reader may ask why we don’t say that the portfolio is long concavity instead of saying that it is short convexity. This is a mystery to your authors also.↩︎