Skip to main content
Version: 8.4.08.4

Live Volatility Surfaces

SpiderRock Connect operates servers that continually compute implied volatility surfaces for all option expiration months with live market quotes. These surfaces reflect a SpiderRock best fit of current markets and are subject to change if or when market conditions change.

SpiderRock Connect's live surface records are broadcasted through the system. They can be directly accessed via our Live SQL API (SRSE), through MLink (our WebSocket and REST API), and viewed using SpiderRock Connect's GUI tools. They are also broadcasted on our SpiderStream multicast channels. These live surface records are used in our execution engines (we accept relative-to-surface parent order limits), in our risk servers (greeks, including hedge deltas, and surface marks are key components), in our pricing models, and in many of our analytic data products.

The purpose of this document is to provide an overview of SpiderRock volatility surfaces and to describe how they are recorded.

SpiderRock Connect Surface Modeling

In SpiderRock Connect, the live volatility surfaces are cubic spline curves that describe arbitrage-free best fit surfaces for option expirations. The records backing each SpiderRock surface represent a two-dimensional curve with strikes in the X-axis expressed in terms of moneyness (i.e. standardized lognormal or normal) and option volatilities in the Y-axis expressed as a multiple of ATM volatility.

There are two records used to store the surface parameters at any given instant: msgLiveSurfaceCurve and msgLiveAtmVol, which we will refer to as the “curve” and “ATM” records respectively. Each curve record contains the spline parameters for the shape of a surface, and each ATM record contains the live calibrated ATM volatility, sdiv rate, underlying price ratio, and a limited set of live market parameters. For any given expiration, the combination of curve and ATM records contains market and spline inputs for that expiration’s vol surface.

Individual curves can be either concave, convex (most equity curves are convex), or mixed. Typically, they are constrained to be relatively smooth and to fit within the bid-ask channel, rather than to fit the midpoints of each bid-ask pair.

Calibration

The constrained spline calibration process is moderately expensive in terms of computational resources, and as a result the fitting process is split into two steps, corresponding to the two records. The first step computes the curve shape in the form of a cubic spline and stores it as a curve record (moderately slow: taking approximately 45 seconds to process all equity and futures expirations), and the second step adjusts the most recently calculated spline curve to match the ATM volatility in current live markets (very fast: updating 2-10 times per second), storing the final result as an adjust record. Some symbols, such as the equity index options, are processed in a higher priority loop, and the curve fits can take fewer than 10 seconds between updates.

In addition to the constraints used in the fitting, the process retains a memory of option price data so that each option market can be adjusted to account for sudden changes in bids and offers as the underlying moves across price thresholds or if the market suddenly widens or tightens.

Note that for symbols with insufficient strike density or relatively poor market quotes (e.g. wide bid-asks), the curve fitting process may also leverage information from nearby expirations as well as from prior market history to generate the splines. For high-quality, denser markets the process typically will only use live market data.

Our objective in designing surface fitting techniques is to have the most accurate possible view of what the market will look like in the near-term future (about 10 minutes). Most of the time, but not always, the best view of the shape of market volatility in the future is what it is like right now. For most expirations, our surfaces will fit entirely within the market bid-ask channel for all publicly traded strikes.

SpiderRock Connect's surface modeling techniques have sufficient degrees of freedom to fit any plausible (and most non-plausible) live markets. However, we do impose some constraints (convexity, smoothness, bid-ask weightings, etc.) which can generate curves that lie outside the bid-ask for one or more strikes. In practice, when this happens, sometimes we are right (the market looks more like our surface in the near-term future), and sometimes we are wrong (the market does not revert to match our surface). Nonetheless, our goal is to design surface fitting techniques to be as accurate as possible in this regard.

Moneyness

Moneyness is a relationship between the underlying price and the strike price of an option. When the underlying price (or more specifically, the forward price) is the same as an option’s strike, that option is said to be “at-the-money”. When the underlying price is either above or below the strike, the option is said to be “in-the-money” or “out-of-the-money”, depending on whether the option payout would be positive or zero at the underlying price level. An option strike is also said to be downside if the strike is below the forward value of the underlying and upside if the strike is above the forward value.

A moneyness function is any increasing function in strike for a given underlying price. Such a function can be useful as a tool to compare relative positions between strikes of different expirations.

To simplify notation when representing formulae, this document will use the following shorthand symbols:

  • uPrc - underlying price
  • fUPrc - forward underlying price (the axisFUPrc field in the curve record)
  • K - option strike
  • T - time to expiration (see the option pricing technical note for an explanation of “volatility time” in years)
  • 𝜎𝐴𝑇𝑀 - at-the-money volatility for the option (the atmVol field from the adjust record)
  • r - average rate to expiration (the risk-free discount rate)
  • ddiv - cumulative expected discrete dividend payments to expiration

Each SpiderRock surface uses one of three possible moneyness functions to model the X-axis: LogStd, NormStd, and PctStd.

SpiderRock Surface Moneyness Type

The type of moneyness in place for each instrument is defined under the moneynessType column in the srLive.msgRootDefinition table and is also recorded in the srAnalytics.msgLiveSurfaceCurve record.

The value of fUPrc used in the calculation of moneyness is stored in the live surface record under the field axisFUPrc. For options on equities and some other products, the expected forward price is stored:

fUPrc=uPrc×erTddivfUPrc = uPrc \times e^{rT} - ddiv

It is important to note that this “forward” is an estimated proxy for the theoretical forward used in SpiderRock Connect's option pricing models. As mentioned above, there is a curve-fitting loop and an atmVol loop running in the surface fitting algorithm. The estimated forward is defined while fitting and establishing the shape of the volatility curve backbone. To avoid circular dependencies in our algorithm, the resulting shape in terms of moneyness and vol multiples is held fixed - ignoring changes in moneyness as the underlying moves - while updating the atmVol and calibrating the theoretical forward. As a result, when sdiv is significantly different from zero, there may be a difference between SpiderRock's atmVol and the volatility at the actual theoretical forward strike:

Theoreticalforward(uPrcpresentValueofDividends)×e(ratesdiv)TTheoretical forward \cong (uPrc - presentValueofDividends) \times e^{(rate-sdiv)T}

For options on futures, the underlying futures price is stored:

fUPrc=uPrcfUPrc = uPrc

The volatility used in the calculation of moneyness is always the ATM volatility value which was calculated when the curve shape was most recently fit to the market (𝜎𝐴𝑇𝑀 = atmVol in the liveSurfaceCurve record).

Most equity and futures products use the LogStd definition. Options on SOFR futures and other short-term interest rate products use the NormStd definition.

In a typical Black-Scholes framework, volatility can be interpreted in percent terms of the underlying price. An approximation for a single standard-deviation movement in the underlying is given by multiplying the (time-scaled) volatility by the underlying price:

SD=fUPrc×σATMTSD = fUPrc \times σ_{ATM}\sqrt{T}

To express a strike in terms of standard deviation, divide the difference between the strike and the underlying price by a single standard deviation:

KfUPrcfUPrc×σATMT=(KfUPrc1)/(σATMT)\frac{K-fUPrc}{fUPrc\times σ_{ATM}\sqrt{T}} = (\frac{K}{fUPrc} - 1)/(σ_{ATM}\sqrt{T})

    Note: In above two above equivalence, the expression on the left naturally extends from the definition of measuring the distance in terms of a single SD move, and the expression on the right reformulates the calculation in terms of percent distance from the underlying price.

Standardized Moneyness (LogStd)

Standardized moneyness is similar in many respects to a standard deviation measure. The difference is essentially in how the relative distance between the strike and the underlying is calculated. A simple percent-rate calculation comes from the ratio between the strike and the underlying price, whereas a continuous-rate calculation comes from the natural logarithm of the strike to underlying ratio:

lnKfUPrcσATMT\frac{ln\frac{K}{fUPrc}}{σ_{ATM}\sqrt{T}}

One distinction between standard deviation and standardized moneyness is that the standard deviation maintains symmetry between strikes of equal distance to either side of fUPrc, whereas the standardized moneyness is asymmetric. For a given underlying forward, the ratio K/fUPrc is a linear transformation of strike. On the other hand, the expression ln(K/fUPrc) is a non-linear transformation of strike, so the strikes representing a single SD up-and-down move are not equidistant to fUPrc.

Normal Moneyness (NormSTD)

Normal moneyness is measured by taking the point difference between the strike and underlying price, and dividing by the ATM volatility times the square root of time-to-expiration:

KfUPrcσATMT\frac{K - fUPrc}{σ_{ATM}\sqrt{T}}

Note that the normal volatility differs from the more familiar Black-Scholes volatility, in that the units are interpreted in point terms instead of as a percentage of the underlying price level. Thus, a single standard deviation in the underlying is:

SD=σATMTSD = σ_{ATM}\sqrt{T}

With this understanding, Normal moneyness can be interpreted as a standard deviation type of moneyness, as measured by the ATM volatility of a Normal pricing model.

ATM Volatility Multiplies

As previously mentioned, all SpiderRock surface curve points are recorded in terms of ATM volatility multiples:

Vol Multiple=Strike VolATM Vol=σKσATMVol \space Multiple = \frac{Strike \space Vol}{ATM \space Vol} = \frac{σ_{K}}{σ_{ATM}}

When volatilities are encoded as volatility multiples, they can be recovered by solving for strike volatility:

Strike Vol=σATM×Vol MultipleStrike \space Vol = σ_{ATM} \times Vol \space Multiple

Live Surface Records

SpiderRock Connect fits most option market volatilities using a two-step process. The first step is to fit the shape of the volatility surface to current market prices. As market prices and ATM volatility move, the fitted “shape” or skew is then updated to match the live market by aligning the fitted curve shape to the underlying price and ATM volatility in real time. Note that since the curves are modeled in moneyness and percent volatility, the second step simply amounts to updating the ATM volatility and the forward underlying price.

The results and intermediate calculations from the fitting process are stored in the SRSE/SRAnalytics tables msgLiveSurfaceCurve and msgLiveAtmVol.

Curve Records (msgLiveSurfaceCurve)

Within the surface curve record, the X-axis points are specified by the fields minXAxis, maxXAxis, knotShift, moneynessType, and gridType, and the Y-axis points are defined by 29 “skew” coefficients (skewC00, …, skewC28) along with atmVol. The spline points are partitioned in moneyness by a grid on the X-axis intended to cover a range of strikes actively trading in the market. The relative spacing of points across the X-axis is specified by the gridType field (currently set to “SRCubic”), which is generally defined as a fixed grid with a higher resolution of points near the grid center and fewer points on the wings.

At the time of this writing, the moneyness grid is defined using the following 29 points:

[-25, -14, -11, -8.5, -6.5, -5, -3.75, -2.75, -2, -1.5, -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1, 1.5, 2, 2.75, 3.75, 5, 6.5, 8.5, 11, 14, 25]

The above grid is often shifted by the addition of a constant knotShift value, which is added to the grid points prior to constructing the curve. Typically, the knotShift aligns the center of the grid at the minimum vol point of the surface, allowing the more closely spaced grid points to cover the region of the surface corresponding to higher curvature and variation in volatility.

The curve records are computed in sub-minute intervals using live market data (where possible). In a fraction of cases where the market data is insufficient, either an interpolation taken from nearby markets, or a default market-average curve shape may be used. The shape of each skew curve is constrained to be smooth, sometimes convex or concave, and spans the range of strikes with viable public bids and asks (the span range). Within this range, skew curves are evaluated using spline interpolation between the stored curve points. Outside this range, the skew is defined by the outer-most span range endpoint values minXAxis and maxXAxis, extending wings to the left and right and gradually decaying to a flat volatility.

Curve records with surfaceType = “Live” are generated by a constrained fitting process. Skew records generally depend on the strikes from the expiration in question. If there are an insufficient number of strikes with reasonable markets, then a default Skew record will exist, with a default curve shape drawn from historical market data.

Curve records with surfaceType = ”Close” are recorded one minute prior to market close.

Curve records with surfaceType = “PrevDay” are equivalent to the prior day “Close” records.

Additional surface adjustments are stored in 14 implied vol adjust columns (ivAdjD07, …, ivAdjU07) and in 8 call-put adjustment columns (cpAdjD04, …, cpAdjU04). The implied vol adjustments represent micro-adjustments to the curve shape, and they interpreted as piecewise-linear interpolated increments added to the surface volatility after interpolating the original spline parameters from the curve record. The call-put adjustment columns represent additions or subtractions to the sdiv rate across strikes. Both sets of adjustment coefficients (cpAdj and ivAdj) are implemented on a grid which is spaced at uniform intervals of 0.5 moneyness points around the center (e.g. D06 and U03 refer to the -3.0 and 1.5 moneyness points respectively).

    Note that when the call-put alignment is performed via an underlying price adjustment, the adjustment will be uniform across all strikes. For some symbols where the dividend payout may change or otherwise depend in some way on the price level, an sdiv curve adjustment may be in place

ATM Volatility Records (msgLiveAtmVol)

After a curve record is created, our live surface servers will continually re-fit this record to the live implied volatility markets. This is done by modifying the atmVol along with other information used to adjust the level and shape of the spline parameters from the curve record. The resulting adjust record is then published (and re-published regularly) as the live implied volatility markets move. The adjust records are updated roughly 2 to 10 times per second.

In addition to calibrating the atmVol, we align the forward at the same time. The sdiv and sdivEMA columns contain the adjustment to the risk-free rate which results in the appropriate carry rate (carry = rate - sdiv, typically calibrated for equities). The uPrcRatio and uPrcRatioEMA columns contain as offset to the underlying price which results in the forward price (calibrated for futures contracts and for index options expiring in less than 2 days).

The process of producing a live ATM value also results in min and max ATM volatility values for each expiration. The min is the value touching the best bid in the near-ATM market, and the max value is the ATM value touching the best ask in the near-ATM market. Similarly, min and max sdiv rates (or uPrcRatio values) are also computed, corresponding to the best and worst conversion / reversal values for the near-ATM strikes, and the values are stored under the columns minCPAdjVal and maxCPAdjVal.

Re-sampled Curve Coefficient Record (msgLiveSurfaceATM)

The moneyness grid used to re-sample the curve for the msgLiveSurfaceATM record is defined at the following 23 points:

[-25.0, -14.0, -8.0, -5.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0, +0.5, +1.0, +1.5, +2.0, +2.5, +3.0, +3.5, +5.0, +8.0, +14.0, +25.0]

This table may be of use for clients who wish to calculate their own metrics on the surface shape (skew, curvature, etc.) without requiring a full interpolation process of the curve coefficients.

sdiv Rate Calibration

When updating the ATM volatility and forward underlying price, SpiderRock Connect calibrates ATM call and put implied volatilities by adjusting the sdiv pricing parameter to minimize any misalignment between call and put volatilities. The calibration typically covers the near-ATM markets and results in a single sdiv value.

In some cases, the sdiv calibration is extended to cover a broader range of strikes, by constructing an sdiv curve to account for any call and put implied mismatch away from the ATM markets. When this happens, an sdiv spline curve is fit on a grid of 9 moneyness points, ranging uniformly from -2 to 2 and stored as rate offsets to sdiv under the fields cpAdjD4, cpAdjD3, cpAdjD2, cpAdjD1, cpAdjU1, cpAdjU2, cpAdjU3, and cpAdjU4. Note that the center point of the spline corresponds to the stored sdiv value when a curve fit is in place. However, in most cases the sdiv curve will be flat, and all offset values will be set to 0, defaulting to a constant sdiv value across all strikes.

The sdiv value is accumulated in an exponential moving average each time it is calibrated, and the result is stored in the sdivEMA column. SpiderRock Connect uses the sdivEMA value in its pricing models and related calculations.

For more information on the sdiv calibration process, please refer to the Option Pricing Technical Note.

Market Parameters

Further information regarding SpiderRock's market parameters (years, rate, sdiv, ddiv) can be found in the Option Pricing Technical Note.

CPAdjVal Columns

Generally, only one calibration approach is taken to align the call and put volatility markets. The CP adjustment columns refer to sdiv when the continuous stock rate is used, and they refer to uPrcRatio when a price ratio approach is used.

uPrcRatio Calibration

For options on futures markets, the forward price might also need to be calibrated to align ATM market call and put volatilities. However, since the carry rate for futures contracts is zero, the sdiv rate is defined to be equal to the risk-free rate. Thus, instead of calibrating the sdiv rate, any call/put market derived adjustments to the forward price are directly applied to the underlying price by defining an underlying price ratio, which is stored under the field uPrcRatio.

This is typically needed for markets where the underlying price of the back futures contracts are either illiquid or unknown. In this case, the front futures (or other) underlying market is used as a proxy for the back contracts, and the underlying price used for option pricing is adjusted from the front contract via multiplying by the uPrcRatio so that the resulting ATM call and put implied markets are aligned.

Currently, SpiderRock Connect configures certain symbols to employ this forward price calibration logic by setting the underlierMode field to “FrontMonth” in the srlive.msgrootdefinition table. This field is also stored in the LiveSurfaceCurve record, and the value is updated to reflect any special logic applied to individual expirations.

Synthetic Spot

Further information regarding Synthetic Spot is coming soon.

ATM Strike

The atmStrike column stores the value where the call and put option price is approximately equal. The atmStrike differs from the axisFUPrc column in that it is a version of implied forward derived from the call and put markets, whereas the axisFUPrx is a proxy to define the normalized strike space for the volatility curve. The atmStrike column is provided for informational purposes instead of functional.

ATM Volatility Change

The atmFixedMove column corresponds to the 1-day change in ATM volatility, calculated as a weighted sum of changes between the volatility and the prior day vol mark at each strike, measured across a range of strikes (between -0.5 and 0.5 moneyness).

Minimum Point

The skewMinX and skewMinY columns correspond to the minimum volatility point on the volatility curve. The skewMinX value will often, but not always, correspond to the knotShift.

XAxis Range

The xMinAxis and xMaxAxis columns correspond to the valid moneyness range of the volatility surface. For moneyness values outside of the min and max xAxis values, the surface is evaluated using an exponentially decaying wing, which matches the surface shape at the xMinAxis or xMaxAxis endpoint value and gradually decays to a flat volatility.

Curve Interpolation Methods

The curve interpolation method is indicated by the gridType column in the LiveSurfaceAtm records. At the time this document was last updated, the active gridType across all tickers was “SRCubic”. Currently, SpiderRock Connect has four gridType enums which may be employed for surface interpolation. They each indicate the knot moneyness grid values to be used, along with the interpolation method and volatility dimension:

  • SRCubic = Method uses a cubic spline on volatility multiples
  • SRCubic2 = Method uses a cubic spline on variance multiples (deprecated)
  • BSpline = Method uses a quadratic B-Spline on volatility multiples (deprecated)
  • BSpline2 = Method uses a quadratic B-Spline on variance multiples (deprecated)

The SRCubic moneyness grid is given at the beginning of the document. Should the active grid/interpolation method be changed in the future, the gridType column will indicate the active approach in the live surface records, and the support desk can provide updated information on the moneyness grid.

Other Volatility Curve Metrics

Each Live surface record contains several metrics related to the shape of the curve and width of the option market.

The slope field is an estimate of curve slope as a rate of change in volatility in terms of moneyness. It is calculated by taking the difference in volatility between the curve points at moneyness -0.5 and 0.5.

The vWidth field stores the minimum of the bid-ask volatility spreads from the call and put implied markets for strikes which are in between -2 and +2 moneyness.

The pWidth field stores the minimum price width as measured across all non-trivial call and put market quotes from the NBBO.

Synthetic Variance Swap Surface Valuation

The Live SpiderRock surface records can also contain a variance swap fair value field (varSwapFV), which is calculated via numerical integration of European option prices derived from curve volatilities. These values provide a live market valuation of the variance swap at each expiration.

Surface Fit Statistics and Error Codes

Each time a curve record is generated, the following fit statistics are also computed and published with the record:

  • cCnt = number of calls with non-zero bid and ask market prices
  • pCnt = number of puts with non-zero bid and ask market prices
  • cBidMiss = number of call bids crossing the surface
  • cAskMiss = number of call asks crossing the surface
  • pBidMiss = number of put bids crossing the surface
  • pAskMiss = number of put asks crossing the surface
  • fitAvgErr = mean surface fit error (difference between surface and mid-market volatility)
  • fitAvgAbsErr = mean ABS surface fit error (absolute distance between surface and mid-market volatility)
  • fitMaxPrcErr = largest bid-ask surface violation (worst-case strike, measured in premium)
  • fitErrXX, fitErrCP = the strike of the market corresponding to the fitMaxPrcErr, and the option type at that strike (call or put).
  • fitErrBid, fitErrAsk = bid and ask of the market corresponding to the fitErrXX strike.
  • fitErrPrc, fitErrDe, fitErrVol = surface price, delta, and volatility of the market corresponding to the fitErrXX strike.

These error statistics can be used to evaluate the quality of fit for any individual surface as well as for collections of surfaces. To give an example of the effectiveness of the SpiderRock fitting methods, the value for fitMaxPrcErr is zero for most (typically 90%) of all SpiderRock surface fits. This means that for most option expirations, the SpiderRock surface lies completely within the quoted market.

ATM Volatility Term Structure

In addition to computing per-expiration LiveSurfaceCurve and LiveATMVol records, SpiderRock Connect also computes live surface fixed-term and grid records which feature volatilities on a standardized grid of years-to-expiration, calculated from the live surface volatilities of the listed expiration months.

Implied Earnings Event Model

For options on equities, where earnings events contribute a significant amount of uncertainty and price movement, the term structure of volatility can be better represented in terms of volatility with the contribution from earnings events removed. The extraction of earnings volatility takes a similar approach to the calculation of forward volatility; both are viewed in terms of total variance.

We use the following model for options with earnings events:

σ2T=σE2n+σC2Tσ^2T={σ_E}^2n+{σ_C}^2T

with

  • σ - volatility of the option
  • 𝜎𝐸 - volatility of earnings events occurring prior to expiration (eMove value)
  • 𝜎𝐶 - volatility of the option with all earnings events removed (censored volatility)
  • T - time-to-expiration for the option
  • n - number of earnings events occurring prior to expiration

This model for censored volatility includes the following assumptions:

  • All future earnings events contribute equally to variance (i.e. the eMove value is the same for each earnings event).
  • The variance components (eMove and censored volatility) accumulate in the conventional way.
  • The eMove volatility occurs instantaneously, rather than over the course of a trading day, and the event volatility is not necessarily related to the volatility immediately before and after the move.
  • The term structure of censored volatility will be smooth. In other words, earnings events are the only significant date-certain events which affect the term structure of forward volatility for an underlying.

Given a collection of expiration ATM volatilities, along with an earnings count grid and an eMove guess, we can compute a fitness value for the eMove value by computing the deviation from a smooth term curve model. This allows both eMove volatility (and to some extent, earnings count themselves) to be derived from the live implied ATM volatility values.

The resulting eMove value is stored in each live surface fixed-term record under the implied-earnings move column (iEMove) and is also copied into the curve record under the eMove column.

LiveSurfaceFixedTerm Records

Each time the live curve records for each ticker are updated, a fixed-term record is updated and added to the msgLiveSurfaceFixedTerm table. We will refer to these records as the fixed-term records. As is the case with the curve records, the surfaceType column uses “Live” to refer to the most recent calculated term structure, and “PrevDay” to refer to the end-of-day snapshot from the previous trading day.

For equity options with regular earnings announcements, we split implied volatilities into two parts according to the model above - one component corresponding to the future earnings announcements and a baseline censored component which excludes the events. Using the implied earnings event model, we calibrate an implied earnings volatility from the atm volatilities of the listed expirations. This implied earnings volatility is stored under the iEMove column in the fixed-term record.

Note that this process is not completely reliable and that implied earnings moves can have large error bars when the next earnings date is far into the future and/or public markets are wider than ideal. As such, implied earnings should be understood as best effort calculations that are more likely to be an accurate reflection of market implied earnings moves under the following conditions:

  1. Public quotes are not excessively wide.
  2. The next expected earning date is not too far away
  3. There is at least one listed expiration month that falls before the next earnings date and/or the front-contract volatility term structure is not particularly steep.

Options on futures and most equity ETF options do not use an earnings event model, and term records for these options simply reflect live ATM values for the available expirations.

For equity options, the resulting censored ATM expiration values are interpolated on a fixed-term grid (5d, 10d, 21d, 42d, 63d, 84d, 126d, 252d, and 512d) and stored in the fixed-term record. Grid points that fall before the first listed expiration are assigned the same value as the first traded expiration. Likewise, grid points that fall after the last expiration have the same value as the last expiration. The interpolated term structure from the iEMove-censored volatilities is stored under term vol columns: atmCenI_5d, atmCenI_10d, etc.

Using the same approach, censored volatilities are also interpolated using a calculation based on realized volatility from the past two years of earnings events. The realized earnings volatility is stored under the hEmove column, and the interpolated term structure from the hEMove-censored volatilities is stored under term vol columns: atmCenH_5d, atmCenH_10d, etc.

In addition to storing term structure of implied and realized censored volatilities, the fixed-term record also contains interpolated estimates of sdiv, forward price, vol width, curve slope, and earnings counts corresponding to the tenor of each volatility column. Each value is stored under a column labeled by the concatenation of the type of estimate and the term in days (e.g. slope_63d, width_504d, etc.).

For futures options, index options, and ETF options, the eMove values are set to be zero, and live ATM values are used instead of censored ATM values.

LiveSurfaceFixedGrid Records

Alongside each fixed-term surface record, an array of grid records is also updated and added to the msgLiveSurfaceFixedGrid table. The grid records contain interpolated iEMove-censored volatilities across a range of terms (each record keyed by days: 5, 10, 21, 42, 63, 84, 126, 189, 252, 504) and atmVol-implied call delta strikes (ranging in 10-delta increments), where each row contains censored volatility estimates for each tenor and delta strike.

Volatility Surface Dynamics and Hedging

When moneyness transformations are used to model volatility across strikes, the resulting curves exhibit a natural volatility dynamic, because the ATM value (i.e. the zero X-axis value) moves with the underlying price. As a result, all SpiderRock curves slide to the left and right with the underlying. In addition, the curves are constantly re-pinned to ATM values, frequently enough that our ATM curve values react to changes in market conditions almost instantaneously. This dynamic is commonly referred to as sticky delta.

However, the raw model deltas computed from the live instantaneous surfaces volatilities do not account for these surface dynamics. Some traders find it useful to incorporate a volatility dynamic relating changes in volatility to changes in the underlying price. Typically, this dynamic is expressed using an “adjusted” delta for each option at each strike, calculated from the raw model greeks:

AdjustedΔ=Δ+VegaSlope×VegaAdjusted Δ = Δ + VegaSlope \times Vega

where

VegaSlope=(Change in VolChange in uPrc)VegaSlope = (\frac{Change \space in \space Vol}{Change \space in \space uPrc})

This rate of change can be split into two parts.

VegaSlope=(Change in Strike VolChange in uPrc)+(Change in ATM VolChange in uPrc)VegaSlope = (\frac{Change \space in \space Strike \space Vol}{Change \space in \space uPrc}) + (\frac{Change \space in \space ATM \space Vol}{Change \space in \space uPrc})

The first part relates to how volatility changes at a fixed strike as the moneyness changes, or rather, as the volatility curve moves to the left and right. This is directly measurable from the shape of the curve.

The second part relates to how the ATM volatility in the market moves as the underlying price changes. This rate of change can be measured over time, often through analysis of market underlying price data and ATM volatilities or by leveraging the relation to the surface shape.

SpiderRock Connect's hedging tools and account configuration settings allow multiple kinds of hedgeDelta computation. Hedge deltas can be configured to be simple (raw deltas from surface vols), surface adjusted (using the adjusted delta approach), or hedge deltas derived from client theoretical surfaces, expressed either as simple or adjusted deltas.

For more discussion on volatility dynamics, and more specifically on how to configure client surface hedge deltas, please refer to the Client Volatility Surfaces Technical Note.