Neural Networks and Option Pricing
Option pricing is a natural place to try neural networks. A theory gives prices in closed form, so there is a benchmark to beat; markets produce thousands of prices every day, so there are data to learn from; and the theory is known to be wrong in a systematic way that a flexible model might capture. This chapter reviews the Black-Scholes model as the benchmark, shows how market prices depart from it, and explains what a network trained on option prices can and cannot learn.
The Black-Scholes benchmark
Black and Scholes (1973) and Merton (1973) price a European call on a stock that pays a continuous dividend yield q, when the interest rate is r and the stock’s volatility is a constant \sigma. With S the stock price, K the strike and T the time to maturity in years, the call price is C = S e^{-qT} N(d_1) - K e^{-rT} N(d_2), \tag{1} with d_1 = \frac{\ln(S/K) + (r - q + \sigma^2/2) T}{\sigma \sqrt{T}}, \qquad d_2 = d_1 - \sigma \sqrt{T}, where N(\cdot) is the standard normal distribution function. Of the inputs, only \sigma is not observed in the market.
The formula has a property that matters for learning. Doubling both the stock price and the strike doubles the call price: the price is homogeneous of degree one in S and K. Dividing by the strike, \frac{C}{K} = f\!\left(\frac{S}{K}, T\right), \tag{2} for given r, q and \sigma. A model that learns prices therefore needs only the moneyness S/K and the maturity T as inputs, not the level of the stock price. The figures and the notebook use the inverse, K/S, so that higher values mean higher strikes. Hutchinson et al. (1994) use exactly this reduction.
Implied volatility and the smile
Given a market price, the volatility that makes (1) match it is the option’s implied volatility. If the Black-Scholes model were right, every option on the same stock would have the same implied volatility, the one true \sigma. They do not.
A call is out of the money when its strike is above the current price, and a put when its strike is below it; out-of-the-money options trade more than the others. By put-call parity, a put and a call with the same strike and maturity have the same implied volatility, so Figure 1 uses puts for low strikes and calls for high strikes. The small jump at K/S = 1 is where the data switch from one to the other.
Figure 1 shows the pattern for options on the S&P 500 index. Implied volatility falls as the strike rises toward the index level: puts that pay off in a crash are priced as if volatility were much higher than for options near the money. For index options the pattern is mostly a downward slope, often called a skew; at short maturities it turns up again for high strikes, into a lopsided smile. The skew reflects the fact that index returns have fatter left tails than the normal distribution assumes and that investors pay a premium for crash protection.
The skew is a precise statement of how the Black-Scholes model fails. A single \sigma cannot price all strikes at once. This is what makes the problem interesting for a flexible model: the shape is systematic and changes over time, but it is not given by any simple formula.
Learning prices from data
Hutchinson et al. (1994) ask whether a network can learn an option pricing formula from prices alone. They first train networks on prices generated by the Black-Scholes formula and find that the networks recover it. They then train on daily prices of call options on S&P 500 futures from 1987 to 1991, using (2): the inputs are moneyness and maturity and the output is the price divided by the strike. Each network is trained on six months of prices and tested on the next six. They judge the networks mainly by how well a hedge built from them, a position in the underlying futures adjusted every day to offset the option’s price changes, replicates the option, and report that “in many cases the network pricing formula outperforms the Black-Scholes model,” where the benchmark uses a volatility estimated from past returns.
There are two ways to set up the learning problem today.
- Learn prices, as Hutchinson, Lo and Poggio do. The output is C/K and the inputs are moneyness, maturity, and whatever describes the state of the market.
- Learn implied volatilities. The output is the implied volatility, and prices follow from (1). Implied volatilities vary much less across strikes and maturities than prices do, which makes them easier to learn, and they are the language traders quote in.
Either way, a market-wide measure of volatility such as the VIX is a natural input: when the whole market is nervous, every implied volatility is higher.
What can go wrong
The comparison has to be fair. Black-Scholes with each option’s own implied volatility prices every option perfectly, by construction, so it cannot be the benchmark. Black-Scholes with one volatility for all options cannot fit the skew, so a network that can will beat it almost by construction. The informative test is out of sample in time: train on past days, and test on later days the network has not seen.
Prices must be free of arbitrage. Call prices must fall as the strike rises, and fall by less and less as it rises further: they must be convex in the strike. If they are not, some portfolio of calls costs nothing, or even pays you today, and can never lose money later, and no market lets that last. A network fitted freely to noisy prices can produce curves that violate these conditions, especially where data are scarce, and its prices would then be wrong in a way that matters to anyone trading on them.
A network extrapolates badly. As in the previous chapter, a network learns the relation only in the region its data cover. Far out-of-the-money strikes, long maturities, and market states unlike the training period, such as a volatility spike, are where its predictions are least reliable.
The data need care. Use the midpoint of the bid and ask, drop quotes with a zero bid or no recent trade, and know the contract: options on the S&P 500 index (SPX) are European and settle in cash, while options on the SPY exchange-traded fund are American and the fund pays dividends.
Practice Problems
These problems give you a chance to practice the concepts introduced in this chapter. Try to solve each one on your own before expanding the solution.
Problem 1 (Using Homogeneity) A call with strike 100 on a stock trading at 105 is worth 8.20. Another call on a different stock with the same volatility, dividend yield, interest rate and maturity has strike 2,000, and that stock trades at 2,100. What is the second call worth, and why do Hutchinson et al. (1994) use this property?
Solution
Both calls have moneyness S/K = 1.05 and the same maturity, so by (2) they have the same price per unit of strike, C/K = 8.20/100 = 0.082. The second call is worth 0.082 \times 2{,}000 = 164. Homogeneity lets a model learn one function of moneyness and maturity instead of a function of the stock price and the strike separately, which needs far fewer data and lets prices observed at one index level inform prices at another.Problem 2 (Reading Implied Volatilities) On the same day, three-month puts on the S&P 500 with strikes 10% below the index have an implied volatility of 24%, and three-month calls with strikes at the index level have 15%. Select all statements that apply.
- The market prices the out-of-the-money puts as if volatility were higher than for at-the-money options.
- The Black-Scholes model with one volatility cannot price both options correctly.
- The difference proves that the puts are overpriced and should be sold.
- A model of implied volatility that uses moneyness as an input can capture this difference.
Solution
The answers are (a), (b) and (d). Different implied volatilities at different strikes are exactly the skew of Figure 1, which a single \sigma cannot reproduce and a model with moneyness as an input can. Statement (c) does not follow: high put prices reflect fat left tails and the premium investors pay for crash protection, and selling them earns that premium only by bearing the crash risk.Problem 3 (A Network That Violates No-Arbitrage) A network trained on call prices produces, for one maturity, prices of 10.0 at strike 95, 6.0 at strike 100 and 1.0 at strike 105. Show that these prices allow an arbitrage, and describe the trade.