GEX assumptions: dealer sign, model and expiry scope

Gamma exposure is computed, not published. The Calculation assumptions panel names every choice behind the levels on the GEX page, makes the two recomputable ones adjustable, and shows how far zero gamma, the call wall and the put wall move when they change.

Senzoukria · Documentation · Updated September 2026


Where to find it

Where
GEX page (/gex) → Calculation assumptions (collapsible section)
Default dealer positioning
Dealers short gamma (clients own the options)
Default 0DTE handling
Include 0DTE
Level band
±range across the 0DTE variants tested — a sensitivity, not a confidence interval
Firmness thresholds
Stable below 0.2% of spot, wide at or above 1% of spot
Freshness
Chain snapshot time and spot time, with an age chip that re-evaluates every 10 seconds

What it does

The panel answers one question: how much of a level is a calculation choice. It opens with a summary line combining the measured expiry scope and the model origin, and an age chip for the chain snapshot. Inside, the left column holds the assumptions, the middle column shows what they produce, and the footer shows what the numbers are worth.

Two assumptions are adjustable, because they can be recomputed from the snapshot the app already holds: dealer positioning and 0DTE handling. Two more are declared read-only, because replaying them would mean inventing numbers: the expiry scope (the backend filters expiries before aggregating; the panel measures the window from the term structure rather than replaying it) and the pricing model, which is the provider's when the greeks come from Alpaca, Tradier or Market Data, and a local Black-Scholes only on the Databento path.

With the default assumptions the panel reproduces exactly the levels the backend computed — that invariant is covered by a unit test. It is a reading of the dashboard's levels, not a second source: changing an assumption here does not move the level cards or the lines painted on the footprint chart, and any gap is labelled.

Settings

Controls in the Calculation assumptions panel
SettingDefaultWhat it changes
Dealer positioningDealers short gamma (clients own the options)Flips the sign of net gamma at every strike. In practice it moves the walls rather than zero gamma, and a wall can disappear for lack of a candidate strike
0DTE handlingInclude 0DTEInclude, Exclude or 0DTE only. Excluded, the profile describes the week; included, it describes this afternoon. Disabled when the nearest expiry is not today
Expiry scopeDeclared, read-only — shown as 'Expiries within N days' measured from the term structureNothing here; it reports the window the backend actually delivered
Pricing modelDeclared, read-only — the provider's name, or Black-Scholes (European) on the Databento pathNothing here; it names where the gamma came from
Back to the default assumptionsShown only when an assumption was changedReturns both adjustable settings to the backend's convention
Refresh the chainRequests a new chain snapshot; disabled while one is loading

Reading the level rails

Zero Gamma (ZG), Call Wall (CW) and Put Wall (PW) each get a rail on a shared price axis with spot marked, so the three can be compared. The dot is the value under the current assumptions, the shaded band is the spread across the 0DTE variants that could actually be computed, and a separate mark shows the default value when you have changed something. A delta is printed when the shift reaches half a cent.

A level that moves less than 0.2% of spot is labelled stable; one that moves 1% or more is labelled as something to read as a zone rather than as a line. When only one variant exists — a weekend, for instance, where there is no 0DTE to exclude — no band is drawn at all, because nothing was measured.

When a level does not exist, the panel writes the measured reason instead of a dash: no strike left in this scope, every strike is flat in this scope, cumulative gamma never crosses zero, no strike above spot is call-dominant, or no strike below spot is put-dominant.

Limits and pitfalls

  • The dealer convention is a convention. OPRA publishes open interest, never who holds it; the panel says so in the hint under the control.
  • Open interest is published once a day after the close. Intraday, gamma moves with spot and with time, not with the positions taken today.
  • The band varies the 0DTE scope only, at constant dealer sign — flipping the sign negates the whole profile and would produce a wide, meaningless interval.
  • The age chip turns to a warning past the staleness threshold and states that nothing on the page has refreshed since. GEX requires a configured options source, and that data is billed by the provider.

This page in other languages

Frequently asked questions

Why does flipping dealer positioning leave zero gamma where it was?
Negating every strike's net gamma negates the cumulative curve, and a curve and its opposite cross zero at the same place. What the convention really decides is the walls: above spot the panel stops keeping call-dominant strikes and keeps put-dominant ones instead.
Why is the 0DTE control greyed out?
Because the nearest expiry in the snapshot is not today — a weekend, for instance. There is nothing to exclude or isolate, so the control is neutralised rather than offering a choice that would change nothing.
Does changing an assumption change the levels drawn on my chart?
No. The panel is an exploration surface. The level cards on the dashboard and the GEX lines painted on the footprint chart stay on the backend's values, which the defaults reproduce exactly.

Keep reading