Take the 2-minute tour ×
Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It's 100% free, no registration required.

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:

QQ plots

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.

share|improve this question
add comment

2 Answers

up vote 9 down vote accepted

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$

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

Therefore we can write

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

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

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

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.

share|improve this answer
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
The first derivative also gives the CDF at 5 points, right? what are the advantages of using second derivative? –  Amir Yousefi Mar 29 '13 at 9:42
add comment

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.

share|improve this answer
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
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.