Skip to content

Exposure Features

Overview

Exposure features summarize the distribution and structure of option risk across an entire option chain snapshot. They operate on per-option Greeks and return a single-row, chain-level feature vector.

They answer questions such as:

  • How large is total gamma or vega exposure?
  • Where is exposure concentrated across delta space?
  • Is exposure skewed toward calls or puts?
  • How asymmetric is the exposure profile?

Input Requirements

Exposure features require a DataFrame produced by the per-option Greeks API with the following columns:

Required columns: - delta - gamma - vega - theta - charm - vanna - vomma - contract_size

Each row represents a single option contract.


API Entry Point

from ocf.greeks.api import exposure_features
exposure_features(
    greeks_df: polars.DataFrame,
    *,
    atm_tau: float = 0.15,
    slope_window: float = 0.25,
) -> polars.DataFrame

Returns a single-row Polars DataFrame containing all exposure features.


Feature Groups

Exposure features are composed of four logical groups.


1. Global Exposures

Total chain-level exposure for each Greek:

Feature Description
delta_exposure_total Total delta exposure
gamma_exposure_total Total gamma exposure
vega_exposure_total Total vega exposure
theta_exposure_total Total theta exposure
charm_exposure_total Total charm exposure
vanna_exposure_total Total vanna exposure
vomma_exposure_total Total vomma exposure

Each exposure is computed as:

Σ (Greek × contract_size)

2. Exposure Moments Across Delta

Distributional statistics of exposure along delta space.

For each Greek (except delta itself):

Feature Description
{greek}_mean_delta Exposure-weighted mean delta
{greek}_std_delta Exposure-weighted dispersion
{greek}_skew_delta Asymmetry of exposure distribution

These describe where exposure is concentrated, not just how large it is.


3. ATM Concentration

Fraction of total exposure concentrated near-the-money.

|delta| < atm_tau

Default:

atm_tau = 0.15

Generated features:

  • {greek}_atm_frac

Interpretation:

  • Values near 1.0 → exposure tightly clustered near ATM
  • Values near 0.0 → exposure mostly in wings

Why atm_tau = 0.15?

This defines a near-ATM delta band that is symmetric for calls and puts, excludes deep ITM / OTM contracts, and produces stable, comparable features across assets. This value is configurable.


4. Exposure Slope Across Delta

Measures directional imbalance of exposure across the option chain.

Delta regions:

Left tail:  delta < -slope_window
Right tail: delta >  slope_window

Default:

slope_window = 0.25

Generated features:

  • {greek}_slope

Positive slope:

  • More exposure on call side

Negative slope:

  • More exposure on put side

Why These Parameters Are Explicit

The parameters atm_tau and slope_window are feature-definition parameters, not global configuration, and are fully exposed to the user.

Users may override them explicitly:

exposure_features(
    greeks_df,
    atm_tau=0.10,
    slope_window=0.30,
)

Output Characteristics

  • Exactly one row
  • Fully numeric
  • No NaNs introduced unless input exposure is zero
  • Deterministic given identical inputs