Skip to content

Implied Volatility Skew & Smile Features

Overview

The Skew & Smile feature block extracts cross-sectional shape information from implied volatility surfaces expressed in moneyness space. It operates on daily canonical underlying data containing implied volatility smiles at fixed tenors (e.g. 30D, 60D), and summarizes:

  • ATM implied volatility
  • Put and call wing skew
  • Risk reversals and butterflies
  • Smile slope and curvature

No option-level data, delta surfaces, or pricing models are required.


Required Input Columns

This block requires moneyness-based implied volatility columns using the following naming convention:

iv_<TENOR>_m<MONEYNESS>

Where: - <TENOR> is in calendar days (e.g. 30, 60) - <MONEYNESS> is expressed as a percentage of spot

Example Required Columns

For a 30-day surface: - iv_30_m90 → 90% moneyness IV - iv_30_m95 - iv_30_m100 - iv_30_m105 - iv_30_m110

For a 60-day surface: - iv_60_m90 - iv_60_m95 - iv_60_m100 - iv_60_m105 - iv_60_m110

At least three moneyness points per tenor are required to compute smile geometry.


Moneyness Interpretation

Moneyness is defined as:

Moneyness = K/S

Where: - K is the strike - S is the spot price

  • Moneyness < 1.0 → put wing
  • Moneyness = 1.0 → ATM
  • Moneyness > 1.0 → call wing

Produced Feature Columns

All features are computed per tenor (currently 30D and 60D).


ATM Implied Volatility

Feature Description
iv_<tenor>_atm Implied volatility closest to ATM (moneyness ≈ 1.0)

Wing Skew

Feature Description
iv_<tenor>_put_skew Mean put-wing IV − ATM IV
iv_<tenor>_call_skew Mean call-wing IV − ATM IV

These measure asymmetry of implied volatility around ATM.


Risk Reversal & Butterfly

Feature Description
iv_<tenor>_rr Call-wing IV − Put-wing IV
iv_<tenor>_bf Butterfly: ½(call + put) − ATM

Interpretation: - Risk reversal captures directional skew - Butterfly captures smile convexity around ATM


Smile Geometry

Feature Description
iv_<tenor>_smile_slope Linear slope of IV vs moneyness
iv_<tenor>_smile_curvature Quadratic curvature of IV vs moneyness

These are estimated via polynomial fits:

  • Slope: first-order fit
  • Curvature: second-order coefficient

They provide a model-free geometric summary of the smile.


Masking Rules

For a given tenor, all features are null if fewer than three valid moneyness IVs are available. Individual components (RR, BF) are masked if either wing is missing. This ensures stability and avoids extrapolation.


How to Call This Feature Block

from ocf.features.api import skew_smile_features

features = skew_smile_features(
    underlying_daily,
)

This validates the canonical schema and ensures stable outputs.


Direct Builder Access (Advanced)

from ocf.features.skew_smile import build_skew_smile_features

features = build_skew_smile_features(
    underlying_daily,
)

This assumes inputs are already canonical.


As Part of the Composite Feature Set

from ocf.features.api import underlying_features

features = underlying_features(
    underlying_daily,
    include=["skew_smile"],
)

Or combined with other volatility features:

features = underlying_features(
    underlying_daily,
    include=["iv", "skew_smile", "term_structure"],
)

Notes

  • Features are computed independently per day
  • No interpolation or smoothing is applied
  • Smile geometry is purely cross-sectional