Skip to content

Smile-aware Greek conventions: sticky='strike' / sticky='delta' on VolSurface Greeks #35

Description

@marwinsteiner

Split out of #11, whose proposal listed smile-aware Greeks as an option
(sticky="strike" vs sticky="delta"); the shipped v0.9.0 layer took
the documented minimum -- sticky-strike only -- and #11 closes with the
v0.9.0 release, so the option gets its own issue here.

Context

These are smile-dynamics conventions, not calibration objectives: they
change what delta/gamma/theta MEAN, not how the surface is fitted, so
the work lands in the VolSurface Greeks layer, untouched by the
calibration controls.

Background: Derman's regimes of volatility

The taxonomy comes from Derman (1999), who observed that S&P 500
implied vols move with the index according to (at least) three distinct
rules, each appropriate to a market regime, each implying a different
hedge ratio. With a negatively sloped skew sigma(K) ~ sigma0 - b*K:

regime rule of thumb when consequence
sticky strike sigma(K) fixed as S moves range-bound, trendless Black-Scholes delta is the right hedge; ATM vol drifts down as S rises (the ATM strike slides along the fixed skew)
sticky delta / moneyness sigma(K/S) fixed -- the smile floats with spot stable trending market ATM vol constant in S; call delta > sticky-strike delta by the smile-slope (vega) correction
sticky implied tree (local vol) the local-vol surface fixed; per-strike vols fall as S rises jumpy, fearful, post-crash ATM vol falls at ~twice the skew slope; delta < sticky-strike delta

Three consequences for this issue:

  1. The convention is a per-call choice, not a surface property.
    Which rule is the right hedge ratio is an empirical, regime-dependent
    question -- exactly why 'sticky=' belongs on the Greek calls rather
    than baked into the fit.
  2. The taxonomy is three-valued, not two. The implied-tree /
    local-vol regime is deliberately OUT OF SCOPE here: a proper
    local-vol delta needs the Dupire surface, i.e. dw/dT everywhere
    (available since interp_method="monotone_cubic", Differentiability contract and C1 maturity interpolation #22) plus a
    local-vol layer that does not exist yet (filed as Dupire local volatility layer: surface.local_vol on C1 surfaces #36). The 'sticky=' parameter
    should be designed so 'local_vol' can be added later without
    breaking the API; the docs table should present all three regimes
    and say explicitly which two are implemented.
  3. Derman's rules give free test oracles. With a negative skew the
    deltas must order as local-vol < sticky-strike < sticky-delta, and
    under sticky-delta the ATM vol must be invariant to a spot bump that
    drags the smile in moneyness. Both are cheap, regime-grounded
    assertions to add alongside the finite-difference checks.
  • Sticky strike (current behaviour): differentiate holding sigma(K)
    fixed -- the vol at a given strike stays put as the forward moves.
  • Sticky delta / sticky moneyness: sigma is held fixed per
    moneyness (or delta) level, so a spot move drags the smile along.
    Delta picks up the smile-slope correction
    delta_sd = delta_ss + vega * dsigma/dK * dK/dF-type terms
    (equivalently: differentiate through sigma(k) with k = ln(K/F)
    fixed); gamma and theta adjust correspondingly. The surface already
    exposes everything needed: dw_dk gives dsigma/dk analytically for
    the SVI family.

Proposal

surface.delta(K, T, cp="call", sticky="strike")   # default, unchanged
surface.delta(K, T, cp="call", sticky="delta")
surface.gamma(K, T, sticky=...)
surface.theta(K, T, cp="call", sticky=...)
  • sticky="strike" remains the default -- existing behaviour and
    serialized surfaces are untouched.
  • sticky="delta" computes the smile-slope-corrected Greeks from the
    model's analytic dw/dk (finite-difference fallback for SABR /
    DirectSVI, as elsewhere).
  • price and vega are convention-independent and take no parameter.
  • Document the two conventions side by side, with the standard guidance
    on when each is the right hedge ratio (index vs FX-style smiles).

Acceptance criteria

  • Sticky-delta Greeks verified against finite differences of the price
    under the corresponding smile shift (bump F, move the smile in k)
  • sticky="strike" bitwise-identical to today's output
  • Sticky-delta call delta exceeds sticky-strike delta on a
    negative-skew fixture (Derman's regime ordering)
  • Both conventions demonstrated in the examples and documented on the
    surface page (per the maintenance policy), with the three-regime
    table and the regime guidance on when each is the right hedge ratio

Reference

Derman, E. (1999). "Regimes of Volatility: Some Observations on the
Variation of S&P 500 Implied Volatilities." Goldman Sachs Quantitative
Strategies Research Notes (also summarized in Risk, April 1999).
Author's page: https://emanuelderman.com/regimes-of-volatility-risk-april-1999/
(the GS QSRN series, this note included, is collected at
https://github.com/s0ap/gs-quantitative-strategies-research-notes).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions