The screener models every symbol as a nested tree:
Stock (1 per symbol)
└─ Expiry aggregates (many per symbol)
└─ Strike aggregates (many per expiry)
└─ Contracts (2 per strike: C and P)
Reference fields at the level you care about using a dotted prefix in your filter: field, expiries.field, strikes.field, contracts.field. Filters at lower levels cascade inside an AND group.
| Field | Type | Tier | Description |
symbol | string | Growth | Underlying ticker (e.g. SPY) |
price | number | Growth | Current underlying last trade |
bid | number | Growth | National best bid |
ask | number | Growth | National best ask |
mid | number | Growth | (bid + ask) / 2 |
market_open | bool | Growth | True when the cash session is open |
| Field | Type | Tier | Description |
gamma_flip | number | Growth | Strike where net GEX crosses zero — the gamma flip point |
call_wall | number | Growth | Strike with highest positive call GEX — the call wall (resistance) |
put_wall | number | Growth | Strike with most negative put GEX — the put wall (support) |
max_positive_gamma | number | Growth | Strike holding the largest positive GEX bucket |
max_negative_gamma | number | Growth | Strike holding the largest negative GEX bucket |
highest_oi_strike | number | Growth | Strike with most combined OI — see highest OI strike |
max_pain | number | Growth | Strike minimizing total option payouts at expiry — see max pain |
zero_dte_magnet | number | Growth | 0DTE pin candidate strike — see 0DTE magnet |
| Field | Type | Tier | Description |
zero_dte_net_gex | number | Growth | Net GEX concentrated in 0DTE expirations |
zero_dte_pct_of_total | number | Growth | 0DTE GEX as a fraction of total GEX |
| Field | Type | Tier | Description |
vrp_5d, vrp_10d, vrp_20d, vrp_30d | number | Growth | IV minus RV over the matching window — see VRP and IV-RV spread |
vrp_assessment | string | Growth | VRP classification: very_high_premium, healthy_premium, moderate_premium, thin_premium, negative_spread, danger_zone, unknown |
| Field | Type | Tier | Description |
variance_risk_premium | number | Alpha | Variance-space VRP — see variance swap |
convexity_premium | number | Alpha | Convexity premium — wing richness vs ATM |
vrp_z_score | number | Alpha | VRP z-score vs rolling 252-day history |
vrp_percentile | integer | Alpha | VRP percentile 0-100 |
vrp_regime | string | Alpha | VRP regime: harvestable, toxic_short_vol, cheap_convexity, event_only, surface_distorted |
| Field | Type | Tier | Description |
put_wing_iv_25d | number | Alpha | 25-delta put IV — see skew |
call_wing_iv_25d | number | Alpha | 25-delta call IV — see skew |
downside_rv_20d | number | Alpha | Downside semi-deviation (20d) — see realized volatility |
upside_rv_20d | number | Alpha | Upside semi-deviation (20d) — see realized volatility |
downside_vrp | number | Alpha | Put-wing IV minus downside RV — see directional VRP |
upside_vrp | number | Alpha | Call-wing IV minus upside RV — see directional VRP |
| Field | Type | Tier | Description |
skew_25d, skew_25d_put, skew_25d_call | number | Growth | 25-delta skew (vol points) |
term_near_slope_pct, term_far_slope_pct | number | Growth | IV term structure slopes (%) |
term_state | string | Growth | Term structure state: contango, backwardation, mixed, unknown |
atm_spread_pct, wing_spread_pct | number | Growth | Bid-ask spread as % of mid (ATM / wings) — see liquidity |
atm_contracts, wing_contracts | integer | Growth | Number of quotes with non-zero liquidity |
top_3_pct, top_5_pct, herfindahl | number | Growth | OI concentration metrics |
total_call_oi, total_put_oi | integer | Growth | Chain-wide OI totals |
total_call_volume, total_put_volume | integer | Growth | Chain-wide session volume |
pc_ratio_oi, pc_ratio_volume | number | Growth | Put/Call ratios (OI and volume) |
iv_dispersion_cross_expiry, iv_dispersion_cross_strike | number | Growth | IV dispersion across the surface |
gex_0to7_dte, gex_8to30_dte, gex_31to60_dte, gex_61plus_dte | number | Growth | GEX bucketed by DTE |
Use as context filters (e.g. “only when VIX > 20”). Every symbol carries these same values.
| Field | Description |
vix | CBOE VIX |
vvix | Vol of VIX |
skew | CBOE SKEW index — see skew |
spx | S&P 500 level |
move | MOVE index (bond vol) |
vix_3m | 3-month VIX — see VIX term structure |
vix_term_slope | VIX term structure slope |
dgs10 | 10-year Treasury yield |
fed_funds | Fed funds rate |
hy_spread | High-yield credit spread |
One row per listed expiration. Filters cascade inside AND groups — non-matching expiries are trimmed from the symbol.
| Field | Description |
expiries.days_to_expiry | DTE (0 = today) |
expiries.atm_iv | ATM implied volatility for this expiry |
expiries.put_25d_iv, expiries.call_25d_iv | Wing IVs at 25-delta — see skew |
expiries.skew_25d | 25d skew for this expiry |
expiries.smile_ratio | Wing-to-ATM IV ratio — see smile ratio |
expiries.forward | Forward price implied by this expiry |
expiries.basis_pct | Forward basis (%) — see futures basis |
expiries.fair_vol | Model-fair vol at this expiry from SVI fit |
expiries.call_oi, expiries.put_oi | OI by side |
expiries.call_volume, expiries.put_volume | Session volume by side |
expiries.net_gex, expiries.net_dex, expiries.net_vex, expiries.net_chex | Exposure at this expiry — GEX, DEX, VEX, CHEX |
expiries.iv, expiries.rv, expiries.vrp | Per-expiry IV, RV, and their VRP spread |
| Field | Description |
strikes.strike | Strike price |
strikes.call_gex, strikes.put_gex, strikes.net_gex | Gamma exposure at strike |
strikes.call_dex, strikes.put_dex, strikes.net_dex | Delta exposure at strike |
strikes.call_vex, strikes.put_vex, strikes.net_vex | Vanna exposure at strike |
strikes.call_chex, strikes.put_chex, strikes.net_chex | Charm exposure at strike |
strikes.call_oi, strikes.put_oi | OI by side at strike |
strikes.call_volume, strikes.put_volume | Session volume by side at strike |
Individual call/put contracts (2 per strike). Cascading filters here are how you pull “only the ATM 30-delta calls expiring this Friday” in a single query.
| Field | Type | Description |
contracts.type | string | "C" or "P" |
contracts.expiry | string | Expiry date (from parent) |
contracts.strike | number | Strike (from parent) |
contracts.dte | number | Days to expiry (from parent) |
contracts.bid, contracts.ask, contracts.mid | number | Quote |
contracts.iv | number | Implied volatility (decimal) |
contracts.delta, contracts.gamma, contracts.theta, contracts.vega | number | First-order Greeks: delta, gamma, theta, vega |
contracts.oi | integer | Open interest |
contracts.volume | integer | Daily volume |
These fields are silently omitted from Growth responses but throw validation_error when used in a filter or sort:
harvest_score, dealer_flow_risk, vrp_regime, variance_risk_premium, convexity_premium, vrp_z_score, vrp_percentile, put_wing_iv_25d, call_wing_iv_25d, downside_rv_20d, upside_rv_20d, downside_vrp, upside_vrp, short_put_spread_score, short_strangle_score, iron_condor_score, calendar_spread_score.
Unlock Alpha-only fields
Growth gives you every stock-level, expiry, strike, and contract field across a 20-symbol universe. Alpha unlocks the strategy scores (harvest_score, dealer_flow_risk, iron_condor_score, …), extended VRP fields, formulas, and ~250 symbols.