Concept Specification
option-strategy2026-08-21

Options HUD Metrics

Implementation spec for the Options Viewer's summary banner: Expected Move (ATM straddle vs. Black-Scholes fallback), Max Pain and why it's suppressed without open interest, Volume vs. OI put/call ratios, and how the ~55 SPX expirations get filtered and ranked by measured liquidity instead of just DTE.

Overview

Implementation spec for the summary metrics at the top of SOPHIE's Options Viewer, plus the expiration-cycle selector beneath them. These are the numbers that frame every other view — what the market expects to move, where dealers are positioned, and which expirations are actually worth looking at.

All calculations assume standard ^SPX conventions: European exercise, cash settlement, and a $100 contract multiplier.

Two Scopes: Market-Wide vs. Selected Cycle

The single most important thing to know when reading the top of the viewer is which scope a number belongs to. There are exactly two, and they are deliberately separated into two components:

ScopeComponentWhat it covers
Market-wideMarketOverviewBar (dark band)Index level, vol regime, and the whole dealer book — every listed expiration summed together
Selected cycleCycleSummaryPanel (below the date strip)One expiration only — whichever chip is selected

This split exists because it was previously wrong. The old single banner computed Expected Move, Max Pain, put/call ratios and total volume/OI from the selected expiration alone, then presented them in a top-level banner that read as a market summary. A reader could reasonably conclude the whole SPX board had 2.3M contracts of open interest when that was one monthly cycle's figure, and the put/call ratio shown was one cycle's flow rather than the market's.

The fix is structural rather than cosmetic: market-wide aggregates are computed across expirationDates in full, per-cycle figures are computed on the selected slice, and the two live in visually distinct components. The cycle panel carries an explicit "figures on this row are for <date> only" note, and the market band is badged "Whole book · N cycles."

What lives in the market-wide band

  • Index level — spot, change, and live VIX from the Cboe feed.
  • Vol regime — the regime label (Harvest / Thin / Stressed Premium / Crisis), quoted VRP and its z-score, trailing 20-session realized vol, VIX rank, and the VIX3M−VIX term slope. These come from the pipeline's precomputed daily table, not the chain feed — a 252-day percentile and an EWM z-score cannot be derived from a live quote. See Volatility Regime & VRP Methodology.
  • Dealer book — whole-book net GEX, the gamma flip level, and book-wide call/put walls, plus whole-book put/call ratios and total OI/volume. See GEX Calculation Methodology.

What lives in the cycle panel

Expected Move, ATM IV, Max Pain, that cycle's net GEX and its share of the book, that cycle's own call/put walls, and its put/call ratios — each defined below. Because a single cycle's gamma can carry the opposite sign to the whole book's, the cycle panel reports its own sign rather than inheriting the band's.

One GEX implementation

Net GEX, the gamma flip and the walls are computed by a single shared module (lib/options/gex.ts) used by the GEX tab, the market band, and the cycle panel. Keeping one implementation is deliberate: three separate copies would be free to drift, and a viewer showing two different flip levels for the same chain on two different rows is worse than showing none. The module sums duplicate strikes rather than overwriting them — see the SPX/SPXW note in GEX Calculation Methodology.

At-the-Money Implied Volatility

The implied volatility of the contract nearest spot:

StrikeATM=argminKKSATM IV=IV(StrikeATM)\text{Strike}_{\text{ATM}} = \arg\min_K |K - S| \qquad \text{ATM IV} = \text{IV}(\text{Strike}_{\text{ATM}})

When both call and put IVs are quoted at the ATM strike, the mid-market average is reported.

Expected Move

How far the underlying is priced to travel by expiration. Two methods, in preference order:

Primary — ATM straddle implied range. The market-maker rule of thumb:

Expected Move$=(CATM, Mid+PATM, Mid)×0.85\text{Expected Move}_{\$} = \left(C_{\text{ATM, Mid}} + P_{\text{ATM, Mid}}\right) \times 0.85 Expected Move%=Expected Move$S×100\text{Expected Move}_{\%} = \frac{\text{Expected Move}_{\$}}{S} \times 100

Fallback — Black-Scholes 1σ1\sigma dispersion. Used when single-leg straddle quotes are missing:

Expected Move$=S×ATM IV×T,T=DTE365\text{Expected Move}_{\$} = S \times \text{ATM IV} \times \sqrt{T}, \qquad T = \frac{\text{DTE}}{365}

The 0.85 factor in the straddle method is an empirical adjustment: a raw straddle price overstates the one-standard-deviation move because it prices the full expected absolute deviation, not the 1σ1\sigma band. Verified against independent options-education sources — this is a widely used shortcut, popularised by tastytrade, for turning a live at-the-money straddle price into a 1σ range without running a Black-Scholes model at all.

How it's used: Expected Move is the standard reference for sizing a strangle or iron condor's short strikes — placed just outside the expected move to keep the position's probability of touching a short strike relatively low. It is also the go-to gauge for earnings and other binary events: traders compare the pre-event expected move (implied) against the stock's typical historical move on similar events (realized) to judge whether the options market is pricing the event rich or cheap, which is the entire basis for "buy the move" vs. "sell the move" earnings strategies.

Max Pain Strike

The settlement price at which option buyers collectively lose the most — equivalently, where sellers pay out the least:

Max Pain=argminK[imax(0,KKc,i)OIc,i+jmax(0,Kp,jK)OIp,j]\text{Max Pain} = \arg\min_K \left[ \sum_{i} \max(0, K - K_{c,i}) \cdot \text{OI}_{c,i} + \sum_{j} \max(0, K_{p,j} - K) \cdot \text{OI}_{p,j} \right]

Suppression rule: when open interest is unavailable (EOD snapshots sometimes omit OI fields), Max Pain is hidden rather than displayed. Without OI every strike ties at zero payout and argmin\arg\min returns an arbitrary strike — a confidently-rendered meaningless number, which is worse than showing nothing.

How it's used, and why to be skeptical: Max Pain is popularly cited as a "pin" traders expect price to gravitate toward into expiration, particularly for weekly and 0DTE options. The mechanism, to the extent one exists, runs through dealer hedging (see GEX) rather than the payout curve itself exerting any force — the curve describes an outcome, not a cause. Academic and practitioner studies of the "max pain effect" find it weak and inconsistent once normal price drift is controlled for, so treat it as one input among many rather than a reliable target.

Put/Call Ratios

PCRVolume=Put VolumeCall Volume,PCROI=Put OICall OI\text{PCR}_{\text{Volume}} = \frac{\sum \text{Put Volume}}{\sum \text{Call Volume}}, \qquad \text{PCR}_{\text{OI}} = \frac{\sum \text{Put OI}}{\sum \text{Call OI}}

The two answer different questions. Volume PCR reads today's directional flow: above 1.0 is put-heavy (bearish tilt), below 1.0 call-heavy. OI PCR reads accumulated structural positioning and moves far more slowly.

How it's used: PCR is a classic contrarian sentiment indicator, not a directional signal to trade with. Extreme readings — very high put volume relative to calls — are conventionally read as excessive fear or hedging demand, which contrarians treat as a bullish setup on the theory that sentiment is overextended; extreme call-heavy readings suggest complacency. Desks and volatility funds also track the CBOE's own equity and index PCR series over longer windows the same way they'd use VIX rank — as a regime gauge, not a single-day trade trigger.

Expiration Cycle Selection

SPX lists roughly 55 expirations — dailies, Friday weeklies, standard monthlies, quarterlies and LEAPS out several years. Listing all of them makes the selector unusable, so the default Key Expiries filter keeps only the cycles that carry real liquidity:

  1. Near-term dailies — every cycle with DTE2\text{DTE} \le 2. At this horizon weekday does not matter; 0DTE and 1DTE are among the most actively traded SPX contracts.
  2. Friday weeklies — the next 4 non-monthly Friday expiries.
  3. Standard monthlies — the next 4. These are the 3rd Friday of the month (always falling on days 15–21), AM-settled, and carry the deepest open interest on the board.
  4. LEAPS anchor — the monthly cycle nearest ~365 DTE, so the strip still reaches a one-year horizon without listing every LEAPS.

On a representative chain this reduces 56 cycles to 14, of which only one is a non-Friday.

Cycle Liquidity Tiering

Cycle chips are ranked by measured open interest, not inferred from the weekday. Each cycle's share of the busiest visible cycle:

Share=OIexpOImax\text{Share} = \frac{\text{OI}_{\text{exp}}}{\text{OI}_{\max}}
TierThresholdRendering
DeepShare25%\text{Share} \ge 25\%Solid accent bar, bold weight
Active5%Share<25%5\% \le \text{Share} < 25\%Translucent accent bar
ThinShare<5%\text{Share} < 5\%Grey bar, dimmed

The spread this captures is roughly three orders of magnitude: on live SPX data monthlies clear 3.5–5.4M contracts of open interest while a mid-week daily can sit under 2K. Date proximity alone is a poor proxy — a 2-DTE daily can be far thinner than a 27-DTE monthly.

Key Takeaways

  • Expected Move prefers the ATM straddle (with its 0.85 adjustment) and only falls back to Black-Scholes when quotes are missing.
  • Max Pain is deliberately suppressed rather than guessed when OI is absent.
  • Volume PCR reads flow; OI PCR reads structure. They frequently disagree, and that disagreement is informative.
  • The expiration strip is filtered by cycle type but ranked by measured open interest.

Related Reading

Comments

Disclaimer: This application is a personal proof of concept created for study and research purposes only. All analysis, suggestions, and content are generated by AI models using publicly available data and tools, and should not be considered as financial advice. Past performance is not indicative of future results. Always conduct your own research and consult with qualified financial professionals before making investment decisions. The app's AI models may have limitations and may not account for all market factors or recent developments. Users are solely responsible for their investment decisions and should understand that all investments involve risk.