Why GEX Platforms Show Different Levels
(And Why That's Not a Bug)
- GEX is a model, not a measured quantity. Nobody outside the dealers knows their exact gamma book. Every platform produces an estimate from public options data plus methodological choices.
- Two platforms can show different Call Walls, Put Walls, or Gamma Flip levels for the same ticker at the same moment — and both can be mathematically defensible.
- Different ≠ wrong. The same options chain yields different numbers depending on which expirations get included, how interpolation is done, whether weighting is by open interest or volume, whether the flip is computed by structural cumulative sum or Black-Scholes simulation, and which data source the platform uses.
- A real bug requires a demonstrable mathematical error (inverted sign, formula misapplied, broken interpolation). A numerical difference between platforms is not, by itself, evidence of a bug.
- The productive question is not "which platform matches another?" — it's "which methodology fits how I trade, and am I using it consistently?"
- Switching between platforms mid-session looking for confirmation creates analysis paralysis. Pick one framework. Stick to it. Read each level as a zone, not a tick-precision target.
Start Here: The RSI Analogy
Before we get into the gamma math, consider something simpler that every trader has seen:
Ten traders all using the RSI indicator. Ten different ways of trading it.
One uses RSI 14 with overbought/oversold at 70/30. Another uses RSI 9 with 80/20. A third uses RSI divergence as confirmation, never as a primary signal. A fourth combines it with moving averages. A fifth ignores the absolute levels entirely and only watches the slope. A sixth runs RSI on the daily and only uses it for swing setups.
Same indicator. Same input data. Ten different signals, ten different exits, sometimes opposite directional reads on the same chart at the same moment.
None of them is wrong. Each one has arrived at their setup through their own backtest, their own observation, their own risk preferences. Their framework is internally consistent. They just operate it differently.
GEX works exactly the same way — except instead of one indicator with adjustable parameters (period, thresholds), GEX is an entire modeling framework with a dozen methodological choices baked in. Each platform makes those choices differently. The numbers diverge. None of them is universally wrong.
GEX is a Model, Not a Measurement
If you've ever wondered why three different GEX platforms can each claim the "real" Gamma Flip on SPY 0DTE and produce three different numbers, the answer starts here: GEX is not directly observable.
What we know publicly about the options market:
- The list of strikes and expirations
- The open interest at each strike (settled end-of-day by the OCC)
- The traded volume per contract during the session
- The implied volatility for each contract (computed from current quotes)
- The greeks (delta, gamma, theta, vega, etc.) — computed by each platform from IV, time, and spot
What we don't know publicly:
- Who is long and who is short on each contract
- Whether a particular open interest belongs to a dealer or an end-customer
- The exact hedging book of any market maker
- The intraday inventory changes of any dealer
- The actual sensitivity of dealer hedging to a 1% move
Every GEX number you see — on any platform — is an inference. Specifically, it's the answer to: "If we assume dealers are systematically short calls and long puts that end-customers buy (and that this pattern dominates), and we compute gamma exposure assuming dealers hold the opposite side of public open interest, what would total dealer gamma look like at the current spot?"
That's the model. Several of those assumptions are debatable. The exact aggregation method is a design choice. The result is a useful estimate, not a measurement.
Why Two Platforms Compute Different Numbers
Same SPY chain, same moment in time, same Hull-derived formula above. Here are the legitimate methodological choices that produce different output numbers:
1. Which expirations are included
One platform aggregates all expirations out to 365 days. Another caps at 90 days because LEAPS have small gamma but accumulate noise. A third uses only the front three expirations because they dominate gamma anyway. Same chain → different aggregate depending on which contracts get counted.
This single choice can move the Gamma Flip by hundreds of points on wide-chain indices like SPX or NDX where deep-OTM LEAPS contribute small individual γ but accumulate when summed across thousands of contracts.
2. DTE filter granularity
Some platforms expose only "0DTE" and "All" views. Others split into 0DTE / 1DTE / Weekly / Monthly / 90 AGG. The same Call Wall computed off a 0DTE filter looks completely different from the same Call Wall computed off a 30-day filter — and that's not a bug, that's the user choosing which lens to look through. Always check: which DTE bucket is the level you're comparing computed from?
3. IV source and gamma calculation
Black-Scholes gamma depends on implied volatility. Implied volatility itself is derived from observed option prices and a pricing model. Different platforms use:
- Different bid/ask midpoint vs last-trade vs mark price for IV input
- Different volatility smile models (raw quotes vs SVI vs cubic spline)
- Different risk-free rate assumptions
- Different dividend yield assumptions for equity options
Two platforms can use Black-Scholes — the same formula — and produce different γ values per contract because their inputs differ slightly. Aggregated over the chain, those small differences compound.
4. NET vs GROSS aggregation
This one matters a lot for walls. Consider strike $750 on SPY with spot at $755:
- Call gamma at $750: +$200M (calls dominate above-spot strikes typically)
- Put gamma at $750: −$67M (some puts there too, contributes negatively to net)
- NET GEX at $750: +$133M (the +200 and −67 net out)
- GROSS call exposure: $200M (puts ignored, only calls counted)
If two platforms are looking at the same strike and one reports the "Call Wall" as $750 with $133M strength (NET methodology) and the other reports it as $750 with $200M strength (GROSS methodology), both are correct — they're just measuring different things. The NET aggregation captures the net dealer hedging pressure at that strike. The GROSS aggregation captures the raw call concentration. Both are useful for different reads.
GEXBoard exposes both — NET is our default, GROSS is one click away in the chart view selector. If you compare our NET wall against another platform's GROSS wall, you'll see different numbers and that's expected.
5. Open Interest vs Volume weighting
Standard GEX uses open interest (the settled, persistent positioning) as the quantity multiplier. Some platforms additionally weight by intraday volume to capture how positioning is shifting today. The two approaches answer different questions:
- OI-weighted: "Where is dealer positioning structurally concentrated?"
- Volume-weighted: "Where is dealer hedging being actively rebalanced right now?"
Volume-weighting tends to produce a Gamma Flip closer to the current spot because today's flow concentrates near-money. OI-weighting tends to produce a Gamma Flip farther from spot because settled positioning skews to wider strikes. Same chain, two valid lenses, two different numbers.
6. How the Gamma Flip is found
Two common methods:
- Structural cumulative crossing: sort the strikes ascending, compute GEX at each strike using gamma at current spot, and run a cumulative sum from the lowest strike upward. The Gamma Flip is the price where that running sum crosses from negative to positive. Fast to compute, intuitive visualization, but fragile on wide chains where a deep-OTM low-gamma strike can shift the cumulative-sum sign and pull the apparent flip to an unrealistic level.
- Price-level simulation: evaluate total dealer GEX at N hypothetical spot prices (we use 60 levels across ±20% of current spot). At each hypothetical price, recalculate every contract's gamma via Black-Scholes using its current implied volatility — this respects the fact that γ is a bell-shaped function of spot that peaks near each strike. The Gamma Flip is the hypothetical price where the total crosses zero, interpolated to the exact level. More compute-intensive, but mathematically faithful to the actual γ-vs-spot curvature.
GEXBoard uses the price-level simulation method. The two methods can produce flip levels that differ by 30-200 points on wide-chain products. Neither is universally wrong — they're answering slightly different mathematical questions. The simulation respects the curvature of γ; the cumulative is a structural approximation.
Read our full Gamma Flip methodology for the detailed derivation.
7. Interpolation between strikes
Strikes are discrete ($1 apart on SPY, $5 on SPX, $50 on NDX). The Gamma Flip is a continuous price that almost never lands exactly on a strike. Different platforms interpolate differently:
- Linear between adjacent strikes
- Cubic spline across the whole chain
- Snap to nearest strike (no interpolation)
- Quadratic fit around the crossing
For an SPX flip near 7,540, linear interpolation might give 7,541.20, cubic might give 7,539.85, and snap might give 7,540 or 7,545 depending on the cumulative sign. Each is mathematically valid.
8. Underlying chain — cash index vs futures
This one trips people up regularly. On NDX (the Nasdaq-100 cash index), GEX is computed from NDX options chain. On NQ (the Nasdaq-100 e-mini futures), GEX is computed from a different options chain — the chain on the NQ futures contract. Same underlying universe, two different options markets, two different open-interest distributions, two different walls.
If a trader compares an NDX-based Gamma Flip from one platform against a NQ-based Gamma Flip from another platform, of course they'll differ — they're not even computing on the same instrument. Always verify: which underlying are the levels computed on?
9. Data source and refresh cadence
Some platforms have direct OPRA real-time tick feeds with full quote depth-of-book and per-second aggregates. Others use minute-bar aggregates and chain snapshots refreshed every 30-90 seconds. Same data field (open interest, for instance) read 60 seconds apart shows different values because new trades have settled in between. Two platforms can be off by 60-180 seconds in their chain freshness without either being "stale."
GEXBoard refreshes the full SPY chain about every 55 seconds and recomputes the structural GEX continuously. The dashboard's spot price updates sub-second via WebSocket and the wall/flip levels recalculate against the live spot every few seconds. A platform refreshing on a different cadence will show numbers offset by whatever delta moved during their refresh window.
10. Snapshot timing on 0DTE specifically
0DTE chains are exceptionally volatile. Gamma, delta, implied volatility, time-to-expiration, and traded volume all change minute by minute (or faster). Comparing two platforms with even seconds of difference between observations can show meaningfully different 0DTE walls — not because either is wrong, but because the underlying mathematical inputs literally changed in those few seconds.
If you screenshot Platform A at 10:32:14 and Platform B at 10:32:21, you're not comparing apples to apples. You're comparing the same apple at two different angles after someone turned it.
Γ × OI × 100 × S² is universally agreed on. Everything else — what to pass in, what to filter, how to aggregate, how to interpolate, when to snapshot — is a design choice. A platform that documents its choices and applies them consistently is doing it right. A platform that varies methodology depending on the day or the user is the one with a problem.When a Numerical Difference IS Actually a Bug
To be clear: we're not saying every platform discrepancy is just "methodology, get over it." Real bugs exist. Here's the test we apply internally to decide whether a level deserves investigation versus explanation:
| Symptom | Bug, or methodology? |
|---|---|
| Our Gamma Flip is 30 points away from Platform X's Gamma Flip | Methodology. Almost certainly explained by the choices above. |
| Our Call Wall is at $755 today, Platform X's is at $750 today | Methodology. NET vs GROSS, OI vs OI+volume weight, or window-cap difference. |
| Our Gamma Flip is 15% below the current spot price on a stable index | Possible bug. A flip that far from money in a stable regime suggests the wide-chain crossing problem — worth investigating which method we're using and whether the implementation has drift. |
| Our dealer regime label flips between Long Gamma and Short Gamma every refresh while spot is barely moving | Bug. Stable inputs should produce stable outputs. Bistability points to a fragile aggregation step. |
| Our Call Wall and our chart's tallest call-side bar don't match | Bug. Internal inconsistency between the scalar level and the visualization is always an implementation defect. |
| Our sign convention is inverted (positive net GEX showing as "Short Gamma" dealer regime) | Bug. Sign conventions are universal: positive aggregate dealer γ = stabilizing (Long Gamma). Inversion is a clear math error. |
| Our Put Wall is above our Call Wall in a normal market | Bug. Walls should bracket spot in normal regimes. Inversion suggests aggregation error. |
The pattern: internal inconsistencies, sign violations, and impossible-given-the-input outputs are bugs. Numerical differences with other platforms — measured against an external benchmark — are not. We take both seriously, but the second category usually resolves to methodology, not implementation.
Our Methodology — Documented and Stable
Per the principles above, our defense of our numbers is internal consistency and mathematical derivation, not parity with anyone else. Here's what GEXBoard does, plainly:
The base formula
Aggregation
- Per-strike NET GEX is the sum of call GEX (positive) and put GEX (negative) at each strike. This is our default lens for walls.
- Per-strike GROSS exposes call GEX and put GEX as separate quantities. Available in the chart view selector.
- Aggregate Net GEX sums the per-strike NET across the entire DTE-filtered chain. Drives the dealer regime label (positive aggregate = Long Gamma regime; negative = Short Gamma regime, per Hull's dynamic hedging derivation).
Gamma Flip
Computed via 60-level Black-Scholes simulation across ±20% of current spot. At each hypothetical spot price, every contract's gamma is recalculated using its current implied volatility, then summed across the chain. The Gamma Flip is the spot price (interpolated) where the total crosses zero. When multiple crossings exist, we return the one nearest current spot.
Why this method: γ is a bell-shaped function of spot (BS theorem), not a constant. The simulation respects that curvature; the cumulative-strike approximation does not. On wide-chain products, the cumulative method can pick up deep-OTM ghost crossings; the simulation is stable. The trade-off is more compute per refresh — defensible because we refresh on ~30 second cycles, not microsecond.
Full derivation and worked examples: Zero Gamma & the Gamma Flip Level Explained.
Walls and structural levels
- Call Wall (NET default): the strike with the largest positive aggregate per-strike NET GEX, filtered to a near-money window (±15% of spot) to suppress deep-OTM noise.
- Put Wall (NET default): the strike with the most negative aggregate per-strike NET GEX, same window filter.
- OI Call Wall, OI Put Wall, OI Pin (separate from gamma walls): the strikes with the largest raw open interest on the call side, put side, and combined. Exposed in the OI chart view.
- High Gamma Level (HVL): the strike with the largest absolute |GEX| in the visible chain — sign-agnostic. The "most magnetic" level where price tends to pin near expiration. When HVL coincides with a wall, the wall row displays an inline HG badge instead of duplicating the row.
- Wall hysteresis: a new strike only takes the wall label if its GEX exceeds the current wall's GEX by more than 10%. Prevents flickering between two strikes with similar gamma magnitudes.
Refresh and freshness
Full options chain refreshes from our data provider on a continuous schedule (approximately every 55 seconds). Gamma and walls recompute continuously against the live spot price (which streams sub-second via WebSocket). The dashboard shows continuously-updated numbers throughout the trading session, not a static pre-market snapshot.
Our Data Scope (Honestly)
The metrics we compute well are the ones our data supports well. Being explicit about that is part of being defensible:
| Data type | What we have |
|---|---|
| Full options chain (strikes, greeks, OI, volume, IV) | ✅ REST snapshot, refreshed continuously |
| Per-contract Fair Mid Value (price stream) | ✅ WebSocket, sub-second updates |
| Per-minute aggregate bars (OHLCV per contract per minute) | ✅ WebSocket |
| OPRA real-time trade tape (every tick) | ❌ Requires Full Market data tier (significantly larger spend) |
| OPRA depth-of-book quotes | ❌ Same — not in our current data scope |
| Per-second aggregate bars | ❌ Same |
What this scope means in practice: we compute structural GEX (walls, flip, regime) very well — those metrics depend on chain composition and IV, both of which we have. They refresh on sub-minute cadence which is appropriate for structural levels that move on the order of dollars per minute, not cents per tick.
We don't publish real-time aggressor-classified flow ("buy print at 0.45, ask side") because we don't subscribe to the OPRA tape required to classify ticks. A platform that does publish that has a more expensive data subscription. Their flow metrics are richer; our structural metrics are equally rigorous on their own terms.
If you need tick-by-tick options flow as your primary signal, no GEX platform fully replaces a direct OPRA feed. If you need structural dealer positioning levels updated continuously through the session, that's what we built.
How To Use GEX Levels Effectively
Now the practical part. Given everything above, here's how to actually trade with GEX numbers without falling into the cross-platform parity trap:
Pick one framework and stay in it
The fastest way to lose money with GEX is to switch platforms mid-session looking for the level that "confirms" what you want to do. If you start the day with GEXBoard's Call Wall at $755 and then check Platform X mid-morning to see if it agrees, you've now added a confirmation-bias loop on top of an already noisy signal.
Pick the framework — ours, or someone else's — that aligns with how you think about the market. Use it for walls, flip, and regime as a coherent set. Don't mix-and-match across platforms because the methodologies don't combine coherently (NET wall from us + cumulative-flip from someone else + their OI Pin = three different methods stitched into a Frankenstein read).
Read levels as zones, not tick targets
Every methodology described above has uncertainty wider than a single tick. A Call Wall reported as $755 is really "approximately 754 to 756, with $755 as the central estimate." A Gamma Flip at $7,541 is really "the regime boundary sits somewhere in the 7,535-7,545 range, with the model centering it at 7,541." Use the levels as zones for setup framing, not as buy-stop-at-754.99 precision targets.
Pay more attention to regime than to single levels
The most actionable thing GEX tells you is which regime you're in — Long Gamma (stabilizing, range-bound, mean-reverting) or Short Gamma (amplifying, trending, vol-expanding). That binary call is robust across most methodological choices. Whether the flip is at 7,540 or 7,560 matters less than whether spot is comfortably above it (Long Gamma) versus dancing on or below it (Short Gamma transition risk).
Use level density, not single-strike precision
When multiple platforms show Call Walls clustered between $750 and $760 — even if no two agree on the exact strike — that's a strong signal that the $750-$760 zone is a structural ceiling. The agreement on the zone is more meaningful than the disagreement on the strike.
When you do compare, control variables
If you genuinely want to compare platforms to deepen your understanding:
- Compare the same DTE filter — 0DTE vs 0DTE, weekly vs weekly. Comparing our 0DTE flip against another platform's 90-day-aggregate flip is meaningless.
- Compare the same underlying — NDX options chain levels against NDX, not against NQ futures levels.
- Compare simultaneously, not screenshots taken minutes apart.
- Identify which methodology choice (NET/GROSS, sim/cumulative, OI/volume weight) each platform uses before assuming agreement should hold.
Most "your numbers don't match" complaints dissolve when one or more of those controls reveal that the comparison wasn't apples-to-apples in the first place.
The Bottom Line
GEX is a useful framework. It's not a measurement. Every platform produces a slightly different lens onto the same underlying reality of dealer hedging flows.
The right tests for any platform — including ours — are:
- Is the methodology mathematically defensible? (Does it derive from Black-Scholes correctly?)
- Is the methodology internally consistent? (Does the chart match the scalar? Does the regime match the sign of the aggregate?)
- Is the methodology stable? (Same inputs, same outputs — no random bistability.)
- Is the methodology documented? (Can a sophisticated user verify what we're computing?)
"Does this match SpotGamma's number?" is not on that list. Neither is "does this match MenthorQ's number" or any other platform-vs-platform comparison. Each platform uses their methodology; we use ours; both can be right.
If you find a number on GEXBoard that violates one of the four tests above — a wall that doesn't match its bar, a regime label that flips bistably, a flip 15% from spot in a quiet market — please tell us. That's a bug and we'll investigate. If the only complaint is "Platform X shows $7,540 and you show $7,545," that's methodology, and now you have the full vocabulary for why.
See GEXBoard's methodology in action
Walls, Gamma Flip, dealer regime, HVL — derived from Black-Scholes, refreshed continuously, documented in plain language. From $19/mo during beta.
Frequently Asked Questions
Why does each GEX platform show a different Gamma Flip level?
Because the Gamma Flip is the output of a model, not a directly measured quantity. Each platform makes legitimate methodological choices — which expirations to include, which DTE filters apply, which interpolation method, whether to weight by open interest or by volume, whether to recompute gamma via Black-Scholes simulation or use a structural strike-by-strike cumulative sum, what their underlying options data source covers — and each choice produces a slightly different number. None of those choices is universally "correct." They're alternative valid implementations of the same underlying concept.
If platforms differ, does that mean one of them has a bug?
Not necessarily. A real bug requires a demonstrable mathematical error: an inverted sign, an interpolation off by one, a formula misapplied, or a clear violation of standard Black-Scholes math. A simple numerical difference between two platforms is not evidence of a bug — it's almost always a methodological choice that one platform documents and another doesn't.
If a platform's level passes internal consistency checks (the scalar matches the chart, the regime label matches the sign of aggregate GEX, the same inputs produce stable outputs) and aligns with academic GEX derivation, the number is defensible even if a different platform shows something else.
Which GEX platform is the "most accurate"?
There is no objectively most-accurate platform because there is no measured "true" GEX value to compare against. Dealer positioning is private; nobody outside the dealers knows their exact gamma book. Every platform — including GEXBoard — produces an estimate using public options chain data plus methodological assumptions.
The right question is not "which is most accurate" but "which methodology fits how I trade?" Some traders prefer signed NET walls; others prefer GROSS. Some prefer simulation-based Gamma Flip; others prefer cumulative strike-by-strike. Each is defensible. Pick the one that fits your framework and use it consistently.
What data does GEXBoard have access to?
We have full REST chain data (strikes, greeks, open interest, volume) on demand, per-contract Fair Mid Value WebSocket streaming (sub-second price updates), and per-minute aggregate WebSocket streams (OHLCV per minute bar).
We do NOT have the OPRA real-time trade tape, the OPRA quote depth-of-book, or per-second aggregates — those require a significantly more expensive data feed. This data scope is honest, public, and shapes the metrics we choose to compute well: structural dealer positioning (walls, flip, regime) is fully supported; tick-by-tick aggressor-classified flow is not.
How should I use GEXBoard levels if they differ from another platform I'm watching?
Pick the methodology that aligns with how you trade and stick to it consistently. Don't switch between platforms mid-session looking for confirmation — that's how you get analysis paralysis and miss the actual setup.
Treat each platform's levels as a self-contained framework. If you use GEXBoard for the Gamma Flip, also use GEXBoard for the walls and the regime; don't mix-and-match across platforms because the methodologies don't combine coherently. Use the levels as zones (areas of structural significance), not as exact tick-precision targets — the methodology uncertainty is wider than a single tick on every platform.
Can you change your methodology to match another platform?
No. Methodology changes have to be driven by mathematical correctness or measurable improvement in predictive value — not by imitation. Chasing parity with another platform would mean abandoning a defensible model in favor of a different defensible model for no defensible reason, while breaking continuity for every existing user who learned our framework.
If we identified a genuine mathematical error in our calculation, we would fix it (and document the change). If a user demonstrates that a different methodology measurably improves predictive value via rigorous backtest, we'd evaluate it on its own merits. Neither of those tests is met by "Platform X shows a different number."