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