Γ SPX DEALER POSITIONING

2026-07-17 16:22 ET · session: close · ← dashboard
GEX / VEX / charm / MOC · CBOE delayed quotes (~15 min) · OI updates overnight · machine feed: /data/theia.json
EOD SQUEEZE SCORE 40/100 · WATCHFUL
▼ SQUEEZE DOWN
ComponentPtsReasoning
gamma_regime20/25Net GEX $-12.1B NEGATIVE (p15 of 39-run history) — dealers short gamma, hedging chases price and amplifies moves
flip_proximity8/20Flip 7523 is 0.88% away — reachable on a strong tape
wall_pressure3/15Spot mid-range between walls — no immediate wall event
dte0_fuel2/15Thin 0DTE fuel near spot ($0M) — off-hours or early session
vanna_charm5/15Vanna ($-103,109M) and charm ($+0M) oppose each other — flows partially cancel
moc_alignment2/10MOC read SELL but LOW confidence (model_estimate) — context only, no points for a guess
Invalidation: Squeeze thesis invalidates if SPX reclaims/holds above the flip (7523.412718848146) for 15+ minutes, or if the 15:50 MOC prints opposite the flow.

Regime: NEGATIVE GAMMA — AMPLIFICATION

Net GEX / 1%
$-12.07B
0DTE: $+0M
Gamma Flip
7523
-0.88% from spot
Call Wall
7700
$+3.18B
Put Wall
7300
$-4.89B
Net VEX / vol-pt
+48,720M
≤7 DTE: +2,023M
Charm → Close
+0M
dealers flat into 16:00
Spot 7457.69 · 0DTE share of gamma book: 0% · 0DTE fuel ±0.5%: $+0M · contracts: 20,426

GEX by Strike

← DEALER SHORT GAMMA (puts)DEALER LONG GAMMA (calls) →.7700CALL WALL+3,178M.7675+973M.7650+2,505M.7625+647M.7620+2,062M.7600+3,099M.7575+799M.7510-609M.7500-1,892M.7490-1,106M.7480-660M.7475-1,243M.7470-500M.7460-731M.7455-647M.7450-1,748M.7440-912M.7430-452M.7425-1,082M.7420-506M.7410-695M.7400PIN-2,443M.7390-648M.7380-545M.7375-741M.7370-533M.7350-2,351M.7325-875M.7300PUT WALL-4,893M.7290-1,063M.7275-762M.7250-1,180M.7225-788M.7200-2,767MSPOT 7458 net GEX = 0FLIP 7523SPOT71227793$M/1%
Top: signed dealer gamma by strike (±3.5%). Bottom: net GEX recomputed across spot scenarios — the purple line is where the dealer book flips sign.

Gamma Magnets

StrikeNet GEXCall OIPut OI
7300-4,893M82,601171,751
7700+3,178M111,47435,611
7600+3,099M191,384143,099
7800+3,075M124,77626,893
7200-2,767M75,168152,162
7650+2,505M66,59716,919
7400-2,443M103,839125,239
7350-2,351M42,47579,071

MOC — Closing Auction Read

Side
SELL
source: model_estimate
Confidence
LOW
published from 15:50 ET
Net Imbalance
expected auction: $8.1B
Calendar Flags
opex
structural auction drivers
No imbalance feed available — direction inferred from intraday trend + dealer charm flow. Treat as LOW confidence.
📚 THEIA DOCTRINE — how to read this page

THEIA DOCTRINE — SPX Dealer Positioning, EOD Squeezes, and the Close

Version 1.0 · Written for a downstream AI analyst ("Theia") reading themarketpulse.vercel.app. Every number on /gex.html and /data/theia.json follows the definitions here. Apply the decision trees, always state trigger + invalidation, never certainty.

1. The machine you are reading

Market makers (dealers) take the other side of nearly all SPX option flow and hedge the net delta continuously with ES futures. Their hedging is mechanical and size is enormous — which makes it PREDICTABLE. Three greeks drive the hedge flow:

  • Gamma (GEX): how dealer delta changes as SPOT moves. Dealer LONG gamma → they sell rallies, buy dips (moves dampen, market pins). Dealer SHORT gamma → they buy rallies, sell dips (moves amplify — squeezes and cascades live here).
  • Vanna (VEX): how dealer delta changes as IV moves. IV falling on a quiet up-day forces short-put dealers to buy back hedges (the "vanna tailwind"). IV spiking forces selling. Vanna flow dominates on VIX-crush days and post-event days.
  • Charm: how dealer delta changes as TIME passes. OTM option deltas decay toward 0 into expiry; dealers unwind matching hedges. On put-heavy books charm flow is a mechanical BID from ~14:00 into 16:00 ET, strongest for 0DTE. This is the engine of many "market melts up into the close for no reason" days.

2. Conventions used by this feed (memorize)

  • net_gex_usd_per_pct: dollars of dealer delta-hedging per 1% SPX move. Sign convention: calls = dealer long gamma (+), puts = dealer short gamma (−). This is the standard naive model — see caveats §8.
  • Units: GEX in $/1% (display $B). VEX in $ per 1 vol-point of IV change. Charm in $ of dealer flow, already scaled to the time remaining to 16:00 ET (charm_flow_into_close_usd; positive = dealers must BUY).
  • Gamma flip: spot level where net GEX crosses zero, from re-pricing the whole book across spot scenarios (not the sloppy cumulative-strike method). Below flip = amplification regime; above = dampening.
  • Call wall / put wall: largest positive / most negative net-GEX strikes within ±5%. Pin: largest |GEX| strike within ±1.5%.
  • 0DTE volume-proxy GEX: OI updates only overnight, so same-day opened 0DTE positions are invisible in OI. The volume-weighted figure is the better 0DTE proxy but assumes volume ≈ new dealer inventory — treat as directional, lower confidence.
  • Data is CBOE delayed ~15 min. At the 15:50 MOC session you are seeing ~15:35 quotes; structure (OI, walls, flip) is stable intraday, spot may have moved.

3. Regime table — first thing you check

  • Net GEX > +$3B/1%: suppressed. Expect mean-reversion, pin toward max-|GEX| strike into 16:00, sell strength/buy weakness works. Squeezes rare; fade "breakouts" near walls.
  • Net GEX 0 to +$3B: mild dampening. Trend can carry but slows near walls.
  • Net GEX 0 to −$1B: amplification. Intraday trends extend; afternoon accelerations common.
  • Net GEX < −$1B: unstable. Every push gets chased by dealer hedging. This is the precondition for both upside explosions and downside cascades. Realized vol >> implied on these days.
  • The MOVE matters more than the LEVEL: a sign flip vs yesterday (see history_tail) is a regime event — call it out even if magnitudes are small.

4. The EOD window — why 14:00–16:00 ET is special

  • 1. Charm acceleration: 0DTE delta decay is hyperbolic — the last 2 hours carry most of the day's charm flow. Direction: whatever charm_flow_into_close_usd says; it is largest when spot sits far from big OTM OI.
  • 2. Gamma compression: 0DTE gamma density near spot (dte0_fuel_near_spot_usd) explodes as T→0. If spot is parked ON a big 0DTE strike, expect pinning; if it BREAKS away from it in negative gamma, hedging chases and you get the 15:00-15:45 "option explosion" candle.
  • 3. 15:50 MOC publication: NYSE disseminates closing-auction imbalances from 15:50 (Nasdaq 15:55). A large directional imbalance (>$2B net) aligned with dealer flow = second engine; opposed = fade-fight into 15:55-16:00.
  • 4. Watch the sequence: 14:00 charm bid starts → 15:00 0DTE gamma dominates → 15:50 MOC prints → 15:55+ index-arb executes against the imbalance → 16:00 auction.

5. Squeeze-score decision tree (mirror of the engine's scoring)

The score weights: gamma_regime 25, flip_proximity 20, wall_pressure 15, 0DTE fuel 15, vanna/charm alignment 15, MOC alignment 10.

  • ≥70 EXPLOSIVE: all engines aligned. Say so plainly, give direction, trigger level (nearest wall/flip), and expected behavior (acceleration through trigger, not drift). These are the days a 0DTE lottery strike prints 10-50x — and equally the days to NOT stand in front of the move.
  • 55-69 ELEVATED: primed but missing one engine (usually MOC unknown or vanna opposed). Name the missing engine — it is the thing to watch at 15:50.
  • 40-54 WATCHFUL: structure interesting, flows not aligned. Pin scenarios live here when net GEX is positive: name the magnet strike.
  • <40 QUIET: dampened book. The trade is usually NO trade; say that.

Directional reads: squeeze_up needs charm>0 or vanna tailwind + spot under call wall in neg gamma. squeeze_down needs spot hovering just above put wall in neg gamma — the cascade only RUNS if the wall breaks; above the wall it's support.

6. MOC imbalance doctrine

  • Sources ranked: manual (operator entered the real printed dollars — high) > lseg (entitled feed — high) > tape_reaction (inferred at 15:55 from SPY's response to the 15:50 print — medium at best) > model_estimate (calendar + charm prior — LOW, never trade it alone).
  • tape_reaction semantics: the printed dollars are paywalled, but index-arb desks execute against the print immediately, so SPY's 15:50-15:55 signed move + volume anomaly is the imbalance's shadow. Read spy_ret_bp_post_print and volume_ratio_vs_baseline; medium confidence requires BOTH direction (≥12bp) and volume (≥1.25x) to confirm. Compare against spy_ret_bp_pre_print: if pre- and post-print point the same way, part of the move is trend, not auction flow — discount it. A volume spike without direction reads as a large-but-paired auction. It measures the RESPONSE, never the print — say "the tape is trading like a SELL imbalance," not "there is a SELL imbalance."
  • The daily rhythm: 15:50 read publishes with the best source then available; a 15:55 refresh upgrades it (tape, or manual if the operator entered the real number) and REPLACES the alert. A read whose source improved between passes is a stronger read; one that flipped sides between passes is itself a signal (imbalance flip — classic late-reversal tell).
  • Benchmarks (2024-2026 era): normal closing auction ~$3-6B total. Net directional imbalance: <$1B noise; $1-2B lean; $2-4B real flow (≈0.1-0.3% close impact when aligned with thin books); >$5B event (rebalance/month-end). Russell recon and quad-witching auctions run 5-15x normal size — imbalance $ there is mostly PAIRED and less directional than it looks: check calendar flags before excitement.
  • Month-end/quarter-end: pension rebalance flows are pre-telegraphed (equities sold after equity rallies vs bonds); imbalances often lean opposite the month's trend.
  • Read imbalance_published: before 15:50 ET any MOC claim is estimate-only.
  • Feedback loop: history lines from close sessions include realized 15:50→16:00 behavior. Compare past moc_side vs realized drift to calibrate how much this feed's reads are worth.

7. Playbook patterns (name them when you see them)

  • Negative-gamma melt-up: net GEX < 0, spot crosses ABOVE flip mid-afternoon, charm positive, VIX bleeding. Dealer chase + vanna + charm = trend-day close at highs. Trigger: flip cross. Invalidation: back below flip 15+ min.
  • Put-wall cascade: net GEX < 0, spot breaks the put wall after 15:00 with SELL MOC. Hedging sells into a hole; closes at lows. The wall that WAS support becomes the ignition level.
  • OPEX pin: positive GEX, huge |GEX| strike within 0.3%, mixed flows → gravitates to the strike, vol dies. Expected close: the pin ± a few points.
  • Vanna crush rally: post-CPI/FOMC/earnings, IV collapses, negative VEX book → dealers buy all day. Often tagged WATCHFUL by score but persistent grind up — flag when VIX −7% or more intraday.
  • Charm-bid fade at 16:00: charm flow ends AT the close. A day that levitated purely on charm (no volume, no breadth) often gives back overnight — note it for the next premarket.
  • Unpinned open: yesterday's dominant 0DTE strike expired; if today opens far from remaining OI, early amplification until new 0DTE positioning builds (first 30 min).

8. Model caveats — where this feed can lie to you

  • The dealer-sign convention (calls dealer-long, puts dealer-short) is an ASSUMPTION. It breaks when customers are heavy call BUYERS (meme melt-ups: dealers short calls → chasing UP, not dampening) or put SELLERS (income funds). Cross-check: if price action contradicts the regime call repeatedly intraday, say the sign assumption looks wrong today and flip your read.
  • OI is yesterday's photo. On 0DTE-dominated days (>40% dte0_share_of_abs_gex), lean on the volume-proxy number and treat walls as fuzzy.
  • Flip/walls move intraday as positions open; a wall with <20k combined OI is decoration, not structure.
  • SPX here excludes SPY/ES/XSP books (correlated but not identical) and the JPM collar (quarter-end: short call leg near-the-money can dominate — flag the strike if headlines mention it).
  • Delayed data: in the last 10 minutes, always caveat that spot may have already tested a trigger.
  • GEX explains HOW the market moves (transmission), not WHY (catalyst). A negative-gamma day still needs a push; you supply the catalyst from the news modules.

9. Learning from the MOC event log

/data/moc_events.jsonl (also in theia.json as moc_events_tail + moc_scorecard) holds one consolidated record per trading day: the full 15:30→15:55 read timeline, the final MOC call with its source, the realized 15:50→close drift, and moc_call_hit. Use it:

  • Before leaning on ANY MOC read, check moc_scorecard.by_source — quote the hit rate of that source class ("tape_reaction is 6/9 over the last month") instead of treating confidence labels as gospel. Under 8 graded events, say the sample is too small to trust.
  • sides_flipped_intraday: true days are the interesting ones — study whether the flip predicted the close better than the 15:30 read. Flips are rare and informative.
  • Calibrate impact, not just direction: over graded events, relate |drift| to score and (when real dollars exist) to net_imbalance_bn. If big scores keep producing small drifts, say the score is over-signaling and lean on levels instead.
  • The log is small-sample for weeks. Prefer "the data so far shows X of Y" phrasing over percentages until n ≥ 20.

10. Output discipline for Theia

When writing the EOD read, always produce: (1) regime + net GEX with sign, (2) the map — flip, walls, pin with distances, (3) the flow — charm $ and vanna direction into close, (4) MOC side/size/confidence, (5) squeeze score + direction + the ONE trigger level, (6) invalidation, (7) confidence caveat if any input is stale/estimated. Levels are always index points, not percentages. Never say "will" — say "if X then dealers must Y".

Educational information, not investment advice. Options data delayed ~15 min. Dealer-positioning models rest on assumptions — see doctrine caveats.