# How to derive the implied probability distribution from B-S volatilities?

The general problem I have is visualization of the implied distribution of returns of a currency pair.

I usually use QQplots for historical returns, so for example versus the normal distribution:

Now I would like to see the same QQplot, but for implied returns given a set of implied BS volatilities, for example here are the surfaces:

USDZAR  1month  3month  6month  12month 2year
10dPut  15.82   14.59   14.51   14.50   15.25
25dPut  16.36   15.33   15.27   15.17   15.66
ATMoney 17.78   17.01   16.94   16.85   17.36
25dCall 20.34   20.06   20.24   20.38   20.88
10dCall 22.53   22.65   23.39   24.23   24.84

EURPLN  1month  3month  6month  12month 2year
10dPut  9.10    9.06    9.10    9.43    9.53
25dPut  9.74    9.54    9.51    9.68    9.77
ATMoney 10.89   10.75   10.78   10.92   11.09
25dCall 12.83   12.92   13.22   13.55   13.68
10dCall 14.44   15.08   15.57   16.16   16.34

EURUSD  1month  3month  6month  12month 2year
10dPut  19.13   19.43   19.61   19.59   18.90
25dPut  16.82   16.71   16.67   16.49   15.90
AtMoney 14.77   14.52   14.44   14.22   13.87
25dCall 13.56   13.30   13.23   13.04   12.85
10dCall 12.85   12.85   12.90   12.89   12.78


Anybody know how I could go about doing this? Any R packages or hints where to start on this? It doesn't necessarily have to be a qqplot, it could just be a plot of the density function; that would help me too. Thanks.

-

You can directly imply a probability distribution from a volatility skew.

Note that, for any terminal probability distribution $p(S)$ at tenor $T$, we have the model-free formula for the call price $C(K)$ as a function of strike $K$

$$C=e^{-rT} \int_0^\infty (S-K)^+ p(S) dS$$

Therefore we can write

$$e^{rT} \frac{\partial C}{\partial K}=\int_K^\infty (-1) \cdot p(S) dS$$ and by the fundamental theorem of calculus $$e^{rT} \frac{\partial^2 C}{\partial K^2} = p(K)$$

Therefore, all you need, in order to find the value of $p(x)$ for any $x$, is the second derivative of call prices at strike $x$.

Usually, one uses a fitted skew (such as a polynomial fit) to the available volatility values at the given tenor. In your case, with just 5 points, I would recommend fitting a parabola in log strike space. Once you have a continuous skew $\sigma(K)$ then you just need to find

$${\left. \frac{\partial^2 }{\partial x^2}\right|} BS_{\text{Call}}(S_0, x, \sigma(x), r, T, q)$$

evaluated at $x=K$ which can be done either with a bunch of symbol-jiggling, or by simply finite differencing. In your case I recommend the latter.

Once you have probability distribution values, of course, the process of generating the qq plots is one you have already mastered.

Edit: Sign error correction, per @Robino

-
Would this actually work? Once again, I'm not an expert in options pricing here, but aren't you essentially assuming the answer when you assume the skew is polynomial in log-strike space? Wouldn't you potentially get widely different answers (especially with so few data points) for different assumptions on the order of the polynomial? – Tal Fishman Aug 12 '11 at 21:08
It does work, for the conforming definitions of the word "work". The plots you get will certainly depend on the skew curve you fit, which (as you clearly realize) need not necessarily be a parabola in log(S) space. Cubic splines are another common choice. Try both and compare! If you want to be completely model-free, you can form finite-difference approximations to the second derivative using the 5 vol points you have. This of course gives you only 5 sample points on your distribution, and that's assuming you use 1-sided approximations on the endpoints. – Brian B Aug 15 '11 at 14:38
Thank you very much. Now off to program it...... – Thomas Browne Aug 16 '11 at 8:33
You have a mistake. The second equation should be negative of what it is. So $e^{rT} \frac{\partial C}{\partial K}=- \int_K^\infty 1 \cdot p(S) dS$. This is because the call price should DECREASE as the strike increases. Probably dropped a minus sign in the integration by parts... – Robino Jun 29 at 13:03
@BrianB No problem. Don't forget to upvote any comments which you find helpful. ;) – Robino Jun 29 at 16:24

This stuff is not exactly my area of expertise, but since you're offering the bounty, I'll start things out and we'll see if the community can get us further along.

I believe the essence of your question is actually to find the implied distribution of returns given the B-S volatilities. Once you have an implied distribution, comparing it to a normal distribution on a Q-Q plot is a relatively simple matter. A Q-Q plot is an excellent visual inspection tool for comparing an empirical distribution to a theoretical one, as you've done above for a few currency pairs, although I am less certain you will find it as beneficial to plot two theoretical distributions on a Q-Q plot.

So, how do we find the implied distribution of returns from a set of Black-Scholes volatilities? Your Q-Q plot question implies that you'd be equally happy with an "empirical" distribution as a theoretical one, so perhaps your best route here is a local volatility model. See Derman and Kani (1994) for an excellent introduction on fitting a binomial tree model to the volatility smile. Estimation of the continuous version of this model, the Dupire equation, is described in Computation of Local Volatilities from Regularized Dupire Equations by Hanke and Rosler. Here is some MATLAB code which claims to estimate the equation. Although the equation takes call prices as inputs and calculates implied vols, I'm sure you can modify it to take a set of implied volatilities.

If you prefer to take a more theoretically sound approach, then stochastic volatility models should be your choice, of which the Heston model is the most popular. These models have also been embellished with jumps and whatnot, but I am definitely not an expert there. An excellent (although very technical) introduction to all of these concepts is Gatheral's The Volatility Surface.

Perhaps those here who are more familiar with R can also point you in the right direction in terms of packages which will estimate these models for you given a set of points on the volatility surface.

Good luck! It looks like what you are asking is far more complex than you may have anticipated, but at least it has been well explored in the literature.

-
I am indeed looking for the implied distribution as from there it's simple enough to do the qqplot. My first priority is an empirical approach, as the target audience of this visualization will want to use it to get and idea of which parts of the surface are cheap/dear, by visual comparison to historical performance of the pair. This will not (yet) be for a trading model. Of course I would like to be able to show this in an intuitive fashion (with all the usual caveats about historical v future returns, and low-probability event risk). Thank you for your interesting starting points. – Thomas Browne Aug 12 '11 at 4:34