# How to price a futures spread option?

Let's say I have two futures contract $F_1(0,T)$ and $F_2(0,T)$ on two different correlated underlyings.

If I assume that both underlying follow a GBM with volatility $\sigma_1$ and $\sigma_2$ respectively, and their return are correlated by $\rho$, is there a closed-form formula I can use to price an European option on the spread $X_{1,2} = \max( F_1(S,T) - F_2(S,T), 0 )$ at some expiry date $S \leq T$?

Otherwise, how do we usually proceedto price these things? Monte-Carlo using risk-neutral dynamics and discounting payoffs?

• Might be simpler to model the spread directly as a normal process, then price with a Bachelier model? Otherwise you could check Haug's book, I don't have it handy... – experquisite Dec 22 '14 at 18:53
• Do you mean that you want to price payoffs $\max( F_1(S,T) - F_2(S,T), 0 )$ at $S$ or European payoffs $g(X_{1,2})$ (for example, if $g(x) = (x-K)_+$, that would be $\max( F_1(S,T) - F_2(S,T) - K, 0)$). In the first case you have an exchange option and this reduces to the BS formula by using the second underlying as a numeraire. In the second case, there is no closed form. – AFK Dec 24 '14 at 13:52

## 2 Answers

The best approximation that I know is Li, Deng and Zhou, 2006. It's an analytic approximation where the price is expressed as a direct formula, so easy to implement.

If you want to be VERY accurate, here's my paper, J Choi (2018) (Arxiv). It handles the options on any linear combination of assets such as basket and Asian options as well as spread option. There is some discussion on the performances of other analytic approximations.

• Actually the links in your post are reversed... The first one is Choi and the second is Li Deng Zhou. – noob2 Feb 17 '17 at 17:10
• Fixed and updated with better links. – Jaehyuk Choi Aug 4 '18 at 0:18

You could take a look at this, if you have not already Fast Fourier transform for pricing spread options

The classic reference on this is a paper by Carr and Madan, reference number 4 in that document.

It is not a closed form solution, per se, but the method is quick and easy to implement.