gex — blast, or jagged broken shards?

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?".

Save data (JSON)
SPY QQQ IWM SPX AAPL MSFT NVDA TSLA VIX Optional data: Bull & bear runs · on

The verdict · SPX · session book

SET UP TO BLAST

Dealers are short gamma where price is trading, so hedging pushes WITH moves.

BLAST CONFIGURATION WITH A MAGNET AGAINST IT. Dealers are short gamma at this price, so hedging adds to moves rather than absorbing them, but price is sitting on the gamma centre of mass, which is where the book's pull is concentrated. Little of this gamma expires today, so the amplifying configuration carries forward into the sessions ahead rather than resetting at the close.

Directional lean — the secondary, weaker output
NONE

NO DIRECTIONAL LEAN. Dealer gamma describes the SHAPE of the path — how big and how jagged — not which way it points. The asymmetries that could carry a lean (which wall is closer, where the centre of mass sits, vanna, charm) do not agree strongly enough here to name a side, and on this stack none of them beat simply counting how often sessions close up.

Gamma is not destiny. 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.

As of 2026-09-15T16:38:01+00:00 (rth), spot 7,584.90. Built on the book as it stands in the latest 5-minute snapshot, including contracts expiring today. Regime read from net dealer gamma inside +/-1% of spot, as a share of the gross gamma in that band; it nets 100% one way (called flat below 20%), over 31 strikes within ±1% of price.

The range the option market is charging for

Daily breakeven 1.12% front at-the-money implied vol 17.85% (expiry 2026-09-16) / sqrt(252)
If we used gamma instead 0.62% middle half 0.46%–0.89% · quintile 1 of banked history, n=28. Shown for completeness: the measurement below found gamma adds nothing to the breakeven.
Wall-to-wall corridor 3.30% put wall 7,550.00 to call wall 7,800.00
Last session delivered 0.60% 0.54× the breakeven — is the tape paying for the gamma. Sampled on the 5-minute grid, so it is a floor on the true session range, not the true high and low.

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

Of the book that survives, at the front expiry 11.0% share of the session book's gross gamma expiring today — this is what makes the verdict say "slow decay" (fast at 50%).
Same-day expiry, session book 11.0% of the gross gamma on the session book sits at 2026-09-15's own expiry.
Of the gamma right at price 75% disappeared with that expiry — -$1.40B on the session book became -$1.40B on the forward book. Today's stabiliser is not tomorrow's unless it is rolled.

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-09-15

Walls MIGRATING through a session is more informative than their level. Across 39 snapshots the call wall moved 7,750.00 → 7,800.00, the put wall 7,600.00 → 7,550.00, and the gamma centre of mass 7,596.57 → 7,569.28. 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.

Overnight — ES against SPX's frozen walls

ES is essentially flat since the cash close, which puts SPX at about 7,584.16. That sits 2.85% below the call wall at 7,800.00 and 0.45% above the put wall at 7,550.00. The wall levels themselves are frozen from the last session's settled open interest and do not move until the next session settles.

E-mini S&P 500 (ESZ6) 7,656.50 345s ago · front month, resolved by live volume
As SPX-equivalent 7,584.16 -0.01% since the cash close at 7,584.90
vs the frozen call wall 7,800.00 price is 2.85% below it right now
vs the frozen put wall 7,550.00 price is 0.45% above it right now

The conversion, so it is checkable: ES shown as SPX-equivalent: ES now 7,656.50, ES at the Tue close 7,657.25, so 7,584.90 x (7,656.50 / 7,657.25) = 7,584.16. The move in the future since the cash close, applied to SPX's price at that close — the basis and the index/ETF ratio cancel out, so no ratio is estimated.

Two different clocks, on purpose. The wall levels and the futures price are deliberately from DIFFERENT CLOCKS. Wall levels come from settled open interest, which the clearing house publishes overnight and does not revise during a session — so a wall is a constant until the next settlement, not a stale reading. Futures trade around the clock. Comparing the two is what shows whether price is drifting toward or away from the level while the cash market is shut.
Overnight liquidity 13.5% of the regular session's volume per 5-minute bar (732 vs 5,424). Overnight futures liquidity is far thinner than the regular session. A wall approached at 03:00 on light volume is not the same event as one approached at 14:00, and neither this page nor the dealer hedging behind the wall treats it as one.
Hedging is not active overnight read it as position, not pressure The dealer hedging that would enforce a wall is largely NOT ACTIVE while the cash market is shut, so an overnight approach to a level is not the same event as a daytime one. The caveat about which side dealers are actually on applies here more strongly, not less.
No predictive claim 37.2% vs 38.0% This overlay adds no predictive power, and this app measured that: when price reached the call wall it closed back below only 37.2% of the time against 38.0% for an arbitrary level the same distance away. The overlay shows WHERE price is relative to a frozen level, nothing more.

Does the option book calm this move or amplify it? — SPX · session book

Right now, at price AMPLIFYING moves Dealers are short gamma where price is, so hedging runs with moves — an accelerant that lets pushes travel further.
Dealer gamma at price -$44.22B per 1% move. Positive = long gamma (calms); negative = short gamma (amplifies).
The flip — the regime boundary 7,637.07 0.69% above 0.69% above price (7,584.90). On the other side of it the book flips to calming moves.

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 — SPX · session book

Time passing — charm BUYING 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. Source: gamma/data/chain x-block + header texp/rate/q; OI-only; never volume. As of 2026-09-15T16:38:01+00:00. These numbers are not an input to verdict.regime / decay / pin / lean.
Dealer delta drifting per day -$24.17B dollar-delta per calendar day at price. Positive = decaying longer → sell to stay flat.
Of that, same-day vs the rest -$721.50B 0DTE / -$8,108.09B rest Same-day charm is the late-session drift. The two are shown separately so 0DTE cannot hide inside the total. 215 same-day contracts in this book.
Charm flip — where time-decay changes sign 8,009.68 5.60% The price where dealer hedging from time passing flips from buy to sell (or the other way) — the price where time-decay hedge flow changes sign. VolSignals' charm flip lands on a measured short line when the position is right; ours lands on the same conventional book, so the location is a concentration, not a confirmed short.
Implied-vol shift — vanna +$4.67B 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. Per 1 vol-point, dollar-delta. Source: same book, same as-of 2026-09-15T16:38:01+00:00.
Our chain's own charm / vanna (not fused) -$10,665.42B / +$510.79B The already-banked local greeks from the 5-minute chain (xcharm / xvanna), summed OI-weighted at this spot. A second estimator, never averaged into the curves. Census: 2160 known, 657 missing. The archive pins 0DTE at ~12 hours all session, so these do not explode into the close — that disagreement with the live-T tiles is information, never averaged.
Same book at 15:45 ET — less time left -$13.90B 0DTE Same open-interest book, repriced with remaining time as of 2026-09-15T19:45:00Z. Not a forecast of trades or of price. Whole-book late -$43.11B per 1%. Source: gamma/data/chain x-block + header texp/rate/q; OI-only; never volume. As of 2026-09-15T16:38:01+00:00.

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.

Today's 0DTE prints are not a position. In-band, same-day contracts printed 1,682,092 contracts of volume across 432 listed lines; 11 of those lines still report open interest 0 (OCC has not settled today's listings). Including strikes outside the ±15% band: 1,689,034 contracts (15 oi=0-with-volume lines) — lotto prints outside the GEX window are not silent. That volume is activity, counted here so it is visible, and it is never used as a weight on gamma, charm or vanna — substituting it inverted the sign of this book's GEX in 2026-08. As of 2026-09-15T16:38:01+00:00.

Time decay hedging for the session ahead · SPX

What this is. Charm is how the dealers' hedge drifts as the clock runs, even if price never moves. Across is time of day; up is where the index would be. Green means time forces them to SELL, red means it forces them to BUY, and the stronger the colour the bigger the trade. The colours assume the usual dealer-side convention (customers sell calls and buy puts) — and that convention is often wrong.
The next hour, at today's price -$1.01B Dealers would BUY under the convention — -2,648.1 ES contracts. 12:40 to 13:35 New York, at 7,585.00, with the index standing still. A five-minute bar trades about 5,424 contracts in the session and 732 overnight.
Where the sign flips, and where it drifts none 12:40 no flip in the grid · 13:50 no flip in the grid · 14:55 no flip in the grid · 16:00 7,498.76. Above the line and below it the book pulls opposite ways.
The session this describes 2026-09-15 12:40 to 16:00 New York in 5-minute steps (41 of them) across 61 levels, 7,435.00 to 7,735.00. Built on the live session book, the one dealers are hedging right now.
Pocket 1 · against the band around it 7,730.00–7,735.00 From 15:40 to 16:00 New York, dealers SELL here while the band around it pulls the other way. Strongest cell +$496.7M (1,273.0 ES). Made by: 7,725.00 2026-09-15 call, 7,849 open contracts (+$275.9M); 7,745.00 2026-09-15 call, 1,326 open contracts (-$54.1M); 7,750.00 2026-09-15 call, 2,400 open contracts (-$47.6M).
Pocket 2 · against the band around it 7,680.00–7,685.00 From 15:50 to 16:00 New York, dealers SELL here while the band around it pulls the other way. Strongest cell +$60.1M (155.0 ES). Made by: 7,680.00 2026-09-15 call, 3,240 open contracts (+$225.6M); 7,690.00 2026-09-15 call, 1,579 open contracts (-$123.7M); 7,695.00 2026-09-15 call, 2,022 open contracts (-$18.7M).

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.
Contracts. ES contracts = the cell's dollars / (that index level in ES points x 50). The index level is put into ES points with this page's existing anchor ratio: ES closed at 7,657.25 while SPX stood at 7,584.90, so one SPX point is 1.009539 ES points. The basis and any index/ETF ratio cancel because both sit in the anchor. Applied when this payload is read, so it always uses the live front month.
Modelled, not measured — The charm sum of the session 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 · SPX

Not a VolSignals "test." They reserved that word for a measured market-maker short. These are the most-negative (amplifiers) and most-positive (absorbers) dollar-gamma strikes inside ±2% of price under the usual dealer-side convention. 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.
Amplifier 1 · -0.46% from price 7,550.00 -$4.90B dealer gamma per 1% · 24,312 net contracts. 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.
Amplifier 2 · -1.12% from price 7,500.00 -$4.90B dealer gamma per 1% · 38,999 net contracts. 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.
Amplifier 3 · +0.20% from price 7,600.00 -$4.74B dealer gamma per 1% · 11,012 net contracts. 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.
Absorber 1 · +1.25% from price 7,680.00 +$1.31B dealer gamma per 1% · 10,952 net contracts. Under the usual assumption that dealers are long gamma here, hedging would ABSORB a move through this strike — selling rallies, buying dips. We cannot see who is actually long. If the convention is wrong, it amplifies instead.
Absorber 2 · +1.52% from price 7,700.00 +$852.4M dealer gamma per 1% · 9,537 net contracts. Under the usual assumption that dealers are long gamma here, hedging would ABSORB a move through this strike — selling rallies, buying dips. We cannot see who is actually long. If the convention is wrong, it amplifies instead.
Absorber 3 · +1.85% from price 7,725.00 +$652.8M dealer gamma per 1% · 12,866 net contracts. Under the usual assumption that dealers are long gamma here, hedging would ABSORB a move through this strike — selling rallies, buying dips. We cannot see who is actually long. If the convention is wrong, it amplifies instead.

As of 2026-09-15T16:38:01+00:00 · session book · source: per-strike OI-weighted dollar gamma, same snapshot as the walls; dealer-side sign is a convention.

Net dealer gamma by strike — SPX, 2026-09-15

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 7,800.00 (calls) and 6,800.00 (puts); by dollar gamma at 7,800.00 and 7,550.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 · SPX · close-to-close swings ≥ 3% · daily archive 1927-12-30 → 2026-09-14

This is a different question from the rest of the page. Everything above reads the dealer-gamma regime from the option book. This block reads historical directional runs off a daily close archive going back to 1927-12-30 — no options data is involved. It is here as an optional comparison, not as part of the verdict, and nothing in it feeds the regime reading.
Swing threshold — what counts as a run ending: 3% 5% 10% 15% 20%
Last day -0.48% close 7,619.98 vs 2026-09-11
Last week -1.28% vs 2026-09-04 (≥7 calendar days back)
Last month -2.13% vs 2026-08-14 (≥30 calendar days back)
The run we are in NOW BULL +4.2% 30 sessions since 2026-07-29 — still open, it has not confirmed its next pivot. 581 of 693 completed bull runs moved further, 161 lasted longer.
A typical bull run here +7.2% median of 693 completed, median 12.00 sessions; best +39.6%
A typical bear run here -5.8% median of 694 completed, median 9.00 sessions; worst -33.7%

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.

The most recent 60 of 1389 runs at this threshold — the charts above and the JSON feed carry all of them. Every column sortable.
RunStartEndSessionsCalendar days ChangePace / sessionStatus
BULL 2026-07-29 2026-09-14 30 47 +4.15% +0.138% OPEN — the run now
BEAR 2026-07-10 2026-07-29 13 19 -3.42% -0.263% completed
BULL 2026-06-10 2026-07-10 20 30 +4.24% +0.212% completed
BEAR 2026-06-02 2026-06-10 6 8 -4.50% -0.751% completed
BULL 2026-03-30 2026-06-02 44 64 +19.96% +0.454% completed
BEAR 2026-01-27 2026-03-30 43 62 -9.10% -0.212% completed
BULL 2025-11-20 2026-01-27 44 68 +6.73% +0.153% completed
BEAR 2025-10-28 2025-11-20 17 23 -5.11% -0.301% completed
BULL 2025-04-21 2025-10-28 132 190 +33.59% +0.254% completed
BEAR 2025-04-09 2025-04-21 7 12 -5.47% -0.782% completed
BULL 2025-04-08 2025-04-09 1 1 +9.52% +9.515% completed
BEAR 2025-03-25 2025-04-08 10 14 -13.74% -1.374% completed
BULL 2025-03-13 2025-03-25 8 12 +4.62% +0.578% completed
BEAR 2025-02-19 2025-03-13 16 22 -10.13% -0.633% completed
BULL 2025-01-10 2025-02-19 26 40 +5.44% +0.209% completed
BEAR 2024-12-06 2025-01-10 22 35 -4.32% -0.196% completed
BULL 2024-09-06 2024-12-06 64 91 +12.61% +0.197% completed
BEAR 2024-08-30 2024-09-06 4 7 -4.25% -1.062% completed
BULL 2024-08-05 2024-08-30 19 25 +8.91% +0.469% completed
BEAR 2024-07-16 2024-08-05 14 20 -8.49% -0.606% completed
BULL 2024-04-19 2024-07-16 59 88 +14.09% +0.239% completed
BEAR 2024-03-28 2024-04-19 15 22 -5.46% -0.364% completed
BULL 2023-10-27 2024-03-28 104 153 +27.61% +0.266% completed
BEAR 2023-10-11 2023-10-27 12 16 -5.93% -0.494% completed
BULL 2023-10-03 2023-10-11 6 8 +3.49% +0.581% completed
BEAR 2023-09-01 2023-10-03 21 32 -6.34% -0.302% completed
BULL 2023-08-18 2023-09-01 10 14 +3.34% +0.334% completed
BEAR 2023-07-31 2023-08-18 14 18 -4.78% -0.341% completed
BULL 2023-03-13 2023-07-31 96 140 +19.02% +0.198% completed
BEAR 2023-02-02 2023-03-13 26 39 -7.75% -0.298% completed
BULL 2022-12-28 2023-02-02 24 36 +10.48% +0.437% completed
BEAR 2022-11-30 2022-12-28 19 28 -7.28% -0.383% completed
BULL 2022-11-03 2022-11-30 18 27 +9.68% +0.538% completed
BEAR 2022-10-28 2022-11-03 4 6 -4.64% -1.161% completed
BULL 2022-10-12 2022-10-28 12 16 +9.06% +0.755% completed
BEAR 2022-10-04 2022-10-12 6 8 -5.64% -0.940% completed
BULL 2022-09-30 2022-10-04 2 4 +5.73% +2.863% completed
BEAR 2022-09-12 2022-09-30 14 18 -12.77% -0.912% completed
BULL 2022-09-06 2022-09-12 4 6 +5.17% +1.294% completed
BEAR 2022-08-16 2022-09-06 14 21 -9.22% -0.659% completed
BULL 2022-06-30 2022-08-16 32 47 +13.73% +0.429% completed
BEAR 2022-06-24 2022-06-30 4 6 -3.23% -0.808% completed
BULL 2022-06-16 2022-06-24 5 8 +6.68% +1.336% completed
BEAR 2022-06-02 2022-06-16 10 14 -12.21% -1.221% completed
BULL 2022-05-19 2022-06-02 9 14 +7.08% +0.786% completed
BEAR 2022-05-17 2022-05-19 2 2 -4.60% -2.300% completed
BULL 2022-05-12 2022-05-17 3 5 +4.04% +1.347% completed
BEAR 2022-05-04 2022-05-12 6 8 -8.61% -1.434% completed
BULL 2022-04-29 2022-05-04 3 5 +4.07% +1.357% completed
BEAR 2022-03-29 2022-04-29 22 31 -10.79% -0.490% completed
BULL 2022-03-08 2022-03-29 15 21 +11.05% +0.737% completed
BEAR 2022-03-02 2022-03-08 4 6 -4.92% -1.230% completed
BULL 2022-02-23 2022-03-02 5 7 +3.81% +0.762% completed
BEAR 2022-02-02 2022-02-23 14 21 -7.93% -0.566% completed
BULL 2022-01-27 2022-02-02 4 6 +6.08% +1.519% completed
BEAR 2022-01-03 2022-01-27 17 24 -9.80% -0.576% completed
BULL 2021-12-20 2022-01-03 9 14 +5.00% +0.556% completed
BEAR 2021-12-10 2021-12-20 6 10 -3.06% -0.509% completed
BULL 2021-12-01 2021-12-10 7 9 +4.41% +0.630% completed
BEAR 2021-11-18 2021-12-01 8 13 -4.07% -0.509% 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 · SPX · session book

Read these as where hedging is concentrated, not as levels price must respect. 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.

And we measured it. When the tape actually reached the call wall it closed back below only 39.6% of the time (n=288); the put wall held 41.2% of 209. Neither beat a level placed the same distance away with no gamma in it. 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 — how much of the book sits at that strike — and prints this null result beside the labels rather than implying a strength the data does not support.
8,400.00
+815.10pts
+10.75%
RESISTANCE · secondary call concentration · 3rd largest
1.4% of the netted book · 21,829 net contracts (21,841 calls / 12 puts)
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.
7,900.00
+315.10pts
+4.15%
RESISTANCE · secondary call concentration · 2nd largest
1.9% of the netted book · 31,177 net contracts (32,420 calls / 1,243 puts)
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.
7,800.00
+215.10pts
+2.84%
RESISTANCE · call wall · largest
2.0% of the netted book · 32,776 net contracts (59,977 calls / 27,201 puts)
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.
7,584.90
PRICE IS HERE · as of 2026-09-15T16:38:01+00:00
7,500.00
-84.90pts
-1.12%
SUPPORT · secondary put concentration · 2nd largest
2.4% of the netted book · 38,999 net contracts (62,540 calls / 101,539 puts)
A further band of put hedging below price, lighter than the wall. The same mechanics apply, at smaller size.
6,800.00
-784.90pts
-10.35%
SUPPORT · put wall · largest
3.1% of the netted book · 50,531 net contracts (8,285 calls / 58,816 puts) · by dollar gamma the heaviest strike is elsewhere
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.
6,500.00
-1084.90pts
-14.30%
SUPPORT · secondary put concentration · 3rd largest
1.9% of the netted book · 30,767 net contracts (6,142 calls / 36,909 puts)
A further band of put hedging below price, lighter than the wall. The same mechanics apply, at smaller size.
Regime boundary — NOT support or resistance 7,000.00 -7.71% The strike where the running total of dealer gamma changes sign. Above it dealer hedging leans against moves and damps them; below it hedging leans with moves and amplifies them. It is a boundary between two behaviours, NOT a level price is repelled by — and this page reads the live regime from the gamma right around spot rather than from this level, because spot-versus-flip is much weaker than it is usually treated as.
Magnet — the opposite of a barrier 7,569.28 -0.21% 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, 11% 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. 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 · session book

Net gamma within ±1% of price -$42.93B across 31 strikes. This is the regime measure.
At the single nearest strike -$1.40B strike 7,585.00 — noisier than the band, kept because it is the form the banked history uses.
Whole-book gamma -$44.97B vendor gamma. Our own Black-Scholes solve says -$48.25B — never fused, so a disagreement stays visible.
call wall 7,800.00 2.84% above price
put wall 7,550.00 0.46% below price
gamma centre of mass 7,569.28 -0.21% from price
Zero-gamma cross 7,000.00 A level, not the regime boundary. Spot being above or below it is far weaker information than it is usually given credit for.
Walls by contract count 7,800.00 / 6,800.00 the stable read (calls / puts)
Where each reading sits against this root's own banked history. A percentile is a rank against the past; a share is already its own position on the scale — the column says which, because mixing them silently is how a page ends up printing two sentences that contradict each other.
ReadingValueBasisWhat that state means
Net dealer gamma at spot 11.1 percentile of history Dealer gamma at spot is negative and low versus its own history. Hedging flow leans with the move rather than against it, so dealer activity amplifies rather than damps what the tape does.
Share of dealer gamma at the front expiry 11.0 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 21.5 percentile of history The walls are closer together than usual. The corridor of concentrated hedging around spot is tight.
Distance from spot to the zero-gamma cross 87.3 percentile of history Spot sits further from the zero-gamma cross than usual, so the strikes around price are dominated by a single sign of gamma rather than straddling the change.
What the tape delivered versus what options charged 14.0 percentile of history The tape delivered less movement than the option market charged for. Volatility was on the expensive side of what actually happened.

Does any of this actually work? — this app measuring its own thesis

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.78% median range and the most positive by 1.53% (pooled rho -0.070, p=0.0224).
  • CONTROLLED, it disappears. Measure the same range in units of what options charged for it (range / IV breakeven) and the relationship is rho 0.053, p=0.08 — nothing. Negative-gamma sessions ARE high-implied-vol sessions: median breakeven fell from 1.67% in the short-gamma quintile to 1.38% 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.011, p=0.71.
  • The FAILED-BREAKOUT prediction runs the wrong way. Long dealer gamma is supposed to produce MORE failed breakouts; measured, long gamma faded 32.9% of breakout attempts and short gamma faded 34.1%.
  • No directional signal beat the base rate: 52.3% of next sessions closed up, and not one of the four asymmetries did better.
One thing did survive. 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=938 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.

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.

Quintiles of dealer gamma at spot, cut WITHIN each root, against what the NEXT session actually did. Q1 = the most negative gamma (the blast end); Q5 = the most positive (the jagged/pinned end). Pooled over SPY, QQQ, IWM, SPX, AAPL, MSFT, NVDA, TSLA, n=1072. Read the last two columns together: the range falls from Q1 to Q5, but so does the breakeven — which is the whole finding. Every column sortable.
QuintilenNext range (median)Middle half What options chargedRange ÷ chargedPath efficiency Failed breakouts
Q1 — most short gamma 224 1.78% 1.06%–2.90% 1.67% 1.055 0.465 33.7% of 199
Q2 208 1.73% 1.16%–2.54% 1.77% 0.971 0.460 31.9% of 182
Q3 216 1.86% 1.16%–2.76% 1.76% 1.039 0.450 35.0% of 203
Q4 208 1.73% 0.99%–2.65% 1.52% 1.089 0.517 29.8% of 191
Q5 — most long gamma 216 1.53% 0.91%–2.36% 1.38% 1.090 0.426 36.3% of 190
Per-root results — raw versus vol-controlled, every root
The middle column is the honest one. "Raw" correlates gamma with the next session's raw range; "vol-controlled" correlates it with that range measured in units of what options charged for it. A negative raw rho with a dead controlled rho means the reading was tracking the volatility regime rather than adding to it. Pooled significance across these roots is OVERSTATED — they share market days and SPY/SPX/QQQ are close to the same trade.
RootnRaw: gamma → next range Vol-controlled: gamma → range ÷ chargedBlast-vs-shards (path efficiency)
SPY134 -0.090 (p=0.301) +0.128 (p=0.142) +0.046 (p=0.598)
QQQ134 -0.111 (p=0.201) -0.009 (p=0.915) -0.167 (p=0.054)
IWM134 -0.109 (p=0.209) +0.092 (p=0.291) -0.045 (p=0.605)
SPX134 -0.134 (p=0.122) +0.056 (p=0.531) +0.058 (p=0.507)
SPXW108 -0.351 (p=0.000) +0.111 (p=0.369) -0.054 (p=0.581)
AAPL134 -0.137 (p=0.115) +0.121 (p=0.163) +0.067 (p=0.446)
MSFT134 -0.111 (p=0.202) -0.069 (p=0.430) -0.105 (p=0.228)
NVDA134 +0.075 (p=0.388) +0.174 (p=0.044) +0.138 (p=0.113)
TSLA134 -0.114 (p=0.191) -0.010 (p=0.912) -0.081 (p=0.356)
What is wrong with this test — the limits, stated
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.

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: 52.3% of next sessions simply closed up (n=1072). 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.

AsymmetrynRank correlationHit rateBeat the base rate?
room to the call wall minus room to the put wall 1072 +0.003 (p=0.933) 49.5% no
where the gamma centre of mass sits versus spot 1072 -0.003 (p=0.910) 48.6% no
net vanna exposure — the mechanical bid if volatility falls 1072 -0.056 (p=0.069) 48.8% no
net charm exposure — hedge drift from time passing 1072 +0.086 (p=0.005) 53.5% yes

How fresh this is, and what does not line up

This page runs on several clocks and they are never averaged into one. A wall level is frozen by design — settled open interest does not move until the next settlement — while the futures print is seconds old. One "as of" covering both would be a lie about both.
ClockAs ofExpected cadenceWhat it is
options chain 2026-09-15T16:38:01+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 2026-09-15T16:40:55Z 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-09-15 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-11 every 1d The banked daily-close spine the history charts draw. One row per session.
ES futures 2026-09-15T16:45:00+00:00 every 5m ESZ6, the front-month contract resolved by live volume rather than a continuous alias. It trades while the cash market is shut, which is the whole reason it can be compared against a wall level that is frozen until the next settlement.
bull/bear archive · settled 2026-09-14 every 1d Daily closes from 1927-12-30 to 2026-09-14, 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 snapshot 2026-09-15T16:38:01+00:00 rth · every 5 minutes in regular trading hours, plus a pre-open and a post-close bracket
Open interest previous session PREVIOUS session, settled overnight by the clearing house. It does not move intraday — a market-structure fact, not a defect.
Open-interest census 3,462 known 0 MISSING — excluded from every sum and counted here, never treated as zero and never swapped for volume. 645 genuine vendor-reported zeros.
Banked history from 2026-03-02 (the OCC open-interest purchase); continues past 2026-08-04 from the live chain recorder rather than ending there the window the hit rates above were measured on.
The live read and the backtest are not the same construction. 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 — 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.
Every term on this page, in plain words
gammaHow fast an option's directional exposure changes as the underlying moves. A dealer who sold options has to keep re-adjusting their hedge as gamma moves that exposure around, and the re-adjusting is real buying and selling in the underlying.
dealer gammaThe gamma sitting on market-makers' books. It matters because their hedging is not discretionary — it is forced, mechanical, and large enough to shape the tape.
long dealer gammaDealers are net owners of gamma. Staying hedged means selling into rallies and buying into dips, which pushes against whatever the tape is doing. This is the state that produces pinning, failed breakouts and tight ranges — the jagged, broken-shard tape.
short dealer gammaDealers are net short gamma. Staying hedged means buying into rallies and selling into dips, which pushes WITH the move. This is the state that produces follow-through, gaps and trends — the blast tape.
GEX (gamma exposure)The total dealer gamma across the chain, expressed in dollars per 1% move. Positive means dealers are net long gamma; negative means net short.
local gamma at spotThe net dealer gamma right where price is trading. This is the regime measure on this page — the gamma dealers are actually hedging right now, rather than a total over strikes nowhere near the money.
zero-gamma cross (the "flip")The strike where the running total of dealer gamma first crosses zero. It is a LEVEL, not the regime boundary — a common mix-up. Spot being above or below it is far weaker information than people assume, which is why this page reads the regime from the gamma at spot instead.
call wallThe strike above spot carrying the heaviest positive dealer gamma. Hedging concentrated there is the structural reason moves tend to slow as price approaches it.
put wallThe strike below spot carrying the heaviest negative dealer gamma. Hedging there tends to speed moves up rather than slow them.
gamma centre of massThe gamma-weighted average strike — where the book's hedging pressure is centred. Price sitting on it is the classic pinned configuration.
0DTE gamma shareHow much of the gamma on the book expires the same day. It is the DECAY RATE of the regime: when almost all of it is same-day, whatever is steadying the tape today is simply gone tomorrow unless traders roll it.
open interest (OI)How many contracts are still open and held by somebody. It measures positions rather than activity, and it is the clearing house's PREVIOUS-session settled count — published overnight, unchanged during the day. A strike listed this morning reads zero all session even while millions trade. That is market structure, not a broken feed.
netted contract countCalls minus puts at the same strike. After delta-hedging, a call and a put at one strike are the same hedging problem, so they net. Counting contracts is steadier than counting dollars of gamma, because dollar gamma at a single strike balloons as price approaches it and collapses as price leaves.
daily breakevenThe one-day move the option market is charging for, computed as front at-the-money implied volatility divided by the square root of 252. It is the honest yardstick for whether a session was big or small: a 1% range is enormous if options priced 0.4% and unremarkable if they priced 1.1%.
vannaHow dealer hedging shifts when implied vol moves, even if price doesn't. A pure change in volatility can force buying or selling with no price move at all.
charmHow dealer hedging drifts as the clock runs, even if price doesn't move. It is strongest into expiry, which is why hedges get unwound on quiet Friday tapes.
charm flipThe price where dealer hedging from time passing changes sign — from forcing a buy to forcing a sell, or the other way. It is a boundary in the clock-decay of the book, not a support or resistance level.
vanna flipThe price where vol-change hedge flow changes sign. On one side a vol drop forces a buy (absorb); on the other, a sell (amplify). A boundary, not a wall.
amplifierA strike near price where conventional dealer gamma is most negative. Under the usual assumption that dealers are short there, hedging would amplify a move through it. We cannot see who is actually short — VolSignals reserved "test" for a measured MM short, which we do not have.
absorberA strike near price where conventional dealer gamma is most positive. Under the usual assumption that dealers are long there, hedging would fade a move through it. If the convention is wrong, it amplifies instead.
late-day gammaThe same open-interest book repriced with less time left (15:45 ET, or 15 minutes before expiry). It is the honest substitute for VolSignals' late red 0DTE pockets: gamma growing as the clock runs down on standing OI. Same-morning listings with oi=0 still cannot appear. Not a forecast of trades or of price.
path efficiencyHow much of a session's total travel became net progress: the close-to-open move divided by the high-to-low range. Near 1 the tape went one way and stayed — a blast. Near 0 it covered ground and ended where it started — jagged broken shards.
support and resistanceLevels where something is expected to slow or turn price — resistance above it, support below. On this page they are strikes where dealer hedging CONCENTRATES, which is a statement about where the option book is heavy, not a promise that price stops there. Measured on our own sessions, these levels held no better than an arbitrary level the same distance away.
dealer sideWhether market-makers are long or short the options at a strike. It decides everything: long the calls, they sell into a rally and the strike acts as a brake; short the calls, they buy into the same rally and it acts as an accelerant. Gamma exposure cannot observe this — it infers it from a convention about who usually buys and who usually sells, and when that convention is wrong the level does the opposite of what it is labelled.
regime boundaryA level that separates two different dealer BEHAVIOURS rather than one that blocks price. Above it hedging leans against moves and damps them; below it hedging leans with moves and amplifies them. Crossing it changes how the tape behaves, which is not the same thing as being repelled by it.
magnet levelA level price tends to gravitate toward rather than bounce off — the opposite of a barrier. The gamma centre of mass is one: hedging flow pulls price back toward it, which is why a market pinned on it goes quiet.
0DTE volume (today's prints)How many same-day contracts traded today. It is ACTIVITY, not a position: OCC open interest for a strike listed this morning is still yesterday's zero until tonight's settlement. Counted on this page so the prints are visible, and never used as a weight on gamma, charm or vanna.
Plain-text mirror — the whole page as text, verdict first (what "Copy as text" hands over)
=== /gex — DEALER GAMMA REGIME · SPX ===
QUESTION: Is the market set up to BLAST in a direction, or chop in jagged broken shards?

VERDICT: SET UP TO BLAST
Dealers are short gamma where price is trading, so hedging pushes WITH moves.
BLAST CONFIGURATION WITH A MAGNET AGAINST IT. Dealers are short gamma at this price, so hedging
adds to moves rather than absorbing them, but price is sitting on the gamma centre of mass,
which is where the book's pull is concentrated. Little of this gamma expires today, so the
amplifying configuration carries forward into the sessions ahead rather than resetting at the
close.

DIRECTIONAL LEAN: NONE
NO DIRECTIONAL LEAN. Dealer gamma describes the SHAPE of the path — how big and how jagged —
not which way it points. The asymmetries that could carry a lean (which wall is closer, where
the centre of mass sits, vanna, charm) do not agree strongly enough here to name a side, and on
this stack none of them beat simply counting how often sessions close up.

-- DOES THE OPTION BOOK CALM OR AMPLIFY THIS MOVE? (regime curve, session book) --
  at spot the book is AMPLIFYING moves (dealers short gamma — hedging runs WITH the tape, an accelerant).
  dealer gamma at spot: -$44.22B per 1% move.
  flip (regime boundary): 7,637.07, 0.69% above spot 7,584.90.
  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, session book) --
  as of 2026-09-15T16:38:01+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: -$8,829.59B dollar-delta per year = -$24.17B 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 -$721.50B / rest -$8,108.09B  (215 same-day contracts).
  charm flip (where time-decay hedge flow changes sign): 8,009.68, 5.60% from spot.
  VANNA at spot: +$467.16B dollar-delta per 1.00 vol = +$4.67B 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): -$10,665.42B / +$510.79B
  LATE-DAY GAMMA (same OI, less time, as of 2026-09-15T19:45:00Z): whole-book -$43.11B / 0DTE -$13.90B per 1%.
  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  7,550.00  -0.46%  -$4.90B per 1%  24,312 net contracts
    amplifier 2  7,500.00  -1.12%  -$4.90B per 1%  38,999 net contracts
    amplifier 3  7,600.00  +0.20%  -$4.74B per 1%  11,012 net contracts
    absorber  1  7,680.00  +1.25%  +$1.31B per 1%  10,952 net contracts
    absorber  2  7,700.00  +1.52%  +$852.4M per 1%  9,537 net contracts
    absorber  3  7,725.00  +1.85%  +$652.8M per 1%  12,866 net contracts
  0DTE ACTIVITY (not a position): in-band 1,682,092 contracts of volume across 432 listed lines; 11 lines still report OI 0 with volume > 0. Never used as a weight.
    including outside the ±15% band: 1,689,034 contracts, 15 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-09-15, 12:40 to 16:00 ET in 5-minute steps (41 of them) x 61 levels 7,435.00 to 7,735.00 (session 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 7,585.00: -$1.01B = -2,648.1 ES contracts — dealers BUY (convention).
    for scale, a 5-minute bar trades about 5,424 contracts in the regular session and 732 overnight.
  THE FLIP — the level where the field changes sign, nearest price:
    open 12:40 no flip inside the grid   cell at 7,585.00: -$83.9M = -219.26 ES
    last hr 15:00 no flip inside the grid   cell at 7,585.00: -$96.2M = -251.32 ES
  POCKETS — runs of cells whose sign disagrees with the band around them (2):
    15:40 to 16:00, 7,730.00 to 7,735.00: dealers SELL, strongest cell +$496.7M = 1,273.03 ES. Made by: 7,725.00 2026-09-15 call oi 7,849 (+$275.9M) · 7,745.00 2026-09-15 call oi 1,326 (-$54.1M) · 7,750.00 2026-09-15 call oi 2,400 (-$47.6M)
    15:50 to 16:00, 7,680.00 to 7,685.00: dealers SELL, strongest cell +$60.1M = 154.98 ES. Made by: 7,680.00 2026-09-15 call oi 3,240 (+$225.6M) · 7,690.00 2026-09-15 call oi 1,579 (-$123.7M) · 7,695.00 2026-09-15 call oi 2,022 (-$18.7M)
  CONVERSION: ES contracts = the cell's dollars / (that index level in ES points x 50). The index
              level is put into ES points with this page's existing anchor ratio: ES closed at
              7,657.25 while SPX stood at 7,584.90, so one SPX point is 1.009539 ES points. The basis
              and any index/ETF ratio cancel because both sit in the anchor. Applied when this payload
              is read, so it always uses the live front month.
  The charm sum of the session 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.12%   (front at-the-money implied vol 17.85% (expiry 2026-09-16) / sqrt(252))
  gamma-conditional range  median 0.62%, middle half 0.46% to 0.89%  (quintile 1 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.30%   (put wall 7,550.00 to call wall 7,800.00)
  last session delivered   0.60% (5-min sampled)  = 0.54x the breakeven

-- OVERNIGHT: ES AGAINST THE FROZEN WALLS --
  ES is essentially flat since the cash close, which puts SPX at about 7,584.16. That sits
  2.85% below the call wall at 7,800.00 and 0.45% above the put wall at 7,550.00. The wall
  levels themselves are frozen from the last session's settled open interest and do not move
  until the next session settles.

  E-mini S&P 500 (ESZ6)  7,656.50   345s old
  as SPX-equivalent   7,584.16   (-0.01% since the cash close at 7,584.90)
  vs frozen call wall          7,800.00   price is 2.85% below it
  vs frozen put wall           7,550.00   price is 0.45% above it
  vs frozen gamma centre       7,569.28   price is 0.20% above it
  vs frozen zero-gamma cross   7,000.00   price is 7.70% above it

  CONVERSION: ES shown as SPX-equivalent: ES now 7,656.50, ES at the Tue close 7,657.25, so 7,584.90 x
              (7,656.50 / 7,657.25) = 7,584.16. The move in the future since the cash close, applied
              to SPX's price at that close — the basis and the index/ETF ratio cancel out, so no
              ratio is estimated.
  SCALE: shared — the overlay is in the same units as the wall levels
  ! The wall levels and the futures price are deliberately from DIFFERENT CLOCKS. Wall levels
    come from settled open interest, which the clearing house publishes overnight and does not
    revise during a session — so a wall is a constant until the next settlement, not a stale
    reading. Futures trade around the clock. Comparing the two is what shows whether price is
    drifting toward or away from the level while the cash market is shut.
  ! Overnight futures liquidity is far thinner than the regular session. A wall approached at
    03:00 on light volume is not the same event as one approached at 14:00, and neither this
    page nor the dealer hedging behind the wall treats it as one.
    measured: overnight bars average 732 contracts per 5 minutes against 5,424 in the regular session (13.5%).
  ! The dealer hedging that would enforce a wall is largely NOT ACTIVE while the cash market
    is shut, so an overnight approach to a level is not the same event as a daytime one. The
    caveat about which side dealers are actually on applies here more strongly, not less.
  ! This overlay adds no predictive power, and this app measured that: when price reached the
    call wall it closed back below only 37.2% of the time against 38.0% for an arbitrary level
    the same distance away. The overlay shows WHERE price is relative to a frozen level,
    nothing more.

-- MAJOR SUPPORT & RESISTANCE (session 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.6% of the time (n=288);
            the put wall held 41.1% of 209. Neither beat a level the same distance away
            with no gamma in it, so these rows are ranked by concentration, not reliability.

   8,400.00   +815.10 pts  +10.75%  RESISTANCE  secondary call concentration (3rd largest)   1.4% of book  21,829 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.
   7,900.00   +315.10 pts   +4.15%  RESISTANCE  secondary call concentration (2nd largest)   1.9% of book  31,177 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.
   7,800.00   +215.10 pts   +2.84%  RESISTANCE  call wall (largest)                2.0% of book  32,776 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.
   7,584.90   <<<< PRICE IS HERE
   7,500.00    -84.90 pts   -1.12%  SUPPORT     secondary put concentration (2nd largest)   2.4% of book  38,999 net contracts
        A further band of put hedging below price, lighter than the wall. The same mechanics
        apply, at smaller size.
   6,800.00   -784.90 pts  -10.35%  SUPPORT     put wall (largest)                 3.1% of book  50,531 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.
   6,500.00  -1084.90 pts  -14.30%  SUPPORT     secondary put concentration (3rd largest)   1.9% of book  30,767 net contracts
        A further band of put hedging below price, lighter than the wall. The same mechanics
        apply, at smaller size.

   7,000.00   -7.71%  REGIME BOUNDARY — not support, not resistance
        The strike where the running total of dealer gamma changes sign. Above it dealer
        hedging leans against moves and damps them; below it hedging leans with moves and
        amplifies them. It is a boundary between two behaviours, NOT a level price is repelled
        by — and this page reads the live regime from the gamma right around spot rather
        than from this level, because spot-versus-flip is much weaker than it is usually
        treated as.
   7,569.28   -0.21%  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, 11% 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 (session book) --
  Built on the book as it stands in the latest 5-minute snapshot, including contracts expiring today.
  spot 7,584.90 as of 2026-09-15T16:38:01+00:00 (rth)
  net gamma in +/-1% band     -$42.93B  across 31 strikes   [THE REGIME MEASURE]
    = 100% of the gross gamma in that band, netting SHORT (flat below 20%)
  net dealer gamma at the single nearest strike  -$1.40B  at 7,585.00
  whole-book gamma           -$44.97B
  call wall 7,800.00 (2.84% above)   put wall 7,550.00 (0.46% below)
  walls by CONTRACT COUNT    call 7,800.00   put 6,800.00   [the stable read]
  gamma centre of mass 7,569.28 (-0.21% from spot)   zero-gamma cross 7,000.00
  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 --
  11.0% — share of the session book's gross gamma expiring today   [drives the 'slow decay' in the verdict; fast at 50%]
  11.0% of the gross gamma on the SESSION book expired at 2026-09-15's close
  75% of the at-spot gamma disappeared with that expiry (-$1.40B on the session book -> -$1.40B on the forward book)

-- WHERE THIS SITS VERSUS ITS OWN BANKED HISTORY --
  net dealer gamma at spot                11.1 percentile
      Dealer gamma at spot is negative and low versus its own history. Hedging flow leans with the
      move rather than against it, so dealer activity amplifies rather than damps what the tape
      does.
  share of the book at the front expiry   11.0 % 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                  21.5 percentile
      The walls are closer together than usual. The corridor of concentrated hedging around spot
      is tight.
  distance to the zero-gamma cross        87.3 percentile
      Spot sits further from the zero-gamma cross than usual, so the strikes around price are
      dominated by a single sign of gamma rather than straddling the change.
  last session delivered vs what options charged  14.0 percentile
      The tape delivered less movement than the option market charged for. Volatility was on the
      expensive side of what actually happened.

-- 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.78%
     median range and the most positive by 1.53% (pooled rho -0.070, p=0.0224).
   - CONTROLLED, it disappears. Measure the same range in units of what options charged for it
     (range / IV breakeven) and the relationship is rho 0.053, p=0.08 — nothing.
     Negative-gamma sessions ARE high-implied-vol sessions: median breakeven fell from 1.67% in
     the short-gamma quintile to 1.38% 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.011, p=0.71.
   - The FAILED-BREAKOUT prediction runs the wrong way. Long dealer gamma is supposed to
     produce MORE failed breakouts; measured, long gamma faded 32.9% of breakout attempts and
     short gamma faded 34.1%.
   - No directional signal beat the base rate: 52.3% 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=938 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.78%     1.06-2.90%       1.67%      1.06    0.465      33.7% of 199
    2  208     1.73%     1.16-2.54%       1.77%      0.97    0.460      31.9% of 182
    3  216     1.86%     1.16-2.76%       1.76%      1.04    0.450      35.0% of 203
    4  208     1.73%     0.99-2.65%       1.52%      1.09    0.517      29.8% of 191
    5  216     1.53%     0.91-2.36%       1.38%      1.09    0.426      36.3% of 190
    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-09-15T16:38:01+00:00  expected every 5m         
  profile build      2026-09-15T16:40:55Z       expected every 10m        
  open interest      2026-09-15                 expected every 1d         [settled once overnight — a day behind by market structure, not by neglect]
  daily history      2026-09-11                 expected every 1d         [settled once overnight — a day behind by market structure, not by neglect]
  ES futures         2026-09-15T16:45:00+00:00  expected every 5m         
  bull/bear archive  2026-09-14                 expected every 1d         [settled once overnight — a day behind by market structure, not by neglect]
  server clock now 2026-09-15T16:50:45Z  (skew baseline only — NEVER a data timestamp)
  chain_day              2026-09-15
  chain_asof             2026-09-15T16:38:01+00:00
  chain_phase            rth
  chain_built            2026-09-15T16:40:55Z
  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-11
  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-09-15T09:20:02Z
  open-interest census   3462 known, 0 MISSING (excluded, never zeroed), 645 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-09-15T16:50:45Z · full JSON: /apps2/gex/api.php?sym=SPX&full=1
Machine-readable chart state — copyable ASCII of what the canvases draw (hidden on load)

    
JSON — the same object this page renders from
{
    "ok": true,
    "sym": "SPX",
    "symbols": [
        "SPY",
        "QQQ",
        "IWM",
        "SPX",
        "AAPL",
        "MSFT",
        "NVDA",
        "TSLA",
        "VIX"
    ],
    "generated_utc": "2026-09-15T16:50:45Z",
    "question": "Is the market set up to BLAST in a direction, or chop in jagged broken shards?",
    "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.1244692528576699,
        "breakeven_from": "front at-the-money implied vol 17.85% (expiry 2026-09-16) / 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": 1,
            "n": 28,
            "median": 0.6152,
            "p25": 0.4614,
            "p75": 0.888,
            "basis": "sessions whose banked at-spot gamma fell in the same quintile as this reading"
        },
        "wall_span_pct": 3.2960223602156917,
        "last_session_sampled_pct": 0.6029084101306487,
        "paid_vs_realised": 0.5361715392381317,
        "weekend_caveat": null
    },
    "verdict": {
        "book": "session",
        "book_note": "Built on the book as it stands in the latest 5-minute snapshot, including contracts expiring today.",
        "regime": "short",
        "decay": "slow",
        "pin": "at",
        "lean": "none",
        "regime_from": "net dealer gamma inside +/-1% of spot, as a share of the gross gamma in that band",
        "regime_net_share": -1,
        "decay_from": "share of the session book's gross gamma expiring today",
        "decay_share": 0.11043420315235664,
        "cuts": {
            "flat_net_share_below": 0.2,
            "fast_decay_at": 0.5,
            "pin_within_pct": 0.25,
            "lean_needs_pct": 0.15
        }
    },
    "levels": {
        "spot": 7584.9,
        "as_of": "2026-09-15T16:38:01+00:00",
        "phase": "rth",
        "local_gamma_at_spot": -1395676798.902838,
        "local_strike": 7585,
        "local_band_1pct": -42931059399.02377,
        "local_band_n": 31,
        "local_band_pct": 1,
        "local_band_widened": false,
        "local_band_thin": false,
        "call_wall_book": 7800,
        "put_wall_book": 7550,
        "total_gex": -44973312826.131645,
        "total_gex_x": -48245754629.72848,
        "call_wall": 7800,
        "put_wall": 7550,
        "call_wall_contracts": 7800,
        "put_wall_contracts": 6800,
        "gamma_center": 7569.280976523507,
        "gamma_flip": 7000,
        "room_up_pct": 2.835897638729586,
        "room_down_pct": 0.4601247214861058,
        "centre_offset_pct": -0.2059226024930145,
        "zdte_gamma_share": 0.11043420315235664,
        "session_book_total_gex": -44973312826.131645,
        "session_book_local": -1395676798.902838,
        "decay_of_local": 0.7512449125131052
    },
    "pctl": {
        "local_gamma": 11.1,
        "zdte_share": 11,
        "wall_room": 21.5,
        "flip_dist": 87.3,
        "paid_vs_realised": 14
    },
    "indices": [
        {
            "key": "spx",
            "label": "S&P 500",
            "unit": "percent change from the cash close",
            "anchor_ts": 1789490281,
            "anchor_value": 7584.9,
            "cash_note": "SPX cash from the 5-minute chain recorder",
            "futures_product": "ES",
            "futures_ticker": "ESZ6",
            "handoff_ts": 1789490400,
            "series": [
                [
                    1789477681,
                    0.4625
                ],
                [
                    1789479182,
                    0.4625
                ],
                [
                    1789479481,
                    0.4625
                ],
                [
                    1789479781,
                    0.4625
                ],
                [
                    1789480081,
                    0.2985
                ],
                [
                    1789480381,
                    0.3121
                ],
                [
                    1789480681,
                    0.301
                ],
                [
                    1789480982,
                    0.2935
                ],
                [
                    1789481282,
                    0.3072
                ],
                [
                    1789481582,
                    0.302
                ],
                [
                    1789481881,
                    0.2393
                ],
                [
                    1789482182,
                    0.1684
                ],
                [
                    1789482481,
                    0.1045
                ],
                [
                    1789482781,
                    0.1305
                ],
                [
                    1789483081,
                    -0.0074
                ],
                [
                    1789483381,
                    0.0283
                ],
                [
                    1789483681,
                    0.0033
                ],
                [
                    1789483981,
                    -0.0293
                ],
                [
                    1789484281,
                    -0.0262
                ],
                [
                    1789484581,
                    -0.0291
                ],
                [
                    1789484881,
                    -0.1404
                ],
                [
                    1789485181,
                    -0.0977
                ],
                [
                    1789485482,
                    -0.0749
                ],
                [
                    1789485781,
                    -0.0584
                ],
                [
                    1789486081,
                    -0.0543
                ],
                [
                    1789486381,
                    -0.0183
                ],
                [
                    1789486681,
                    -0.0113
                ],
                [
                    1789486982,
                    -0.0025
                ],
                [
                    1789487281,
                    -0.038
                ],
                [
                    1789487581,
                    0.0033
                ],
                [
                    1789487881,
                    0.0339
                ],
                [
                    1789488183,
                    -0.0076
                ],
                [
                    1789488481,
                    -0.0173
                ],
                [
                    1789488781,
                    -0.0124
                ],
                [
                    1789489081,
                    -0.0169
                ],
                [
                    1789489381,
                    -0.0638
                ],
                [
                    1789489681,
                    -0.0799
                ],
                [
                    1789489982,
                    -0.0575
                ],
                [
                    1789490281,
                    0
                ],
                [
                    1789490400,
                    0.0131
                ],
                [
                    1789490700,
                    -0.0098
                ]
            ],
            "now_pct": -0.0098,
            "now_ts": 1789490700,
            "n_cash": 39,
            "n_total": 41
        },
        {
            "key": "nas100",
            "label": "NAS100",
            "unit": "percent change from the cash close",
            "anchor_ts": 1789490281,
            "anchor_value": 705.59,
            "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": "NQ",
            "futures_ticker": "NQZ6",
            "handoff_ts": 1789490400,
            "series": [
                [
                    1789477681,
                    0.5825
                ],
                [
                    1789479182,
                    0.4606
                ],
                [
                    1789479481,
                    0.4337
                ],
                [
                    1789479781,
                    0.4436
                ],
                [
                    1789480081,
                    0.3614
                ],
                [
                    1789480381,
                    0.4124
                ],
                [
                    1789480681,
                    0.4096
                ],
                [
                    1789480982,
                    0.4819
                ],
                [
                    1789481282,
                    0.462
                ],
                [
                    1789481582,
                    0.496
                ],
                [
                    1789481881,
                    0.445
                ],
                [
                    1789482182,
                    0.309
                ],
                [
                    1789482481,
                    0.2338
                ],
                [
                    1789482781,
                    0.2475
                ],
                [
                    1789483081,
                    0.0751
                ],
                [
                    1789483381,
                    0.1258
                ],
                [
                    1789483681,
                    0.1088
                ],
                [
                    1789483981,
                    0.0312
                ],
                [
                    1789484281,
                    -0.0033
                ],
                [
                    1789484581,
                    0.0072
                ],
                [
                    1789484881,
                    -0.18
                ],
                [
                    1789485181,
                    -0.1481
                ],
                [
                    1789485482,
                    -0.0879
                ],
                [
                    1789485781,
                    -0.026
                ],
                [
                    1789486081,
                    -0.0496
                ],
                [
                    1789486381,
                    -0.0018
                ],
                [
                    1789486681,
                    -0.0106
                ],
                [
                    1789486982,
                    0.0085
                ],
                [
                    1789487281,
                    -0.0655
                ],
                [
                    1789487581,
                    -0.0232
                ],
                [
                    1789487881,
                    -0.0028
                ],
                [
                    1789488183,
                    -0.0443
                ],
                [
                    1789488481,
                    -0.0216
                ],
                [
                    1789488781,
                    -0.0092
                ],
                [
                    1789489081,
                    -0.0118
                ],
                [
                    1789489381,
                    -0.0838
                ],
                [
                    1789489681,
                    -0.152
                ],
                [
                    1789489982,
                    -0.0971
                ],
                [
                    1789490281,
                    0
                ],
                [
                    1789490400,
                    -0.0128
                ],
                [
                    1789490700,
                    -0.0239
                ]
            ],
            "now_pct": -0.0239,
            "now_ts": 1789490700,
            "n_cash": 39,
            "n_total": 41
        }
    ],
    "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": {
        "product": "ES",
        "name": "E-mini S&P 500",
        "ticker": "ESZ6",
        "root": "SPX",
        "anchor": {
            "ts": 1789490100,
            "iso": "2026-09-15T16:35:00+00:00",
            "future_close": 7657.25,
            "root_spot": 7584.9
        },
        "now": {
            "ts": 1789490700,
            "iso": "2026-09-15T16:45:00+00:00",
            "future_close": 7656.5,
            "root_equivalent": 7584.1571,
            "age_s": 345
        },
        "chg_pct": -0.0098,
        "series": [
            [
                1789490100,
                7584.9
            ],
            [
                1789490400,
                7585.8906
            ],
            [
                1789490700,
                7584.1571
            ]
        ],
        "conversion": "ES shown as SPX-equivalent: ES now 7,656.50, ES at the Tue close 7,657.25, so 7,584.90 x (7,656.50 / 7,657.25) = 7,584.16. The move in the future since the cash close, applied to SPX's price at that close \u2014 the basis and the index/ETF ratio cancel out, so no ratio is estimated.",
        "scale": "shared \u2014 the overlay is in the same units as the wall levels",
        "liquidity": {
            "rth_avg_vol_per_5min": 5424,
            "overnight_avg_vol_per_5min": 732,
            "overnight_share": 0.135,
            "note": "Overnight futures liquidity is far thinner than the regular session. A wall approached at 03:00 on light volume is not the same event as one approached at 14:00, and neither this page nor the dealer hedging behind the wall treats it as one."
        },
        "vs_levels": {
            "call_wall": {
                "level": 7800,
                "label": "call wall",
                "dist_pct": 2.846,
                "side": "below"
            },
            "put_wall": {
                "level": 7550,
                "label": "put wall",
                "dist_pct": -0.45,
                "side": "above"
            },
            "gamma_center": {
                "level": 7569.280976523507,
                "label": "gamma centre",
                "dist_pct": -0.196,
                "side": "above"
            },
            "gamma_flip": {
                "level": 7000,
                "label": "zero-gamma cross",
                "dist_pct": -7.702,
                "side": "above"
            }
        },
        "reading": "ES is essentially flat since the cash close, which puts SPX at about 7,584.16. That sits 2.85% below the call wall at 7,800.00 and 0.45% above the put wall at 7,550.00. The wall levels themselves are frozen from the last session's settled open interest and do not move until the next session settles.",
        "why_mixed_vintage": "The wall levels and the futures price are deliberately from DIFFERENT CLOCKS. Wall levels come from settled open interest, which the clearing house publishes overnight and does not revise during a session \u2014 so a wall is a constant until the next settlement, not a stale reading. Futures trade around the clock. Comparing the two is what shows whether price is drifting toward or away from the level while the cash market is shut.",
        "hedging_is_not_active": "The dealer hedging that would enforce a wall is largely NOT ACTIVE while the cash market is shut, so an overnight approach to a level is not the same event as a daytime one. The caveat about which side dealers are actually on applies here more strongly, not less.",
        "no_predictive_claim": "This overlay adds no predictive power, and this app measured that: when price reached the call wall it closed back below only 37.2% of the time against 38.0% for an arbitrary level the same distance away. The overlay shows WHERE price is relative to a frozen level, nothing more."
    },
    "ladder": {
        "spot": 7584.9,
        "resistance": [
            {
                "level": 8400,
                "side": "resistance",
                "rank": "3rd largest",
                "is_headline_wall": false,
                "is_dollar_gamma_wall": false,
                "kind": "secondary call concentration",
                "dist_pts": 815.1,
                "dist_pct": 10.746,
                "net_contracts": 21829,
                "call_contracts": 21841,
                "put_contracts": 12,
                "share_of_book": 0.0135,
                "gex": 16706524.921562115,
                "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": 7900,
                "side": "resistance",
                "rank": "2nd largest",
                "is_headline_wall": false,
                "is_dollar_gamma_wall": false,
                "kind": "secondary call concentration",
                "dist_pts": 315.1,
                "dist_pct": 4.154,
                "net_contracts": 31177,
                "call_contracts": 32420,
                "put_contracts": 1243,
                "share_of_book": 0.0192,
                "gex": 257102416.44535282,
                "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": 7800,
                "side": "resistance",
                "rank": "largest",
                "is_headline_wall": true,
                "is_dollar_gamma_wall": true,
                "kind": "call wall",
                "dist_pts": 215.1,
                "dist_pct": 2.836,
                "net_contracts": 32776,
                "call_contracts": 59977,
                "put_contracts": 27201,
                "share_of_book": 0.0202,
                "gex": 1435187253.9556632,
                "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."
            }
        ],
        "support": [
            {
                "level": 7500,
                "side": "support",
                "rank": "2nd largest",
                "is_headline_wall": false,
                "is_dollar_gamma_wall": false,
                "kind": "secondary put concentration",
                "dist_pts": -84.9,
                "dist_pct": -1.119,
                "net_contracts": -38999,
                "call_contracts": 62540,
                "put_contracts": 101539,
                "share_of_book": 0.0241,
                "gex": -4900571009.750382,
                "call_heavy": false,
                "does": "A further band of put hedging below price, lighter than the wall. The same mechanics apply, at smaller size."
            },
            {
                "level": 6800,
                "side": "support",
                "rank": "largest",
                "is_headline_wall": true,
                "is_dollar_gamma_wall": false,
                "kind": "put wall",
                "dist_pts": -784.9,
                "dist_pct": -10.348,
                "net_contracts": -50531,
                "call_contracts": 8285,
                "put_contracts": 58816,
                "share_of_book": 0.0312,
                "gex": -152301664.8114896,
                "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": 6500,
                "side": "support",
                "rank": "3rd largest",
                "is_headline_wall": false,
                "is_dollar_gamma_wall": false,
                "kind": "secondary put concentration",
                "dist_pts": -1084.9,
                "dist_pct": -14.303,
                "net_contracts": -30767,
                "call_contracts": 6142,
                "put_contracts": 36909,
                "share_of_book": 0.019,
                "gex": -24971507.997765046,
                "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": {
            "level": 7000,
            "dist_pts": -584.9,
            "dist_pct": -7.711,
            "label": "REGIME BOUNDARY \u2014 not support, not resistance",
            "means": "The strike where the running total of dealer gamma changes sign. Above it dealer hedging leans against moves and damps them; below it hedging leans with moves and amplifies them. It is a boundary between two behaviours, NOT a level price is repelled by \u2014 and this page reads the live regime from the gamma right around spot rather than from this level, because spot-versus-flip is much weaker than it is usually treated as."
        },
        "magnet": {
            "level": 7569.280976523507,
            "dist_pts": -15.62,
            "dist_pct": -0.206,
            "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": "session",
        "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.6% of the time (n=288) \u2014 against 40.7% for a level placed the same distance away with no gamma in it at all (difference -1.1 points, p=0.75). The put wall held 41.1% of the 209 times price reached it, against a placebo of 41.4% (-0.3 points, p=0.99). Neither is distinguishable from an arbitrary level, and the call wall was BROKEN more often than it held.",
            "call_hold_rate": 0.3958,
            "call_n": 288,
            "put_hold_rate": 0.4115,
            "put_n": 209,
            "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, 11% 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": "session",
        "has": true,
        "regime": "amplifying",
        "at_spot": -44221832776,
        "flip": 7637.0705,
        "flip_side": "below",
        "flip_dist_pct": 0.688,
        "spot": 7584.9,
        "census": {
            "oi_used": 5403523,
            "oi_missing_iv": 0,
            "n_session": 2817,
            "n_forward": 2482,
            "n_0dte": 335,
            "n_rest": 2482
        },
        "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": "session",
        "has": true,
        "spot": 7584.9,
        "as_of": "2026-09-15T16:38:01+00:00",
        "src": "gamma/data/chain x-block + header texp/rate/q; OI-only; never volume",
        "T_floor_minutes": 5,
        "at_spot": {
            "gamma": -48355323796,
            "gamma_0dte": -19754898704,
            "gamma_rest": -28600425092,
            "charm": -8829591030176,
            "charm_per_day": -24174102752,
            "charm_0dte": -721498578229,
            "charm_rest": -8108092451947,
            "vanna": 467160173455,
            "vanna_per_volpt": 4671601735,
            "vanna_0dte": 4956804796,
            "vanna_rest": 462203368658,
            "charm_x": -10665424395478,
            "vanna_x": 510793633019
        },
        "hedge": {
            "charm": {
                "word": "buy",
                "per_day": -24174102752,
                "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": 4671601735,
                "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": 8009.6789,
        "charm_flip_dist_pct": 5.6,
        "charm_flip_side": "below",
        "vanna_flip": 7967.1907,
        "vanna_flip_dist_pct": 5.04,
        "vanna_flip_side": "below",
        "n_contracts": 2160,
        "n_0dte": 215,
        "gamma_late": -43110052845,
        "gamma_late_0dte": -13898677138,
        "gamma_late_rest": -29211375707,
        "gamma_late_flip": 7623.6972,
        "late_clock": {
            "late_ts": 1789501500,
            "late_iso": "2026-09-15T19:45:00Z",
            "why": null,
            "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": 6500,
                    "call_vol": null,
                    "put_vol": 4174,
                    "vol": 4174,
                    "call_oi": 0,
                    "put_oi": 4556,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6550,
                    "call_vol": null,
                    "put_vol": 403,
                    "vol": 403,
                    "call_oi": 0,
                    "put_oi": 608,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6575,
                    "call_vol": null,
                    "put_vol": 602,
                    "vol": 602,
                    "call_oi": 15,
                    "put_oi": 1791,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6600,
                    "call_vol": null,
                    "put_vol": 965,
                    "vol": 965,
                    "call_oi": 0,
                    "put_oi": 1711,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6625,
                    "call_vol": 130,
                    "put_vol": 71,
                    "vol": 201,
                    "call_oi": 130,
                    "put_oi": 520,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 6650,
                    "call_vol": null,
                    "put_vol": 813,
                    "vol": 813,
                    "call_oi": 0,
                    "put_oi": 1080,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6675,
                    "call_vol": null,
                    "put_vol": 308,
                    "vol": 308,
                    "call_oi": 0,
                    "put_oi": 805,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6700,
                    "call_vol": null,
                    "put_vol": 330,
                    "vol": 330,
                    "call_oi": 0,
                    "put_oi": 3706,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6725,
                    "call_vol": null,
                    "put_vol": 439,
                    "vol": 439,
                    "call_oi": 0,
                    "put_oi": 583,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6750,
                    "call_vol": null,
                    "put_vol": 620,
                    "vol": 620,
                    "call_oi": 0,
                    "put_oi": 597,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6775,
                    "call_vol": null,
                    "put_vol": 1,
                    "vol": 1,
                    "call_oi": 0,
                    "put_oi": 562,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6800,
                    "call_vol": 1,
                    "put_vol": 3,
                    "vol": 4,
                    "call_oi": 1,
                    "put_oi": 1070,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 6825,
                    "call_vol": null,
                    "put_vol": 391,
                    "vol": 391,
                    "call_oi": 0,
                    "put_oi": 456,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6850,
                    "call_vol": null,
                    "put_vol": 5,
                    "vol": 5,
                    "call_oi": 0,
                    "put_oi": 524,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6875,
                    "call_vol": null,
                    "put_vol": 309,
                    "vol": 309,
                    "call_oi": 0,
                    "put_oi": 544,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6900,
                    "call_vol": null,
                    "put_vol": 1,
                    "vol": 1,
                    "call_oi": 0,
                    "put_oi": 1309,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6925,
                    "call_vol": 1,
                    "put_vol": 395,
                    "vol": 396,
                    "call_oi": 1,
                    "put_oi": 1474,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 6950,
                    "call_vol": null,
                    "put_vol": 2,
                    "vol": 2,
                    "call_oi": 0,
                    "put_oi": 1491,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6975,
                    "call_vol": null,
                    "put_vol": 3,
                    "vol": 3,
                    "call_oi": 0,
                    "put_oi": 2174,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 6990,
                    "call_vol": null,
                    "put_vol": 5,
                    "vol": 5,
                    "call_oi": 0,
                    "put_oi": 552,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7000,
                    "call_vol": null,
                    "put_vol": 6,
                    "vol": 6,
                    "call_oi": 0,
                    "put_oi": 1348,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7010,
                    "call_vol": null,
                    "put_vol": 5,
                    "vol": 5,
                    "call_oi": 0,
                    "put_oi": 721,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7020,
                    "call_vol": null,
                    "put_vol": 6,
                    "vol": 6,
                    "call_oi": 0,
                    "put_oi": 163,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7025,
                    "call_vol": null,
                    "put_vol": 36,
                    "vol": 36,
                    "call_oi": 0,
                    "put_oi": 312,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7030,
                    "call_vol": null,
                    "put_vol": 191,
                    "vol": 191,
                    "call_oi": 0,
                    "put_oi": 185,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7040,
                    "call_vol": null,
                    "put_vol": 6,
                    "vol": 6,
                    "call_oi": 0,
                    "put_oi": 231,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7050,
                    "call_vol": 13,
                    "put_vol": 81,
                    "vol": 94,
                    "call_oi": 13,
                    "put_oi": 1278,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7060,
                    "call_vol": null,
                    "put_vol": 1267,
                    "vol": 1267,
                    "call_oi": 0,
                    "put_oi": 1337,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7070,
                    "call_vol": null,
                    "put_vol": 64,
                    "vol": 64,
                    "call_oi": 0,
                    "put_oi": 176,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7075,
                    "call_vol": null,
                    "put_vol": 15,
                    "vol": 15,
                    "call_oi": 0,
                    "put_oi": 450,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7080,
                    "call_vol": null,
                    "put_vol": 1,
                    "vol": 1,
                    "call_oi": 0,
                    "put_oi": 189,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7090,
                    "call_vol": null,
                    "put_vol": 653,
                    "vol": 653,
                    "call_oi": 0,
                    "put_oi": 849,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7100,
                    "call_vol": 2,
                    "put_vol": 263,
                    "vol": 265,
                    "call_oi": 109,
                    "put_oi": 2175,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7110,
                    "call_vol": null,
                    "put_vol": 15,
                    "vol": 15,
                    "call_oi": 0,
                    "put_oi": 115,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7120,
                    "call_vol": null,
                    "put_vol": 13,
                    "vol": 13,
                    "call_oi": 0,
                    "put_oi": 345,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7125,
                    "call_vol": null,
                    "put_vol": 99,
                    "vol": 99,
                    "call_oi": 0,
                    "put_oi": 451,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7130,
                    "call_vol": null,
                    "put_vol": 52,
                    "vol": 52,
                    "call_oi": 0,
                    "put_oi": 125,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7140,
                    "call_vol": null,
                    "put_vol": 14,
                    "vol": 14,
                    "call_oi": 0,
                    "put_oi": 433,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7145,
                    "call_vol": null,
                    "put_vol": 78,
                    "vol": 78,
                    "call_oi": 0,
                    "put_oi": 67,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7150,
                    "call_vol": 5,
                    "put_vol": 397,
                    "vol": 402,
                    "call_oi": 3,
                    "put_oi": 685,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7155,
                    "call_vol": null,
                    "put_vol": 761,
                    "vol": 761,
                    "call_oi": 0,
                    "put_oi": 499,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7160,
                    "call_vol": null,
                    "put_vol": 3,
                    "vol": 3,
                    "call_oi": 0,
                    "put_oi": 261,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7165,
                    "call_vol": null,
                    "put_vol": 145,
                    "vol": 145,
                    "call_oi": 0,
                    "put_oi": 194,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7170,
                    "call_vol": null,
                    "put_vol": 1,
                    "vol": 1,
                    "call_oi": 0,
                    "put_oi": 220,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7175,
                    "call_vol": 2,
                    "put_vol": 96,
                    "vol": 98,
                    "call_oi": 15,
                    "put_oi": 293,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7180,
                    "call_vol": null,
                    "put_vol": 7,
                    "vol": 7,
                    "call_oi": 0,
                    "put_oi": 116,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7185,
                    "call_vol": null,
                    "put_vol": 8,
                    "vol": 8,
                    "call_oi": 0,
                    "put_oi": 114,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7190,
                    "call_vol": null,
                    "put_vol": 8,
                    "vol": 8,
                    "call_oi": 0,
                    "put_oi": 688,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7195,
                    "call_vol": null,
                    "put_vol": 75,
                    "vol": 75,
                    "call_oi": 0,
                    "put_oi": 353,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7200,
                    "call_vol": 25,
                    "put_vol": 512,
                    "vol": 537,
                    "call_oi": 22,
                    "put_oi": 742,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7205,
                    "call_vol": null,
                    "put_vol": 338,
                    "vol": 338,
                    "call_oi": 0,
                    "put_oi": 47,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7210,
                    "call_vol": 1,
                    "put_vol": 875,
                    "vol": 876,
                    "call_oi": 29,
                    "put_oi": 90,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7215,
                    "call_vol": null,
                    "put_vol": 1223,
                    "vol": 1223,
                    "call_oi": 0,
                    "put_oi": 129,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7220,
                    "call_vol": null,
                    "put_vol": 279,
                    "vol": 279,
                    "call_oi": 0,
                    "put_oi": 252,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7225,
                    "call_vol": null,
                    "put_vol": 197,
                    "vol": 197,
                    "call_oi": 0,
                    "put_oi": 1064,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7230,
                    "call_vol": null,
                    "put_vol": 668,
                    "vol": 668,
                    "call_oi": 0,
                    "put_oi": 108,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7235,
                    "call_vol": null,
                    "put_vol": 39,
                    "vol": 39,
                    "call_oi": 0,
                    "put_oi": 3103,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7240,
                    "call_vol": null,
                    "put_vol": 116,
                    "vol": 116,
                    "call_oi": 0,
                    "put_oi": 266,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7245,
                    "call_vol": null,
                    "put_vol": 271,
                    "vol": 271,
                    "call_oi": 0,
                    "put_oi": 93,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7250,
                    "call_vol": 20,
                    "put_vol": 1241,
                    "vol": 1261,
                    "call_oi": 10,
                    "put_oi": 909,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7255,
                    "call_vol": null,
                    "put_vol": 41,
                    "vol": 41,
                    "call_oi": 0,
                    "put_oi": 105,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7260,
                    "call_vol": 1,
                    "put_vol": 18,
                    "vol": 19,
                    "call_oi": 1,
                    "put_oi": 2610,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7265,
                    "call_vol": null,
                    "put_vol": 204,
                    "vol": 204,
                    "call_oi": 0,
                    "put_oi": 786,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7270,
                    "call_vol": null,
                    "put_vol": 60,
                    "vol": 60,
                    "call_oi": 0,
                    "put_oi": 3161,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7275,
                    "call_vol": 1,
                    "put_vol": 66,
                    "vol": 67,
                    "call_oi": 29,
                    "put_oi": 500,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7280,
                    "call_vol": null,
                    "put_vol": 32,
                    "vol": 32,
                    "call_oi": 0,
                    "put_oi": 295,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7285,
                    "call_vol": null,
                    "put_vol": 65,
                    "vol": 65,
                    "call_oi": 0,
                    "put_oi": 1656,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7290,
                    "call_vol": null,
                    "put_vol": 83,
                    "vol": 83,
                    "call_oi": 0,
                    "put_oi": 166,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7295,
                    "call_vol": null,
                    "put_vol": 35,
                    "vol": 35,
                    "call_oi": 0,
                    "put_oi": 154,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7300,
                    "call_vol": 2,
                    "put_vol": 146,
                    "vol": 148,
                    "call_oi": 3,
                    "put_oi": 1316,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7305,
                    "call_vol": null,
                    "put_vol": 11,
                    "vol": 11,
                    "call_oi": 0,
                    "put_oi": 91,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7310,
                    "call_vol": 30,
                    "put_vol": 10,
                    "vol": 40,
                    "call_oi": 30,
                    "put_oi": 233,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7315,
                    "call_vol": null,
                    "put_vol": 21,
                    "vol": 21,
                    "call_oi": 0,
                    "put_oi": 751,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7320,
                    "call_vol": 2,
                    "put_vol": 84,
                    "vol": 86,
                    "call_oi": 2,
                    "put_oi": 545,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7325,
                    "call_vol": 2,
                    "put_vol": 52,
                    "vol": 54,
                    "call_oi": 2,
                    "put_oi": 4878,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7330,
                    "call_vol": 1,
                    "put_vol": 82,
                    "vol": 83,
                    "call_oi": 1,
                    "put_oi": 215,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7335,
                    "call_vol": null,
                    "put_vol": 133,
                    "vol": 133,
                    "call_oi": 0,
                    "put_oi": 228,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7340,
                    "call_vol": 3,
                    "put_vol": 337,
                    "vol": 340,
                    "call_oi": 3,
                    "put_oi": 752,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7345,
                    "call_vol": null,
                    "put_vol": 346,
                    "vol": 346,
                    "call_oi": 0,
                    "put_oi": 186,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7350,
                    "call_vol": 2,
                    "put_vol": 900,
                    "vol": 902,
                    "call_oi": 14,
                    "put_oi": 4506,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7355,
                    "call_vol": null,
                    "put_vol": 718,
                    "vol": 718,
                    "call_oi": 0,
                    "put_oi": 285,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7360,
                    "call_vol": 6,
                    "put_vol": 1287,
                    "vol": 1293,
                    "call_oi": 26,
                    "put_oi": 625,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7365,
                    "call_vol": 10,
                    "put_vol": 580,
                    "vol": 590,
                    "call_oi": 10,
                    "put_oi": 4516,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7370,
                    "call_vol": 1,
                    "put_vol": 764,
                    "vol": 765,
                    "call_oi": 1,
                    "put_oi": 1752,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7375,
                    "call_vol": 20,
                    "put_vol": 492,
                    "vol": 512,
                    "call_oi": 22,
                    "put_oi": 575,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7380,
                    "call_vol": 2,
                    "put_vol": 376,
                    "vol": 378,
                    "call_oi": 2,
                    "put_oi": 2659,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7385,
                    "call_vol": 1,
                    "put_vol": 1677,
                    "vol": 1678,
                    "call_oi": 0,
                    "put_oi": 1903,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7390,
                    "call_vol": 2,
                    "put_vol": 770,
                    "vol": 772,
                    "call_oi": 1,
                    "put_oi": 488,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7395,
                    "call_vol": null,
                    "put_vol": 383,
                    "vol": 383,
                    "call_oi": 0,
                    "put_oi": 298,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7400,
                    "call_vol": 8,
                    "put_vol": 966,
                    "vol": 974,
                    "call_oi": 14,
                    "put_oi": 3697,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7405,
                    "call_vol": null,
                    "put_vol": 226,
                    "vol": 226,
                    "call_oi": 0,
                    "put_oi": 268,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7410,
                    "call_vol": 1,
                    "put_vol": 548,
                    "vol": 549,
                    "call_oi": 32,
                    "put_oi": 660,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7415,
                    "call_vol": 6,
                    "put_vol": 674,
                    "vol": 680,
                    "call_oi": 0,
                    "put_oi": 511,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7420,
                    "call_vol": 4,
                    "put_vol": 1595,
                    "vol": 1599,
                    "call_oi": 3,
                    "put_oi": 828,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7425,
                    "call_vol": 10,
                    "put_vol": 868,
                    "vol": 878,
                    "call_oi": 10,
                    "put_oi": 3151,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7430,
                    "call_vol": 8,
                    "put_vol": 918,
                    "vol": 926,
                    "call_oi": 4,
                    "put_oi": 1433,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7435,
                    "call_vol": null,
                    "put_vol": 1284,
                    "vol": 1284,
                    "call_oi": 0,
                    "put_oi": 3101,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": true,
                    "put_vol_missing": false
                },
                {
                    "k": 7440,
                    "call_vol": 3,
                    "put_vol": 1214,
                    "vol": 1217,
                    "call_oi": 34,
                    "put_oi": 1197,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7445,
                    "call_vol": 1,
                    "put_vol": 1822,
                    "vol": 1823,
                    "call_oi": 2,
                    "put_oi": 568,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7450,
                    "call_vol": 7,
                    "put_vol": 2799,
                    "vol": 2806,
                    "call_oi": 12,
                    "put_oi": 4782,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7455,
                    "call_vol": 2,
                    "put_vol": 1767,
                    "vol": 1769,
                    "call_oi": 14,
                    "put_oi": 427,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7460,
                    "call_vol": 8,
                    "put_vol": 3792,
                    "vol": 3800,
                    "call_oi": 10,
                    "put_oi": 1810,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7465,
                    "call_vol": 2,
                    "put_vol": 1519,
                    "vol": 1521,
                    "call_oi": 0,
                    "put_oi": 3434,
                    "call_oi_zero": true,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7470,
                    "call_vol": 50,
                    "put_vol": 2476,
                    "vol": 2526,
                    "call_oi": 2,
                    "put_oi": 769,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7475,
                    "call_vol": 33,
                    "put_vol": 2868,
                    "vol": 2901,
                    "call_oi": 7,
                    "put_oi": 2599,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7480,
                    "call_vol": 17,
                    "put_vol": 3575,
                    "vol": 3592,
                    "call_oi": 16,
                    "put_oi": 1328,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7485,
                    "call_vol": 10,
                    "put_vol": 2582,
                    "vol": 2592,
                    "call_oi": 2,
                    "put_oi": 2340,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7490,
                    "call_vol": 12,
                    "put_vol": 4299,
                    "vol": 4311,
                    "call_oi": 22,
                    "put_oi": 1425,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7495,
                    "call_vol": 36,
                    "put_vol": 3521,
                    "vol": 3557,
                    "call_oi": 3,
                    "put_oi": 2086,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7500,
                    "call_vol": 143,
                    "put_vol": 12829,
                    "vol": 12972,
                    "call_oi": 70,
                    "put_oi": 6429,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7505,
                    "call_vol": 40,
                    "put_vol": 5021,
                    "vol": 5061,
                    "call_oi": 12,
                    "put_oi": 2186,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7510,
                    "call_vol": 81,
                    "put_vol": 8430,
                    "vol": 8511,
                    "call_oi": 37,
                    "put_oi": 2084,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7515,
                    "call_vol": 201,
                    "put_vol": 8799,
                    "vol": 9000,
                    "call_oi": 33,
                    "put_oi": 1288,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7520,
                    "call_vol": 147,
                    "put_vol": 15732,
                    "vol": 15879,
                    "call_oi": 64,
                    "put_oi": 2119,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7525,
                    "call_vol": 274,
                    "put_vol": 13699,
                    "vol": 13973,
                    "call_oi": 131,
                    "put_oi": 2949,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7530,
                    "call_vol": 326,
                    "put_vol": 18216,
                    "vol": 18542,
                    "call_oi": 60,
                    "put_oi": 3712,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7535,
                    "call_vol": 417,
                    "put_vol": 18372,
                    "vol": 18789,
                    "call_oi": 59,
                    "put_oi": 1994,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7540,
                    "call_vol": 655,
                    "put_vol": 28333,
                    "vol": 28988,
                    "call_oi": 68,
                    "put_oi": 1297,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7545,
                    "call_vol": 728,
                    "put_vol": 29466,
                    "vol": 30194,
                    "call_oi": 22,
                    "put_oi": 976,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7550,
                    "call_vol": 2815,
                    "put_vol": 49997,
                    "vol": 52812,
                    "call_oi": 117,
                    "put_oi": 4119,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7555,
                    "call_vol": 1626,
                    "put_vol": 47804,
                    "vol": 49430,
                    "call_oi": 160,
                    "put_oi": 910,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7560,
                    "call_vol": 2674,
                    "put_vol": 68069,
                    "vol": 70743,
                    "call_oi": 655,
                    "put_oi": 1715,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7565,
                    "call_vol": 3785,
                    "put_vol": 42996,
                    "vol": 46781,
                    "call_oi": 688,
                    "put_oi": 1156,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7570,
                    "call_vol": 6573,
                    "put_vol": 55268,
                    "vol": 61841,
                    "call_oi": 175,
                    "put_oi": 1632,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7575,
                    "call_vol": 14960,
                    "put_vol": 63531,
                    "vol": 78491,
                    "call_oi": 142,
                    "put_oi": 2632,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7580,
                    "call_vol": 46987,
                    "put_vol": 71270,
                    "vol": 118257,
                    "call_oi": 182,
                    "put_oi": 3113,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7585,
                    "call_vol": 47722,
                    "put_vol": 59984,
                    "vol": 107706,
                    "call_oi": 219,
                    "put_oi": 1148,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7590,
                    "call_vol": 50809,
                    "put_vol": 45699,
                    "vol": 96508,
                    "call_oi": 318,
                    "put_oi": 1495,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7595,
                    "call_vol": 40646,
                    "put_vol": 28923,
                    "vol": 69569,
                    "call_oi": 347,
                    "put_oi": 3640,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7600,
                    "call_vol": 76308,
                    "put_vol": 39500,
                    "vol": 115808,
                    "call_oi": 1628,
                    "put_oi": 4377,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7605,
                    "call_vol": 50244,
                    "put_vol": 18919,
                    "vol": 69163,
                    "call_oi": 369,
                    "put_oi": 727,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7610,
                    "call_vol": 61995,
                    "put_vol": 16018,
                    "vol": 78013,
                    "call_oi": 407,
                    "put_oi": 1239,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7615,
                    "call_vol": 47414,
                    "put_vol": 8189,
                    "vol": 55603,
                    "call_oi": 397,
                    "put_oi": 2534,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7620,
                    "call_vol": 67940,
                    "put_vol": 6745,
                    "vol": 74685,
                    "call_oi": 1077,
                    "put_oi": 2661,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7625,
                    "call_vol": 54631,
                    "put_vol": 3208,
                    "vol": 57839,
                    "call_oi": 1051,
                    "put_oi": 2203,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7630,
                    "call_vol": 37728,
                    "put_vol": 2860,
                    "vol": 40588,
                    "call_oi": 1307,
                    "put_oi": 1454,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7635,
                    "call_vol": 24518,
                    "put_vol": 1380,
                    "vol": 25898,
                    "call_oi": 949,
                    "put_oi": 911,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7640,
                    "call_vol": 21887,
                    "put_vol": 1239,
                    "vol": 23126,
                    "call_oi": 1221,
                    "put_oi": 774,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7645,
                    "call_vol": 14147,
                    "put_vol": 564,
                    "vol": 14711,
                    "call_oi": 905,
                    "put_oi": 360,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7650,
                    "call_vol": 26088,
                    "put_vol": 2063,
                    "vol": 28151,
                    "call_oi": 2860,
                    "put_oi": 2876,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7655,
                    "call_vol": 17493,
                    "put_vol": 335,
                    "vol": 17828,
                    "call_oi": 1499,
                    "put_oi": 374,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7660,
                    "call_vol": 12009,
                    "put_vol": 281,
                    "vol": 12290,
                    "call_oi": 3439,
                    "put_oi": 498,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7665,
                    "call_vol": 7634,
                    "put_vol": 128,
                    "vol": 7762,
                    "call_oi": 2015,
                    "put_oi": 485,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7670,
                    "call_vol": 9000,
                    "put_vol": 213,
                    "vol": 9213,
                    "call_oi": 2107,
                    "put_oi": 659,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7675,
                    "call_vol": 3901,
                    "put_vol": 133,
                    "vol": 4034,
                    "call_oi": 4786,
                    "put_oi": 1606,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7680,
                    "call_vol": 5188,
                    "put_vol": 116,
                    "vol": 5304,
                    "call_oi": 3240,
                    "put_oi": 555,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7685,
                    "call_vol": 5008,
                    "put_vol": 43,
                    "vol": 5051,
                    "call_oi": 2362,
                    "put_oi": 813,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7690,
                    "call_vol": 3044,
                    "put_vol": 34,
                    "vol": 3078,
                    "call_oi": 1579,
                    "put_oi": 427,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7695,
                    "call_vol": 2805,
                    "put_vol": 29,
                    "vol": 2834,
                    "call_oi": 2022,
                    "put_oi": 164,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7700,
                    "call_vol": 5454,
                    "put_vol": 238,
                    "vol": 5692,
                    "call_oi": 4610,
                    "put_oi": 864,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7705,
                    "call_vol": 4428,
                    "put_vol": 57,
                    "vol": 4485,
                    "call_oi": 1433,
                    "put_oi": 446,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7710,
                    "call_vol": 3027,
                    "put_vol": 14,
                    "vol": 3041,
                    "call_oi": 2583,
                    "put_oi": 749,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7715,
                    "call_vol": 3205,
                    "put_vol": 6,
                    "vol": 3211,
                    "call_oi": 2171,
                    "put_oi": 175,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7720,
                    "call_vol": 1793,
                    "put_vol": 246,
                    "vol": 2039,
                    "call_oi": 1689,
                    "put_oi": 343,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7725,
                    "call_vol": 1617,
                    "put_vol": 15,
                    "vol": 1632,
                    "call_oi": 7849,
                    "put_oi": 224,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7730,
                    "call_vol": 1428,
                    "put_vol": 27,
                    "vol": 1455,
                    "call_oi": 1070,
                    "put_oi": 245,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7735,
                    "call_vol": 980,
                    "put_vol": 13,
                    "vol": 993,
                    "call_oi": 1377,
                    "put_oi": 59,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7740,
                    "call_vol": 1501,
                    "put_vol": 11,
                    "vol": 1512,
                    "call_oi": 974,
                    "put_oi": 87,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7745,
                    "call_vol": 2149,
                    "put_vol": 7,
                    "vol": 2156,
                    "call_oi": 1326,
                    "put_oi": 79,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7750,
                    "call_vol": 1999,
                    "put_vol": 38,
                    "vol": 2037,
                    "call_oi": 2400,
                    "put_oi": 819,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7755,
                    "call_vol": 3020,
                    "put_vol": 12,
                    "vol": 3032,
                    "call_oi": 652,
                    "put_oi": 51,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7760,
                    "call_vol": 2826,
                    "put_vol": 10,
                    "vol": 2836,
                    "call_oi": 749,
                    "put_oi": 62,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7765,
                    "call_vol": 1657,
                    "put_vol": 17,
                    "vol": 1674,
                    "call_oi": 813,
                    "put_oi": 22,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7770,
                    "call_vol": 1655,
                    "put_vol": 14,
                    "vol": 1669,
                    "call_oi": 937,
                    "put_oi": 43,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7775,
                    "call_vol": 1485,
                    "put_vol": 2,
                    "vol": 1487,
                    "call_oi": 1187,
                    "put_oi": 25,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7780,
                    "call_vol": 1045,
                    "put_vol": 16,
                    "vol": 1061,
                    "call_oi": 1310,
                    "put_oi": 129,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7785,
                    "call_vol": 797,
                    "put_vol": 4,
                    "vol": 801,
                    "call_oi": 4397,
                    "put_oi": 26,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7790,
                    "call_vol": 919,
                    "put_vol": 5,
                    "vol": 924,
                    "call_oi": 1945,
                    "put_oi": 83,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7795,
                    "call_vol": 501,
                    "put_vol": 1,
                    "vol": 502,
                    "call_oi": 398,
                    "put_oi": 1,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7800,
                    "call_vol": 1110,
                    "put_vol": 30,
                    "vol": 1140,
                    "call_oi": 2963,
                    "put_oi": 70,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7805,
                    "call_vol": 470,
                    "put_vol": 8,
                    "vol": 478,
                    "call_oi": 836,
                    "put_oi": 9,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7810,
                    "call_vol": 464,
                    "put_vol": 1,
                    "vol": 465,
                    "call_oi": 1015,
                    "put_oi": 7,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7815,
                    "call_vol": 377,
                    "put_vol": 2,
                    "vol": 379,
                    "call_oi": 559,
                    "put_oi": 3,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7820,
                    "call_vol": 134,
                    "put_vol": 1,
                    "vol": 135,
                    "call_oi": 731,
                    "put_oi": 19,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7825,
                    "call_vol": 19,
                    "put_vol": 2,
                    "vol": 21,
                    "call_oi": 2294,
                    "put_oi": 50,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7830,
                    "call_vol": 14,
                    "put_vol": 1,
                    "vol": 15,
                    "call_oi": 1760,
                    "put_oi": 3,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7835,
                    "call_vol": 6,
                    "put_vol": 1,
                    "vol": 7,
                    "call_oi": 453,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7840,
                    "call_vol": 1,
                    "put_vol": 2,
                    "vol": 3,
                    "call_oi": 485,
                    "put_oi": 8,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7845,
                    "call_vol": 8,
                    "put_vol": 1,
                    "vol": 9,
                    "call_oi": 439,
                    "put_oi": 1,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7850,
                    "call_vol": 1,
                    "put_vol": 8,
                    "vol": 9,
                    "call_oi": 736,
                    "put_oi": 39,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7855,
                    "call_vol": 26,
                    "put_vol": 2,
                    "vol": 28,
                    "call_oi": 255,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7860,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 309,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7865,
                    "call_vol": 28,
                    "put_vol": null,
                    "vol": 28,
                    "call_oi": 341,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7870,
                    "call_vol": 1,
                    "put_vol": 2,
                    "vol": 3,
                    "call_oi": 386,
                    "put_oi": 1,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7875,
                    "call_vol": 5,
                    "put_vol": 2,
                    "vol": 7,
                    "call_oi": 1104,
                    "put_oi": 2,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7880,
                    "call_vol": 55,
                    "put_vol": null,
                    "vol": 55,
                    "call_oi": 361,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7885,
                    "call_vol": 28,
                    "put_vol": 2,
                    "vol": 30,
                    "call_oi": 169,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7890,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 371,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7895,
                    "call_vol": 13,
                    "put_vol": 2,
                    "vol": 15,
                    "call_oi": 173,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7900,
                    "call_vol": 3,
                    "put_vol": 5,
                    "vol": 8,
                    "call_oi": 994,
                    "put_oi": 74,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7910,
                    "call_vol": 18,
                    "put_vol": 2,
                    "vol": 20,
                    "call_oi": 384,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7920,
                    "call_vol": 1,
                    "put_vol": 2,
                    "vol": 3,
                    "call_oi": 446,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7925,
                    "call_vol": 5,
                    "put_vol": null,
                    "vol": 5,
                    "call_oi": 672,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7930,
                    "call_vol": 21,
                    "put_vol": null,
                    "vol": 21,
                    "call_oi": 508,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7940,
                    "call_vol": 1,
                    "put_vol": 10,
                    "vol": 11,
                    "call_oi": 190,
                    "put_oi": 10,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7950,
                    "call_vol": 4,
                    "put_vol": 2,
                    "vol": 6,
                    "call_oi": 577,
                    "put_oi": 7,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7960,
                    "call_vol": 3,
                    "put_vol": 2,
                    "vol": 5,
                    "call_oi": 180,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 7970,
                    "call_vol": 82,
                    "put_vol": null,
                    "vol": 82,
                    "call_oi": 134,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 7975,
                    "call_vol": 4,
                    "put_vol": 12,
                    "vol": 16,
                    "call_oi": 362,
                    "put_oi": 10,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 8000,
                    "call_vol": 3,
                    "put_vol": 4,
                    "vol": 7,
                    "call_oi": 759,
                    "put_oi": 2,
                    "call_oi_zero": false,
                    "put_oi_zero": false,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 8025,
                    "call_vol": 32,
                    "put_vol": null,
                    "vol": 32,
                    "call_oi": 207,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8050,
                    "call_vol": 7,
                    "put_vol": null,
                    "vol": 7,
                    "call_oi": 190,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8075,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 178,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8100,
                    "call_vol": 4,
                    "put_vol": null,
                    "vol": 4,
                    "call_oi": 303,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8125,
                    "call_vol": 28,
                    "put_vol": 1,
                    "vol": 29,
                    "call_oi": 51,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": false
                },
                {
                    "k": 8150,
                    "call_vol": 10,
                    "put_vol": null,
                    "vol": 10,
                    "call_oi": 66,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8175,
                    "call_vol": 4,
                    "put_vol": null,
                    "vol": 4,
                    "call_oi": 51,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8200,
                    "call_vol": 4,
                    "put_vol": null,
                    "vol": 4,
                    "call_oi": 242,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8225,
                    "call_vol": 6,
                    "put_vol": null,
                    "vol": 6,
                    "call_oi": 69,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8250,
                    "call_vol": 2137,
                    "put_vol": null,
                    "vol": 2137,
                    "call_oi": 2247,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8275,
                    "call_vol": 11,
                    "put_vol": null,
                    "vol": 11,
                    "call_oi": 25,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8300,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 15,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8325,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 4,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8400,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 110,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8500,
                    "call_vol": 1,
                    "put_vol": null,
                    "vol": 1,
                    "call_oi": 1,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                },
                {
                    "k": 8600,
                    "call_vol": 10,
                    "put_vol": null,
                    "vol": 10,
                    "call_oi": 10,
                    "put_oi": 0,
                    "call_oi_zero": false,
                    "put_oi_zero": true,
                    "call_vol_missing": false,
                    "put_vol_missing": true
                }
            ],
            "totals_in_band": {
                "call_vol": 817746,
                "put_vol": 864346,
                "vol": 1682092,
                "n": 432,
                "n_oi_zero": 97,
                "n_oi_zero_with_vol": 11,
                "n_oi_pos": 335,
                "vol_on_oi_zero": 23,
                "vol_on_oi_pos": 1682069,
                "vol_missing": 87,
                "oi_known": 432
            },
            "totals_all_0dte": {
                "call_vol": 817762,
                "put_vol": 871272,
                "vol": 1689034,
                "n": 484,
                "n_oi_zero_with_vol": 15,
                "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": 2160,
            "n_forward": 1945,
            "n_0dte": 215,
            "xiv_used": 2160,
            "xiv_missing": 657,
            "texp_missing": 0,
            "q_empty": 0,
            "rate_missing": 0,
            "xcharm_known": 2160,
            "xcharm_missing": 657,
            "xvanna_known": 2160,
            "xvanna_missing": 657,
            "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": "SPX",
        "as_of": "2026-09-15T16:38:01+00:00",
        "ts": 1789490281,
        "spot": 7584.9,
        "book": "session",
        "clock": {
            "session": "2026-09-15",
            "from_iso": "2026-09-15T16:40:00Z",
            "to_iso": "2026-09-15T20:00:00Z",
            "step_min": 5,
            "steps": 41,
            "expiry_instant_iso": "2026-09-15T20:00:00Z",
            "early_close": false,
            "holiday_source": "https://www.nyse.com/trade/hours-calendars",
            "holiday_calendar_ok": true
        },
        "levels": [
            7435,
            7440,
            7445,
            7450,
            7455,
            7460,
            7465,
            7470,
            7475,
            7480,
            7485,
            7490,
            7495,
            7500,
            7505,
            7510,
            7515,
            7520,
            7525,
            7530,
            7535,
            7540,
            7545,
            7550,
            7555,
            7560,
            7565,
            7570,
            7575,
            7580,
            7585,
            7590,
            7595,
            7600,
            7605,
            7610,
            7615,
            7620,
            7625,
            7630,
            7635,
            7640,
            7645,
            7650,
            7655,
            7660,
            7665,
            7670,
            7675,
            7680,
            7685,
            7690,
            7695,
            7700,
            7705,
            7710,
            7715,
            7720,
            7725,
            7730,
            7735
        ],
        "level_step": 5,
        "times": [
            1789490400,
            1789490700,
            1789491000,
            1789491300,
            1789491600,
            1789491900,
            1789492200,
            1789492500,
            1789492800,
            1789493100,
            1789493400,
            1789493700,
            1789494000,
            1789494300,
            1789494600,
            1789494900,
            1789495200,
            1789495500,
            1789495800,
            1789496100,
            1789496400,
            1789496700,
            1789497000,
            1789497300,
            1789497600,
            1789497900,
            1789498200,
            1789498500,
            1789498800,
            1789499100,
            1789499400,
            1789499700,
            1789500000,
            1789500300,
            1789500600,
            1789500900,
            1789501200,
            1789501500,
            1789501800,
            1789502100,
            1789502400
        ],
        "dollar_per_5m": "[41 x 61 matrix \u2014 api.php?sym=SPX carries it in full]",
        "es_per_5m": "[41 x 61 matrix \u2014 api.php?sym=SPX carries it in full]",
        "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,
            7731.3232,
            7496.0673,
            7497.2492,
            7498.2073,
            7498.7548,
            7498.755
        ],
        "pockets": [
            {
                "from_ts": 1789501200,
                "to_ts": 1789502400,
                "lo": 7730,
                "hi": 7735,
                "n_cells": 10,
                "word": "sell",
                "peak_dollar_per_5m": 496719353.03,
                "peak_ts": 1789502400,
                "peak_level": 7730,
                "lines": [
                    {
                        "k": 7725,
                        "expiry": "2026-09-15",
                        "type": "call",
                        "oi": 7849,
                        "contrib": 275868312.2
                    },
                    {
                        "k": 7745,
                        "expiry": "2026-09-15",
                        "type": "call",
                        "oi": 1326,
                        "contrib": -54074219.93
                    },
                    {
                        "k": 7750,
                        "expiry": "2026-09-15",
                        "type": "call",
                        "oi": 2400,
                        "contrib": -47631124.73
                    }
                ],
                "centre_ts": 1789501800,
                "centre_level": 7735,
                "peak_es_per_5m": 1273.03
            },
            {
                "from_ts": 1789501800,
                "to_ts": 1789502400,
                "lo": 7680,
                "hi": 7685,
                "n_cells": 5,
                "word": "sell",
                "peak_dollar_per_5m": 60081396.11,
                "peak_ts": 1789502400,
                "peak_level": 7680,
                "lines": [
                    {
                        "k": 7680,
                        "expiry": "2026-09-15",
                        "type": "call",
                        "oi": 3240,
                        "contrib": 225568045.91
                    },
                    {
                        "k": 7690,
                        "expiry": "2026-09-15",
                        "type": "call",
                        "oi": 1579,
                        "contrib": -123688756.55
                    },
                    {
                        "k": 7695,
                        "expiry": "2026-09-15",
                        "type": "call",
                        "oi": 2022,
                        "contrib": -18730760.08
                    }
                ],
                "centre_ts": 1789502100,
                "centre_level": 7685,
                "peak_es_per_5m": 154.984
            }
        ],
        "next_60m_at_spot": {
            "level": 7585,
            "steps": 12,
            "dollar": -1013872449.76,
            "es": -2648.1,
            "word": "buy",
            "from_iso": "2026-09-15T16:40:00Z",
            "to_iso": "2026-09-15T17:35:00Z"
        },
        "es_liquidity_context": {
            "overnight_per_5m": 732,
            "rth_per_5m": 5424,
            "overnight_share": 0.135,
            "measured": "Average ES contracts per 5-minute bar over the last 5 days of bars, split at 13:30-20:00 UTC. Measured by futures.php on this build, not typed in.",
            "note": "Overnight futures liquidity is far thinner than the regular session. A wall approached at 03:00 on light volume is not the same event as one approached at 14:00, and neither this page nor the dealer hedging behind the wall treats it as one."
        },
        "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": "5 index points \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 session 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": 2160,
            "n_used_max": 2160,
            "expired_at_last_step": 0,
            "cells": 2501,
            "kernel_vs_pg_charm_rel_err": 6.10021870014824e-13
        },
        "n_contracts": 2160,
        "compute_ms": 2401,
        "book_note": "Built on the live session book, the one dealers are hedging right now.",
        "es_conversion": "ES contracts = the cell's dollars / (that index level in ES points x 50). The index level is put into ES points with this page's existing anchor ratio: ES closed at 7,657.25 while SPX stood at 7,584.90, so one SPX point is 1.009539 ES points. The basis and any index/ETF ratio cancel because both sit in the anchor. Applied when this payload is read, so it always uses the live front month.",
        "es_product": "ES",
        "es_multiplier": 50,
        "es_multiplier_src": "CME contract specification \u2014 a definition, not a measurement."
    },
    "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": 7550,
                "rank": 1,
                "gex": -4901649940.325622,
                "net_oi": -24312,
                "call_oi": 39082,
                "put_oi": 63394,
                "dist_pct": -0.4601247214861058,
                "dist_pts": -34.899999999999636,
                "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": 7500,
                "rank": 2,
                "gex": -4900571009.750382,
                "net_oi": -38999,
                "call_oi": 62540,
                "put_oi": 101539,
                "dist_pct": -1.1193291935292442,
                "dist_pts": -84.89999999999964,
                "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": 7600,
                "rank": 3,
                "gex": -4736723801.915974,
                "net_oi": -11012,
                "call_oi": 60140,
                "put_oi": 71152,
                "dist_pct": 0.1990797505570326,
                "dist_pts": 15.100000000000364,
                "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": 7680,
                "rank": 1,
                "gex": 1307687010.6141582,
                "net_oi": 10952,
                "call_oi": 21175,
                "put_oi": 10223,
                "dist_pct": 1.253806905826054,
                "dist_pts": 95.10000000000036,
                "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": 7700,
                "rank": 2,
                "gex": 852448854.4933519,
                "net_oi": 9537,
                "call_oi": 69691,
                "put_oi": 60154,
                "dist_pct": 1.5174886946433093,
                "dist_pts": 115.10000000000036,
                "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": 7725,
                "rank": 3,
                "gex": 652761431.3292862,
                "net_oi": 12866,
                "call_oi": 24922,
                "put_oi": 12056,
                "dist_pct": 1.8470909306648786,
                "dist_pts": 140.10000000000036,
                "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": "session",
        "as_of": "2026-09-15T16:38:01+00:00",
        "src": "per-strike OI-weighted dollar gamma, same snapshot as the walls; dealer-side sign is a convention"
    },
    "migration": {
        "from_iso": "2026-09-15T13:08:01+00:00",
        "to_iso": "2026-09-15T16:38:01+00:00",
        "n_snapshots": 39,
        "call_wall": [
            7750,
            7800
        ],
        "put_wall": [
            7600,
            7550
        ],
        "gamma_center": [
            7596.567928438884,
            7569.280976523507
        ],
        "spot": [
            7619.98,
            7584.9
        ],
        "local_gamma_at_spot": [
            -1630837846.0635312,
            -1395676798.902838
        ],
        "sign_flips": 0
    },
    "census": {
        "n": 28884,
        "in_band": 3462,
        "oi_known": 3462,
        "oi_missing": 0,
        "oi_zero": 645,
        "g_vendor": 3462,
        "g_x": 2238,
        "used": 3462
    },
    "freshness": {
        "chain_day": "2026-09-15",
        "chain_asof": "2026-09-15T16:38:01+00:00",
        "chain_phase": "rth",
        "chain_built": "2026-09-15T16:40:55Z",
        "now_utc": "2026-09-15T16:50:45Z",
        "tiers": [
            {
                "key": "chain",
                "label": "options chain",
                "ts": "2026-09-15T16:38:01+00:00",
                "cadence": 300,
                "phase": "live",
                "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-09-15T16:40:55Z",
                "cadence": 600,
                "phase": "live",
                "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-09-15",
                "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-11",
                "cadence": 86400,
                "mode": "date",
                "phase": "settled",
                "means": "The banked daily-close spine the history charts draw. One row per session."
            },
            {
                "key": "futures",
                "label": "ES futures",
                "ts": "2026-09-15T16:45:00+00:00",
                "cadence": 300,
                "phase": "live",
                "means": "ESZ6, the front-month contract resolved by live volume rather than a continuous alias. It trades while the cash market is shut, which is the whole reason it can be compared against a wall level that is frozen until the next settlement."
            },
            {
                "key": "runs archive",
                "label": "bull/bear archive",
                "ts": "2026-09-14",
                "cadence": 86400,
                "mode": "date",
                "phase": "settled",
                "grace": 216000,
                "means": "Daily closes from 1927-12-30 to 2026-09-14, 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-11",
        "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-09-15T09:20:02Z"
    },
    "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 uses the VENDOR gamma; total_gex_x uses our own Black-Scholes gamma. Never fused, never substituted \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=SPX&full=1 · text: ?format=text · Part B only: ?validation=1