10  Asians, Baskets, and Spreads

This chapter addresses some “non-vanilla” options that are very important for hedging: Asian options, basket options, and spread options. More exotic options are studied in the following chapter.

10.1 Asian Options

An Asian option is an option whose value depends on the average underlying asset price during the lifetime of the option. Average-price calls and puts are defined like standard calls and puts but with the final asset price replaced by the average price. Average-strike calls and puts are defined like standard calls and puts but with the exercise price replaced by the average asset price. A firm that must purchase an input at frequent intervals or will sell a product in a foreign currency at frequent intervals can use an average price option as an alternative to buying multiple options with different maturity dates. The average-price option will generally be both less expensive and a better hedge than purchasing multiple options.

In practice, the average price is computed by averaging over the prices sampled at a finite number of discrete dates. First, we consider the case of continuous sampling. With continuous sampling, the average price at date \(T\) for an option written at date \(0\) will be denoted by \(A_T\) and is defined as \[ A_T = \frac{1}{T}\int_0^T S_t\,\mathrm{d}t\; . \] A sum of lognormally distributed variables is not itself lognormally distributed. Likeise, the integral above, which is essentially a continuous sum of the prices at different dates, is not lognormally distributed.

An alternative contract would replace the average price with the geometric average. This is defined as the exponential of the average logarithm. We denote this by \(A^g\). The average logarithm is \[ \frac{1}{T}\int_0^T \log S_t\,\mathrm{d}t\; , \] and the geometric average is \[ A^g_T = \exp\left(\frac{1}{T}\int_0^T \log S_t\,\mathrm{d}t\right)\; . \] The concavity of the logarithm function guarantees that \[ \log \frac{1}{T}\int_0^T S_t > \frac{1}{T}\int_0^T \log S_t\,\mathrm{d}t \; . \] Therefore, \[\begin{align*} A_T &= \exp\left(\log \frac{1}{T}\int_0^T S_t\right)\\ &> \exp\left(\frac{1}{T}\int_0^T \log S_t\,\mathrm{d}t\right) \\ &= A^g_T\; . \end{align*}\] Consequently, approximating the value of an average-price or average-strike option by substituting \(A^g_T\) for \(A_T\) produces a biased estimate of the value. Nevertheless, the geometric average\(A^g_T\) and the arithmetic average \(A_T\) are highly correlated, so \(A^g_T\) forms a very useful for Monte-Carlo valuation of average-price and average-strike options, as will be discussed later. To implement the idea, we need a valuation formula for options written on \(A^g_T\). We derive this for an average-price call, in which \(A^g_T\) substitutes for \(A_T\).

Specifically, consider a contract that pays \(\max(0,A^g_T-K)\) at its maturity \(T\). This is a geometric-average-price call. Let \(V_t\) denote the value at date \(t\) of receiving \(A^g_T\) at date \(T\). This can be calculated, and the result is given below. \(V_t\) is the value of a dividend-reinvested portfolio, and, by definition, \(V_T=A^g_T\), so the geometric-average-price call is equivalent to a standard call with \(V\) being the price of the underlying. We will show that \(V\) has a time-varying but non-random volatility. This allows us to apply the Black-Scholes formula. We could attempt the same route to price average-price options, but we would find that the volatility of the corresponding value \(V\) varies randomly, making the Black-Scholes formula inapplicable.

The value \(V_t\) can be calculated as \[ V_t= \mathrm{e}^{-r(T-t)}\\E^R_t\big[A^g_T\big]\; . \] Define \[ A^g_t = \exp\left(\frac{1}{t}\int_0^t \log S_u\,du\right)\;. \]

We will verify at the end of this section that \[ V_t = \mathrm{e}^{-r(T-t)}(A^g_t)^{\frac{t}{T}}S_t^{\frac{T-t}{T}}\exp\left(\frac{(r-q-\sigma^2/2)(T-t)^2}{2T} + \frac{\sigma^2(T-t)^3}{6T^2}\right)\;. \qquad(10.1)\]

Two points are noteworthy. First, the value at date \(0\) is

\[ V_0 = \mathrm{e}^{-rT}S_0\exp\left(\frac{(r-q-\sigma^2/2)T}{2} + \frac{\sigma^2T}{6}\right) \] \[ =\exp\left(-\frac{6r+6q + \sigma^2}{12}T\right)S_0\;. \qquad(10.2)\]

Second, the volatility comes from the factor \(S_t^{(T-t)/T}\), and, by Ito’s formula, \[ \,\mathrm{d}\log S_t^{(T-t)/T} = \text{something}\,\mathrm{d}t + \left(\frac{T-t}{T}\right)\sigma\,\mathrm{d}B\;. \] We can compute the average volatility in the sense of \[ \sigma_{\text{avg}} = \sqrt{\frac{1}{T}\int_0^T \left(\frac{T-t}{T}\right)^2\sigma^2\,\mathrm{d}t} =\frac{\sigma}{\sqrt{3}}\;. \] and insert that into the Black-Scholes formula as \(\sigma\).1 This yields:

10.2

The value at date \(0\) of a continuously-sampled geometric-average-price call written at date \(0\) and having \(T\) years to maturity is \[ V_0\mathrm{N}(d_1)-\mathrm{e}^{-rT}K\mathrm{N}(d_2)\; , \] where \[ d_1 = \frac{\log\left(\frac{V_0}{K}\right)+\left(r+\frac{1}{2}\sigma_{\text{avg}}^2\right)T}{\sigma_{\text{avg}}\sqrt{T}}, \qquad d_2 = d_1 - \sigma_{\text{avg}}\sqrt{T}\; , \] \(V_0\) is defined in Equation 10.2, and \(\sigma_{\text{avg}}=\sigma/\sqrt{3}\).

We can also value a discretely-sampled geometric-average-price call by the same arguments. Consider dates \(0<t_0< t_1 < \cdots t_N=T\), where \(t_i-t_{i-1}=\Delta t\) for each \(i\) and suppose the price is to be sampled at the dates \(t_1,\ldots,t_N\). Now let \(V_t\) denote the value at date \(t\) of the contract that pays \[ \exp\left(\frac{1}{N} \sum_{i=1}^N \log S_{t_i}\right) = \left(\prod_{i=1}^N S_{t_i}\right)^{1/N} \qquad(10.3)\]

at date \(T\). The call option will pay \(\max(0,V_T-K)\) at date \(T\). Let \(k\) denote the integer such that \(t_{N-k-1} \leq t < t_{N-k}\). This means that we have already observed the prices \(S(t_1), \ldots, S(t_{N-k-1})\) and we have yet to observe the \(k+1\) prices \(S(t_{N-k}), \ldots ,S(t_N)\). Define \(\varepsilon = (t_{N\!-k}-t)/\Delta t\), which is fraction of the interval \(\Delta t\) that must pass before we reach the next sampling date \(t_{N\!-k}\). We will show at the end of this section that

\[ \begin{multline} V_t = \mathrm{e}^{-r(T-t)}S_t^{\frac{k+1}{N}}\prod_{i=1}^{N-k-1}S_{t_i}^{\frac{1}{N}}\\ \times\,\exp\left(\left[ \frac{(k+1)\varepsilon\nu}{N}\!+\! \frac{k(k+1)\nu}{2N}\! +\! \frac{(k+1)^2\sigma^2\varepsilon}{2N^2}\!+\!\frac{k(k+1)(2k+1)\sigma^2}{12N^2} \right]\Delta t\right)\;, \end{multline} \qquad(10.4)\]

where \(\nu = r-q-\sigma^2/2\)

Again, two points are noteworthy. Assume the call was written at date \(0\) and the first observation date \(t_1\) is \(\Delta t\) years away. Then, we have \(k+1=N\) and \(\varepsilon=1\) so \[ V_0 = \mathrm{e}^{-rT}S_0\exp\left( \frac{(N+1)\nu\Delta t}{2} + \frac{(N+1)(2N+1)\sigma^2\Delta t}{12N} \right)\;. \qquad(10.5)\]

Second, the volatility of \(V_t\) comes from the factor \(S_t^{(k+1)/N}\), and \[ \frac{ \,\mathrm{d}S^{\frac{k+1}{N}}}{S^{\frac{k+1}{N}}} = \text{something}\,\mathrm{d}t + \left(\frac{k+1}{N}\right)\sigma\,\mathrm{d}B\;. \] This implies that the average volatility, in the sense of ?sec-s:timevaryingvolatility, is

\[ \sigma_{\text{avg}} = \sqrt{\frac{1}{N}\sum_{k=0}^{N-1} \left(\frac{k+1}{N}\right)^2\sigma^2\,\mathrm{d}t} \] \[ =\frac{\sigma}{N^{3/2}}\sqrt{\frac{N(N+1)(2N+1)}{6}}\;, \qquad(10.6)\]

where we have used the fact that \(\sum_{i=1}^N i^2 = N(N+1)(2N+1)/6\) to obtain the second equality. Thus, the Black-Scholes formula implies:

10.3

The value at date \(0\) of a discretely-sampled geometric-average-price call written at date \(0\) and having \(T\) years to maturity is \[ V_0\mathrm{N}(d_1)-\mathrm{e}^{-rT}K\mathrm{N}(d_2)\;, \qquad(10.7)\]

where \[ d_1 = \frac{\log\left(\frac{V_0}{K}\right)+\left(r+\frac{1}{2}\sigma_{\text{avg}}^2\right)T}{\sigma_{\text{avg}}\sqrt{T}}, \qquad d_2 = d_1 - \sigma_{\text{avg}}\sqrt{T}\; , \] \(V_0\) is defined in Equation 10.5, and \(\sigma_{\text{avg}}\) is defined in Equation 10.6.

This formula will be used in Section 12.3 as a control variate for pricing discretely-sampled average-price calls (even average-price calls that were written before the date of valuation).

##

We will now derive Equation 10.1 and Equation 10.4. We will begin with Equation 10.1. The random variable \(A^g_T\) is normally distributed under the risk-neutral probability given information at time \(t\). To establish this, and to calculate the mean and variance of \(A^g_T\), the key is to change the order of integration in the integral in the second line below to obtain the third line: \[\begin{align*} \int_t^T \log S_u\,du &= \int_t^T \left\{\log S_t + \left(r-q-\frac{1}{2}\sigma^2\right)(u-t) + \sigma [B(u)-B_t]\right\}\,du\\ &= (T-t)\log S_t + \left(r-q-\frac{1}{2}\sigma^2\right)\frac{(T-t)^2}{2} + \sigma\int_t^T \int_t^u \,\mathrm{d}B_s\,du\\ &= (T-t)\log S_t + \left(r-q-\frac{1}{2}\sigma^2\right)\frac{(T-t)^2}{2} + \sigma\int_t^T \int_s^T du\,\mathrm{d}B_s\\ &= (T-t)\log S_t + \left(r-q-\frac{1}{2}\sigma^2\right)\frac{(T-t)^2}{2} + \sigma\int_t^T (T-s)\,\mathrm{d}B_s \end{align*}\] and then to note that \(\int_t^T (T-s)\,\mathrm{d}B_s\) is normally distributed with mean zero and variance equal to \[ \int_t^T (T-s)^2\,ds =\frac{(T-t)^3}{3}\;. \] Therefore \(\\E^R_t\left[A^g_T\right]\) is the expectation of the exponential of a normally distributed random variable. Equation~Equation 10.1 now follows from the fact that if \(x\) is normally distributed with mean \(\mu\) and variance \(\sigma^2\) then \(\\E\left[\mathrm{e}^x\right] = \mathrm{e}^{\mu+\sigma^2/2}\).

To establish Equation 10.4, note that the discounted risk-neutral expectation of Equation 10.3, conditional on having observed \(S(t_1), \ldots, S(t_{N-k-1})\), is

\[ V_t = \mathrm{e}^{-r(T-t)}\\E^R_t \left[\exp\left(\frac{1}{N} \sum_{i=1}^N \log S_{t_i}\right)\right] \] \[ = \mathrm{e}^{-r(T-t)}\exp\left(\frac{1}{N}\sum_{i=1}^{N-k-1} \log S_{t_i}\right)\times \\E^R_t \left[\exp\left(\frac{1}{N} \sum_{i=N-k}^N \log S_{t_i}\right)\right] \] \[ =\left(\prod_{i=1}^{N-k-1}S_{t_i}^{\frac{1}{N}}\right)\times \mathrm{e}^{-r(T-t)}\\E^R_t \left[\exp\left(\frac{1}{N} \sum_{i=N-k}^N \log S_{t_i}\right)\right]\;. \qquad(10.8)\]

Let \(\Delta_0B = B(t_{N-k})-B_t\) and \(\Delta_iB = B(t_{N\!-k+i})-B(t_{N\!-k+i-1})\) for \(i \geq 1\). We can write the sum of logarithms inside the expectation above as \[\begin{multline*} \sum_{i=0}^{k}\big\{[\log S_t + (t_{N-k+i}-t)\nu + \sigma [B(t_{N-k+i})-B_t]\big\}\\ =(k+1)\log S_t + \sum_{i=0}^{k} (\varepsilon + i)\nu\Delta t + \sigma\sum_{i=0}^{k} [\Delta_0B + \Delta_1B + \cdots + \Delta_iB] \\ =(k+1)\log S_t + (k+1)\varepsilon\nu\Delta t + \frac{k(k+1)}{2}\nu\Delta t + \sigma\sum_{i=0}^{k} (k+1-i)\Delta_iB\;, \end{multline*}\] where to obtain the last equality we used the fact that \(\sum_{i=0}^k i = k(k+1)/2\). The random variables \(\Delta_iB\) are normally distributed with mean zero and variance \(\Delta t\) (the variance is \(\varepsilon \Delta t\) for \(i=0\)). Thus, the sum of logarithms is a normally distributed random variable with mean \[ (k+1)\log S_t + (k+1)\varepsilon\nu\Delta t + \frac{k(k+1)}{2}\nu\Delta t \] and variance \[ (k+1)^2\sigma^2\varepsilon\Delta t + \sigma^2\sum_{i=1}^{k} (k+1-i)^2\Delta t = (k+1)^2\sigma^2\varepsilon\Delta t +\frac{k(k+1)(2k+1)\sigma^2}{6}\; , \] using the fact that \(\sum_{i=1}^k i^2 = k(k+1)(2k+1)/6\). The expectation of the exponential of a normally distributed random variable equals the exponential of its mean plus one-half of its variance, and the exponential of \((k+1)\log S_t/N\) is \(S_t^{(k+1)/N}\). Therefore the conditional expectation in Equation 10.8 is \[S_t^{\frac{k+1}{N}}\exp\left(\left[ \frac{(k+1)\varepsilon\nu}{N}+ \frac{k(k+1)\nu}{2N} + \frac{(k+1)^2\sigma^2\varepsilon}{2N^2}+\frac{k(k+1)(2k+1)\sigma^2}{12N^2} \right]\Delta t\right)\; , \] which implies Equation 10.4.

The following code computes the price of a geometric-average-price call.

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)
    
    d1 = (np.log(S / K) + (r - q + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))
    d2 = d1 - sigma * np.sqrt(T)
    N1 = norm.cdf(d1)
    N2 = norm.cdf(d2)
    return np.exp(-q * T) * S * N1 - np.exp(-r * T) * K * N2

def discrete_geom_average_price_call(S, K, r, sigma, q, T, N):
    dt = T / N
    nu = r - q - 0.5 * sigma ** 2
    a = N * (N + 1) * (2 * N + 1) / 6
    V = np.exp(-r * T) * S * np.exp(((N + 1) * nu / 2 + sigma ** 2 * a / (2 * N ** 2)) * dt)
    sigavg = sigma * np.sqrt(a) / (N ** 1.5)
    return black_scholes_call(V, K, r, sigavg, q, T)

S=60
K=50
r=0.05
sigma=0.2
q=0
T=1
N=100

print("Discrete Geometric Average Price Call:", discrete_geom_average_price_call(S, K, r, sigma, q, T, N))
Discrete Geometric Average Price Call: 10.87461058434939

10.4 Basket Options

A basket option is an option written on a portfolio of assets. For example, someone may want to hedge the change in the value of the dollar relative to a basket of currencies. A basket option is an alternative to purchasing separate options on each currency. Generally, the basket option would have a lower premium than the separate options, because an option on a portfolio is cheaper (and pays less at maturity) than a portfolio of options.

Letting \(S_1\), , \(S_n\) denote the asset prices and \(w_1\), , \(w_n\) the weights specified by the contract, a basket call would pay \[\max\left(0,\;\sum_{i=1}^n w_iS_{iT} - K\right)\] at maturity \(T\). A spread option is actually a special case of a basket option, with \(n=2\), \(w_1=1\), and \(w_2=-1\). The difficulty in valuing basket options is the same as that encountered in valuing spread options. The volatility of the basket price \(\sum_{i=1}^nw_iS_{it}\) will vary over time, depending on the relative volatilities of the assets and the price changes in the assets. For example, consider the case \(n=2\) and write \(S_t\) for the basket price \(w_1S_{1t}+w_2S_{2t}\). Then \[\begin{align*} \frac{\,\mathrm{d}S}{S} &= \frac{w_1\,\mathrm{d}S_1}{S} + \frac{w_2\,\mathrm{d}S_2}{S}\\ &=\frac{w_1S_1}{S}\times \frac{\,\mathrm{d}S_1}{S_1} + \frac{w_2S_2}{S}\times \frac{\,\mathrm{d}S_2}{S_2}\;. \end{align*}\] Let \(x_{it}=w_iS_{it}/S_t\). This is the fraction of the portfolio value that the \(i\)–th asset contributes. It will vary randomly over time as the prices change. Letting \(\sigma_i\) denote the volatilities of the individual assets and \(\rho\) their correlation, the formula just given for \(\,\mathrm{d}S/S\) shows that the instantaneous volatility of the basket price at any date \(t\) is \[ \sqrt{x_{t}^2\sigma_1^2 + 2x_{1t}x_{2t}\rho\sigma_1\sigma_2 + x_{2t}^2S_{2t}\sigma_2^2}\; . \]

Hence, the volatility will vary randomly over time as the \(x_i\) change. There is no simple closed-form solution for the value of a basket option.

10.5 Spread Options

A spread option is a call or a put written on the difference of two asset prices. For example, a spread call will pay at maturity \(T\) the larger of zero and \(S_{1T}-S_{2T}-K\), where the \(S_i\) are the asset prices and \(K\) is the strike price of the call. Spread options can be used by producers to hedge the difference between an input price and an output price. They are also useful for hedging basis risk. For example, someone may want to hedge an asset by selling a futures contract on a closely related but not identical asset. This exposes the hedger to basis risk: the difference in value between the asset and the underlying asset on the futures contract. A spread call can hedge the basis risk: take \(S_1\) to be the value of the asset underlying the futures contract and \(S_2\) the value of the asset being hedged.

A spread option is actually an exchange option. Assuming constant dividend yields \(q_1\) and \(q_2\), we can take the assets underlying the exchange option to be as follows

  1. At date \(0\), purchase \(\mathrm{e}^{-q_1T}\) units of the asset with price \(S_1\) and reinvest dividends, leading to a value of \(S_{1T}\) at date \(T\),
  2. At date \(0\), purchase \(\mathrm{e}^{-q_2T}\) units of the asset with price \(S_2\) and invest \(\mathrm{e}^{-rT}K\) in the risk-free asset. Reinvesting dividends and accumulating interest means that we will have \(S_{2T}+K\) dollars at date \(T\).

However, we cannot apply Margrabe’s formula to price spread options, because the second portfolio described above will have a stochastic volatility. To see this, note that if the price \(S_{2t}\) falls to a low level, then the portfolio will consist primarily of the risk-free asset, so the portfolio volatility will be near the volatility of the risk-free asset, which is zero. On the other hand, if \(S_{2t}\) becomes very high, then the portfolio will be weighted very heavily on the stock investment, and its volatility will approach the volatility of \(S_2\).

10.6 Exercises

Exercise 10.1 Intuitively, the value of a forward-start call option should be lower the closer is the date \(T\) at which the strike is set to the date \(T'\) at which the option matures, because then the option has less time to maturity after being created at \(T\). Create a Python program to confirm this. Allow the user to input \(S\), \(r\), \(\sigma\), \(q\), and \(T'\). Compute and plot the value of the option for \(T=0.1T'\), \(T=0.2T'\), , \(T=0.9T'\).

Exercise 10.2 Create a Python program to demonstrate the additional leverage of a call-on-a-call relative to a standard call. Allow the user to input \(S\), \(r\), \(\sigma\), \(q\), and \(T'\). Use the Black-Scholes_Call function to compute and output the value \(C\) of a European call with strike \(K'=S\) (i.e., the call is at the money) and maturity \(T'\). Use the Call_on_Call function to compute and output the value of a call option on the call with strike \(K=C\) (i.e., the call-on-a-call is at the money) and maturity \(T=0.5T'\). Compute the percentage returns the standard European call and the call-on-a-call would experience if the stock price \(S\) instantaneously increased by 10%.

Exercise 10.3 Create a Python program to illustrate the early exercise premium for an American call on a stock paying a discrete dividend. Allow the user to input \(S\), \(r\), \(\sigma\), and \(T'\). Take the date of the dividend payment to be \(T=0.5T'\) and take the strike price to be \(K=S\). The value of a European call is given by the Black-Scholes formula with \(S-\mathrm{e}^{-rT}D\) being the initial asset price and \(q=0\) being the constant dividend yield. Use the function American_Call_Dividend to compute the value of an American call for dividends \(D=.1S\), \(D=.9S\). Subtract the value of the European call with the same dividend to obtain the early exercise premium. Plot the early exercise premium against the dividend \(D\).

Exercise 10.4 Create a Python function to value a simple chooser (a chooser option in which \(K_c=K_p\) and \(T_c=T_p\)) using put-call parity to compute \(S^*\) as mentioned in Section 11.6. Verify that the function gives the same result as the function Chooser.

Exercise 10.5 Write Python code to compare the cost of a simple chooser to that of a straddle (straddle = call + put with same strike and maturity). Allow the user to input \(S\), \(r\), \(\sigma\), \(q\), and \(T'\). Take the time to maturity of the underlying call and put to be \(T'\) for both the chooser and the straddle. Take the strike prices to be \(K=S\). Take the time the choice must be made for the chooser to be \(T=0.5T'\). Compute the cost of the chooser and the cost of the straddle.

Exercise 10.6 A stock has fallen in price and you are attempting to persuade a client that it is now a good buy. The client believes it may fall further before bouncing back and hence is inclined to postpone a decision. To convince the client to buy now, you offer to deliver the stock to him at the end of two months at which time he will pay you the lowest price it trades during the two months plus a fee for your costs. The stock is not expected to pay a dividend during the next two months. Assuming the stock actually satisfies the Black-Scholes assumptions, find a formula for the minimum fee that you would require. (Hint: It is almost in Section 11.2.) Create a Python program allowing the user to input \(S\), \(r\), and \(\sigma\) and computing the minimum fee.

Exercise 10.7 Suppose you must purchase 100 units of an asset at the end of a year. Create a Python program simulating the asset price and comparing the quality of the following hedges (assuming 100 contracts of each):

  1. a standard European call,
  2. a down-and-out call in which the knock-out barrier is 10% below the current price of the asset.

Take both options to be at the money at the beginning of the year. Allow the user to input \(S\), \(r\), \(\sigma\) and \(q\). Generate 500 simulated end-of-year costs (net of the option values at maturity) for each hedging strategy and create histogram charts to visually compare the hedges. Note: to create histograms, you will need the Data Analysis add-in, which may be need to be loaded (click Tools/Add Ins).

Exercise 10.8 Compute the prices of the options in the previous exercise. Modify the simulations to compare the end-of-year costs including the costs of the options, adding interest on the option prices to put everything on an end-of-year basis.

Exercise 10.9 Modify Exercise 11.7 by including a third hedge: a combination of a down-and-out call as in part (b) of Exercise 11.7 and a down-and-in call with knockout barrier and strike 10% below the current price of the asset. Note that this combination forms a call option with strike that is reset when the underlying asset price hits a barrier.

Exercise 10.10 Modify Exercise 11.8 by including the hedge in Exercise 11.9. Value the down-and-in call using the function Down_And_Out_Call and the fact that a down-and-out and down-and-in with the same strikes and barriers form a standard option.

Exercise 10.11 Each week you purchase 100 units of an asset, and you want to hedge your total quarterly (13-week) cost. Create a Python program simulating the asset price and comparing the quality of the following hedges:

  1. a standard European call maturing at the end of the quarter (\(T=0.25\)) on 1300 units of the asset,
  2. 13 call options maturing at the end of each week of the quarter, each written on 100 units of the asset, and
  3. a discretely sampled average-price call with maturity \(T=0.25\) written on 1300 units of the asset, where the sampling is at the end of each week.
  4. a discretely sampled geometric-average-price call with maturity \(T=0.25\) written on 1300 units of the asset, where the sampling is at the end of each week.

Allow the user to input \(S\), \(r\), \(\sigma\) and \(q\). Assume all of the options are at the money at the beginning of the quarter (\(K=S\)). Compare the hedges as in Exercise 11.7.

Exercise 10.12 In the setting of the previous problem, compute the prices of the options in parts (a), (b) and (d). Modify the simulations in the previous problem to compare the end-of-quarter costs including the costs of the options (adding interest on the option prices to put everything on an end-of-quarter basis).

Exercise 10.13 Using the put-call parity relation, derive a formula for the value of a forward-start put.

Exercise 10.14 Derive Equation 11.19 for the value of a call on a put.

Exercise 10.15 Complete the derivation of Equation 11.34 for the value of a chooser option.

Exercise 10.16 Derive a formula for the value of a put option on the maximum of two risky asset prices.

Exercise 10.17 Using the result of the preceding exercise and Margrabe’s formula, verify that calls and puts (having the same strike \(K\) and maturity \(T\)) on the maximum of two risky asset prices satisfy the following put-call parity relation: \[\begin{multline*} \mathrm{e}^{-rT}K + \text{Value of call on max} \\ = \mathrm{e}^{-q_2T}S_{20} + \text{Value of option to exchange asset 2 for asset 1} \\+ \text{Value of put on max}\;. \end{multline*}\]


  1. We assumed a constant volatility when deriving the Black-Scholes formula, but it is easy to check that the same logic works when the volatility is non-randomly time-varying if we substitute this average volatility.↩︎