Opengamma Local Vol - 005
Opengamma Local Vol - 005
Opengamma Local Vol - 005
The first condition for an interpolated volatility surface is that it matches exactly the (liquid)
market option prices5 . To obtain a continuous local volatility surface, the implied volatility sur-
face should be at least C 1 (once differentiable) in the T direction and C 2 in the strike/moneyness
direction, and in general a (CTn , CK m
) implied volatility surface, will produce a (CTn−1 , CK
m−2
)
local volatility surface.
∂ σ̂imp
The condition to avoid calendar arbitrage is σ̂imp 2
+ 2σ̂imp T ∂T ≥ 0. Defining integrated
2
implied variance as ν̂imp (T, x) = T σ̂imp (T, x), the condition can be rewritten as
∂ ν̂imp
≥0 (19)
∂T
In the strike direction, the arbitrage condition is more complex, but can be satisfied by using
a smile model that does not admit arbitrage.
To make the discussion concrete we consider FX options with ten expiries from 1 week to 10
years, and 5 strikes per expiry (with deltas of 0.25, 0.35, 0.5, 0.75 and 0.85). Since these data are
dense on an expiry/strike grid, we can fit a separate smile model at each expiry, then interpolate
in the time direction between these fitted smiles.
We choose to use the SABR model6 , which has four parameters. As such it is not possible to
guarantee an exact fit to all five option strikes. Since the CEV parameter, β, and the correlation,
ρ, have similar effects on the smile, they tend to play off against each other when fitting the
parameters, and it is common practice to fix β and fit for the other three parameters. We choose
β by running a least-squares fit between model- and 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
f (x) = w fi (x) + 1 − w fi+1 (x) (20)
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;
( )
′ 1 ′ xi+1 − x
f (x) = w [−fi (x) + fi+1 (x)]
∆xi ∆xi (21)
+wfi′ (x) + (1 − w)fi+1 ′
(x)
( )
′′ 1 ′′ xi+1 − x
f (x) = w [fi (x) − fi+1 (x)]
∆x2i ∆xi
( )
2 ′ xi+1 − x [ ′ ′
] (22)
− w fi (x) − fi+1 (x)
∆xi ∆xi
+wfi′′ (x) + (1 − w)fi+1
′′
(x)
5 It is not strictly interpolation if this is not met, however there are situations where a little mispricing is