A background diagnostic that tracks whether the S&P 500's index-vs-constituent behavior looks like normal dispersion (index members moving somewhat independently) or a crowded, correlation-driven market (constituents moving together, dispersion trades under pressure). It's a read on market structure, not a trade signal by itself.
New feature. Treat the readings as directional guidance — see Limitations.
Free Trial, Premium, and WhiteLabel editions only (or Developer mode) — once the Free Trial period ends, Freeware and Regular users lose access. See the Licensing & Editions guide.
Related:
SOAP2 tracks these series on the same bar grid (daily or hourly): SPX (cap-weighted index), SPW (equal-weight index), DSPX (Cboe's S&P 500 Dispersion Index), COR1M (Cboe's 1-month implied correlation index), VVIX (vol-of-vol), VIX, and SMH (the VanEck Semiconductor ETF, used as a proxy for the AI leg of the market). From these it derives:
sqrt(DSPX² + VIX²), an estimate of average
constituent-level implied vol reconstructed without a direct feed.Every window is counted in sessions. On the hourly view each session is 7 hourly bars, so a "60-session" window is 420 bars. The daily percentile lookback is one year (252 sessions); the hourly one is about 70 sessions (490 bars, roughly three months), so hourly percentiles describe a shorter horizon than the daily ones. The hourly view asks the same question as the daily one, only refreshed more often. Refresh re-requests only the most recent days once the history is stored, so after the first run it is much quicker.
| Regime | Reads as | What it suggests |
|---|---|---|
| Low Corr / High Disp | Benign | Constituents moving relatively independently — normal dispersion conditions, no obvious crowding stress. |
| High Corr / Low Disp | Unwind risk | Constituents moving together, dispersion compressed — the environment where a crowded dispersion-trade unwind tends to originate. |
| Concentration-led | Low correlation, but not the benign kind | Implied correlation is low and cap-weight is pulling away from equal-weight (the 60-session SPW-minus-SPX gap ranks in the bottom third of its history). The index is being carried by a few large names while the rest lags. It takes precedence over Low Corr / High Disp. |
| Mixed | No clean read | No regime's conditions are all met. The text still says which way it leans. |
The cutoffs (a percentile below the 35th is "low", the 65th or above is "high") are hard lines, and a read can sit just either side of one. So every regime also gets a score: 100% means every condition of that regime is exactly at its cutoff, 0% means the inputs sit at the middle of their ranges (or on the wrong side), and more than 100% means comfortably past the cutoffs (capped at 150%). A score is the weakest of the regime's conditions, so the text can name the one holding it back, for example "the SPW-SPX gap at the 36th percentile, needs below the 35th". A read below 30% on every regime is reported as "no lean".
Four scores are shown: Concentration-led, AI-led (low correlation while SMH is running unusually hard against equal-weight — a lean only, never the headline label), Low Corr / High Disp and High Corr / Low Disp. The text also says whether the lean is building or fading compared with 5 sessions ago. A Mixed read that keeps leaning the same way, and keeps building, is worth watching on following runs.
When cap-weight is ahead of equal-weight by at least 1 point over the window, the SMH proxy sorts it into one of three stories:
SMH is semiconductors only: the AI hyperscalers (cloud and software) are not in it, so "not AI" means "not semis".
The Reversal flag is a rate-of-change read, separate from the level-based label: a fast correlation-up / dispersion-down move can show up before the label itself has flipped.
The first time you open the dashboard (or whenever there's less than 10 days of history), it automatically pulls history for all seven tracked series — a year of daily bars, or a year of RTH hourly bars (about 1,750) for the hourly view. The hourly pull takes noticeably longer because the range is fetched in chunks. A status message tracks progress; the chart populates once it finishes. Re-running Refresh only fetches what is missing.
After updating SOAP2 to a version with SMH and VIX in the panel, click Refresh once on each bar size to backfill those two series; until then the text says "No AI-proxy (SMH) history yet" and the result's data-quality notes list how many bars have SMH and VIX. A background recorder keeps the daily file current afterward. Every historical request is a one-shot that ends when its data arrives (the recorder's live streams are cancelled when SOAP2 disconnects or closes).
Go back to the main help page: SOAP2 Help Guide