Digital Options

Today I’m going to talk about the valuation of another type of option, the digital (or binary) option. This can be seen as a bit of a case study, as I’ll present the option payoff and the analytical price and greeks under BS assumptions, and give add-ons to allow pricing with the MONTE CARLO pricer. I’ve also updated the ANALYTICAL pricer to calculate the price and greeks of these options.

Digital options are very straight-forward, they are written on an underlying S and expire at a particular date t, at which point digital calls pay $1 if S is greater than a certain strike K or$0 if it is below that, and digital puts pay the reverse – ie. the payoff is

$P_{\rm&space;dig\&space;call}&space;=&space;\Big\{&space;\&space;\begin{matrix}&space;\1&space;\quad&space;S&space;\geq&space;K\\&space;\0&space;\quad&space;S&space;<&space;K\end{matrix}$

We can calculate the price exactly in the BS approximation using the same method that I used to calculate vanilla option prices by risk-neutral valuation as follows

$C_{\rm&space;dig\&space;call}(0)&space;=&space;\delta(0,t)\&space;{\mathbb&space;E}[&space;C_{\rm&space;dig\&space;call}(t)&space;]$

where $\inline&space;C_{\rm&space;dig\&space;call}(t')$ is the price of the option at time $\inline&space;t'$, and we know that this must converge to the payoff as $\inline&space;t&space;\to&space;t'$, so $\inline&space;C_{\rm&space;dig\&space;call}(t)&space;=&space;P_{\rm&space;dig\&space;call}$

$=&space;\delta(0,t)\&space;\int^{\infty}_{-\infty}&space;P_{\rm&space;dig\&space;call}&space;\cdot&space;e^{-{1\over&space;2}x^2}&space;dx$

$\inline&space;P_{\rm&space;dig\&space;call}$ is zero if $\inline&space;S&space;=&space;S_0&space;e^{(r&space;-&space;{1\over&space;2}\sigma^2)t&space;+&space;\sigma&space;\sqrt{t}&space;x}&space;<&space;K$ which corresponds to $\inline&space;x&space;<&space;{\ln{K&space;\over&space;S_0}&space;-&space;(r-{1\over&space;2}\sigma^2)t&space;\over&space;\sigma&space;\sqrt{t}}&space;=&space;-d_2$

$=&space;\delta(0,t)\&space;\cdot&space;\1&space;\cdot&space;\int^{\infty}_{-d_2}&space;e^{-{1\over&space;2}x^2}&space;dx$

$=&space;\&space;\delta(0,t)\cdot&space;\Phi(d_2)$

where

$d_1&space;=&space;{\ln{S\over&space;K}+(r+{1\over&space;2}\sigma^2)t&space;\over&space;\sigma&space;\sqrt{t}}&space;\quad&space;;\quad&space;d_2&space;=&space;{\ln{S\over&space;K}+(r-{1\over&space;2}\sigma^2)t&space;\over&space;\sigma&space;\sqrt{t}}$

Since we have an analytical price, we can also calculate an expression for the GREEKS of this option by differentiating by the various parameters that appear in the price. Analytical expressions for a digital call’s greeks are:

$\Delta&space;=&space;{\partial&space;C&space;\over&space;\partial&space;S}&space;=&space;e^{-rt}\cdot&space;{\phi(d_2)\over&space;S\sigma&space;\sqrt{t}}$

$\nu&space;=&space;{\partial&space;C&space;\over&space;\partial&space;\sigma}&space;=&space;-e^{-rt}\cdot&space;{d_1&space;\&space;\phi(d_2)\over&space;\sigma}$

$\gamma&space;=&space;{\partial^2&space;C\over&space;\partial&space;S^2}&space;=&space;-e^{-rt}\cdot&space;{d_1&space;\&space;\phi(d_2)\over&space;S^2&space;\sigma^2&space;t}&space;=&space;-e^{-rt}\cdot&space;{d_1\&space;\phi(d_1)\over&space;S&space;K&space;\sigma^2&space;t}$

${\rm&space;Vanna}&space;=&space;{\partial^2&space;C&space;\over&space;\partial&space;S&space;\partial&space;\sigma}&space;=e^{-rt}\cdot&space;{\phi(d_2)\over&space;S&space;\sigma^2&space;\sqrt{t}}\Big(&space;d_1&space;d_2&space;-&space;1&space;\Big)$

${\rm&space;Volga}&space;=&space;{\partial^2&space;C&space;\over&space;\partial&space;\sigma^2}&space;=&space;e^{-rt}\cdot&space;{\phi(d_2)\over&space;\sigma^2}\cdot&space;\Big(&space;d_1&space;+&space;d_2&space;-&space;d_1^2&space;d_2&space;\Big)$

where

$\phi(d_1)&space;=&space;{1\over&space;\sqrt{2&space;\pi}}\&space;{e^{-{1\over&space;2}d_1^2}&space;}$

Holding a binary put and a binary call with the same strike is just the same as holding a zero-coupon bond, since we are guaranteed to receive \$1 wherever the spot ends up, so the price of a binary put must be

$e^{-rt}&space;=&space;e^{-rt}\cdot&space;\Phi(d_2)&space;+&space;C_{\rm&space;dig\&space;put}(t'=0)\quad&space;\quad&space;\quad&space;\quad&space;[1]$

$C_{\rm&space;dig\&space;put}(0)&space;=&space;e^{-rt}&space;\cdot&space;\Phi(-d_2)$

Moreover, differentiating equation [1] above shows that the greeks of a digital put are simply the negative of the greeks of a digital call with the same strike.

Graphs of these are shown for a typical binary option in the following graphs. Unlike vanilla options, these option prices aren’t monotonic in volatility: if they’re in-the-money, increasing vol will actually DECREASE the price since it makes them more likely to end out-of-the-money!

One final point on pricing, note that the payoff of a digital call is the negative of the derivative of a vanilla call payoff wrt. strike; and the payoff of a digital put is the positive of the derivative of a vanilla put payoff wrt. strike. This means that any binary greek can be calculated from the corresponding vanilla greek as follows

$\Omega_{\rm&space;dig\&space;call}&space;=&space;-{\partial&space;\Omega_{\rm&space;call}\over&space;\partial&space;K}$

$\Omega_{\rm&space;dig\&space;put}&space;=&space;{\partial&space;\Omega_{\rm&space;put}\over&space;\partial&space;K}$

where here $\inline&space;\Omega$ represents a general greek.

If you haven’t yet installed the MONTE CARLO pricer, you can find some instructions for doing so in a previous post. The following links give the header and source files for binary calls and puts which can be dropped in to the project in your C++ development environment

These will register the option types with the option factory and allow monte carlo pricing of the options (so far, all of the options in the factory also have analytical expressions, but I’ll soon present some options that can only be priced by Monte Carlo).