The one question this page answers: is the market set up to move in one direction, or to chop? It reads that from what dealer gamma forces market-makers to do to stay hedged. The levels, the walls and the decay rate come from the full options chain, captured every 5 minutes and weighted by open interest (OI) only — never by volume. This page also publishes the measurement of its own thesis, and that measurement did not support it. Scroll to "Does any of this actually work?".
The verdict · IWM · forward book
NO CLEAR GAMMA REGIME
Net dealer gamma at this price is close to balanced, so hedging is not steering the tape either way.
NO CLEAR GAMMA REGIME. Net dealer gamma at this price is close to balanced and price is away from the centre of mass, so dealer hedging is not shaping the tape much in either direction. Little of it expires today, so this neutral configuration is a durable one rather than a same-day quirk.
WEAK DOWNWARD LEAN. Two asymmetries in the book point the same way: there is more open room between price and the heavy strike BELOW it than there is up to the heavy strike above, so the concentrated hedging is the nearer obstacle overhead rather than underneath — and the gamma centre of mass sits below spot. This describes where hedging is and is not concentrated, not a call on direction, and it is much weaker than the regime reading above it.
As of 2026-10-26T20:23:02+00:00 (post_close), spot 276.80. market closed — last update 2026-10-26 16:07 ET (Cboe). The session has closed, so the same-day contracts in the final snapshot are already dead. This verdict is built on the FORWARD book — the gamma that still exists for the next session. Gamma source per level — call wall 280: the vendor's own greeks, as sent (100%); put wall 270: the vendor's own greeks, as sent (100%); net gamma at spot: the vendor's own greeks, as sent (100%). The vendor's gamma is replaced only where it is below the precision floor (0.001: one significant digit or none at 4 decimals). 59 of 816 rows recomputed because the vendor's gamma was below 0.001. Same-day expiries always use the vendor's own gamma. Regime flip: repriced from the vendor's implied volatility. Regime read from net dealer gamma inside +/-1% of spot, as a share of the gross gamma in that band; it nets 3% one way (called flat below 20%), over 6 strikes within ±1% of price.
The range the option market is charging for
the one-day move the option market is charging for. Part B found this is the figure that carries the information; the gamma reading did not add to it.
How fast this regime decays
This is how much of the book dies at its very next expiry. It is the regime's DECAY RATE rather than its level — how long whatever is shaping the tape has left to exist. Only a small share of the gamma sits at the front expiry. Most of the hedging structure carries past it, so the levels on this page have a longer shelf life than usual.
Where the walls sat, through the session — 5-minute chain, 2026-10-26
Walls MIGRATING through a session is more informative than their level. Across 80 snapshots the call wall moved 280.00 → 280.00, the put wall 270.00 → 270.00, and the gamma centre of mass 273.99 → 274.77. The sign of the at-spot gamma changed 0 time(s) during the session. A null zero-gamma cross is a real answer — on about a third of readings the cumulative curve never crosses zero inside the band — so it is drawn as a gap, never as zero.
Does the option book calm this move or amplify it? — IWM · forward book
A different chart from the bars below. The bars break dealer gamma down strike by strike; this line adds it all up and shows the total at each hypothetical spot price. Where the line is green (above zero) the book is long gamma and dealers hedge against moves — it CALMS the tape; where it is red (below zero) they are short gamma and hedge with moves — it AMPLIFIES. The tall black line is where price is now; the teal line is the flip between the two. The dashed 0DTE line (when present) is the same book with only same-day contracts — that is where late-session pockets come from. Modelled, not measured — MODELLED, NOT MEASURED. Each contract is repriced with Black-Scholes gamma while its implied vol and days-to-expiry are held FIXED and spot is hypothetically moved (a sticky-strike assumption); r=0; same-day options are floored to 1 day of time so their gamma stays finite (they are removed entirely on the forward book); the contract universe is identical to the per-strike chart (+/-15% of spot, nearest 6 expiries); OI-weighted, never volume; calls +1, puts -1, netted per contract.
What time and vol force dealers to do — IWM · forward book
charm is how dealer hedging drifts as the clock runs, even if price does not move. Green (above zero) = absorb: time is making dealers longer delta, so they SELL to stay flat. Red (below zero) = amplify: time is making them shorter, so they BUY. The tall black line is where price is now; the teal line is the charm flip — the price where that buy/sell pressure changes sign. vanna is how dealer hedging shifts when implied vol moves, even if price does not. Same geometry; a 1-point vol drop forces the hedge in the tile above. The third canvas is the same OI book with less time left (15:45 ET) — the honest substitute for VolSignals' late red 0DTE pockets, without claiming we saw the shorts. No buy-and-hold line: these are cross-sections of the option book against hypothetical spot, not a time series of an asset. Modelled, not measured — MODELLED, NOT MEASURED. Same signed book as the per-strike GEX chart (±15% of spot, nearest 6 expiries, OI-only, never volume). Time remaining is the clock to the banked expiry instant, not a 1-day floor — so 0DTE gamma and charm into the close are visible here and hidden on the regime curve above (that curve keeps the 1-day floor so it stays comparable to the banked history). The late-day gamma slice is the SAME open-interest book with less time left — not a forecast of trades or of price. 0DTE contracts with oi=0 do not appear. The dealer-side sign is the usual convention (customers sell calls / buy puts) and is often wrong; VolSignals showed 20 of 36 large 0DTE lines carrying the wrong sign under it. Read the NUMBERS as concentrations; read the DIRECTION as an assumption.
Time decay hedging for the session ahead · IWM
How to read it. Across is time of day, up is where the index would be.
Each square is the dealer dollar-delta that one five-minute step forces at that level, with the
index standing still. The teal line is where the sign flips, drawn across the session so its
drift is visible. Orange outlines are pockets — runs of squares that pull the opposite way to
the band around them. The black line is where price stood; the purple line is the paired
future now, converted into this root's own units by the overnight overlay's anchor.
Modelled, not measured — The charm sum of the forward book, evaluated on a grid instead of at one instant. For each cell (t, S) every contract is repriced with remaining time from t to its OWN banked expiry instant (ACT/365.25, floored to 5 minutes) and with spot held at S; its implied vol, strike, open interest, r and q are unchanged (sticky-strike, exactly as the panel above). A contract whose expiry instant has already passed at t is EXCLUDED from that column and counted (census.expired_at_last_step) — never floored into a position that no longer exists. Volume is never used. This is a picture of the SAME open interest with less time left, not a forecast of trades or of price.
WHICH SIDE ARE DEALERS ACTUALLY ON? These greeks cannot see it. Every sign here infers dealers long calls and short puts. When customers have been BUYING calls, dealers are short them and a "long" line is actually a short — the absorb/amplify label flips. Nothing on this page confirms the direction. VolSignals, 2026-08-31: 20 of 36 SPX 0DTE lines over 300 contracts carried the opposite sign under this convention.
These numbers are not an input to verdict.regime / decay / pin / lean.
Conventional amplifiers and absorbers near price · IWM
As of 2026-10-26T20:23:02+00:00 · forward book · source: per-strike OI-weighted dollar gamma, same snapshot as the walls; dealer-side sign is a convention.
Net dealer gamma by strike — IWM, 2026-10-26
Netted contract counts are the primary measure and the default view here; dollar gamma is the secondary toggle. Dollar gamma at a single strike balloons as price approaches it and collapses as price leaves, so a dollar-ranked wall is a moving target while a contract-counted one is not. By contract count the walls sit at 284.00 (calls) and 260.00 (puts); by dollar gamma at 280.00 and 270.00. The shaded band is ±1% around spot — that band is the regime measure at the top of this page.
Optional data · previous bull & bear runs · IWM · close-to-close swings ≥ 10% · daily archive 2000-05-26 → 2026-10-26
Every close in the archive, with each bull run shaded green and each bear run red at the threshold selected above. Runs are CLOSE-only — intraday extremes are not in this archive, so a run's depth understates the true high-low move. The last segment is the open run: it has not confirmed its next pivot and can still extend or be re-labelled.
The same runs OVERLAID: every run re-based to 0% at its own start, plotted against sessions elapsed, so the run we are in now (the black line) can be read against every previous run of the archive at a glance — steeper is faster, longer is more stretched.
| Run | Start | End | Sessions | Calendar days | Change | Pace / session | Status |
|---|---|---|---|---|---|---|---|
| BEAR | 2026-08-14 | 2026-10-26 | 49 | 73 | -9.21% | -0.188% | OPEN — the run now |
| BULL | 2026-03-30 | 2026-08-14 | 93 | 137 | +27.33% | +0.294% | completed |
| BEAR | 2026-01-22 | 2026-03-30 | 46 | 67 | -11.19% | -0.243% | completed |
| BULL | 2025-04-08 | 2026-01-22 | 198 | 289 | +54.32% | +0.274% | completed |
| BEAR | 2024-11-25 | 2025-04-08 | 90 | 134 | -27.88% | -0.310% | completed |
| BULL | 2024-08-07 | 2024-11-25 | 77 | 110 | +20.01% | +0.260% | completed |
| BEAR | 2024-07-16 | 2024-08-07 | 16 | 22 | -10.07% | -0.629% | completed |
| BULL | 2023-10-27 | 2024-07-16 | 178 | 263 | +38.46% | +0.216% | completed |
| BEAR | 2023-07-31 | 2023-10-27 | 63 | 88 | -18.37% | -0.292% | completed |
| BULL | 2023-03-23 | 2023-07-31 | 88 | 130 | +16.72% | +0.190% | completed |
| BEAR | 2023-02-02 | 2023-03-23 | 34 | 49 | -14.15% | -0.416% | completed |
| BULL | 2022-09-26 | 2023-02-02 | 89 | 129 | +20.80% | +0.234% | completed |
| BEAR | 2022-08-15 | 2022-09-26 | 29 | 42 | -18.35% | -0.633% | completed |
| BULL | 2022-06-16 | 2022-08-15 | 40 | 60 | +22.68% | +0.567% | completed |
| BEAR | 2022-06-07 | 2022-06-16 | 7 | 9 | -14.14% | -2.021% | completed |
| BULL | 2022-05-11 | 2022-06-07 | 18 | 27 | +11.90% | +0.661% | completed |
| BEAR | 2022-03-29 | 2022-05-11 | 30 | 43 | -19.42% | -0.647% | completed |
| BULL | 2022-01-27 | 2022-03-29 | 42 | 61 | +10.54% | +0.251% | completed |
| BEAR | 2021-11-08 | 2022-01-27 | 55 | 80 | -21.04% | -0.383% | completed |
| BULL | 2020-06-11 | 2021-11-08 | 356 | 515 | +79.63% | +0.224% | completed |
| BEAR | 2020-06-08 | 2020-06-11 | 3 | 3 | -11.80% | -3.932% | completed |
| BULL | 2020-04-03 | 2020-06-08 | 44 | 66 | +46.33% | +1.053% | completed |
| BEAR | 2020-03-26 | 2020-04-03 | 6 | 8 | -10.44% | -1.739% | completed |
| BULL | 2020-03-23 | 2020-03-26 | 3 | 3 | +16.93% | +5.642% | completed |
| BEAR | 2020-01-16 | 2020-03-23 | 45 | 67 | -41.07% | -0.913% | completed |
| BULL | 2018-12-24 | 2020-01-16 | 267 | 388 | +34.68% | +0.130% | completed |
| BEAR | 2018-08-31 | 2018-12-24 | 78 | 115 | -27.25% | -0.349% | completed |
| BULL | 2016-02-11 | 2018-08-31 | 644 | 932 | +82.53% | +0.128% | completed |
| BEAR | 2015-12-01 | 2016-02-11 | 49 | 72 | -20.94% | -0.427% | completed |
| BULL | 2015-09-29 | 2015-12-01 | 44 | 63 | +11.49% | +0.261% | completed |
| BEAR | 2015-06-23 | 2015-09-29 | 68 | 98 | -16.65% | -0.245% | completed |
| BULL | 2014-10-13 | 2015-06-23 | 174 | 253 | +23.67% | +0.136% | completed |
| BEAR | 2014-07-01 | 2014-10-13 | 72 | 104 | -13.08% | -0.182% | completed |
| BULL | 2012-11-15 | 2014-07-01 | 407 | 593 | +56.19% | +0.138% | completed |
| BEAR | 2012-09-14 | 2012-11-15 | 42 | 62 | -11.06% | -0.263% | completed |
| BULL | 2012-06-04 | 2012-09-14 | 72 | 102 | +17.31% | +0.240% | completed |
| BEAR | 2012-03-26 | 2012-06-04 | 48 | 70 | -12.74% | -0.265% | completed |
| BULL | 2011-11-25 | 2012-03-26 | 82 | 122 | +26.69% | +0.325% | completed |
| BEAR | 2011-10-27 | 2011-11-25 | 20 | 29 | -12.82% | -0.641% | completed |
| BULL | 2011-10-03 | 2011-10-27 | 18 | 24 | +25.30% | +1.406% | completed |
| BEAR | 2011-08-30 | 2011-10-03 | 23 | 34 | -16.22% | -0.705% | completed |
| BULL | 2011-08-08 | 2011-08-30 | 16 | 22 | +11.79% | +0.737% | completed |
| BEAR | 2011-04-29 | 2011-08-08 | 69 | 101 | -24.62% | -0.357% | completed |
| BULL | 2010-08-24 | 2011-04-29 | 172 | 248 | +44.88% | +0.261% | completed |
| BEAR | 2010-07-26 | 2010-08-24 | 21 | 29 | -10.28% | -0.489% | completed |
| BULL | 2010-07-06 | 2010-07-26 | 14 | 20 | +12.57% | +0.898% | completed |
| BEAR | 2010-04-23 | 2010-07-06 | 50 | 74 | -20.36% | -0.407% | completed |
| BULL | 2009-07-09 | 2010-04-23 | 199 | 288 | +54.86% | +0.276% | completed |
| BEAR | 2009-06-05 | 2009-07-09 | 23 | 34 | -10.02% | -0.436% | completed |
| BULL | 2009-03-09 | 2009-06-05 | 62 | 88 | +54.70% | +0.882% | completed |
| BEAR | 2009-01-06 | 2009-03-09 | 42 | 62 | -32.90% | -0.783% | completed |
| BULL | 2008-12-01 | 2009-01-06 | 24 | 36 | +21.97% | +0.915% | completed |
| BEAR | 2008-11-28 | 2008-12-01 | 1 | 3 | -11.24% | -11.238% | completed |
| BULL | 2008-11-20 | 2008-11-28 | 5 | 8 | +22.87% | +4.573% | completed |
| BEAR | 2008-11-04 | 2008-11-20 | 12 | 16 | -29.22% | -2.435% | completed |
| BULL | 2008-10-27 | 2008-11-04 | 6 | 8 | +21.36% | +3.559% | completed |
| BEAR | 2008-10-13 | 2008-10-27 | 10 | 14 | -21.27% | -2.127% | completed |
| BULL | 2008-10-09 | 2008-10-13 | 2 | 4 | +13.98% | +6.991% | completed |
| BEAR | 2008-08-14 | 2008-10-09 | 39 | 56 | -33.61% | -0.862% | completed |
| BULL | 2008-07-07 | 2008-08-14 | 28 | 38 | +14.63% | +0.522% | completed |
Source: yahoo_max_seed + live daily shard. A swing threshold is a definition, not a discovery — 10% is the conventional correction cut, 20% the conventional bear-market cut; the buttons re-segment the same archive so the definition is yours to pick.
Major support & resistance · IWM · forward book
Ranked by netted contract count at the strike (call open interest minus put open interest), as a share of the netted contracts across the whole band. Top 3 each side — a secondary strike close to price routinely matters more than the headline wall far from it, which is why this is a ladder and not a single level.
The levels · forward book
| Reading | Value | Basis | What that state means |
|---|---|---|---|
| Net dealer gamma at spot | 50.7 | percentile of history | Dealer gamma at spot is unremarkable — it sits about where it usually does. Hedging flow is neither strongly absorbing moves nor strongly adding to them, so the option book is not the dominant force in the tape at this price. |
| Share of dealer gamma at the front expiry | 9.4 | share of the book | Only a small share of the gamma sits at the front expiry. Most of the hedging structure carries past it, so the levels on this page have a longer shelf life than usual. |
| Room between the walls | 71.0 | percentile of history | The gap between the walls is about its usual width. Neither an unusually tight corridor nor an unusually open one. |
| What the tape delivered versus what options charged | 42.5 | percentile of history | The tape delivered roughly the movement the option market charged for. Realised and priced volatility are in their usual relationship. |
Does any of this actually work? — this app measuring its own thesis
The dealer-positioning MECHANICS are still a fact about the book — where gamma sits, which strikes force hedging, how fast it decays. Those are structural readings, not forecasts. What this test refuses to support is treating them as an independent edge over implied volatility.
| Quintile | n | Next range (median) | Middle half | What options charged | Range ÷ charged | Path efficiency | Failed breakouts |
|---|---|---|---|---|---|---|---|
| Q1 — most short gamma | 224 | 1.74% | 1.04%–2.85% | 1.66% | 1.062 | 0.459 | 33.0% of 203 |
| Q2 | 216 | 1.73% | 1.14%–2.56% | 1.77% | 0.955 | 0.463 | 31.2% of 186 |
| Q3 | 224 | 1.86% | 1.20%–2.74% | 1.76% | 1.036 | 0.435 | 35.9% of 209 |
| Q4 | 216 | 1.71% | 1.01%–2.65% | 1.51% | 1.093 | 0.525 | 29.2% of 199 |
| Q5 — most long gamma | 216 | 1.50% | 0.91%–2.36% | 1.35% | 1.102 | 0.426 | 36.0% of 189 |
| Root | n | Raw: gamma → next range | Vol-controlled: gamma → range ÷ charged | Blast-vs-shards (path efficiency) |
|---|---|---|---|---|
| SPY | 137 | -0.098 (p=0.258) | +0.108 (p=0.208) | +0.046 (p=0.593) |
| QQQ | 137 | -0.104 (p=0.225) | +0.013 (p=0.880) | -0.152 (p=0.075) |
| IWM | 137 | -0.099 (p=0.249) | +0.074 (p=0.388) | -0.028 (p=0.744) |
| SPX | 137 | -0.131 (p=0.129) | +0.058 (p=0.513) | +0.043 (p=0.621) |
| SPXW | 108 | -0.351 (p=0.000) | +0.111 (p=0.369) | -0.054 (p=0.581) |
| AAPL | 137 | -0.126 (p=0.142) | +0.135 (p=0.116) | +0.072 (p=0.401) |
| MSFT | 137 | -0.111 (p=0.197) | -0.062 (p=0.470) | -0.105 (p=0.224) |
| NVDA | 137 | +0.100 (p=0.248) | +0.176 (p=0.039) | +0.154 (p=0.072) |
| TSLA | 137 | -0.098 (p=0.255) | -0.015 (p=0.860) | -0.046 (p=0.597) |
Directional bias — why it stays weak
Gamma is path-shape, not direction. The four asymmetries that could legitimately carry a lean were each measured against the next session's signed return. The number that matters is the base rate: 51.8% of next sessions simply closed up (n=1096). A lean has to beat that, not 50%. None of them did — which is why "no directional lean" is this page's standing answer rather than a fallback.
| Asymmetry | n | Rank correlation | Hit rate | Beat the base rate? |
|---|---|---|---|---|
| room to the call wall minus room to the put wall | 1096 | +0.000 (p=0.994) | 49.1% | no |
| where the gamma centre of mass sits versus spot | 1096 | -0.002 (p=0.946) | 48.7% | no |
| net vanna exposure — the mechanical bid if volatility falls | 1096 | -0.064 (p=0.034) | 48.4% | no |
| net charm exposure — hedge drift from time passing | 1096 | +0.097 (p=0.001) | 53.8% | yes |
How fresh this is, and what does not line up
| Clock | As of | Expected cadence | What it is |
|---|---|---|---|
| options chain · held | 2026-10-26T20:23:02+00:00 | every 5m | The full option chain, captured every 5 minutes while the market is open and held at the last reading once it closes. Outside trading hours a held clock is correct behaviour, not a failure. |
| profile build · held | 2026-10-26T21:50:51Z | every 10m | When the per-strike gamma profile on this page was last rebuilt from the chain archive. It rebuilds every 10 minutes while the market is open and holds at the last build once it closes — a held clock out of hours is correct, not a failure. |
| open interest · settled | 2026-10-26 | every 1d | Settled overnight by the clearing house for the PREVIOUS session. It does not move intraday — market structure, not neglect. |
| daily history · settled | 2026-09-18 | every 1d | The banked daily-close spine the history charts draw. One row per session. |
| bull/bear archive · settled | 2026-10-26 | every 1d | Daily closes from 2000-05-26 to 2026-10-26, used ONLY by the optional bull/bear runs block. It extends by one row per completed session, so a day behind is normal and a week behind is not. |
=== /gex — DEALER GAMMA REGIME · IWM ===
QUESTION: Is the market set up to BLAST in a direction, or chop in jagged broken shards?
VERDICT: NO CLEAR GAMMA REGIME
Net dealer gamma at this price is close to balanced, so hedging is not steering the tape either way.
NO CLEAR GAMMA REGIME. Net dealer gamma at this price is close to balanced and price is away
from the centre of mass, so dealer hedging is not shaping the tape much in either direction.
Little of it expires today, so this neutral configuration is a durable one rather than a
same-day quirk.
DIRECTIONAL LEAN: DOWN
WEAK DOWNWARD LEAN. Two asymmetries in the book point the same way: there is more open room
between price and the heavy strike BELOW it than there is up to the heavy strike above, so the
concentrated hedging is the nearer obstacle overhead rather than underneath — and the gamma
centre of mass sits below spot. This describes where hedging is and is not concentrated, not a
call on direction, and it is much weaker than the regime reading above it.
-- DOES THE OPTION BOOK CALM OR AMPLIFY THIS MOVE? (regime curve, forward book) --
at spot the book is AMPLIFYING moves (dealers short gamma — hedging runs WITH the tape, an accelerant).
dealer gamma at spot: -$220.3M per 1% move.
flip (regime boundary): 277.91, 0.40% above spot 276.80.
MODELLED, NOT MEASURED. Each contract is repriced with Black-Scholes gamma while its
implied vol and days-to-expiry are held FIXED and spot is hypothetically moved (a
sticky-strike assumption); r=0; same-day options are floored to 1 day of time so their
gamma stays finite (they are removed entirely on the forward book); the contract universe
is identical to the per-strike chart (+/-15% of spot, nearest 6 expiries); OI-weighted,
never volume; calls +1, puts -1, netted per contract.
-- WHAT TIME AND VOL FORCE DEALERS TO DO (same signed book, forward book) --
as of 2026-10-26T20:23:02+00:00 · remaining time to the banked texp instant, 5-minute floor · source: gamma/data/chain x-block + header texp/rate/q; OI-only; never volume
CHARM at spot: -$156.33B dollar-delta per year = -$428.0M per calendar day.
Time passing is forcing dealers to BUY the underlying to stay hedged (they are decaying
into a shorter delta). Under the usual dealer-side convention only — if the convention
is wrong, they sell instead.
of which 0DTE — / rest -$156.33B (0 same-day contracts).
charm flip (where time-decay hedge flow changes sign): 285.35, 3.09% from spot.
VANNA at spot: +$11.07B dollar-delta per 1.00 vol = +$110.7M per vol-point.
If implied vol FALLS 1 point, dealers would have to BUY the underlying to stay hedged (and
SELL if vol rises). Under the usual dealer-side convention only.
chain's own xcharm/xvanna (not fused; archive 12h floor): -$156.33B / +$11.07B
LATE-DAY GAMMA absent: this snapshot is already past 15:45 ET (or past 15 minutes before expiry) — a late-day reprice is not invented from a later clock
CONVENTIONAL AMPLIFIERS / ABSORBERS (most-negative / most-positive dollar-gamma inside ±2% of price). Not VolSignals tests — we cannot see who is actually short.
amplifier 1 275.00 -0.65% -$91.0M per 1% 17,951 net contracts
amplifier 2 272.00 -1.73% -$75.2M per 1% 22,729 net contracts
amplifier 3 274.00 -1.01% -$51.3M per 1% 11,597 net contracts
absorber 1 280.00 +1.16% +$102.0M per 1% 21,812 net contracts
absorber 2 282.00 +1.88% +$49.1M per 1% 14,448 net contracts
absorber 3 279.00 +0.79% +$36.4M per 1% 6,830 net contracts
0DTE ACTIVITY (not a position): in-band 675,396 contracts of volume across 128 listed lines; 28 lines still report OI 0 with volume > 0. Never used as a weight.
including outside the ±15% band: 675,421 contracts, 33 oi=0-with-volume lines.
! WHICH SIDE ARE DEALERS ACTUALLY ON? These greeks cannot see it. Every sign here infers
dealers long calls and short puts. When customers have been BUYING calls, dealers are
short them and a "long" line is actually a short — the absorb/amplify label flips.
Nothing on this page confirms the direction. VolSignals, 2026-08-31: 20 of 36 SPX 0DTE
lines over 300 contracts carried the opposite sign under this convention.
! These numbers are not an input to verdict.regime / decay / pin / lean.
MODELLED, NOT MEASURED. Same signed book as the per-strike GEX chart (±15% of spot,
nearest 6 expiries, OI-only, never volume). Time remaining is the clock to the banked
expiry instant, not a 1-day floor — so 0DTE gamma and charm into the close are visible
here and hidden on the regime curve above (that curve keeps the 1-day floor so it stays
comparable to the banked history). The late-day gamma slice is the SAME open-interest book
with less time left — not a forecast of trades or of price. 0DTE contracts with oi=0 do
not appear. The dealer-side sign is the usual convention (customers sell calls / buy puts)
and is often wrong; VolSignals showed 20 of 36 large 0DTE lines carrying the wrong sign
under it. Read the NUMBERS as concentrations; read the DIRECTION as an assumption.
-- TIME-DECAY HEDGING, THE SESSION AHEAD (charm field) --
session 2026-10-27, 09:30 to 16:00 ET in 5-minute steps (79 of them) x 22 levels 271.50 to 282.00 (forward book).
Each cell is the dealer dollar-delta that must be hedged over that one step at that
level, with the index standing still. Negative = dealers BUY, positive = they SELL.
NEXT 60 MINUTES at 277.00: -$18.3M — dealers BUY (convention).
no contract count: this root has no paired future on this page (futures.php pairs ES to SPY/SPX, NQ to QQQ, RTY to IWM and nothing to single names or VIX)
THE FLIP — the level where the field changes sign, nearest price:
open 09:30 no flip inside the grid cell at 277.00: -$1.5M
morning 10:00 no flip inside the grid cell at 277.00: -$1.5M
midday 12:00 no flip inside the grid cell at 277.00: -$1.5M
last hr 15:00 no flip inside the grid cell at 277.00: -$1.4M
POCKETS: none — no run of cells disagrees with the band around it. Absent, not zero.
The charm sum of the forward book, evaluated on a grid instead of at one instant. For each
cell (t, S) every contract is repriced with remaining time from t to its OWN banked expiry
instant (ACT/365.25, floored to 5 minutes) and with spot held at S; its implied vol,
strike, open interest, r and q are unchanged (sticky-strike, exactly as the panel above).
A contract whose expiry instant has already passed at t is EXCLUDED from that column and
counted (census.expired_at_last_step) — never floored into a position that no longer
exists. Volume is never used. This is a picture of the SAME open interest with less time
left, not a forecast of trades or of price.
! WHICH SIDE ARE DEALERS ACTUALLY ON? These greeks cannot see it. Every sign here infers
dealers long calls and short puts. When customers have been BUYING calls, dealers are
short them and a "long" line is actually a short — the absorb/amplify label flips.
Nothing on this page confirms the direction. VolSignals, 2026-08-31: 20 of 36 SPX 0DTE
lines over 300 contracts carried the opposite sign under this convention.
! These numbers are not an input to verdict.regime / decay / pin / lean.
-- THE RANGE THE OPTION MARKET IS CHARGING FOR --
daily breakeven 1.03% (front at-the-money implied vol 16.38% (expiry 2026-10-27) / sqrt(252))
gamma-conditional range median 1.49%, middle half 1.16% to 2.10% (quintile 3 of banked history, n=28)
NOTE: shown for completeness. Part B found the gamma reading adds nothing to the breakeven above.
wall-to-wall corridor 3.61% (put wall 270.00 to call wall 280.00)
last session delivered 1.01% (5-min sampled) = 0.98x the breakeven
-- MAJOR SUPPORT & RESISTANCE (forward book) --
These are where dealer hedging CONCENTRATES. They are not levels price is obliged to
respect: a big enough directional move overwhelms even a massive wall of gamma.
MEASURED: reaching the call wall, price closed back below it 39.9% of the time (n=293);
the put wall held 39.9% of 218. Neither beat a level the same distance away
with no gamma in it, so these rows are ranked by concentration, not reliability.
284.00 +7.20 pts +2.60% RESISTANCE call wall (largest) 4.5% of book 32,569 net contracts
The heaviest call hedging overhead. On the usual assumption that dealers are LONG
these calls, staying hedged means selling into rallies as price approaches — which
is what would slow a move here.
283.00 +6.20 pts +2.24% RESISTANCE secondary call concentration (2nd largest) 3.7% of book 27,141 net contracts
A further band of call hedging above price, lighter than the wall but closer to the
tape than the numbers alone suggest. The same mechanics apply, at smaller size.
280.00 +3.20 pts +1.16% RESISTANCE secondary call concentration (3rd largest) 3.0% of book 21,812 net contracts
A further band of call hedging above price, lighter than the wall but closer to the
tape than the numbers alone suggest. The same mechanics apply, at smaller size.
276.80 <<<< PRICE IS HERE
270.00 -6.80 pts -2.46% SUPPORT secondary put concentration (3rd largest) 6.1% of book 44,551 net contracts
A further band of put hedging below price, lighter than the wall. The same mechanics
apply, at smaller size.
260.00 -16.80 pts -6.07% SUPPORT put wall (largest) 12.3% of book 89,740 net contracts
The heaviest put hedging below. On the usual assumption that dealers are SHORT these
puts, staying hedged means buying as price falls toward it — which is what would
cushion a move here.
250.00 -26.80 pts -9.68% SUPPORT secondary put concentration (2nd largest) 6.6% of book 48,233 net contracts
A further band of put hedging below price, lighter than the wall. The same mechanics
apply, at smaller size.
274.36 -0.88% MAGNET — the opposite of a barrier
The gamma-weighted centre of the book: the level hedging flow pulls price TOWARD,
rather than a level that pushes price away. Price sitting on it is the pinned
configuration.
! WHICH SIDE ARE DEALERS ACTUALLY ON? This is the one thing gamma exposure cannot see, and
it decides whether a wall brakes or accelerates. Every number here INFERS it from a
convention — that customers sell calls and buy puts, so dealers end up long calls and
short puts, which is what makes a call wall behave like a ceiling. When that convention is
wrong the sign flips with it: if customers are BUYING calls, dealers are SHORT them, and
staying hedged means buying INTO a rally through the same strike — the level becomes an
accelerant instead of a brake. On the book these levels are drawn from, 9.4% of the gross
gamma sits at the front expiry — the short-dated, retail-facing end of the chain, where
that assumption is least safe. Nothing on this page can confirm the direction, so read the
labels as where hedging is concentrated, not as which way it will push.
ranked by: netted contract count at the strike (call open interest minus put open interest), as a
share of the netted contracts across the whole band
-- LEVELS (forward book) --
The session has closed, so the same-day contracts in the final snapshot are already dead. This verdict is built on the FORWARD book — the gamma that still exists for the next session.
spot 276.80 as of 2026-10-26T20:23:02+00:00 (post_close)
Gamma source per level — call wall 280: the vendor's own greeks, as sent (100%); put wall 270:
the vendor's own greeks, as sent (100%); net gamma at spot: the vendor's own greeks, as sent
(100%). The vendor's gamma is replaced only where it is below the precision floor (0.001: one
significant digit or none at 4 decimals). 59 of 816 rows recomputed because the vendor's gamma
was below 0.001. Same-day expiries always use the vendor's own gamma. Regime flip: repriced from
the vendor's implied volatility.
market closed — last update 2026-10-26 16:07 ET (Cboe)
net gamma in +/-1% band -$6.1M across 6 strikes [THE REGIME MEASURE]
= 3% of the gross gamma in that band, netting SHORT (flat below 20%)
net dealer gamma at the single nearest strike +$868,383 at 277.00
whole-book gamma -$201.6M
call wall 280.00 (1.16% above) put wall 270.00 (2.46% below)
walls by CONTRACT COUNT call 284.00 put 260.00 [the stable read]
gamma centre of mass 274.36 (-0.88% from spot) zero-gamma cross —
NOTE: the zero-gamma cross is a LEVEL, not the regime boundary. The regime above is read from the NET GAMMA IN THE +/-1% BAND around spot.
-- HOW FAST THIS REGIME DECAYS --
9.4% — share of the FORWARD book's gross gamma sitting at its front expiry (2026-10-27) [drives the 'slow decay' in the verdict; fast at 50%]
21.3% of the gross gamma on the SESSION book expired at 2026-10-26's close
97% of the at-spot gamma disappeared with that expiry (+$26.7M on the session book -> +$868,383 on the forward book)
-- WHERE THIS SITS VERSUS ITS OWN BANKED HISTORY --
net dealer gamma at spot 50.7 percentile
Dealer gamma at spot is unremarkable — it sits about where it usually does. Hedging flow
is neither strongly absorbing moves nor strongly adding to them, so the option book is not
the dominant force in the tape at this price.
share of the book at the front expiry 9.4 % of the book
Only a small share of the gamma sits at the front expiry. Most of the hedging structure
carries past it, so the levels on this page have a longer shelf life than usual.
room between the walls 71.0 percentile
The gap between the walls is about its usual width. Neither an unusually tight corridor nor
an unusually open one.
last session delivered vs what options charged 42.5 percentile
The tape delivered roughly the movement the option market charged for. Realised and priced
volatility are in their usual relationship.
-- PART B: THIS APP MEASURING ITS OWN CLAIM --
THESIS HELD: NO
NOT ESTABLISHED. Dealer gamma tracks the volatility regime, but it did not beat what the
option market had already priced.
- RAW, the thesis looks right: the most negative-gamma quintile was followed by a 1.74%
median range and the most positive by 1.50% (pooled rho -0.065, p=0.0314).
- CONTROLLED, it disappears. Measure the same range in units of what options charged for it
(range / IV breakeven) and the relationship is rho 0.055, p=0.07 — nothing.
Negative-gamma sessions ARE high-implied-vol sessions: median breakeven fell from 1.66% in
the short-gamma quintile to 1.35% in the long-gamma quintile. Gamma was reading the
thermometer, not adding to it.
- The BLAST-vs-SHARDS part specifically shows nothing: path efficiency (how much of the
day's travel became net progress) against gamma is rho -0.002, p=0.94.
- The FAILED-BREAKOUT prediction runs the wrong way. Long dealer gamma is supposed to
produce MORE failed breakouts; measured, long gamma faded 32.7% of breakout attempts and
short gamma faded 33.6%.
- No directional signal beat the base rate: 51.8% of next sessions closed up, and not one of
the four asymmetries did better.
+ ONE reading did keep a signal after the calendar was removed, and it is the DECAY RATE
rather than the level: the 0DTE share of gamma. Ranked inside each (root x weekday) cell
— which removes the weekday effect completely, not just its linear part — a higher
0DTE share went with the next session realising MORE range than options had charged for:
pooled rho 0.070 (n=959 across 35 cells), and POSITIVE on all 7 roots tested. It is called
SUGGESTIVE and not established, for three reasons: only 1 of 7 roots reach significance on
their own, the pooled p-value is overstated because the roots share market days, and the
sample is five months of one year.
QUINTILES OF DEALER GAMMA AT SPOT -> WHAT THE NEXT SESSION DID (pooled, within-root cuts)
Q n next range middle half breakeven ratio path eff failed breakouts
1 224 1.74% 1.04-2.85% 1.66% 1.06 0.459 33.0% of 203
2 216 1.73% 1.14-2.56% 1.77% 0.95 0.463 31.2% of 186
3 224 1.86% 1.20-2.73% 1.76% 1.04 0.435 35.9% of 209
4 216 1.71% 1.01-2.65% 1.51% 1.09 0.525 29.1% of 199
5 216 1.50% 0.91-2.36% 1.35% 1.10 0.426 36.0% of 189
Q1 = most NEGATIVE dealer gamma (blast end) Q5 = most POSITIVE (jagged/pinned end)
! POOLED SIGNIFICANCE IS OVERSTATED. The roots share the same market days and SPY/SPX/QQQ are
close to the same trade, so a pooled n is not that many independent observations — the
effective n is nearer the per-root session count.
! SPXW is excluded from every pooled set: same underlying as SPX, so its outcome rows are
duplicates.
! THE WEEKEND ARTEFACT. breakeven divides by sqrt(252) TRADING days, so a Friday reading is
compared against a Monday session carrying three calendar days of risk. Measured below as
friday_artefact. Friday rows carry weekend_span=true.
! 2026 only. The OI-weighted gamma archive starts 2026-03-02 (the OCC open-interest purchase
window), so there is no multi-year sample and no other market regime in it.
! This measures ASSOCIATION on banked sessions. It is not a trading result and carries no
costs, slippage or capacity.
! DIFFERENT CONSTRUCTION FROM THE LIVE READ. These hit rates are measured on the DAILY
DOLLAR-GEX AGGREGATE, because that is the only per-session gamma that exists back through
2026-02. The live panel on this page is built on per-strike NETTED CONTRACT COUNTS from the
5-minute chain recorder, which only starts 2026-08-05. Dollar gamma at a strike explodes as
spot approaches it and collapses as it leaves, so the aggregate is exactly the weaker
construction — this table does not validate the live measure exactly, and it is not
claimed to.
-- HOW FRESH, AND WHAT IS STALE BY DESIGN --
options chain 2026-10-26T20:23:02+00:00 expected every 5m [held at the last regular-hours reading — correct once the market closes, not a failure]
profile build 2026-10-26T21:50:51Z expected every 10m [held at the last regular-hours reading — correct once the market closes, not a failure]
open interest 2026-10-26 expected every 1d [settled once overnight — a day behind by market structure, not by neglect]
daily history 2026-09-18 expected every 1d [settled once overnight — a day behind by market structure, not by neglect]
bull/bear archive 2026-10-26 expected every 1d [settled once overnight — a day behind by market structure, not by neglect]
server clock now 2026-10-27T10:03:38Z (skew baseline only — NEVER a data timestamp)
chain_day 2026-10-26
chain_asof 2026-10-26T20:23:02+00:00
chain_phase post_close
chain_built 2026-10-26T21:50:51Z
chain_cadence every 5 minutes in regular trading hours, plus a pre-open and a post-close bracket
open_interest PREVIOUS session, settled overnight by the clearing house. It does not move intraday — a market-structure fact, not a defect.
history_last 2026-09-18
history_gex_window from 2026-03-02 (the OCC open-interest purchase); continues past 2026-08-04 from the live chain recorder rather than ending there
validation_built 2026-10-27T09:20:08Z
open-interest census 816 known, 0 MISSING (excluded, never zeroed), 326 genuine zeros
-- STANDING CAUTION --
Gamma is not destiny. A large enough directional move overwhelms even a very big wall of dealer
gamma — the hedging flow described here is one force among several, and it is the one that
gets run over when something bigger arrives. Everything on this page describes how the option
book is positioned; none of it is a statement about what price does next.
generated 2026-10-27T10:03:37Z · full JSON: /apps2/gex/api.php?sym=IWM&full=1
{
"ok": true,
"sym": "IWM",
"symbols": [
"SPY",
"QQQ",
"IWM",
"SPX",
"AAPL",
"MSFT",
"NVDA",
"TSLA",
"VIX"
],
"generated_utc": "2026-10-27T10:03:37Z",
"question": "Is the market set up to BLAST in a direction, or chop in jagged broken shards?",
"source": {
"state": "closed",
"label": "market closed \u2014 last update 2026-10-26 16:07 ET (Cboe)",
"style": "muted",
"vendor": "cboe",
"source_name": "Cboe",
"last_update_ts": 1793045254,
"last_update": "2026-10-26 16:07 ET",
"age_s": 50163,
"in_session": false,
"why": null,
"threshold_s": 1800,
"expect_s": 900,
"vendor_lag_at_fetch_s": 928,
"clock": "vendor",
"source": "Cboe",
"as_of_ts": 1793045254,
"vendor_age_s": 928,
"levels_estimator": "iv",
"grk_src": "vendor (v-block) + computed (x-block)"
},
"pctl_basis": {
"local_gamma": "percentile against this root's own banked daily history \u2014 ORIENTATION ONLY, because the banked series is the daily dollar aggregate and the live figure is per-strike from the 5-minute recorder",
"zdte_share": "the share itself (0-100), not a percentile",
"wall_room": "percentile against this root's own banked wall spans",
"flip_dist": "percentile against this root's own banked distances",
"paid_vs_realised": "percentile against every banked session's own realised-range-over-breakeven ratio"
},
"range": {
"breakeven_pct": 1.0321579817093645,
"breakeven_from": "front at-the-money implied vol 16.38% (expiry 2026-10-27) / sqrt(252)",
"breakeven_note": "the one-day move the option market is charging for. Part B found this is the figure that carries the information; the gamma reading did not add to it.",
"gamma_conditional": {
"q": 3,
"n": 28,
"median": 1.492,
"p25": 1.1572,
"p75": 2.1017,
"basis": "sessions whose banked at-spot gamma fell in the same quintile as this reading"
},
"wall_span_pct": 3.61271676300578,
"last_session_sampled_pct": 1.0079479768785995,
"paid_vs_realised": 0.9765442836660813,
"weekend_caveat": null
},
"verdict": {
"book": "forward",
"book_note": "The session has closed, so the same-day contracts in the final snapshot are already dead. This verdict is built on the FORWARD book \u2014 the gamma that still exists for the next session.",
"regime": "flat",
"decay": "slow",
"pin": "away",
"lean": "down",
"regime_from": "net dealer gamma inside +/-1% of spot, as a share of the gross gamma in that band",
"regime_net_share": -0.03491795688858485,
"decay_from": "share of the FORWARD book's gross gamma sitting at its front expiry (2026-10-27)",
"decay_share": 0.09424597719689576,
"cuts": {
"flat_net_share_below": 0.2,
"fast_decay_at": 0.5,
"pin_within_pct": 0.25,
"lean_needs_pct": 0.15
}
},
"levels": {
"spot": 276.8,
"as_of": "2026-10-26T20:23:02+00:00",
"phase": "post_close",
"gamma_src": {
"call_wall_iv_share": 0,
"put_wall_iv_share": 0,
"flip_iv_share": null,
"spot_iv_share": 0,
"book_iv_share": 0.0002
},
"gamma_src_note": "Gamma source per level \u2014 call wall 280: the vendor's own greeks, as sent (100%); put wall 270: the vendor's own greeks, as sent (100%); net gamma at spot: the vendor's own greeks, as sent (100%). The vendor's gamma is replaced only where it is below the precision floor (0.001: one significant digit or none at 4 decimals). 59 of 816 rows recomputed because the vendor's gamma was below 0.001. Same-day expiries always use the vendor's own gamma. Regime flip: repriced from the vendor's implied volatility.",
"local_gamma_at_spot": 868383.470336,
"local_strike": 277,
"local_band_1pct": -6137979.148287958,
"local_band_n": 6,
"local_band_pct": 1,
"local_band_widened": false,
"local_band_thin": false,
"call_wall_book": 280,
"put_wall_book": 270,
"total_gex": -201624262.64705768,
"total_gex_x": -195926365.0705575,
"call_wall": 280,
"put_wall": 270,
"call_wall_contracts": 284,
"put_wall_contracts": 260,
"gamma_center": 274.3633269838849,
"gamma_flip": null,
"room_up_pct": 1.1560693641618456,
"room_down_pct": 2.4566473988439346,
"centre_offset_pct": -0.8803009451282854,
"zdte_gamma_share": 0.21332983587541426,
"session_book_total_gex": -123327669.45256165,
"session_book_local": 26715362.85056,
"decay_of_local": 0.9674949775081271
},
"pctl": {
"local_gamma": 50.7,
"zdte_share": 9.4,
"wall_room": 71,
"flip_dist": null,
"paid_vs_realised": 42.5
},
"indices": [
{
"key": "spx",
"label": "S&P 500",
"unit": "percent change from the cash close",
"anchor_ts": 1793046182,
"anchor_value": 7676.77,
"cash_note": "SPX cash from the 5-minute chain recorder",
"futures_product": "ES",
"futures_ticker": "ESZ6",
"handoff_ts": 1793046300,
"series": [
[
1793020081,
-0.6916
],
[
1793021582,
-0.6916
],
[
1793021882,
-0.6916
],
[
1793022182,
-0.6916
],
[
1793022482,
-0.6916
],
[
1793022781,
-0.3115
],
[
1793023082,
-0.2896
],
[
1793023382,
-0.2377
],
[
1793023682,
-0.2342
],
[
1793023982,
-0.2267
],
[
1793024283,
-0.2887
],
[
1793024582,
-0.2689
],
[
1793024882,
-0.1184
],
[
1793025182,
-0.0121
],
[
1793025482,
0.0254
],
[
1793025781,
-0.0797
],
[
1793026082,
-0.08
],
[
1793026382,
-0.0337
],
[
1793026681,
0.0713
],
[
1793026981,
0.1194
],
[
1793027282,
0.2151
],
[
1793027583,
0.2508
],
[
1793027882,
0.3254
],
[
1793028182,
0.2747
],
[
1793028481,
0.2474
],
[
1793028782,
0.261
],
[
1793029082,
0.272
],
[
1793029382,
0.2452
],
[
1793029682,
0.1882
],
[
1793029982,
0.2238
],
[
1793030282,
0.2341
],
[
1793030582,
0.207
],
[
1793030882,
0.0729
],
[
1793031182,
0.044
],
[
1793031483,
0.0107
],
[
1793031782,
0.0546
],
[
1793032081,
0.0242
],
[
1793032383,
0.0361
],
[
1793032681,
0.05
],
[
1793032981,
0.0581
],
[
1793033282,
0.0517
],
[
1793033582,
0.0197
],
[
1793033881,
-0.0257
],
[
1793034182,
-0.0884
],
[
1793034482,
-0.0668
],
[
1793034783,
-0.0362
],
[
1793035082,
0.058
],
[
1793035381,
0.0628
],
[
1793035682,
0.0822
],
[
1793035983,
0.1481
],
[
1793036282,
0.1471
],
[
1793036581,
0.1075
],
[
1793036883,
0.0581
],
[
1793037181,
0.0468
],
[
1793037481,
-0.0345
],
[
1793037782,
-0.0744
],
[
1793038082,
0.0033
],
[
1793038381,
0.1024
],
[
1793038683,
0.0866
],
[
1793038981,
0.1042
],
[
1793039282,
0.0948
],
[
1793039582,
0.0571
],
[
1793039882,
0.0615
],
[
1793040181,
0.0412
],
[
1793040482,
0.0587
],
[
1793040782,
0.0444
],
[
1793041081,
0.0242
],
[
1793041383,
0.0448
],
[
1793041682,
0.0063
],
[
1793041983,
-0.019
],
[
1793042282,
-0.0496
],
[
1793042581,
-0.0331
],
[
1793042881,
0.0283
],
[
1793043182,
0.0462
],
[
1793043481,
0.0779
],
[
1793043782,
0.0311
],
[
1793044082,
0.0077
],
[
1793044381,
0.0752
],
[
1793044682,
0.0376
],
[
1793046182,
0
],
[
1793046300,
0.0097
],
[
1793046600,
0.0097
],
[
1793046900,
-0.0032
],
[
1793047200,
-0.0032
],
[
1793047500,
0
],
[
1793047800,
0
],
[
1793048100,
0.0065
],
[
1793052000,
0.0389
],
[
1793052300,
0.0519
],
[
1793052600,
0.0486
],
[
1793052900,
0.0778
],
[
1793053200,
0.0648
],
[
1793053500,
0.0583
],
[
1793053800,
0.0616
],
[
1793054100,
0.0745
],
[
1793054400,
0.0745
],
[
1793054700,
0.0519
],
[
1793055000,
0.0324
],
[
1793055300,
0.0389
],
[
1793055600,
-0.081
],
[
1793055900,
-0.1199
],
[
1793056200,
-0.1167
],
[
1793056500,
-0.1005
],
[
1793056800,
-0.0389
],
[
1793057100,
0.0421
],
[
1793057400,
0.0778
],
[
1793057700,
0.1134
],
[
1793058000,
0.1102
],
[
1793058300,
0.1296
],
[
1793058600,
0.1329
],
[
1793058900,
0.1491
],
[
1793059200,
0.1815
],
[
1793059500,
0.2074
],
[
1793059800,
0.1653
],
[
1793060100,
0.1815
],
[
1793060400,
0.1912
],
[
1793060700,
0.1912
],
[
1793061000,
0.188
],
[
1793061300,
0.1977
],
[
1793061600,
0.1815
],
[
1793061900,
0.1815
],
[
1793062200,
0.1847
],
[
1793062500,
0.175
],
[
1793062800,
0.2042
],
[
1793063100,
0.1685
],
[
1793063400,
0.175
],
[
1793063700,
0.175
],
[
1793064000,
0.0745
],
[
1793064300,
0.1491
],
[
1793064600,
0.1199
],
[
1793064900,
0.1945
],
[
1793065200,
0.2009
],
[
1793065500,
0.1556
],
[
1793065800,
0.1491
],
[
1793066100,
0.1912
],
[
1793066400,
0.1588
]
],
"now_pct": 0.1588,
"now_ts": 1793066400,
"n_cash": 80,
"n_total": 136
},
{
"key": "nas100",
"label": "NAS100",
"unit": "percent change from the cash close",
"anchor_ts": 1793046182,
"anchor_value": 712.31,
"cash_note": "QQQ cash from the 5-minute chain recorder, used as the NAS100 proxy \u2014 we bank QQQ per snapshot, not NDX",
"futures_product": null,
"futures_ticker": null,
"handoff_ts": null,
"series": [
[
1793020081,
-0.5054
],
[
1793021582,
-0.57
],
[
1793021882,
-0.6891
],
[
1793022182,
-0.6654
],
[
1793022482,
-0.7314
],
[
1793022781,
-0.6907
],
[
1793023082,
-0.5531
],
[
1793023382,
-0.6823
],
[
1793023682,
-0.6156
],
[
1793023982,
-0.7479
],
[
1793024283,
-0.73
],
[
1793024582,
-0.8325
],
[
1793024882,
-0.6015
],
[
1793025182,
-0.3959
],
[
1793025482,
-0.2962
],
[
1793025781,
-0.4043
],
[
1793026082,
-0.4345
],
[
1793026382,
-0.3394
],
[
1793026681,
-0.1137
],
[
1793026981,
-0.0253
],
[
1793027282,
0.1544
],
[
1793027583,
0.2443
],
[
1793027882,
0.4043
],
[
1793028182,
0.3117
],
[
1793028481,
0.285
],
[
1793028782,
0.2513
],
[
1793029082,
0.3294
],
[
1793029382,
0.3601
],
[
1793029682,
0.2892
],
[
1793029982,
0.3299
],
[
1793030282,
0.3498
],
[
1793030582,
0.3327
],
[
1793030882,
0.1053
],
[
1793031182,
0.1011
],
[
1793031483,
0.0689
],
[
1793031782,
0.1067
],
[
1793032081,
0.0639
],
[
1793032383,
0.0702
],
[
1793032681,
0.0927
],
[
1793032981,
0.0835
],
[
1793033282,
0.1179
],
[
1793033582,
0.0576
],
[
1793033881,
-0.014
],
[
1793034182,
-0.0983
],
[
1793034482,
-0.0505
],
[
1793034783,
0
],
[
1793035082,
0.1474
],
[
1793035381,
0.1979
],
[
1793035682,
0.1979
],
[
1793035983,
0.2993
],
[
1793036282,
0.2941
],
[
1793036581,
0.2274
],
[
1793036883,
0.1543
],
[
1793037181,
0.1207
],
[
1793037481,
0.0077
],
[
1793037782,
-0.0147
],
[
1793038082,
0.1109
],
[
1793038381,
0.2471
],
[
1793038683,
0.2165
],
[
1793038981,
0.2443
],
[
1793039282,
0.2456
],
[
1793039582,
0.1937
],
[
1793039882,
0.1937
],
[
1793040181,
0.1362
],
[
1793040482,
0.1727
],
[
1793040782,
0.1727
],
[
1793041081,
0.1685
],
[
1793041383,
0.1867
],
[
1793041682,
0.132
],
[
1793041983,
0.0576
],
[
1793042282,
0.0351
],
[
1793042581,
0.0674
],
[
1793042881,
0.1579
],
[
1793043182,
0.1965
],
[
1793043481,
0.2078
],
[
1793043782,
0.1179
],
[
1793044082,
0.0723
],
[
1793044381,
0.1432
],
[
1793044682,
0.1249
],
[
1793046182,
0
]
],
"now_pct": 0,
"now_ts": 1793046182,
"n_cash": 80,
"n_total": 80
}
],
"indices_note": "SPX and NAS100 are drawn as PERCENT CHANGE SINCE THE CASH CLOSE, not in their own points. That keeps them on a single shared axis, keeps their numbers away from this symbol's price scale, and makes the two directly comparable with each other \u2014 which is the reason to show both. They are market context and appear on every symbol; the price line's pairing to a specific future is a separate and stricter rule. Each index runs on its own cash prints up to the close and on its front future after it, with both legs divided by their own value at the anchor, so the handoff is continuous and the basis never shows up as a jump.",
"futures": null,
"ladder": {
"spot": 276.8,
"resistance": [
{
"level": 284,
"side": "resistance",
"rank": "largest",
"is_headline_wall": true,
"is_dollar_gamma_wall": false,
"kind": "call wall",
"dist_pts": 7.2,
"dist_pct": 2.601,
"net_contracts": 32569,
"call_contracts": 32915,
"put_contracts": 346,
"share_of_book": 0.0445,
"gex": 75677276.070912,
"call_heavy": true,
"does": "The heaviest call hedging overhead. On the usual assumption that dealers are LONG these calls, staying hedged means selling into rallies as price approaches \u2014 which is what would slow a move here."
},
{
"level": 283,
"side": "resistance",
"rank": "2nd largest",
"is_headline_wall": false,
"is_dollar_gamma_wall": false,
"kind": "secondary call concentration",
"dist_pts": 6.2,
"dist_pct": 2.24,
"net_contracts": 27141,
"call_contracts": 27762,
"put_contracts": 621,
"share_of_book": 0.0371,
"gex": 38659786.360832,
"call_heavy": true,
"does": "A further band of call hedging above price, lighter than the wall but closer to the tape than the numbers alone suggest. The same mechanics apply, at smaller size."
},
{
"level": 280,
"side": "resistance",
"rank": "3rd largest",
"is_headline_wall": false,
"is_dollar_gamma_wall": true,
"kind": "secondary call concentration",
"dist_pts": 3.2,
"dist_pct": 1.156,
"net_contracts": 21812,
"call_contracts": 27224,
"put_contracts": 5412,
"share_of_book": 0.0298,
"gex": 101998009.01452802,
"call_heavy": true,
"does": "A further band of call hedging above price, lighter than the wall but closer to the tape than the numbers alone suggest. The same mechanics apply, at smaller size."
}
],
"support": [
{
"level": 270,
"side": "support",
"rank": "3rd largest",
"is_headline_wall": false,
"is_dollar_gamma_wall": true,
"kind": "secondary put concentration",
"dist_pts": -6.8,
"dist_pct": -2.457,
"net_contracts": -44551,
"call_contracts": 2242,
"put_contracts": 46793,
"share_of_book": 0.0609,
"gex": -113795777.55161604,
"call_heavy": false,
"does": "A further band of put hedging below price, lighter than the wall. The same mechanics apply, at smaller size."
},
{
"level": 260,
"side": "support",
"rank": "largest",
"is_headline_wall": true,
"is_dollar_gamma_wall": false,
"kind": "put wall",
"dist_pts": -16.8,
"dist_pct": -6.069,
"net_contracts": -89740,
"call_contracts": 88,
"put_contracts": 89828,
"share_of_book": 0.1227,
"gex": -48843231.566592,
"call_heavy": false,
"does": "The heaviest put hedging below. On the usual assumption that dealers are SHORT these puts, staying hedged means buying as price falls toward it \u2014 which is what would cushion a move here."
},
{
"level": 250,
"side": "support",
"rank": "2nd largest",
"is_headline_wall": false,
"is_dollar_gamma_wall": false,
"kind": "secondary put concentration",
"dist_pts": -26.8,
"dist_pct": -9.682,
"net_contracts": -48233,
"call_contracts": 90,
"put_contracts": 48323,
"share_of_book": 0.0659,
"gex": -7684602.602752,
"call_heavy": false,
"does": "A further band of put hedging below price, lighter than the wall. The same mechanics apply, at smaller size."
}
],
"ranked_by": "netted contract count at the strike (call open interest minus put open interest), as a share of the netted contracts across the whole band",
"regime_boundary": null,
"magnet": {
"level": 274.3633269838849,
"dist_pts": -2.44,
"dist_pct": -0.88,
"label": "MAGNET \u2014 the opposite of a barrier",
"means": "The gamma-weighted centre of the book: the level hedging flow pulls price TOWARD, rather than a level that pushes price away. Price sitting on it is the pinned configuration."
},
"book": "forward",
"qualifier": "These are where dealer hedging CONCENTRATES. They are not levels price is obliged to respect: a big enough directional move overwhelms even a massive wall of gamma.",
"measured": {
"headline": "MEASURED, THE WALLS DID NOT ACT AS SUPPORT OR RESISTANCE. When the tape actually reached the call wall it closed back below it only 39.9% of the time (n=293) \u2014 against 41.4% for a level placed the same distance away with no gamma in it at all (difference -1.5 points, p=0.64). The put wall held 39.9% of the 218 times price reached it, against a placebo of 42.9% (-3.0 points, p=0.41). Neither is distinguishable from an arbitrary level, and the call wall was BROKEN more often than it held.",
"call_hold_rate": 0.3993,
"call_n": 293,
"put_hold_rate": 0.3991,
"put_n": 218,
"ranking_consequence": "So the ladder on the page CANNOT rank levels by a measured reliability, because no such reliability was found. It ranks them by raw concentration \u2014 how much of the book sits at that strike \u2014 and prints this null result beside the labels rather than implying a strength the data does not support."
},
"dealer_side_caveat": "WHICH SIDE ARE DEALERS ACTUALLY ON? This is the one thing gamma exposure cannot see, and it decides whether a wall brakes or accelerates. Every number here INFERS it from a convention \u2014 that customers sell calls and buy puts, so dealers end up long calls and short puts, which is what makes a call wall behave like a ceiling. When that convention is wrong the sign flips with it: if customers are BUYING calls, dealers are SHORT them, and staying hedged means buying INTO a rally through the same strike \u2014 the level becomes an accelerant instead of a brake. On the book these levels are drawn from, 9.4% of the gross gamma sits at the front expiry \u2014 the short-dated, retail-facing end of the chain, where that assumption is least safe. Nothing on this page can confirm the direction, so read the labels as where hedging is concentrated, not as which way it will push."
},
"regime": {
"book": "forward",
"has": true,
"regime": "amplifying",
"at_spot": -220258250,
"flip": 277.9109,
"flip_side": "below",
"flip_dist_pct": 0.401,
"spot": 276.8,
"census": {
"oi_used": 1011258,
"oi_missing_iv": 1162,
"n_session": 464,
"n_forward": 405,
"n_0dte": 59,
"n_rest": 405
},
"assumptions": "MODELLED, NOT MEASURED. Each contract is repriced with Black-Scholes gamma while its implied vol and days-to-expiry are held FIXED and spot is hypothetically moved (a sticky-strike assumption); r=0; same-day options are floored to 1 day of time so their gamma stays finite (they are removed entirely on the forward book); the contract universe is identical to the per-strike chart (+/-15% of spot, nearest 6 expiries); OI-weighted, never volume; calls +1, puts -1, netted per contract.",
"estimator": "Black-Scholes gamma from each contract's own implied vol \u2014 the same estimator family as this page's \"our own Black-Scholes solve\" figure (total_gex_x), never the vendor gamma and never fused with it."
},
"position_greeks": {
"book": "forward",
"has": true,
"spot": 276.8,
"as_of": "2026-10-26T20:23:02+00:00",
"src": "gamma/data/chain x-block + header texp/rate/q; OI-only; never volume",
"T_floor_minutes": 5,
"at_spot": {
"gamma": -195926355,
"gamma_0dte": null,
"gamma_rest": -195926355,
"charm": -156329277390,
"charm_per_day": -428006235,
"charm_0dte": null,
"charm_rest": -156329277390,
"vanna": 11074847047,
"vanna_per_volpt": 110748470,
"vanna_0dte": null,
"vanna_rest": 11074847047,
"charm_x": -156329279908,
"vanna_x": 11074847109
},
"hedge": {
"charm": {
"word": "buy",
"per_day": -428006235,
"say": "Time passing is forcing dealers to BUY the underlying to stay hedged (they are decaying into a shorter delta). Under the usual dealer-side convention only \u2014 if the convention is wrong, they sell instead."
},
"vanna": {
"word": "buy_if_iv_falls",
"per_volpt": 110748470,
"say": "If implied vol FALLS 1 point, dealers would have to BUY the underlying to stay hedged (and SELL if vol rises). Under the usual dealer-side convention only."
}
},
"charm_flip": 285.3516,
"charm_flip_dist_pct": 3.089,
"charm_flip_side": "below",
"vanna_flip": 286.8642,
"vanna_flip_dist_pct": 3.636,
"vanna_flip_side": "below",
"n_contracts": 366,
"n_0dte": 0,
"gamma_late": null,
"gamma_late_0dte": null,
"gamma_late_rest": null,
"gamma_late_flip": null,
"late_clock": {
"late_ts": null,
"late_iso": null,
"why": "this snapshot is already past 15:45 ET (or past 15 minutes before expiry) \u2014 a late-day reprice is not invented from a later clock",
"rule": "15:45 America/New_York, or 15 minutes before the front expiry instant, whichever is sooner"
},
"zero_dte_flow": {
"is_position": false,
"means": "Contracts traded TODAY in the same-day expiry. This is activity, not inventory. OCC open interest on a strike listed this morning is 0 all session; that 0 is real. Volume is never swapped in as a GEX weight.",
"by_strike": [
{
"k": 240,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 146,
"put_oi": 36,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 245,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 252,
"put_oi": 109,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 250,
"call_vol": 0,
"put_vol": 50,
"vol": 50,
"call_oi": 1,
"put_oi": 219,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 255,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 1,
"put_oi": 2707,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 257.5,
"call_vol": 2,
"put_vol": 0,
"vol": 2,
"call_oi": 3,
"put_oi": 2018,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 260,
"call_vol": 16,
"put_vol": 56,
"vol": 72,
"call_oi": 12,
"put_oi": 1121,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 261,
"call_vol": 7,
"put_vol": 0,
"vol": 7,
"call_oi": 13,
"put_oi": 1389,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 262,
"call_vol": 39,
"put_vol": 1,
"vol": 40,
"call_oi": 34,
"put_oi": 3194,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 263,
"call_vol": 20,
"put_vol": 8,
"vol": 28,
"call_oi": 36,
"put_oi": 2587,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 264,
"call_vol": 27,
"put_vol": 20,
"vol": 47,
"call_oi": 13,
"put_oi": 3392,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 265,
"call_vol": 28,
"put_vol": 46,
"vol": 74,
"call_oi": 223,
"put_oi": 3007,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 266,
"call_vol": 13,
"put_vol": 22,
"vol": 35,
"call_oi": 32,
"put_oi": 1457,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 267,
"call_vol": 14,
"put_vol": 558,
"vol": 572,
"call_oi": 75,
"put_oi": 4483,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 268,
"call_vol": 5,
"put_vol": 980,
"vol": 985,
"call_oi": 34,
"put_oi": 1195,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 269,
"call_vol": 2,
"put_vol": 1377,
"vol": 1379,
"call_oi": 224,
"put_oi": 8355,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 270,
"call_vol": 36,
"put_vol": 2591,
"vol": 2627,
"call_oi": 351,
"put_oi": 5132,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 271,
"call_vol": 299,
"put_vol": 2418,
"vol": 2717,
"call_oi": 421,
"put_oi": 3734,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 272,
"call_vol": 90,
"put_vol": 2332,
"vol": 2422,
"call_oi": 549,
"put_oi": 3064,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 273,
"call_vol": 986,
"put_vol": 3537,
"vol": 4523,
"call_oi": 1668,
"put_oi": 2027,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 274,
"call_vol": 514,
"put_vol": 16828,
"vol": 17342,
"call_oi": 1116,
"put_oi": 2273,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 275,
"call_vol": 2012,
"put_vol": 23476,
"vol": 25488,
"call_oi": 1446,
"put_oi": 4993,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 276,
"call_vol": 11324,
"put_vol": 53202,
"vol": 64526,
"call_oi": 2298,
"put_oi": 2558,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 277,
"call_vol": 65935,
"put_vol": 140851,
"vol": 206786,
"call_oi": 1691,
"put_oi": 1399,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 278,
"call_vol": 126864,
"put_vol": 62048,
"vol": 188912,
"call_oi": 4157,
"put_oi": 1217,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 279,
"call_vol": 78708,
"put_vol": 9732,
"vol": 88440,
"call_oi": 1297,
"put_oi": 540,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 280,
"call_vol": 46660,
"put_vol": 2049,
"vol": 48709,
"call_oi": 12185,
"put_oi": 149,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 281,
"call_vol": 11792,
"put_vol": 759,
"vol": 12551,
"call_oi": 3154,
"put_oi": 147,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 282,
"call_vol": 3406,
"put_vol": 67,
"vol": 3473,
"call_oi": 30624,
"put_oi": 50,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 283,
"call_vol": 2802,
"put_vol": 33,
"vol": 2835,
"call_oi": 15522,
"put_oi": 1,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 284,
"call_vol": 138,
"put_vol": 25,
"vol": 163,
"call_oi": 1307,
"put_oi": 16,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 285,
"call_vol": 104,
"put_vol": 47,
"vol": 151,
"call_oi": 3065,
"put_oi": 40,
"call_oi_zero": false,
"put_oi_zero": false,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 286,
"call_vol": 29,
"put_vol": 0,
"vol": 29,
"call_oi": 680,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 287,
"call_vol": 110,
"put_vol": 12,
"vol": 122,
"call_oi": 212,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 288,
"call_vol": 1,
"put_vol": 16,
"vol": 17,
"call_oi": 32,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 289,
"call_vol": 0,
"put_vol": 27,
"vol": 27,
"call_oi": 41,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 290,
"call_vol": 0,
"put_vol": 32,
"vol": 32,
"call_oi": 74,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 291,
"call_vol": 0,
"put_vol": 25,
"vol": 25,
"call_oi": 25,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 292,
"call_vol": 0,
"put_vol": 19,
"vol": 19,
"call_oi": 26,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 293,
"call_vol": 3,
"put_vol": 16,
"vol": 19,
"call_oi": 4,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 294,
"call_vol": 0,
"put_vol": 20,
"vol": 20,
"call_oi": 9,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 295,
"call_vol": 0,
"put_vol": 16,
"vol": 16,
"call_oi": 2,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 296,
"call_vol": 0,
"put_vol": 16,
"vol": 16,
"call_oi": 7,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 297,
"call_vol": 0,
"put_vol": 16,
"vol": 16,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 298,
"call_vol": 0,
"put_vol": 14,
"vol": 14,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 299,
"call_vol": 0,
"put_vol": 9,
"vol": 9,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 300,
"call_vol": 0,
"put_vol": 6,
"vol": 6,
"call_oi": 103,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 301,
"call_vol": 0,
"put_vol": 6,
"vol": 6,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 302,
"call_vol": 0,
"put_vol": 16,
"vol": 16,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 303,
"call_vol": 0,
"put_vol": 17,
"vol": 17,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 304,
"call_vol": 0,
"put_vol": 2,
"vol": 2,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 305,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 306,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 307,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 4,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 308,
"call_vol": 0,
"put_vol": 2,
"vol": 2,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 309,
"call_vol": 0,
"put_vol": 2,
"vol": 2,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 310,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 6,
"put_oi": 0,
"call_oi_zero": false,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 311,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 312,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 313,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 314,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 315,
"call_vol": 0,
"put_vol": 0,
"vol": 0,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 316,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 317,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
},
{
"k": 318,
"call_vol": 0,
"put_vol": 1,
"vol": 1,
"call_oi": 0,
"put_oi": 0,
"call_oi_zero": true,
"put_oi_zero": true,
"call_vol_missing": false,
"put_vol_missing": false
}
],
"totals_in_band": {
"call_vol": 351986,
"put_vol": 323410,
"vol": 675396,
"n": 128,
"n_oi_zero": 52,
"n_oi_zero_with_vol": 28,
"n_oi_pos": 76,
"vol_on_oi_zero": 297,
"vol_on_oi_pos": 675099,
"vol_missing": 0,
"oi_known": 128
},
"totals_all_0dte": {
"call_vol": 351988,
"put_vol": 323433,
"vol": 675421,
"n": 168,
"n_oi_zero_with_vol": 33,
"note": "Includes same-day contracts outside the \u00b115% GEX band. In-band overlay can hide lotto prints; this total exists so they are not silent."
},
"gap": {
"oi_zero_with_vol": "Listed this morning, trading, no standing OI \u2014 the VolSignals 0DTE lines we cannot sign.",
"oi_pos_with_vol": "Friday weeklies / leftover OI: inventory is in zero_dte_profile; this volume is still today's prints, not a second position.",
"vol_missing": "day.volume not supplied (DATA_GAP). Distinct from vol=0 (NO_FLOW)."
}
},
"census": {
"n_session": 396,
"n_forward": 366,
"n_0dte": 30,
"xiv_used": 396,
"xiv_missing": 94,
"texp_missing": 0,
"q_empty": 0,
"rate_missing": 0,
"xcharm_known": 396,
"xcharm_missing": 94,
"xvanna_known": 396,
"xvanna_missing": 94,
"why_excluded": "oi missing \u2192 not a position. oi=0 \u2192 no standing inventory (typical same-morning 0DTE). xiv empty \u2192 x-block unidentifiable, not filled from vendor iv. texp empty \u2192 tenor unknown, not replaced with the 1-day regime floor."
},
"assumptions": "MODELLED, NOT MEASURED. Same signed book as the per-strike GEX chart (\u00b115% of spot, nearest 6 expiries, OI-only, never volume). Time remaining is the clock to the banked expiry instant, not a 1-day floor \u2014 so 0DTE gamma and charm into the close are visible here and hidden on the regime curve above (that curve keeps the 1-day floor so it stays comparable to the banked history). The late-day gamma slice is the SAME open-interest book with less time left \u2014 not a forecast of trades or of price. 0DTE contracts with oi=0 do not appear. The dealer-side sign is the usual convention (customers sell calls / buy puts) and is often wrong; VolSignals showed 20 of 36 large 0DTE lines carrying the wrong sign under it. Read the NUMBERS as concentrations; read the DIRECTION as an assumption.",
"estimator": "Black-Scholes gamma, vanna and charm from each contract's locally-solved xiv (never vendor iv), r and q from the snapshot header (same inputs as the x-block), sticky-strike, OI-weighted, calls +1 / puts -1. The xcharm/xvanna sums (at_spot.charm_x / vanna_x) use the chain's already-banked local greeks at A2C_TFLOOR and are NEVER fused with the repriced live-T curves. A disagreement between at_spot and at_spot.charm_x on 0DTE is information: the archive is pinned at ~12 hours all session.",
"expiry_convention": "Remaining time is ACT/365.25 years from the snapshot clock to the banked texp INSTANT (AM 09:30 ET for SPX/NDX/RUT monthlies, PM 16:00 ET for ETFs, singles and weeklies). Same-day tenor is floored to 5 minutes so gamma stays finite. This is NOT the 1-day regime floor and NOT the archive's 12-hour x-block floor.",
"dealer_side_caveat": "WHICH SIDE ARE DEALERS ACTUALLY ON? These greeks cannot see it. Every sign here infers dealers long calls and short puts. When customers have been BUYING calls, dealers are short them and a \"long\" line is actually a short \u2014 the absorb/amplify label flips. Nothing on this page confirms the direction. VolSignals, 2026-08-31: 20 of 36 SPX 0DTE lines over 300 contracts carried the opposite sign under this convention.",
"not_the_regime": "These numbers are not an input to verdict.regime / decay / pin / lean.",
"unit_gamma": "dealer gamma, dollars per 1% move \u2014 time-aware T from texp, NOT the 1-day-floor regime curve",
"unit_charm": "dealer dollar-delta per year (divide by 365.25 for per calendar day)",
"unit_vanna": "dealer dollar-delta per 1.00 vol (divide by 100 for per vol-point)"
},
"charm_field": {
"v": 1,
"has": true,
"why": null,
"sym": "IWM",
"as_of": "2026-10-26T20:23:02+00:00",
"ts": 1793046182,
"spot": 276.8,
"book": "forward",
"clock": {
"session": "2026-10-27",
"from_iso": "2026-10-27T13:30:00Z",
"to_iso": "2026-10-27T20:00:00Z",
"step_min": 5,
"steps": 79,
"expiry_instant_iso": "2026-10-27T20:00:00Z",
"early_close": false,
"holiday_source": "https://www.nyse.com/trade/hours-calendars",
"holiday_calendar_ok": true
},
"levels": [
271.5,
272,
272.5,
273,
273.5,
274,
274.5,
275,
275.5,
276,
276.5,
277,
277.5,
278,
278.5,
279,
279.5,
280,
280.5,
281,
281.5,
282
],
"level_step": 0.5,
"times": [
1793107800,
1793108100,
1793108400,
1793108700,
1793109000,
1793109300,
1793109600,
1793109900,
1793110200,
1793110500,
1793110800,
1793111100,
1793111400,
1793111700,
1793112000,
1793112300,
1793112600,
1793112900,
1793113200,
1793113500,
1793113800,
1793114100,
1793114400,
1793114700,
1793115000,
1793115300,
1793115600,
1793115900,
1793116200,
1793116500,
1793116800,
1793117100,
1793117400,
1793117700,
1793118000,
1793118300,
1793118600,
1793118900,
1793119200,
1793119500,
1793119800,
1793120100,
1793120400,
1793120700,
1793121000,
1793121300,
1793121600,
1793121900,
1793122200,
1793122500,
1793122800,
1793123100,
1793123400,
1793123700,
1793124000,
1793124300,
1793124600,
1793124900,
1793125200,
1793125500,
1793125800,
1793126100,
1793126400,
1793126700,
1793127000,
1793127300,
1793127600,
1793127900,
1793128200,
1793128500,
1793128800,
1793129100,
1793129400,
1793129700,
1793130000,
1793130300,
1793130600,
1793130900,
1793131200
],
"dollar_per_5m": "[79 x 22 matrix \u2014 api.php?sym=IWM carries it in full]",
"es_per_5m": null,
"flip_by_time": [
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
"pockets": [],
"next_60m_at_spot": {
"level": 277,
"steps": 12,
"dollar": -18310149.7,
"es": null,
"word": "buy",
"from_iso": "2026-10-27T13:30:00Z",
"to_iso": "2026-10-27T14:25:00Z"
},
"es_liquidity_context": null,
"units": {
"dollar_per_5m": "dealer dollar-delta the hedge must trade over ONE 5-minute step at that level, with the index standing still: the same charm sum as the panel above (dollar-delta per year) x 5/525960.",
"es_per_5m": "dollar_per_5m divided by (that index level expressed in the paired future x the future's contract multiplier). The index-to-future conversion is the page's existing anchor ratio (futures.php) and is applied when this payload is READ, not when it is banked, so it always uses the live front month.",
"sign": "negative = dealers BUY under the convention; positive = they SELL",
"word": "\"buy\" / \"sell\" is the word for the sign above. next_60m_at_spot.word is \"flat\" only when the 60-minute sum is exactly zero or unavailable \u2014 no size threshold is invented for it.",
"level_step": "0.5 dollars \u2014 the level axis is snapped to whole steps. The regime curve's own grid is coarser than this across +/-2%."
},
"pocket_rule": "A POCKET is a run of cells whose sign DISAGREES with the sign of the band around them.\n\n Definition, operational, so the reader and the pa dashboard mean the same thing by the word:\n 1. In each time column the levels are split at that column's flip (the whole column if there\n is no flip inside the grid).\n 2. Each side's BAND SIGN is the sign held by most of that side's cells (ties go to the sign of\n the side's sum).\n 3. A cell is a candidate when its own sign is non-zero and differs from its side's band sign.\n 4. Candidates touching each other in time or in level (4-neighbour) form one pocket.\n 5. A pocket is kept only if it spans at least min_t time steps and min_l levels.",
"method": "The charm sum of the forward book, evaluated on a grid instead of at one instant. For each cell (t, S) every contract is repriced with remaining time from t to its OWN banked expiry instant (ACT/365.25, floored to 5 minutes) and with spot held at S; its implied vol, strike, open interest, r and q are unchanged (sticky-strike, exactly as the panel above). A contract whose expiry instant has already passed at t is EXCLUDED from that column and counted (census.expired_at_last_step) \u2014 never floored into a position that no longer exists. Volume is never used. This is a picture of the SAME open interest with less time left, not a forecast of trades or of price.",
"assumptions": "MODELLED, NOT MEASURED. Same signed book as the per-strike GEX chart (\u00b115% of spot, nearest 6 expiries, OI-only, never volume). Time remaining is the clock to the banked expiry instant, not a 1-day floor \u2014 so 0DTE gamma and charm into the close are visible here and hidden on the regime curve above (that curve keeps the 1-day floor so it stays comparable to the banked history). The late-day gamma slice is the SAME open-interest book with less time left \u2014 not a forecast of trades or of price. 0DTE contracts with oi=0 do not appear. The dealer-side sign is the usual convention (customers sell calls / buy puts) and is often wrong; VolSignals showed 20 of 36 large 0DTE lines carrying the wrong sign under it. Read the NUMBERS as concentrations; read the DIRECTION as an assumption.",
"dealer_side_caveat": "WHICH SIDE ARE DEALERS ACTUALLY ON? These greeks cannot see it. Every sign here infers dealers long calls and short puts. When customers have been BUYING calls, dealers are short them and a \"long\" line is actually a short \u2014 the absorb/amplify label flips. Nothing on this page confirms the direction. VolSignals, 2026-08-31: 20 of 36 SPX 0DTE lines over 300 contracts carried the opposite sign under this convention.",
"not_the_regime": "These numbers are not an input to verdict.regime / decay / pin / lean.",
"census": {
"n_contracts": 366,
"n_used_max": 366,
"expired_at_last_step": 0,
"cells": 1738,
"kernel_vs_pg_charm_rel_err": 6.10021870014824e-13
},
"n_contracts": 366,
"compute_ms": 222,
"book_note": "The session has closed, so this field is built on the FORWARD book \u2014 the contracts that still exist for the session it describes.",
"es_why": "this root has no paired future on this page (futures.php pairs ES to SPY/SPX, NQ to QQQ, RTY to IWM and nothing to single names or VIX)"
},
"conventional_levels": {
"band_pct": 2,
"premise": "Dealers are assumed LONG calls and SHORT puts (customers buy puts / sell calls). That is a convention, not a measurement. VolSignals, 2026-08-31, on SPX 0DTE: 20 of 36 lines with >300 contracts had the OPPOSITE sign. When the convention is wrong, every label below flips: an amplifier absorbs, an absorber amplifies.",
"amplifiers": [
{
"level": 275,
"rank": 1,
"gex": -90960431.331072,
"net_oi": -17951,
"call_oi": 7705,
"put_oi": 25656,
"dist_pct": -0.6502890173410446,
"dist_pts": -1.8000000000000114,
"role": "amplifier",
"does": "Under the usual assumption that dealers are short gamma here, hedging would AMPLIFY a move through this strike. We cannot see who is actually short. If customers bought these options, dealers are short and this behaves as a test; if the convention is wrong, it absorbs instead."
},
{
"level": 272,
"rank": 2,
"gex": -75180943.112192,
"net_oi": -22729,
"call_oi": 2932,
"put_oi": 25661,
"dist_pct": -1.7341040462427786,
"dist_pts": -4.800000000000011,
"role": "amplifier",
"does": "Under the usual assumption that dealers are short gamma here, hedging would AMPLIFY a move through this strike. We cannot see who is actually short. If customers bought these options, dealers are short and this behaves as a test; if the convention is wrong, it absorbs instead."
},
{
"level": 274,
"rank": 3,
"gex": -51285867.02873601,
"net_oi": -11597,
"call_oi": 3729,
"put_oi": 15326,
"dist_pct": -1.0115606936416226,
"dist_pts": -2.8000000000000114,
"role": "amplifier",
"does": "Under the usual assumption that dealers are short gamma here, hedging would AMPLIFY a move through this strike. We cannot see who is actually short. If customers bought these options, dealers are short and this behaves as a test; if the convention is wrong, it absorbs instead."
}
],
"absorbers": [
{
"level": 280,
"rank": 1,
"gex": 101998009.01452802,
"net_oi": 21812,
"call_oi": 27224,
"put_oi": 5412,
"dist_pct": 1.1560693641618456,
"dist_pts": 3.1999999999999886,
"role": "absorber",
"does": "Under the usual assumption that dealers are long gamma here, hedging would ABSORB a move through this strike \u2014 selling rallies, buying dips. We cannot see who is actually long. If the convention is wrong, it amplifies instead."
},
{
"level": 282,
"rank": 2,
"gex": 49086440.84582401,
"net_oi": 14448,
"call_oi": 15238,
"put_oi": 790,
"dist_pct": 1.8786127167630018,
"dist_pts": 5.199999999999989,
"role": "absorber",
"does": "Under the usual assumption that dealers are long gamma here, hedging would ABSORB a move through this strike \u2014 selling rallies, buying dips. We cannot see who is actually long. If the convention is wrong, it amplifies instead."
},
{
"level": 279,
"rank": 3,
"gex": 36372908.11878401,
"net_oi": 6830,
"call_oi": 9283,
"put_oi": 2453,
"dist_pct": 0.7947976878612675,
"dist_pts": 2.1999999999999886,
"role": "absorber",
"does": "Under the usual assumption that dealers are long gamma here, hedging would ABSORB a move through this strike \u2014 selling rallies, buying dips. We cannot see who is actually long. If the convention is wrong, it amplifies instead."
}
],
"book": "forward",
"as_of": "2026-10-26T20:23:02+00:00",
"src": "per-strike OI-weighted dollar gamma, same snapshot as the walls; dealer-side sign is a convention"
},
"migration": {
"from_iso": "2026-10-26T13:08:01+00:00",
"to_iso": "2026-10-26T20:23:02+00:00",
"n_snapshots": 80,
"call_wall": [
280,
280
],
"put_wall": [
270,
270
],
"gamma_center": [
273.99236202165093,
274.7747152786501
],
"spot": [
275.85,
276.8
],
"local_gamma_at_spot": [
6172773.521067005,
26715362.85056
],
"sign_flips": 0
},
"census": {
"n": 5376,
"in_band": 816,
"oi_known": 816,
"oi_missing": 0,
"oi_zero": 326,
"g_vendor": 816,
"g_x": 470,
"used": 816,
"g_iv": 59,
"g_vendor_fallback": 757,
"g_vendor_same_day": 128,
"g_iv_below_floor": 59,
"g_iv_no_vendor": 0,
"g_vendor_precise": 377,
"gamma_precision_floor": 0.001
},
"freshness": {
"chain_day": "2026-10-26",
"chain_asof": "2026-10-26T20:23:02+00:00",
"chain_phase": "post_close",
"chain_built": "2026-10-26T21:50:51Z",
"now_utc": "2026-10-27T10:03:38Z",
"tiers": [
{
"key": "chain",
"label": "options chain",
"ts": "2026-10-26T20:23:02+00:00",
"cadence": 300,
"phase": "held",
"means": "The full option chain, captured every 5 minutes while the market is open and held at the last reading once it closes. Outside trading hours a held clock is correct behaviour, not a failure."
},
{
"key": "build",
"label": "profile build",
"ts": "2026-10-26T21:50:51Z",
"cadence": 600,
"phase": "held",
"means": "When the per-strike gamma profile on this page was last rebuilt from the chain archive. It rebuilds every 10 minutes while the market is open and holds at the last build once it closes \u2014 a held clock out of hours is correct, not a failure."
},
{
"key": "open interest",
"ts": "2026-10-26",
"cadence": 86400,
"mode": "date",
"phase": "settled",
"means": "Settled overnight by the clearing house for the PREVIOUS session. It does not move intraday \u2014 market structure, not neglect."
},
{
"key": "daily history",
"ts": "2026-09-18",
"cadence": 86400,
"mode": "date",
"phase": "settled",
"means": "The banked daily-close spine the history charts draw. One row per session."
},
{
"key": "runs archive",
"label": "bull/bear archive",
"ts": "2026-10-26",
"cadence": 86400,
"mode": "date",
"phase": "settled",
"grace": 216000,
"means": "Daily closes from 2000-05-26 to 2026-10-26, used ONLY by the optional bull/bear runs block. It extends by one row per completed session, so a day behind is normal and a week behind is not."
}
],
"chain_cadence": "every 5 minutes in regular trading hours, plus a pre-open and a post-close bracket",
"open_interest": "PREVIOUS session, settled overnight by the clearing house. It does not move intraday \u2014 a market-structure fact, not a defect.",
"history_last": "2026-09-18",
"history_gex_window": "from 2026-03-02 (the OCC open-interest purchase); continues past 2026-08-04 from the live chain recorder rather than ending there",
"validation_built": "2026-10-27T09:20:08Z"
},
"method": {
"weighting": "OI-ONLY. Never volume. A contract with no reported open interest is EXCLUDED and COUNTED (see census.oi_missing), never treated as zero.",
"oi_is_stale_by_design": "Open interest is the PREVIOUS session's settled figure, published overnight by the clearing house. It does not move intraday. A strike listed this morning legitimately reads 0 all session while millions of contracts trade. Market structure, not a data defect.",
"formula": "gex = sign * gamma * oi * 100 * spot^2 * 0.01, sign +1 call / -1 put, NET at each strike",
"band": "+/-15% of spot, nearest 6 expiries \u2014 matched to the opra-gex v2 archive the validation history is built on",
"cadence": "the recorder sweeps every 5 minutes during regular trading hours, plus a pre-open and a post-close bracket",
"primary": "NETTED CONTRACT COUNTS PER STRIKE (net_oi = call OI - put OI) are the PRIMARY read. Dollar gamma at a single strike explodes as spot approaches it and collapses as spot leaves, so a dollar-ranked wall is a moving target; the contract count is not. Dollar gamma (gex) is reported beside it as the SECONDARY.",
"construction_gap": "THE LIVE READ AND THE BACKTEST ARE NOT THE SAME CONSTRUCTION, and a reader must not assume the one validates the other exactly. This file computes per-strike NETTED CONTRACT COUNTS from the 5-minute chain recorder, which banks per-contract open interest for all 9 roots \u2014 but only from 2026-08-05 forward. The Part B validation history (2026-02 .. 2026-08-04) has no per-strike open interest at all; only the DAILY DOLLAR-GEX AGGREGATE exists back there, which is the very construction the contract-count rule warns against. So the hit rates on this page were measured on the aggregate, while the live regime read is built on the netted counts.",
"estimators": "total_gex (and the walls and cumulative flip) use gamma RECOMPUTED AT FULL PRECISION from the vendor's own implied vol wherever it is valid and the row identifiable, else the vendor gamma (levels_estimator=iv, GEX FIX 4: a 4-decimal vendor cannot move the levels; --gamma-mode=vendor restores vendor gamma as given); a snapshot from a source with no vendor greeks (Yahoo, delayed) uses our own Black-Scholes gamma instead and says levels_estimator=x. The regime curve is repriced from the vendor IV in every mode. total_gex_x is always our own Black-Scholes gamma. One estimator per snapshot, never mixed \u2014 see census.g_vendor / census.g_x.",
"position_greeks": "Charm, vanna and a time-aware gamma are computed from the SAME signed OI-weighted book as the regime curve, with remaining time to the banked texp instant (5-minute floor) and locally-solved xiv \u2014 never vendor iv, never the 1-day floor. They do not replace the regime verdict. 0DTE volume is counted as today's activity and is never used as a weight. Dealer-side sign is the usual convention and is labelled as one."
}
}
Full payload including every snapshot, the per-strike profile and the complete validation tables: api.php?sym=IWM&full=1 · text: ?format=text · Part B only: ?validation=1