Local Volatility and Greeks by OpenGamma
Local Volatility and Greeks by OpenGamma
Local Volatility and Greeks by OpenGamma
RICHARD WHITE
cannot produce different implied volatility levels across strikes (volatility smiles). How-
ever, if the instantaneous volatility is extended to be a function of both time and the
level of the underlying, σ → σ(t, S), then the market prices of all options written on the
underlying can be recovered by a suitable choice of σ(t, S). Additionally, given a (hypo-
thetical) continuum of prices across expiry and strike, there is a unique Local Volatility
σL (t, S). This is a result from stochastic processes due to Gyöngy (1986).
RT
Defining the forward option price as V̄t = exp( t rs ds)Vt and the forward value of the
underlying as
Z T
(5) F (t, T ) = exp (rs − qs )ds St
t
equation 2 can be written as
∂ V̄ 1 ∂ 2 V̄
(6) + σ(t, F )2 F 2 =0
∂t 2 ∂F 2
The forward can be identified as
(7) F (t, T ) = ET [ST |Ft ]
where the expectation is under the T-forward measure - i.e. the numeraire is the zero
coupon bond P (t, T ). The option price is Vt = P (t, T )V̄t , and both F (t, T ) and P (t, T )
are market observables (at time t for a range of T ) in many markets. By this transfor-
mation, any reference to the (generally) unobserved r and q is removed.
∂C 1 ∂2C ∂C
(11) = σ 2 (K, T )K 2 2
− (r − q)K − qC
∂T 2 ∂K ∂K
In this equation, the state variables are expiry, T , and strike, K. Numerically solving
the PDE forward in time, T , with the initial condition is C(t, St ; t, K) = (St − K)+ , will
give call prices for all expiries and strikes (within the chosen boundaries). Dupire (1994)
rearranged this equation to:
3the probability of going from x at time t to x at time T ≥ t
t T
LOCAL VOLATILITY 3
v
u ∂C ∂C
u + (r − q)K ∂K + qC
(12) σ(T, K) = t2 ∂T ∂ 2C
K 2 ∂K 2
which, given a continuous, twice-differentiable in strike and once in time, surface of call
options prices, will give a unique local volatility. A real market will only have a finite
number of (liquid) option prices. Direct interpolation of market prices is difficult since
∂2C
calendar arbitrage (i.e. ∂C ∂C
∂T + (r − q)K ∂K + qC < 0) and strike arbitrage (i.e. ∂K 2 < 0)
must be avoided. Even if these conditions are met, finding local volatility this way is
dangerous, not least because for OTM options, the derivatives will be with respect to
very small prices (and thus in turn produce small, possibly inaccurate numbers), leading
to a division of one very small number by another. Since it is a market standard to quote
prices as implied volatility, σimp (T, K), the local volatility formula can be rewritten in
terms of implied volatility and its derivatives:
v
u
2 imp ∂σ imp ∂σ
u σimp + 2σimp T ( ∂T + (r − q)K ∂K )
(13) σ(T, K) = u √ ∂σimp
∂σimp 2
u
∂2σ
1 + 2d1 K T ∂K + K 2 T d1 d2 ∂K + σimp ∂Kimp
t
2
∂ Ĉ 1 ∂ 2 Ĉ
(15) = σ̂(T, x)2 x2 2
∂T 2 ∂x
and the local volatility is now a function of expiry and moneyness (denoted by the hat
symbol). The relationship between these two local volatility surfaces is trivially
(16) σ(T, K) = σ̂(T, K/F (t, T )) σ̂(T, x) = σ(T, xF (t, T ))
Equation 15 must be solved numerically4, with initial condition Ĉ(0, x) = (1 − x)+ ,
lower boundary condition Ĉ(T, 0) = 1 and upper boundary condition either Ĉ(0, xmax ) =
0 or ∂∂x
Ĉ
|x=xmax = 0, for some xmax 1. After reversing the change of variables, this
gives the call price across all expiries and strikes (within the set boundaries).
Just as in equation 13, we can rearrange equation 15 to give local volatility in terms
of implied volatility:
4Except in the degenerate case where σ̂ is a function of time only, in which case the RMS volatility
can be plugged straight into the Black formula.
4 RICHARD WHITE
v
u
2 ∂ σ̂
imp
u σ̂imp + 2σ̂imp T ∂T
(17) σ̂(T, x) = u √ ∂ σ̂imp
∂ σ̂imp 2
u
2 ∂ 2 σ̂imp
1 + 2d1 x T ∂x + x T d1 d2 + σ̂imp ∂x2
t
∂x
The implied volatility, σ̂imp (T, x), is a function of expiry and moneyness, and
− ln(x) + 21 σ 2 τ √
(18) d1 = √ d2 = d1 − σ τ τ =T −t
σ τ
Again, it is trivial to convert between an implied volatility surface parameterised by
strike to one parameterised by moneyness.
Assuming we have obtained a smooth, interpolated, implied volatility surface from
market prices of options on a single underlying, we can then numerically or analytically
take derivatives to obtain the local volatility surface. Armed with this surface we numer-
ically integrate (i.e. solve) equation 15 once, read off the prices and compare with the
market prices. Alternatively, we can solve equation 6 once for each option. Either way
the only discrepancy with the input market option prices should be due to numerical
error.
market-implied volatilities for all five strikes. With β fixed, we then make three different
fits of SABR to the three sets of three consecutive points. These fits should be exact (a
failure would indicate bad data). Clearly, the fits will agree on the implied volatility at
the market strikes that they share (which in turn will be the market-implied volatilities),
but not at points in between. For the points in between, we take a weighted average.
For a point x, between xi and xi+1 , the weighted average is
xi+1 − x xi+1 − x
(20) f (x) = w fi (x) + 1 − w fi+1 (x)
xi+1 − xi xi+1 − xi
where fi () is the fit centred on the point xi and the weight function has the property
w(0) = 0 and w(1) = 1. An obvious choice is w(y) = y, but we must consider how the
derivatives of f () will behave.
The first and second derivatives are;
0 1 0 xi+1 − x
f (x) = w [−fi (x) + fi+1 (x)]
(21) ∆xi ∆xi
+wfi0 (x) + (1 − w)fi+1 0
(x)
1 xi+1 − x
f 00 (x) = 2 w00 [fi (x) − fi+1 (x)]
∆xi ∆xi
(22) 2 0 xi+1 − x 0 0
− w fi (x) − fi+1 (x)
∆xi ∆xi
+wfi00 (x) + (1 − w)fi+1 00
(x)
This means the first derivative is continuous for any choice of the weight function. How-
ever the second derivative can be discontinuous regardless of how smooth the basis
function fi is:
2 0 0
lim f 00 (xi + ) − f 00 (xi − ) = w (1) fi+1 (xi ) − fi0 (xi )
→0 ∆xi
(23)
2
w0 (0) fi0 (xi ) − fi−1
0
− (xi )
∆xi−1
If the additional constraint w0 (0) = w0 (1) = 0 is applied, then the second derivative will
be continuous. A candidate weight function is
1 1
(24) w(y) = sin π y − +1
2 2
Extrapolation is handled by using either the SABR fit to the lowest three strikes (for
strikes less than the lowest market strike) or the fit to the highest three strikes (for
strikes greater than the highest market strike)7.
3.1. Time interpolation. Clark (2011) points out that in FX markets there is no con-
nection between the volatility levels at a particular strike across expiries, and therefore it
makes little sense to interpolate between common strike levels from the smile fits in the
time direction. Instead, time interpolation should be performed between common delta
7With SABR there is a danger of getting arbitrage at very low strikes.
6 RICHARD WHITE
values. If the volatility at some (T, ∆) is required, the corresponding volatility at each
fitted smile is found by root finding for the strike8. Once these volatilities are known,
we can interpolate for the time T . An extra complication is that the PDEs we will solve
require the volatility at (potentially arbitrary) expiry and strike (or moneyness) points,
rather than expiry and delta, meaning we would have to iterate the above procedure
to find the delta and volatility at the required point. As this would be done several
thousand times to solve the PDE, it makes it impractical.
Clark (2011) suggests interpolating the ATM volatility, risk reversals and strangles9
to the required expiry, then performing a smile fit from these interpolated values. This
may require performing 50-100 separate smile fits, and be liable to numerical instability.
To avoid time consuming root finding, we define a proxy delta as
ln F
(25) d = √K
T
The volatility of common d values on four adjacent fitted smiles is then found, and the
integrated variances computed. Note that the condition of equation 19 (i.e. integrated
variance increases with time) need not hold for these four values as we are not moving
along a line of constant moneyness. We find that a log-log natural cubic spline interpo-
lation10 works best for the data (however we note that this method can admit calendar
arbitrage). Figure 1 shows the implied volatility surface using this method.
4. Local Volatility
If the implied volatility surface is treated as a black box, i.e. you request the volatility
at a given expiry and strike (or moneyness) and get a number back, then the only way
to form the local volatility surface is by forming difference quotients as approximations
to the partial derivatives. For each point in the local volatility surface, the value at
five (close by) points on the implied volatility surface are needed. If we can analytically
differentiate the smile model with respect to strike (which you can for SABR), then all
the information is available to calculate the partial derivatives analytically, which will
be faster and numerically more stable.
Figure 2 shows the local volatility surface derived from the implied volatility surface
of figure 1. As expected, it is considerably less smooth.
Expiry-moneyness is not the best way to display the volatility surface, as there is little
relevance in say the volatility (implied or local) of a 1W expiry, 0.2 moneyness option.
Following the definition of proxy delta above, we show the same local volatility surface
in expiry - proxy delta coordinates in figure 3.
8Of course, if the fitted smile was parameterised by delta in the first place, this root finding would
be unnecessary.
9The typical way FX volatilities are quoted.
10taking the log of the time values and the log of the integrated variance, and interpolate these values.
LOCAL VOLATILITY 7
0.5 0.45-‐0.5
Volatility
0.4-‐0.45
0.45 0.35-‐0.4
0.3-‐0.35
0.4
0.25-‐0.3
0.2-‐0.25
0.35
0.15-‐0.2
0.3 0.1-‐0.15
0.05-‐0.1
0.25 0-‐0.05
0.2
0.15
0.1
0.05
0
0.00E+00
0.55
1.1
1.65
2.2
2.75
0.2
0.34
3.3
0.48
3.85
0.62
0.76
4.4
0.9
4.95
1.04
1.18
5.5
1.32
1.46
6.05
Expiry 1.6
6.6
1.74
1.88
7.15
2.02
7.7
2.16
2.3
8.25
Moneyness
2.44
8.8
2.58
2.72
9.35
2.86
9.9
3
0.5 0.45-‐0.5
Volatility
0.4-‐0.45
0.45 0.35-‐0.4
0.3-‐0.35
0.4
0.25-‐0.3
0.2-‐0.25
0.35
0.15-‐0.2
0.3 0.1-‐0.15
0.05-‐0.1
0.25 0-‐0.05
0.2
0.15
0.1
0.05
0
0.00E+00
0.55
1.1
1.65
2.2
2.75
0.2
0.34
3.3
0.48
3.85
0.62
0.76
4.4
0.9
4.95
1.04
1.18
5.5
1.32
1.46
6.05
1.6
Expiry
6.6
1.74
1.88
7.15
2.02
7.7
2.16
2.3
8.25
Moneyness
2.44
8.8
2.58
2.72
9.35
2.86
9.9
3
5.2. Bucketed Vega. Another useful diagnostic is to measure the sensitivity of a rep-
resentative point to changes in the input data. The point is an option with six month
expiry and a strike of 1.4 (slightly ITM). Each of the 50 market data points has its im-
plied volatility shifted by 1 basis point in turn, the implied volatility surface refitted, the
local volatility surface recalculated, and finally a PDE solver run with the new surface.
The sensitivity is defined as
σoriginal − σbumped
s=
and = 1 basis point. Almost identical results are obtained by solving the backwards
PDE (eqn. 6) as solving the forward PDE (eqn. 15). Figure 6 shows the result for
the backwards PDE. There is a large amount of sensitivity to the 6M ATM (which
corresponds to a strike of 1.4413) and the 6M 25% delta (with strike 1.32), with smaller
amounts to the other 6M points, and very little sensitivity to the rest of the market data
- which is desirable.
5.3. Delta and Gamma. In this case, delta refers to the forward delta (or driftless
delta), which is the sensitivity of the future value (FV) of an option to the relevant
13The ATM is taken to be the delta-neutral straddle (DNS), so the strike is given by K =
2
F exp(σAT M T /2).
LOCAL VOLATILITY 9
0.45 0.4-‐0.45
Volatility
0.35-‐0.4
0.4
0.3-‐0.35
0.25-‐0.3
0.35
0.2-‐0.25
0.15-‐0.2
0.3
0.1-‐0.15
0.25 0.05-‐0.1
0-‐0.05
0.2
0.15
0.1
0.05
0
0.00E+00
0.55
1.1
1.65
2.2
2.75
0.5
0.45
3.3
0.4
3.85
0.35
0.3
4.4
0.25
4.95
0.2
0.15
5.5
0.1
0.05
6.05
Expiry 0
6.6
-‐0.05
-‐0.1
7.15
-‐0.15
7.7
-‐0.2
-‐0.25
8.25
Proxy Delta
-‐0.3
8.8
-‐0.35
-‐0.4
9.35
-‐0.45
9.9
-‐0.5
forward. This is known as pips forward delta in FX, and in a Black-Sholes-Merton world
is given by
(26) ∆F ;Black = ωN (ωd1 )
For a stochastic volatility model where the implied volatility is a function of the forward
(such as SABR), the full delta can be written as
∂σ
(27) ∆F = ∆F ;Black + νF ;Black
∂F
where νF ;Black is the Black forward vega (sensitivity of the forward value of an option to
its implied volatility). For a model with some parameters, θ, that have been calibrated
∂σ
to the market, the term ∂F is understood to be the sensitivity with those parameters
14
fixed.
For local volatility, it is assumed that the local volatility surface (parameterised by
strike) is invariant to a change in the forward - this assumption will produce a different
14The ∂σ
term is known as the backbone, and is sometimes defined extraneously to produce the smile
∂F
dynamics ’expected’ by the trader.
10 RICHARD WHITE
0.22
0.2
0.18
Implied Volatility
0.16
Market Vols
Model Vols
0.14
0.12
0.1
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
Delta
Figure 4. The market and model (i.e. fit implied volatility surface →
derive the local volatility surface → run a PDE solver) implied volatilities.
delta to that given by a stochastic volatility model even when they agree exactly on
price.
Solving equation 6 for a particular strike and expiry, T , produces a set of forward
values at different initial levels of the relevant forward, F (0, T ). The delta can then
be read off by taking the difference quotient of these values15. To produce delta as a
function of strike, the PDE is solved 100 times at different strikes, with the expiry fixed
at six months.
Extracting deltas from the solution to equation 15 is more challenging since the spatial
variable is now moneyness. Delta can be written as:
∂[F Ĉ] ∂ Ĉ ∂ Ĉ
(28) = Ĉ + = Ĉ − x
∆F = + surface delta
∂F ∂F ∂x
The term surface delta comes from the fact that, if the local volatility parameterised by
strike is invariant to the forward, the surface parameterised by moneyness cannot be.
Writing the local volatility explicitly as a function of the forward, σ̂(T, x; FT ), the delta
is written as:
∂ Ĉ(T, x; σ̂(T, x; FT ))
∆F =Ĉ(T, x; σ̂(T, x; FT )) − x
∂x
(29)
Ĉ(T, x; σ̂(T, x; (1 + )FT )) − Ĉ(T, x; σ̂(T, x; (1 − )FT ))
+ lim
→0 2FT
15To get the delta at the actual forward, if it does no lie on the grid, linear interpolation is used.
LOCAL VOLATILITY 11
1W
0.19
0.185
Implied Volatility
0.18
0.175
0.17
0.165
1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38
Strike
5Y
0.17
0.16
Implied Vol
0.15
0.14
0.13
0.12
1 1.2 1.4 1.6 1.8 2 2.2
Strike
The PDE is solved three times; once with an unmodified surface, then once each with a
surface made by fractionally shifting the forward up and down by an amount = 0.05.
The first term is obtained from the unmodified solution, the second by taking difference
quotients, and the third by taking the difference between the two modified solutions.
12 RICHARD WHITE
Bucketed Vega
0.8
0.7
0.6
0.5
Sensitivity
0.4
0.3
0.2
0.1
-‐0.1 1W
2W
3W
1M
3M 85%
6M
75%
9M
1Y 50%
5Y 25%
10Y 15%
1W 2W 3W 1M 3M 6M 9M 1Y 5Y 10Y
15% 9.71E-‐03 3.48E-‐03 1.11E-‐03 -‐1.02E-‐02 2.63E-‐02 -‐6.79E-‐02 -‐6.69E-‐04 3.35E-‐05 0.00E+00 0.00E+00
25% -‐2.69E-‐02 -‐4.88E-‐03 -‐6.38E-‐03 9.17E-‐03 9.20E-‐04 3.20E-‐01 8.35E-‐03 -‐1.60E-‐04 0.00E+00 0.00E+00
50% 3.74E-‐02 7.42E-‐03 4.00E-‐03 2.76E-‐04 6.39E-‐03 7.85E-‐01 -‐2.73E-‐04 -‐2.45E-‐04 0.00E+00 0.00E+00
75% -‐3.84E-‐02 -‐5.39E-‐03 -‐4.39E-‐03 -‐1.06E-‐02 1.08E-‐02 -‐5.67E-‐02 -‐3.54E-‐03 2.66E-‐05 0.00E+00 0.00E+00
85% 1.87E-‐02 2.87E-‐03 -‐1.75E-‐03 1.31E-‐02 -‐2.79E-‐02 -‐7.23E-‐04 2.44E-‐04 -‐4.23E-‐10 0.00E+00 0.00E+00
Aside: If the third term is missed out, then the implicit assumption is that the
local volatility surface parameterised by moneyness is invariant to the forward curve.
This will give the same delta as a stochastic volatility model whose implied volatility
is a function of moneyness only - this included SABR when β = 1 and the Heston model.
Figure 7 shows the smile produced from solving the forward and backwards PDE
(recall that in the case of the backwards PDE, it is solved 100 times with different
strikes). The agreement is good, only visibly deviating for very large strikes. Figure
8 shows the corresponding delta along with the Black delta. The agreement is good
between the solutions of the two PDEs.
∂σ
A delta below the Black delta indicates (from equation 27) that ∂F < 0. This is the
case for strikes below ATM, and the opposite is true above ATM. From the shape of the
smile, this suggests that the smile will move to the left as the forward increases. This is
confirmed in figure 9 where smiles have been produced as above, but with the forward
increased by 10%. This smile dynamic for local volatility is the opposite of what is seen
in the market, as noted by Hagan (2002).
LOCAL VOLATILITY 13
0.5
Backwards PDE
0.45
Forwards PDE
0.4
Implied Vol
0.35
0.3
0.25
0.2
0.15
0.1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
Strike
Figure 7. The volatility smile at six months from solving the forward
and backwards PDE.
0.9
Black Delta
0.8
Delta (Forward PDE)
0.7 Delta (Backwards PDE)
0.6
Delta
0.5
0.4
0.3
0.2
0.1
0
0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 2.1 2.3 2.5
Strike
0.6
Smile Dynamics
0.5
0.4
Implied Volatility
0.3
0.2
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Strike
Figure 9. The change in the smile when the forward is increased by 10%.
−x
FT
Ĉ(T, x; σ̂(T, x; (1 + )FT )) + Ĉ(T, x; σ̂(T, x; (1 − )FT )) − 2Ĉ(T, x; σ̂(T, x; FT ))
+
2 FT
The first term is the gamma if the local volatility, parameterised by moneyness, were
invariant to the forward curve. The second term is the surface delta we saw above. The
third term could be called (with a slight abuse of terminology) the surface vanna - it
is the change in the moneyness delta due to a change in the surface. Finally the last
LOCAL VOLATILITY 15
term could obviously be called the surface gamma. Figure 10 shows the gamma from the
two PDE solutions along with the Black gamma. Again, the agreement is good between
the solutions of the two PDEs, although it is not clear what is causing the shoulder to
appear in the forward PDE gamma.16
4.00
Gamma against strike
3.50
3.00
2.50
Gamma
2.00
BS Gamma
Gamma (Forward PDE)
1.50
Gamma (Backwards PDE)
1.00
0.50
0.00
0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 2.1 2.3 2.5
Strike
Figure 10. The Black gamma and the local volatility gamma
5.4. Volatility Greeks. Vega in a BSM world is well defined, as volatility is a parameter
of the pricing formula. For a local volatility model, it could mean the sensitivity of price
to any deformation of the local volatility surface. Standard deformations could be a
parallel shift (e.g. each point is increased by 1 basis point of volatility) or a fractional
shift (e.g. each point is increased by 0.01% of its value). Figure 11 show the results for
a parallel shift; the surface is moved up and down by 1bp, and the vega calculated as
the difference between the prices divided by 2 bps. As usual, we are taking an expiry of
six months.
5.4.1. Vanna and Vomma. Vanna is the sensitivity of delta to the implied volatility (i.e.
∂2C
∂σ∂F ) and vomma is the second derivative of price with respect to implied volatility
2
(i.e. ∂∂σC2 ). Again, both have very clear definitions in a BSM world. As with vega, we
calculate the local volatility vomma as the second order difference quotient from parallel
16It was thought that this was due to well-known numerical problems with Crank-Nicolson, but
running a fully implicit PDE solver does not cure it.
16 RICHARD WHITE
0.45
Vega
0.40
0.35
0.30
BS Vega
0.20
0.15
0.10
0.05
0.00
0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 2.1 2.3 2.5
Strike
Figure 11. The Black vega and the local volatility vega computed from
parallel shifts of the surface, for six month expiries
shifts in the surface. Vanna is more complex (mainly because computing delta from a
moneyness parameterised forward PDE is complex), and can be expressed as
−x
(32) 2η
1
+ Ĉ(T, x; σ̂(T, x; (1 + )FT ) + η) + Ĉ(T, x; σ̂(T, x; (1 − )FT ) − η)
4η
−Ĉ(T, x; σ̂(T, x; (1 + )FT ) − η) + Ĉ(T, x; σ̂(T, x; (1 − )FT ) + η)
The first term is simply the vega of the fractional price, Ĉ, the second is the vanna
of the fractional price, and the third is the cross second order derivative to changes to
the volatility surface due to deformation from change in the forward, and parallel shifts.
Figures 12 and 13 show the Black and local volatility vanna and vomma.
6. Conclusion
We have shown that our implementation of local volatility (which includes fitting a
smooth implied volatility surface to market data, deriving a local volatility surface from
this, and numerically solving one of two PDEs) reprices the market almost exactly. Fur-
thermore, it produces local behaviour of bucketed vega (i.e. the price of a representative
option only depends on the values of nearby market inputs) and smooth greeks.
LOCAL VOLATILITY 17
2.50
Vanna
2.00 BS Vanna
Vanna
1.50
1.00
Vanna
0.50
0.00
-‐0.50
-‐1.00
-‐1.50
0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 2.1 2.3 2.5
Strike
Figure 12. The Black vanna and the local volatility vanna computed
from parallel shifts of the surface, for six month expiries
2.50
Vomma
2.00
BS Vomma
Vomma
1.50
Vomma
1.00
0.50
0.00
0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 2.1 2.3 2.5
Strike
Figure 13. The Black vomma and the local volatility vomma computed
from parallel shifts of the surface, for six month expiries
References
Clark, Iain J. (2011). Foreign Exchange Option Pricing: A Practitioner’s Guide. Wiley Finance.
Duffy, D J. (2004). A Critique of the Crank Nicolson Scheme Strengths and weaknesses for Financial
18 RICHARD WHITE
Instrument Pricing.
Duffy, D J. (2006) Book
Dupire, B. (January 1994). Pricing with a Smile. Risk Magazine, Incisive Media.
Gatheral, Jim. (2006). The Volatilty Surface. Wiley Finance.
Gyöngy, I. (1986), Mimicking the One-Dimensional Marginal Distributions of Processes Having an Ito
Differential, Probability Theory and Related Fields, 71, 501-516.