DEV Community

tomasz dobrowolski
tomasz dobrowolski

Posted on • Originally published at flashalpha.com

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

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. For the full technical walkthrough of the data model, filter grammar, and cascading semantics, see the pillar article.

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"]
}
Enter fullscreen mode Exit fullscreen mode

Use this at the open to flag names that will amplify intraday moves. Raise the threshold to 70 for a more exclusive list; drop 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"]
}
Enter fullscreen mode Exit fullscreen mode

All four filters are doing work: positive gamma means the vol backdrop is stable, harvestable means VRP is rich and realized vol is behaving, low dealer risk means 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": ["*"]
}
Enter fullscreen mode Exit fullscreen mode

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"]
}
Enter fullscreen mode Exit fullscreen mode

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: 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
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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"]
}
Enter fullscreen mode Exit fullscreen mode

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"]
}
Enter fullscreen mode Exit fullscreen mode

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

{
  "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"]
}
Enter fullscreen mode Exit fullscreen mode

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"]
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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"]
}
Enter fullscreen mode Exit fullscreen mode

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: Field Taxonomy. For the grammar reference: Live Screener spec. For the technical deep-dive: Real-Time Options Screener guide.

All 12 recipes target the FlashAlpha Live Screener. Growth unlocks 10 symbols; Alpha unlocks ~250 symbols, formulas, harvest_score, dealer_flow_risk, vrp_regime, and strategy-specific scores. Free tier at 5 requests/day. Compare plans.

Top comments (0)