Stefanica 2019 - Volatility
Stefanica 2019 - Volatility
Stefanica 2019 - Volatility
1
The Black-Scholes price function is strictly monotone in volatility.
2As defined in Section 4, k = log Ke−rT denotes the log-moneyness, and c = C0
denotes
−qT
S0 e S0 e−qT
the normalized price.
1
2. Practitioner’s Corner
The partial differential equation (1–3) makes it possible to design an algorithm
for approximation of the implied volatility. The algorithm consists of two phases.
The first is “precomputation” phase in which we construct the partition of the
(k, c) plane and the polynomials. The second is “runtime” phase in which the
implied volatility is repeatedly calculated for different choices of parameters from
the market.3
In the precomputation phase we specify the precision ε, degree d for the polyno-
mials, and choose the desired range for parameters k, c, and σ. Small choices for ε
result in finer partitions and larger number of polynomials. Likewise, intervals for
k, c, and σ that include values close to 0 lead to more complex partitions.
We will first present the brief outlines of the two phases of the algorithm. The
full details are developed later in the text.
The runtime phase of the algorithm (see Algorithm 2) starts by uploading the
partition and the polynomials that are generated by Algorithm 1. Then we can
repeatedly receive the input parameters from the market and approximate the
integrated volatility by identifying the appropriate polynomial and evaluating it.4
However, the resulting volatility expansion is accurate only around ATM, and there
is no reason why it should be so in the tails.
With the work of Li [32], economized rational approximations for implied volatil-
ity have entered the picture, obtaining a better fit over a wider moneyness region,
while losing some of the goodness of fit near ATM. Li used a fine mesh of about one
million options to densely populate the 2-dimensional domain of approximation in
log-moneyness and integrated volatility, and subsequently employed the downhill
simplex search method to minimize an objective function, obtaining a single ratio-
nal function of log-moneyness k and normalized price c with about 30 parameters,
that can invert one million options within a few seconds. The domain D[32] covered
by this approximation is fairly large, with k ranging from -0.5 and 0.5, and inte-
grated volatility ranging from 0 to 1, while the uniform error of 10−3 order in the
integrated volatility is claimed numerically.5 For comparison, previously described
Jäckel’s solver [23] achieves the error of 10−14 order in the same domain, for a price
of additional time (slower by roughly a factor of 10), complexity and maintenance
required. One should keep in mind that Li’s approximation is tailored to a spe-
cific fine mesh of options that covers only about 80% of the whole range of traded
options in many cases (see [18]), excluding many options on underlyings with very
low or high volatilities, as well as deep in-the-money (ITM) and out-of-the-money
(OTM) options. Li’s rational approximation was improved on D[32] in [43] and [45].
Pistorius and Stolte [43] use an iterative method of Press et al. [44] (Section 5.13)
to √obtain, for 105 different values of k, (univariate) Chebyshev rational functions
of c with varying degrees (7 to 9), and eventually proceed with cubic splines to
interpolate in between, reducing the maximum absolute error to the order of 10−5 .
Although, much like with [32], all approximations are done once and stored to the
hard-drive, so few calculations are required during the runtime, this improvement in
error comes with increased storage and no significant improvement in speed, while
still struggling where most methods do: with deep ITM/OTM options as well as
options with short maturity. Salazar Celis in [45] works on a Chebyshev grid that
is structured in k-direction, scattered in c-direction, and most importantly denser
in the corners of D[32] , and uses singular value decomposition to solve the highly√
non-linear optimization problem of finding a univariate rational function of c,
with weights that are polynomial in k, hence obtaining a parametrized barycentric
approximation that is (unlike [43]) truly bivariate rational. With no improvement
in speed over [32] reported, the maximum absolute error is of the order of 10−4 on
D[32] , albeit requiring storage of only 70 coefficients.
Glau et al. [18] used Jäckel’s approximation [23] at the gridpoints of a large
1000 × 1000 Chebyshev grid in the (k, c)-space, and a chebfun Matlab package for
interpolation in between, thus obtaining a bivariate Chebyshev polynomial approx-
imation for implied volatility with subexponential rate of convergence. On domain
D[32] it achieves the error of order 10−5 /10−8 /10−11 . Their Matlab implementa-
tions are roughly 4/3/2 times faster (respectively) than the algorithm of Jäckel
[23], and 4/5/6 times slower than the algorithm of Li [32] (whose inferior error is
of order 10−3 on the same domain). However, like [23], and unlike [32], this ap-
proach is applicable on a much wider approximation domain D[18] , with k ranging
from -5 and 5, and integrated volatility ranging from 0 to 6, that completely covers
the market data. In comparison to Jäckel’s method [23] whose error is of order
10−13 on D[18] , the approximation of [18] has the error of order 10−5 /10−8 /10−10
in roughly 4/3/2 times shorter running time, respectively. It is worth noting that
the Chebyshev method from [18] is the first to use polynomials to approximate
the implied volatility. Their method is similar to ours in that it uses the domain
partitioning in pre-computation phase leaving the evaluation of polynomials for the
runtime phase. There are several caveats with their method, though: their approxi-
mation polynomials have significantly larger degrees than ours, degrees vary across
different domains (unlike ours), and the data transformations before evaluations
of Chebyshev polynomials are computationally expensive as they feature multiple
logarithms, exponential functions, and square roots.
In [33], Li and Lee introduced a new successive over-relaxation (SOR) iterative
method to compute the implied volatility, that is applicable on D[18] , and has a
quadratic order of convergence of Newton-Raphson algorithm and the robustness
of the Dekker-Brent algorithm. With just five iterations, it achieves the uniform
error of order 10−13 in the integrated volatility, and manages to invert one million
options in about 10 seconds. Moreover, its accuracy is reported (see [47]) to be
better than that of [23], quite possibly due to the fact that already the generation
of the initial guess in Jäckel’s algorithm relies on rational cubic interpolations and
transformations that are highly sensitive in terms of the accuracy of the error
function and the inverse of the normal cumulative distribution function (CDF).
Finally, in a series of papers [38, 48, 49], the authors derived a simple closed-form
approximation formula for the implied volatility based on the Pólya-type approxi-
mations of the normal CDF. The relative error of this approximation is uniformly
bounded for options with any moneyness and with arbitrary large or small option
maturities and volatilities, including for long dated options and options on highly
volatile underlying assets. It is reported in [29] to be more robust than the rational
approximation of Li [33]. For ATM options (i.e. when k = 0), the approximation
is even more precise, having relative error of order 10−6 for all options with inte-
grated volatility less than 2. Furthermore, Gatheral and the authors [16] proved it
is actually a lower bound on the implied volatility over a large range of strikes and
option prices. Moreover, combined with the variational principle of Tehranchi [51],
they obtained tight uniform bounds on the implied volatility that can be used as
initial guesses to effectively speed up the bisection method, the most basic iterative
root finding algorithm still used by many practitioners. When the SOR method,
reviewed in the previous paragraph, uses this approximation as an initial guess, it
has an implementation that is faster than Jäckel’s method for most of the input
values [29, 47].
While we are fully aware that comparisons of approximation algorithms and
formulae, described above in some detail, may depend on the performance mea-
sures (e.g. maximum absolute error, relative error, speed, storage, maintenance),
implementations, frameworks, libraries, languages and platforms used, the general
strategy for inverting millions of option prices for Black-Scholes implied volatility
in practice seems to be to choose the SOR method of Li and Lee [33], if one opts
for optimal speed, the solver of Jäckel [23] if one opts for optimal accuracy, or the
closed-form approximation of [49], if one opts for simplicity. Therefore, it is safe to
conclude that the new algorithm for approximating the implied volatility derived
in this paper should be compared to the two state-of-the-art numerical solvers for
implied volatility of [23] and [33] (the latter implemented with the approximation
of [49] as the initial guess), that are available as open source.
6The use of local polynomial expansion around many points yields the apparent precision of
our algorithm, and is reminiscent of their use in Hairer’s theory of regularity structures [21].
√
that is covered by the method is σ T ∈ 10−6 , 7.3 . For comparison, the domain
k
D[32] , covered by some of the existing methods, required that σ√ T
is smaller than
2. Our method allows the quantity σ√T to range over the interval 2.6 · 10−6 , 4.9 .
k
For the chosen precision level of 10−7 , it is sufficiently accurate for practical
purposes and highly efficient in terms of absolute error and speed with large data
sets, delivering precise real-time evaluations of implied volatility. For example, the
running time of our implementation to invert one million randomly generated op-
tion prices for implied volatility is about three times shorter than that of [23] and
[33] on a single processor. Our algorithm is easy to implement and maintain, and,
unlike the competing routines of [18, 23, 33, 43, 45], it is completely independent of
more involved numerical recipes, such as splines, rational approximation packages,
singular value decomposition, or transformations/objective functions that involve
the error function or the inverse of the normal CDF. Indeed, in a commercial envi-
ronment, it is of little significance what may be implemented in, say Matlab, while
our implementation can be easily extracted and ported to the respectively relevant
industrial system or analytics library. With maximum absolute error of 10−7 , the
number of calculated constants is 2.5 million in the precomputation phase that
needs to be executed only once. It is also very robust, as both precision and the
domain of input variables can be easily improved/extended, alas for the price of
slower running time and additional memory to store partitions and polynomials.
Another main advantage of our numerical scheme lies in a fewer number of condi-
tional statements and branchings/domain splittings. Although our approximation
diverges for k = 0 (that corresponds to the ATM options), simply replacing k = 0
with k = 1.01 · 10−7 handles the ATM case and maintains the same absolute error
of 10−7 .
The gain in speed can be made to be even more substantial. Our OpenCL im-
plementation on p3.2xlarge instance on Amazon Web Services to invert one million
randomly generated option prices for implied volatility is five times faster than
when the algorithm is executed on an eight-core CPU. Since graphic cards consist
of numerous processing elements that are performing optimally if all pipelines are
equally loaded, numerous branchings/domain splittings in the competing routines
of [23, 33] make them less suitable for parallelization. In addition, note that our
partition of the domain is done with line segments parallel to the coordinate axes
(see Figure 1). This feature allowed us to use a simple indexing algorithm of O(1)
time complexity and avoid look-up bottleneck for parallelization purposes. If one
were to circumvent the coordinate transformations performed before evaluations of
Chebyshev polynomials (see φi,x (c) on pages 10–13 of [18]), the Chebyshev method
would also be amenable to an efficient indexing algorithm of O(1) time complexity.
3.3. Organization of the paper. Section 4 introduces the necessary notation and
defines the inverse problem of finding the implied volatility in the Black–Scholes
model after the standard dimension reduction. Section 5 contains the proof of
equations (1–3), stated as Theorem 1. In Section 6 we use equations (1–3) to
obtain recursive formulas for two-dimensional polynomial approximation for the
implied volatility. The details of the implementation are presented in Section 7.
The speed and accuracy of our method is compared to that of other numerical
schemes in Section 8. Our method of finding a differential equation satisfied by
the implied volatility (after an appropriate dimension reduction) appears to be
We can obtain the derivative Σk by differentiating both sides of (12) with respect
to k. Using (13) and (14) we obtain
k
N − Σ(k,c) − Σ(k,c)
2
Σk (k, c) = . (17)
k Σ(k,c)
N 0 − Σ(k,c) − 2
6.1. Calculation of αm,0 . Assume that we are given c0 , Σ0 , and k0 such that
Σ0 = ΣBS (k0 , c0 ). In this section the value k = k0 is fixed and the function
c 7→ Σ (k0 , c) depends only on one variable c. The coefficients in power series
expansion of such function will form the sequence (αm,0 ). In order to simplify
notation and emphasize that we are dealing with functions of a single variable we
will use αC to label this sequence. In other words, we define
C
αm = αm,0 .
The first term satisfies α0C = Σ0 . Together with (16) and (1) we obtain the
C ∞
equations for the first three terms of the sequence αm m=0
α0C = Σ0 , (24)
√ 1
k0 Σ0 2
2 − Σ0 + 2
α1C = 2π · e , (25)
C 2 C 4
!
1 α1 α0
α2C = · · − k02 . (26)
2 αC 3 4
0
CD ∞ CDD ∞
We will consider the sequences αm m=0
and αm m=0
that correspond to the
expansions of the first and second derivatives of Σ (k0 , ·) in (28) and (29). The
sequences are defined as
CD C
αm = (m + 1)αm+1 , (30)
CDD C
αm = (m + 2)(m + 1)αm+2 . (31)
Assume now that u ≥ 2 is fixed and that we know all of the terms αiC for
i ∈ {0, 1, 2, . . . , u}. The goal is to find a procedure to calculate αu+1 . The idea is
u−1
to compare the coefficients of (c − c0 ) on both sides of (1). Let us recall the
∞
definition of the discrete convolution of sequences. For two sequences (µm )m=0 and
∞ ∞
(νm )m=0 their convolution µ ∗ ν is defined as the sequence (µ ∗ ν)m=0 that satisfies
m
X
(µ ∗ ν)m = µi νm−i .
i=0
P∞ i
If the sequences µ and ν are generating the power series M (x) = i=0 µi (x − x0 )
P∞ i
and N (x) = i=0 νi (x − x0 ) then µ ∗ ν is generating the power series of the
product M (x) · N (x).
Let us denote by LC u−1 the coefficient on the left-hand side of (1) corresponding
u−1
to (c − c0 ) . Since the power series is the product of four power series Σ·Σ·Σ·Σcc
it must be equal to
3 CDD
α0C · αu−1 = Σ30 · (u + 1) · u · αu+1
C
.
6.2. Calculation of α0,n . Assume that we are given c0 , Σ0 , and k0 such that Σ0 =
ΣBS (k0 , c0 ). We will find the expansion of the single-variable function k 7→ Σ(k, c0 )
around k0 . Let us denote αnK = α0,n . We proceed in a similar way as in Subsection
6.1. The equation (19) with c = c0 becomes
∞
X n
Σ (k, c0 ) = αnK (k − k0 ) (34)
n=0
X∞
K n
Σk (k, c0 ) = (n + 1)αn+1 (k − k0 ) (35)
n=0
X∞
K n
Σkk (k, c0 ) = (n + 2)(n + 1)αn+2 (k − k0 ) . (36)
n=0
One has to take care of the appearance of the variable k on the right-hand side
of (2) which is no longer a constant. We re-write (2) as
2
3 Σ Σk
Σ Σkk = + Σ − k0 Σk − (k − k0 ) Σk
2
2
Σ Σk
· − Σ + k0 Σk + (k − k0 ) Σk . (37)
2
K
K
Rv−1 − LK,lower
v−1
αv+1 = , where (42)
v(v + 1)Σ30
K 1 K
Rv−1 = α ∗ αK ∗ αKD + αK − k0 αKD − αKD→
2
1 K
∗ α ∗ αK ∗ αKD − αK + k0 αKD + αKD→ , (43)
2 v−1
where the indices i, j, p, and q are non-negative integers. If the functions A and B
have power series representations
X m n
A(x, y) = µm,n (x − x0 ) (y − y0 ) and
X m n
B(x, y) = νm,n (x − x0 ) (y − y0 ) ,
Let us define the sequences α∂C , α∂K , α∂C∂K , α∂K→ to correspond to the func-
tions Σc , Σk , Σck , and (k − k0 ) Σk , respectively. As it can be seen from the equa-
tions (21), (22), and (23), the formal definitions of these sequences can be written
as
∂C
αm,n = (m + 1)αm+1,n ,
∂K
αm,n = (n + 1)αm,n+1 ,
∂C∂K
αm,n = (m + 1)(n + 1)αm+1,n+1 ,
∂K→ 0, if n = 0
αm,n = ∂K
αm,n−1 , if n > 0.
Assume that u ≥ 1 and v ≥ 1 and that we know all the terms of αm,n for which
0 ≤ m ≤ u, 0 ≤ n ≤ v and (m, n) 6= (u, v). In (20) we introduced the notation Su,v
for the set of such pairs of integers (m, n). We will express αu,v in terms of αu0 ,v0
for (u0 , v 0 ) ∈ Su,v which are previously calculated. We do this by comparing the
u−1 v−1
coefficients of (c − c0 ) (k − k0 ) on both sides of (46).
∞ ∞ ∞
Let us introduce the sequences (βm,n )m,n=0 , (γm,n )m,n=0 , and (δm,n )m,n=0 for
which the following hold
∞
Σ2 X m n
−k0 − (k − k0 ) + = βm,n (c − c0 ) (k − k0 ) , (47)
2 m,n=0
X∞
m n
Σ3 = γm,n (c − c0 ) (k − k0 ) , (48)
m,n=0
2 ∞
Σk Σ X m n
−Σ + k0 Σk + (k − k0 )Σk + = δm,n (c − c0 ) (k − k0 ) . (49)
2 m,n=0
We have that
Σ20
2 − k0 , if m = n = 0,
βm,n = 1 (50)
2 (α ∗ α)0,1 − 1, if m = 0, n = 1,
1
2 (α ∗ α)m,n ,
otherwise,
γ = α ∗ α ∗ α, (51)
1
α ∗ α ∗ α∂K + α∂K→ + k0 α∂K − α.
δ = (52)
2
Let us denote by Lu−1,v−1 and Ru−1,v−1 the coefficients on the left and right-
u−1 v−1
hand side of (46) that correspond to the term (c − c0 ) (k − k0 ) . These coeffi-
cients must be equal. Since both sides of equations are products of two-dimensional
polynomials the coefficients Lu−1,v−1 and Ru−1,v−1 can be obtained using convo-
lutions. The coefficient Ru−1,v−1 satisfies
Ru−1,v−1 = α∂C ∗ β ∗ δ u−1,v−1 ,
(53)
hence it can be calculated using only the terms αu0 ,v0 for (u0 , v 0 ) ∈ Su,v . Similarly,
Lu−1,v−1 satisfies
Lu−1,v−1 = α∂C∂K ∗ γ u−1,v−1 .
(54)
∂C∂K 3
One of the terms in Lu−1,v−1 is γ0,0 · αu−1,v−1 = α0,0 · uv · αu,v while the remaining
terms can be calculated using only the variables αu0 ,v0 for (u0 , v 0 ) ∈ Su,v . Let us
denote by Lloweru−1,v−1 the portion of Lu−1,v−1 that is expressed in terms of αu0 ,v 0 for
(u0 , v 0 ) ∈ Su,v . In other words,
Llower 3
u−1,v−1 = Lu−1,v−1 − α0,0 · uv · αu,v . (55)
Then we have
Ru−1,v−1 − Llower
u−1,v−1
αu,v = . (56)
Σ30 · u · v
The last equation gives us the recursive procedure for calculating the terms of the
∞
sequence α. The initial data are the one-dimensional sequences (αm,0 )m=0 and
∞
(α0,n )n=0 that are calculated in Subsections 6.1 and 6.2.
7. Implementation
7.1. Partition of the interval for k. First, the program partitions the k-axis
using the code in Algorithm 3, with numbers κ0 , κ1 , . . . , κm , as a part of precom-
putation phase. Higher precision results in larger values of m and finer partitions
−7
of the k-axis. In our implementation, where the required precision is ε = 10 , the
−6 −6
degree of the polynomials is 8, and (k, c) ∈ 10 , 5 × 10 , 0.997 , the number m
turns out to be 149. In order to build the partition of the k-axis we need to work
with one-dimensional polynomials in which the c coordinate is fixed. We can choose
an arbitrary c? , and in our case we had c? = 0.017. Then we select the smallest
k for which we want to approximate the implied volatility. This is the given left
endpoint kmin , hence we make the choice κ0 = kmin . Then we build the first poly-
nomial approximation P0 in variable k around (κ0 , c? ) using the PDE method as
shown in Subsection 6.2. Then we determine κ1 as a number for which the error
of the approximation P0 (κ1 , c? ) is ε/40. After this we build our second polynomial
P1 around (κ1 , c? ) and obtain the point κ2 as the one in which the approximation
error for P1 (κ2 , c? ) is ε/40. The procedure continues until we reach kmax .
Thus, we partitioned the interval [kmin , kmax ] with the sequence → −κ = (κ0 , κ1 ,
. . . , κm ) and constructed one-dimensional polynomials k 7→ Pi (k, c? ) for i ∈
{1, 2, . . . , m − 1} such that
• Pi (k, c? ) is a polynomial of degree d;
ε
• |Pi (k, c? ) − ΣBS (k, c? )| ≤ 40 for k ∈ [κi , κi+1 ].
In this step we are calling the bisection method to calculate ΣBS . Bisection
method is only used in precomputation phase.
7.2. Partitions of the interval for c. In the previous step we have created the
partition → −
κ . The next task is to create the partitions of the interval for c. The
summary is shown in Algorithm 4.
The goal is to iterate over each value i ∈ {0, 1, 2, . . . , m}, fix κi , and divide
[cmin , cmax ] into subintervals on which the polynomials of degree d in c-variable
provide an approximation to ΣBS (κi , ·) with an error smaller than ε/40. This
task is performed by induction. We start with σi0 = σmin (in our case we chose
σmin = 10−6 ), construct ci0 = CBS (κi , σi0 ) and then find a polynomial Qi0 of
degree d around (κi , ci0 ) as described in Subsection 6.1. We then start with value
0
σi1 = σi0 + 1.6, calculate c0i1 = CBS (κi , σi1 0
) and check whether Qi0 (κi , c0i1 ) is
within ε/40 from σi1 . If it is, then we select ci1 = c0i1 , otherwise we repeat the
0
00
procedure with σi1 = σi0 + 0.8. Eventually, we arrive to ci1 and repeat algorithm
to get ci2 , ci3 , . . . until we reach σmax .
Observe that the number of cells along the c-axis is not the same for each κi ,
rather it varies significantly and takes values from 119 to 298. When ε = 10−7 the
total number of rectangular cells in the partition of D is 29474.
Since this is a part of the algorithm that is executed only once, it is not essential
to fully optimize it and perform it in parallel. However, it is possible to perform the
treatment of different values of κi in parallel. We saw a small gain in performance
by doing so.
7.3. Creation of polynomials for each cell in partition. For each κi and each
ci,j we now create a two-dimensional polynomial Pi,j around (κi , ci,j ) as described
in Subsection 6.3 and outlined in Algorithm 5. This task also belongs to the pre-
computation phase of the algorithm.
7.4. Evaluation of implied volatility. This is the runtime phase of the algo-
rithm. At this point we assume that the partitions and polynomials are created
and pre-loaded in the memory. For a given pair (k, c) we first need to find the
indices i and j that determine the polynomial Pi,j (k, c) to be evaluated.
This task can be done in O(1) time and without any branching. We first locate
the index i ∈ {0, 1, 2, . . . , m − 1} such that k ∈ (κi , κi+1 ) and for that particular i
we locate the index j and the interval (ci,j , ci,j+1 ) to which c belongs.
We explain the procedure to find the index i (same applies to j). Rather than
providing a formal description, we proceed with an example. Assume that interval
A = [0, 100) is split into three sets
A0 = [0, 2.8), A1 = [2.8, 33.5), and A2 = [33.5, 100].
For every x ∈ [0, 100) we need to find the index i(x) ∈ {0, 1, 2} such that x ∈ Di(x) .
We define the sequence (I` )999
`=0 of 1000 integers in the following way:
8. Analysis of performance
The precomputation phase of the algorithm consists of creating the partition and
polynomials for a given precision ε and domain D for pairs (k, c). This step has
to be performed only once and the results
can be stored
for future use. When the
choices are ε = 10−7 and D = 10−6 , 5 × 10−6 , 0.997 it takes less than a minute
to create the partition and polynomials. Once the set-up phase is completed, the
evaluation of implied volatility is faster than when using other methods, as it can
be seen in the table below.
of the table correspond to the programs that were executed on CPU. All 8 cores
were utilized using the openMP framework. As the table shows, the PDE method
implemented on the graphic card with openCL framework further speeds up our
execution by a factor of 5.
Keep in mind that our power series expansions are divergent for k = 0. Thus,
the implied volatilities cannot be calculated directly for ATM options. However,
our algorithm deals with this case by simply replacing k = 0 with k = 1.01 · 10−7 .
The obtained implied volatility is still within ε = 10−7 from its true value.
There are alternative methods available for the ATM case that can be combined
with our PDE method while still maintaining a small overall absolute error. One
such method that could show promising performance is to use the expansion of
Grunspan (Proposition 6 from [19]). Another approach is discussed in [38]. A
simple closed-form approximation function ΣSR (k, c) for ΣBS (k, c) was derived in
[49], based on the Pólya approximation function Ñ (·) of the normal CDF N (·).
The function ΣSR (k, c) is cheap to compute, and moreover it was shown in [16]
that it is a lower bound for ΣBS (k, c) for most pairs (k, c) that are relevant in
practice. The approximation ΣSR is actually very accurate for small values of c
which makes it convenient to combine with our PDE method whose cells are very
dense and numerous for such c. More specifically, we tried using ΣSR instead of
our PDE method when k < 0.0016 and c < 0.063. The approximation happens to
be 20% faster and the space for storing the partition and polynomials is reduced by
the factor of 3. However, the error of such approximation turns out to be 5 · 10−5 .
Tests and results reported in the table above do not use any of these methods.
Our method also yields an improved repricing error, which was used as one of
the benchmarks in [45] and is defined as
εr = max |CBS (k, Σ(k, c)) − c| ,
(k,c)
where CBS is defined in (4). The corresponding repricing error for the PDE method
with parameters given above is 10−6 . It is better than 10−4 error achieved by [32]
and 10−5 error achieved by [45]. Note that the repricing error of 10−4 may be
substantial once it is multiplied by an underlying of high magnitude.
The algorithm was also tested on a data sample of options provided to us by
Wharton Research Data Services. We chose February 18, 2016 as an arbitrary day
in history for which option data was available. We pruned the data for meaningful
quotes that satisfy put-call parity, non-zero bid-ask spreads and a reasonable trading
volume. The corresponding re-scaled values
k and c for all
of the non-ATM options
were within the domain D = 10−6 , 5 × 10−6 , 0.997 , hence the PDE method
achieved the precision 10−7 . In fact the smallest c that occurred in the dataset was
2 · 10−5 . On this real-world data our PDE method was about three times faster
than other methods. As in [45] we did not observe any bid-ask range violations once
our implied volatility approximation is plugged into the Black-Scholes call option
price formula.
Recently Le Floc’h [28] and Jäckel [24] provide almost machine precision approxi-
mation for the Bachelier implied volatility based on the rational approximation from
[9].
We will illustrate how the idea of our PDE method can be used to obtain very
precise approximations to the Bachelier implied volatility. To reduce the problem
to one dimension, we divide both sides of (58) by S0 − K. Substituting c = S0C−K
gives us the equation c = CBac (d), where7
N 0 (d)
CBac (d) = N (d) + . (60)
d
Therefore we can formulate the problem of finding the implied volatility in Bachelier
model as
For given c find a positive real number d that solves CBac (d) = c. (61)
Once d is found, then σBac can be recovered from (59).
The problem (61) is equivalent to finding the function ψ(x) such that
N 0 (ψ(x))
x = N (ψ(x)) + . (62)
ψ(x)
Notice that x > 1 and that the right-hand side of (62), as a function of ψ, is decreas-
ing and converges to 1 as ψ → +∞. The implicit function ψ depends on only one
variable, see Figure 3. Recall that in Black-Scholes model, the integrated volatility
Σ was a function of two variables k and c. Therefore instead of constructing PDEs
we will be able to create an approximation using just ODEs.
9.2. Power series representation of ψ. Assume that x0 and ψ0 are fixed and
∞
that they satisfy ψ0 = ψ (x0 ).8 Let us denote by (αk )k=0 the real numbers such
that
∞
X k
ψ(x) = αk (x − x0 ) . (67)
k=0
Then we have α0 = ψ0 . We place ψ0 instead of ψ(x) in (65), solve for ψ 0 (x) and
∞
call α1 the obtained solution. The remaining terms of the sequence (αk )k=0 are
determined recursively.
Let us denote by Pm the set of all pairs of non-negative integers that sum up to
m. In other words
(p1 , p2 ) ∈ N20 : p1 + p2 = m .
Pm = (68)
∞ ∞
Define the sequences (βk )k=0 and (γk )k=0 as
( P
αp1 αp2 , if m ≥ 1,
βm = Pm (69)
α02 + 2, if m = 0;
X
γm = (p1 + 1)(p2 + 1)αp1 +1 αp2 +1 . (70)
Pm
8One way to get this pair (x , ψ ) is to start from x and use bisection method to solve x =
0 0 0 0
CBac (ψ0 ) for ψ0 . Alternatively, one can start from ψ0 and evaluate x0 explicitly as CBac (ψ0 ).
∞
From equation (66) we obtain the recursion for the sequence (αk )k=0 :
m
1 X
αm+2 = βj γm−j (71)
(m + 2)(m + 1)α0 j=0
m−1
!
X
− (p + 1)(p + 2)αp+2 αm−p .
p=0
9.3. Simulations. We analyze the performance of the algorithm when the desired
error is ε = 10−6 with polynomials of degree 10. When restricted to x ∈ [1.04, 8],
we need 16 polynomials to achieve the error 10−6 , each of them providing an ap-
proximation on a sub-interval of [1.04, 8]. The endpoints of the subintervals are
there is a possibility that more optimal choices could have been made. However,
that will likely require more time and space complexity.
Our implementation uses polynomials of degree 8 and achieves the 10−7 preci-
sion. The polynomials of lower degree are easier to handle by the graphic card, but
they require more partition cells. This results in bigger data structures that have
to be stored in memory. The polynomials of higher degree require more computa-
tion but smaller files. We have observed that degree 8 polynomials offer the best
compromise and result in fastest execution. In the near future memory capacities
of graphic cards may allow more efficient implementations and better precision.
The power series (19) is divergent at k = 0 which corresponds to ATM options.
We overcame this difficulty by replacing k = 0 with k = 1.01 · 10−7 and maintained
the same absolute error. It remains to be seen whether there are superior ways of
handling this case.
The existence of the solution to the system of partial differential equations (1),
(2), and (3) is established in Theorem 1. This solution is the implied volatility
ΣBS and our numerical simulations show that low degree truncations of the power
series (19) are precise approximations of ΣBS . The uniqueness of the solutions
to the system of partial differential equations (1), (2), and (3) remains an open
problem. If for a fixed pair (k0 , c0 ) the power series (19) is convergent, then it is
the unique solution to the system. The question of uniqueness is thus equivalent
to the convergence of the power series (19) in a neighborhood of (k0 , c0 ). We
conjecture that the system of partial differential equations (1), (2), and (3) has a
unique solution.
Conjecture 1. For every pair (k0 , c0 ) and every Σ0 > 0 such that k0 = 6 0 and
c0 > 0, the system of partial differential equations (1), (2), and (3) has a unique
solution Σ in a neighborhood of (k0 , c0 ) that satisfies Σ (k0 , c0 ) = Σ0 .
The recursive definition of the coefficients αm,n makes it difficult to study the
convergence of the series. One possible approach is to adapt the Lagrange inversion
methodology Xia and Cui used in [54] to obtain the one-dimensional power series
representation equivalent to (27) for fixed k.
10.2. Applications to other problems. Our PDE method can be used to ap-
proximate the Margrabe implied correlation as suggested in [33]. If two assets have
dynamics that is governed with ρ-correlated Wiener processes W1 and W2 then the
Margrabe formula gives the time 0 price C0 of the European option to exchange
one stock for the other at time T as follows
C0 = S1 (0)e−q1 T N (d+ ) − S2 (0)e−q2 T N (d− ), where (72)
S1 (0)e−q1 T σ2 T
log S2 (0)e−q2 T
± 2
d± = √ , and
σ T
q
σM = 2
σBS,1 2
+ σBS,2 − 2ρσBS,1 σBS,2 . (73)
The quantities q1 and q2 are the dividend rates for the underlying assets while σBS,1
and σBS,2 are their volatilities. After the substitution
S2 e−q2 T C0 √
k = log , c= , σ = σM T ,
S1 e−q1 T S1 e−q1 T
Tehranchi in [52] established similar convexity results for the integrated volatility
Σ (see Corollary 1.2).
We also note that Theorem 1 can be concisely stated in terms of the Hessian
D2 Σ as follows.
It can be easily verified from here that the determinant of the Hessian satisfies
2 !
2
1 2 ∂ k Σ
det D Σ = Σ · − +
2 c ∂k Σ 2
which may be useful for gradient-based optimization procedures.
The system of partial differential equations (1), (2), and (3) might be numeri-
cally solvable using a finite difference method. It remains to be seen whether this
approach would yield effective algorithms that provide accuracy and speed desired
in practice.
Acknowledgements
This work was supported by the Weissman School of Arts and Sciences at Baruch
College. The authors thank their colleagues Beat Ammon, Jim Gatheral, Andrew
Lesniewski, Yike Lu, Elena Kosygina, Avi Palley, Alex Tartakovsky, and anonymous
referees for their comments and suggestions.
References
[1] L. Bachelier. Théorie de la spéculation. Annales Scientifiques de L’Ecole Normale Supérieure,
17, pp. 21–88, 1900.
[2] J. Baumeister. Inverse problems in finance. in: Recent Developments in Computational Fi-
nance: Foundations, Algorithms and Applications, T. Gerstner, P. Kloeden (Eds.), World
Scientific Publishing, Volume 14, Interdisciplinary Mathematical Sciences, Chapter 3, pp.
81–158, 2013.
[3] H. Berestycki, J. Busca, and I. Florent. Computing the implied volatility in stochastic volatil-
ity models. Comm. Pure Appl. Math., 57(10), pp. 1352–1373, 2004.
[4] F. Black and M. Scholes. The pricing of options and corporate liabilities. Journal of Political
Economy, 81, pp. 637–654, 1973.
[5] M. Brenner and M. Subrahmanyam. A simple formula to compute the implied standard
deviation. Financial Analyst Journal, 44, pp. 80–83, 1988.
[6] M. Brenner and M. Subrahmanyam. A simple approach to option valuation and hedging in
the Black-Scholes model. Financial Analyst Journal, 50, pp. 25–28, 1994.
[7] D. M. Chance. A generalized simple formula to compute the implied volatility. The Financial
Review, 31, pp. 859–867, 1996.
[8] D. Chance, T. A. Hanson, W. Li, and J. Muthuswamy. A bias in the volatility smile. Review
of Derivatives Research, 20 (1), pp. 47–90, 2017.
[9] J. Choi, K. Kim, and M. Kwak. Numerical approximation of the implied volatility under
arithmetic Brownian motion. Applied Mathematical Finance, 16 (3), pp. 261–268, 2009.
[10] C. J. Corrado and T. W. Miller Jr. A note on a simple, accurate formula to compute implied
standard deviations. Journal of Banking and Finance, 20, pp. 595–603, 1996.
[11] M. R. Fengler. Option data and modeling BSM implied volatility. in: Handbook of Compu-
tational Finance, pp. 117–142. Springer Berlin Heidelberg, 2012.
[12] M. Forde and A. Jacquier. Small-time asymptotics for implied volatility under the Heston
model. International Journal of Theoretical and Applied Finance 12 (6), pp. 861–876, 2009.
[13] G. Frobenius. Ueber die Integration der linearen Differentialgleichungen durch Reihen. J.
reine angew. Math., 76, pp. 214–235, 1873.
[14] J. Gatheral. The Volatility Surface: A Practitioner’s Guide. John Wiley and Sons, Hoboken,
NJ, 2006.
[15] J. Gatheral, E. P. Hsu, P. Laurence, C. Ouyang, and T.-H. Wang. Asymptotics of implied
volatility in local volatility models. Mathematical Finance 22 (4), pp. 591–620, 2012.
[16] J. Gatheral, I. Matić, D. Stefanica, and R. Radoičić. Tighter bounds for implied volatility.
International Journal of Theoretical and Applied Finance 20 (5), pp. 1–14, 2017.
[17] S. Gerhold. Can there be an explicit formula for implied volatility? Appl. Math. E-Notes, 13,
pp. 17–24, 2013.
[18] K. Glau, P. Herold, D. Madan, C. Pötz. The Chebyshev method for the implied volatility.
Journal of Computational Finance, to appear, arXiv:1710.01797, 2017.
[19] C. Grunspan. Asymptotic Expansions of the Lognormal Implied Volatility: A Model Free
Approach. arXiv:1112.1652, 2011.
[20] C. Grunspan. A Note on the Equivalence between the Normal and the Lognormal Implied
Volatility: A Model Free Approach. arXiv:1112.1782, 2011.
[21] M. Hairer. A theory of regularity structures. Inventiones mathematicae, 198(2), pp. 269–504,
2014.
[22] P. Jäckel. By implication. Wilmott, November, pp. 60–66, 2006.
[23] P. Jäckel. Let’s be rational. Wilmott, January, pp. 40–53, 2015.
[24] P. Jäckel. Implied normal volatility. Wilmott, January, pp. 52–54, 2017.
[25] A. Jacquier, M. Keller–Ressel, and A. Mijatović. Large deviations and stochastic volatility
with jumps: asymptotic implied volatility for affine models. Stochastics 85 (2), pp. 321–345,
2013.
[26] A. Jacquier and M. Lorig. From characteristic functions to implied volatility expansions.
Advances in Applied Probability 47 (3), pp. 837–857, 2015.
[27] H. A. Latané and R. J. Rendleman. Standard deviation of stock price ratios implied by option
premia. Journal of Finance, 31, pp. 369–382, 1976.
[28] F. Le Floc’h. Fast and Accurate Analytic Basis Point Volatility (April 10, 2016). Available
at SSRN: https://ssrn.com/abstract=2420757
[29] F. Le Floc’h. Implied volatility from Black-Scholes price. (2017) Available at
http://chasethedevil.github.io/post/implied-volatility-from-black-scholes-price/
[30] R. Lee. The moment formula for implied volatility at extreme strikes. Mathematical Finance,
14 (3), pp. 469–480, 2004.
[31] S. Li. A new formula on computing the implied volatility. Applied Mathematics and Compu-
tation, 170, pp. 611–625, 2005.
[32] M. Li. Approximate inversion of the Black-Scholes formula using rational functions. European
Journal of Operational Research, 185 (8), pp. 743–759, 2008.
[33] M. Li and K. Lee. An adaptive successive over-relaxation method for computing the Black-
Scholes implied volatility. Quantitative Finance, 11 (8), pp. 1245–1269, 2011.
[34] M. Lorig, S. Pagliarani, and A. Pascucci. A Taylor series approach to pricing and implied
volatility for local-stochastic volatility models. Risk, 17 (2), pp. 1–17, 2014.
[35] D. B. Madan. Adapted hedging. Annals of Finance, 12 (3-4), 305–334, 2016.
[36] D. B. Madan, R. H. Smith, and K. Wang. Laplacian risk management. Finance Research
Letters, 22, pp. 202–210, 2017.
[37] S. Manaster and G. Koehler. The calculation of implied variances from the Black-Scholes
model. The Journal of Finance, 38, pp. 227–230, 1982.
[38] I. Matić, R. Radoičić, and D. Stefanica. Pólya-based approximation for the ATM-forward
implied volatility. International Journal of Financial Engineering, 4 (2-3), 2017.
[39] I. Matić, R. Radoičić, and D. Stefanica. A PDE method for estimation of implied volatil-
ity, source code. open source, available at github.com/maticivan/PDE-method-for-implied-
volatility
[40] E. A. Nurminskii, A. A. Buryi. Parker-Sochacki method for solving systems of ordinary
differential equations using graphics processors. Numerical Analysis and Applications, 4:223,
2011.
[41] G. Orlando and G. Taglialatela. A review on implied volatility computation. Journal of
Computational and Applied Mathematics, 320, 202–220, 2017.
[42] G. E. Parker and J. S. Sochacki. Implementing the Picard iteration. Neural, Parallel Sci.
Comput., 4(1), pp. 97–112, 1996.
[43] M. Pistorius and J. Stolte. Fast computation of vanilla prices in time-changed models and
implied volatilities using rational approximations. International Journal of Theoretical and
Applied Finance 15 (4), 1–34, 2012.
[44] W. H. Press, S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery. Numerical Recipes in
C++: The Art of Scientific Computing. Second Edition. Cambridge University Press, New
York, NY, 2002.
[45] O. Salazar Celis. A parametrized barycentric approximation for inverse problems with appli-
cation to the BlackScholes formula. IMA Journal of Numerical Analysis, drx020, 2017.
[46] W. Schachermayer and J. Teichmann. How close are the option pricing formulas of Bachelier
and Black-Merton-Scholes? Mathematical Finance 18 (1), 155–170, 2008.
[47] K. Spanderen. Adaptive SOR method for implied volatility calculation.
https://hpcquantlib.wordpress.com/, 2017.
[48] D. Stefanica and R. Radoičić. A sharp approximation for ATM-forward option prices and
implied volatilities. International Journal of Financial Engineering, 3(1), 2016.
[49] D. Stefanica and R. Radoičić. An explicit implied volatility formula. International Journal
of Theoretical and Applied Finance, 20(7), 2017.
[50] G. Steinbrecher and W. T. Shaw. Quantile mechanics. European Journal of Applied Mathe-
matics, 19 (2), pp 87–112, 2008.
[51] M. R. Tehranchi. Uniform bounds for Black–Scholes implied volatility. SIAM Journal on
Financial Mathematics, 7(1), pp. 893–916, 2016.
[52] M. R. Tehranchi. A Black–Scholes inequality: applications and generalisations.
arXiv:1701.03897, 2017.
[53] A. Townsend and L. N. Trefethen. An extension of chebfun to two dimensions. SIAM Journal
on Scientific Computing, 35(6), pp. 495-518, 2013.
[54] Y. Xia and Z. Cui. An Exact and Explicit Implied Volatility Inversion Formula. International
Journal of Financial Engineering, 5(3), 29 pages, 2018.