Screener & Scanner Cookbook — GEX, VRP, and 0DTE Filters for the Live Options Screener | FlashAlpha

Screener & Scanner Cookbook — GEX, VRP, and 0DTE Filters for the Live Options Screener

Twelve copy-paste screener recipes for the FlashAlpha Live Screener API. GEX regime boards, harvestable VRP short lists, 0DTE call-seller cascades, skew-rich put wings, liquidity-filtered ATM calls, formula-driven risk-adjusted rankings, and macro-conditioned regime scans — all with worked JSON, commentary, and the trader intuition behind each filter.

T
Tomasz Dobrowolski Quant Engineer
Apr 5, 2026
13 min read
OptionsScreener GEX VRP 0DTE DealerFlowRisk Cookbook FlashAlpha

The Live Screener is a grammar. Most of its value shows up the moment you stop asking “what fields exist” and start asking “what question am I trying to answer.” This cookbook is a dozen of the questions I ask most often, with the JSON that answers each one and a note about what the thresholds mean.

Recipes

  1. Negative-gamma alert board
  2. Harvestable VRP short list
  3. 0DTE call-seller setup
  4. Skew-rich put wings
  5. Liquid ATM short-dated calls
  6. Risk-adjusted ranking (formula)
  7. Macro-conditioned regime scan
  8. IV band targeting
  9. Iron-condor candidates
  10. Calendar-spread candidates
  11. Multi-sort flow board
  12. Vol scanner (high IV vs RV)

1. Negative-gamma alert board

Question: which symbols have dealers short gamma and already carrying a lot of exposure?

{
  "filters": { "op": "and", "conditions": [
    { "field": "regime",           "operator": "eq",  "value": "negative_gamma" },
    { "field": "dealer_flow_risk", "operator": "gte", "value": 50 }
  ]},
  "sort":   [{ "field": "dealer_flow_risk", "direction": "desc" }],
  "select": ["symbol","regime","dealer_flow_risk","gamma_flip","net_gex"]
}

Use this at the open to flag names that will amplify intraday moves. Raise the dealer_flow_risk threshold to 70 for a more exclusive list; drop it to 30 for a wider net.

2. Harvestable VRP short list

Question: where is it actually safe to sell premium today?

{
  "filters": { "op": "and", "conditions": [
    { "field": "regime",            "operator": "eq",  "value": "positive_gamma" },
    { "field": "vrp_regime",        "operator": "eq",  "value": "harvestable" },
    { "field": "dealer_flow_risk",  "operator": "lte", "value": 40 },
    { "field": "harvest_score",     "operator": "gte", "value": 65 }
  ]},
  "sort":   [{ "field": "harvest_score", "direction": "desc" }],
  "select": ["symbol","price","harvest_score","dealer_flow_risk","vrp_regime"]
}

All four filters are doing work: positive gamma means the vol backdrop is stable, harvestable regime means VRP is rich and realized vol is behaving, low dealer risk means the hedging flow won’t run against you, and the harvest score gives a hard floor on the composite signal.

3. 0DTE call-seller setup (cascading)

Question: for every symbol, pull just the 0DTE calls worth selling.

{
  "filters": { "op": "and", "conditions": [
    { "field": "expiries.days_to_expiry", "operator": "eq",  "value": 0 },
    { "field": "contracts.type",          "operator": "eq",  "value": "C" },
    { "field": "contracts.delta",         "operator": "gte", "value": 0.3 },
    { "field": "contracts.oi",            "operator": "gte", "value": 1000 }
  ]},
  "select": ["*"]
}

The cascading AND trims every symbol to just its 0DTE expiry, just the calls, just the 30-delta-and-higher contracts, just the ones with meaningful OI. select: ["*"] gives you the full flat object so you can inspect bid/ask and walk strikes in one pass.

4. Skew-rich put wings

Question: where is downside protection genuinely expensive vs the rest of the chain?

{
  "filters": { "op": "and", "conditions": [
    { "field": "skew_25d", "operator": "gte", "value": 4 },
    { "field": "regime",   "operator": "eq",  "value": "positive_gamma" }
  ]},
  "sort":   [{ "field": "skew_25d", "direction": "desc" }],
  "select": ["symbol","skew_25d","skew_25d_put","skew_25d_call","atm_iv"]
}

Rich put skew in a positive-gamma regime is a clean short-put setup — the skew tells you the premium is there, the regime tells you dealers are on your side.

5. Liquid ATM short-dated calls

Question: give me tradable short-dated, delta-50 calls across symbols.

{
  "filters": { "op": "and", "conditions": [
    { "field": "atm_spread_pct",          "operator": "lte", "value": 0.05 },
    { "field": "expiries.days_to_expiry", "operator": "between", "value": [1, 14] },
    { "field": "contracts.type",          "operator": "eq",  "value": "C" },
    { "field": "contracts.delta",         "operator": "between", "value": [0.45, 0.55] }
  ]},
  "select": ["*"], "limit": 20
}

The stock-level atm_spread_pct prunes names with bad microstructure, then the cascading contract filter pulls just the liquid ATM expressions.

6. Risk-adjusted ranking (formula)

Question: rank symbols by edge per unit of dealer risk.

{
  "formulas": [
    { "alias": "risk_adj", "expression": "harvest_score / (dealer_flow_risk + 1)" }
  ],
  "filters": { "field": "harvest_score", "operator": "gte", "value": 50 },
  "sort":    [{ "formula": "risk_adj", "direction": "desc" }],
  "select":  ["symbol","price","harvest_score","dealer_flow_risk","risk_adj"],
  "limit":   20
}

The +1 prevents div-by-zero. Sort by the ratio to put the highest “bang per risk” setups at the top.

7. Macro-conditioned regime scan

Question: negative-gamma names only when VIX is elevated.

{
  "filters": { "op": "and", "conditions": [
    { "field": "regime", "operator": "eq",  "value": "negative_gamma" },
    { "field": "vix",    "operator": "gte", "value": 20 }
  ]},
  "select": ["symbol","regime","atm_iv","vix"]
}

The VIX condition is the entry gate — on a calm day this returns nothing. That’s the point.

8. IV band targeting

Question: names sitting in the premium sweet spot.

{
  "filters": { "field": "atm_iv", "operator": "between", "value": [18, 28] },
  "sort":    [{ "field": "atm_iv", "direction": "asc" }],
  "select":  ["symbol","atm_iv","rv_20d","vrp_20d","term_state"]
}

Below 18 there’s no premium to sell, above 28 you’re often trading into an event. Pair with vrp_20d to check that realized is behaving.

9. Iron-condor candidates

Question: which symbols have the iron-condor score leaning your way?

{
  "filters": { "op": "and", "conditions": [
    { "field": "iron_condor_score", "operator": "gte", "value": 60 },
    { "field": "regime",            "operator": "eq",  "value": "positive_gamma" },
    { "field": "term_state",        "operator": "in",  "value": ["contango","mixed"] }
  ]},
  "sort":   [{ "field": "iron_condor_score", "direction": "desc" }],
  "select": ["symbol","iron_condor_score","regime","term_state","atm_iv","skew_25d"]
}

Pre-computed strategy scores are the killer feature — you don’t build the scoring, you just filter on it.

10. Calendar-spread candidates

{
  "filters": { "op": "and", "conditions": [
    { "field": "calendar_spread_score", "operator": "gte", "value": 60 },
    { "field": "term_state",            "operator": "eq",  "value": "contango" }
  ]},
  "sort":   [{ "field": "calendar_spread_score", "direction": "desc" }],
  "select": ["symbol","calendar_spread_score","term_state","term_near_slope_pct","term_far_slope_pct"]
}

11. Multi-sort flow board

Question: dashboard-style ranking combining two signals.

{
  "sort": [
    { "field": "dealer_flow_risk", "direction": "asc" },
    { "field": "harvest_score",    "direction": "desc" }
  ],
  "select": ["symbol","dealer_flow_risk","harvest_score","regime","atm_iv"],
  "limit":  20
}

Primary: lowest risk first. Secondary: tiebreak by highest harvest. Ideal as a morning dashboard.

12. Vol scanner (high IV vs RV)

{
  "filters": { "op": "and", "conditions": [
    { "field": "vrp_20d", "operator": "gte", "value": 5 },
    { "field": "atm_iv",  "operator": "gte", "value": 25 }
  ]},
  "sort":   [{ "field": "vrp_20d", "direction": "desc" }],
  "select": ["symbol","atm_iv","rv_20d","vrp_20d","skew_25d"]
}

Composing your own

Three rules that hold across all twelve:

  1. Start from the question, not the fields. “What trade am I hunting?” then “which fields encode that condition?”
  2. Use AND for cascading. If you’re reaching into expiries.X, strikes.X, or contracts.X, cascading AND is what lets you return only the matching children per symbol.
  3. Rank with a formula when a single field doesn’t capture the tradeoff. Risk-adjusted scores, ratios, and differences are the right shape for an ordered output.

For the full field list, see the Field Taxonomy. For the grammar reference, the Live Screener spec. For the pillar article, the Real-Time Options Screener guide.

Run these recipes on live data

All 12 recipes target the Live Screener. Growth unlocks the 20-symbol universe; Alpha unlocks ~250 symbols, formulas, harvest_score, dealer_flow_risk, vrp_regime, and strategy-specific attractiveness scores.

Get an API key → Compare plans →

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!