The Tredey Market Gauge is a daily, end-of-day snapshot of where the three core US equity indices sit on an overbought-to-oversold scale. It answers a single question: given today's price action, where is each index stretched? The composite is computed the same way for all three — no regime-specific weighting — so the three readings are directly comparable.
The widget is refreshed automatically at the close of every US trading day via a cron job that runs build_market_gauge.py. The values shown on this page are always end-of-day for the most recent trading session; the next refresh appears the next session's close.
The three indices tracked are the S&P 500 (via SPY), NASDAQ-100 (via QQQ), and Russell 2000 (via IWM). These are the instruments retail traders most often use to express a directional view on US equities. Each is shown on its own gauge dial, with the underlying indicator readings tabulated below.
How to read the gauge
Each dial reads from 0 to 100. Lower values mean conditions historically associated with oversold markets (RSI low, price near the lower Bollinger Band, distance below the 50-day moving average); higher values mean conditions associated with overbought markets (RSI high, price near the upper Bollinger Band, extended above the 50-day moving average). The exact thresholds vary by asset and regime, but the following zones are useful defaults:
| Zone | Range | Interpretation |
|---|---|---|
| Deep Oversold | 0–20 | Statistically rare; bounce risk increases but trend can persist |
| Oversold | 20–40 | Mean-reversion setups worth screening for |
| Neutral | 40–60 | No strong directional bias from the composite |
| Overbought | 60–80 | Trend-following setups favored; mean-reversion setups risky |
| Extreme Overbought | 80–100 | Statistically rare; pullback risk increases |
The gauge is not a signal. It's a context read. Decisions should incorporate the gauge reading alongside the asset's own structure (key support/resistance, event calendar, sector rotation), position-level risk, and the journal's playbook rules.
Why these three indices
The S&P 500 is the large-cap benchmark. The NASDAQ-100 captures the technology and growth tilt that has driven most of the last decade's index-level returns. The Russell 2000 captures small-cap behavior — which historically leads at cycle turns and lags in late-stage bull markets. Reading the three side by side is the cleanest way to see whether a move is broad-based or concentrated: when all three sit in the same zone, the regime is dominant; when they diverge, the move is sector- or factor-specific.
The Tredey Composite Gauge formula
Each index is scored by the same ten-component composite. Nine are computed per-index; the tenth (AAII bullish %) is a market-wide sentiment reading applied to all three indices identically. The components are computed on the daily timeframe from end-of-day prices, volume, and live options-chain data.
| # | Component | Raw input | Normalization to [−1, +1] |
|---|---|---|---|
| 1 | RSI (14) | 0–100 | Linear: RSI ≤ 30 → −1, RSI ≥ 70 → +1 |
| 2 | MACD histogram | Price-scaled points | Clipped at ±1.5% of underlying price |
| 3 | Bollinger position | 0–1 (lower to upper band) | Re-centered: (position − 0.5) × 2 |
| 4 | % from 20-day high | Percent | At high → +1, −5% → 0, −10% → −1 |
| 5 | % above 50-day SMA | Percent | Clipped at ±5% |
| 6 | Volume vs 20-day average | Ratio | Clipped at 2× (high) / 0× (low) |
| 7 | Put/Call ratio | Equity options OI/vol on near-month chain | 0.5 = bullish (+1), 1.0 = neutral (0), 1.5 = bearish (−1) |
| 8 | σ-distance (50d) | (close − SMA50) / rolling 50-day stddev | Z-score, clamped at ±2.5σ |
| 9 | ATM 30d IV | Live options chain IV at strike nearest spot, ~30 DTE expiry | 10% IV calm (+1), 30% neutral (0), 50% stressed (−1) |
| 10 | AAII bullish % (contrarian) | Weekly AAII sentiment survey, latest reading | ≤20% bullish → +1 (extreme fear = bullish contrarian), 30% → 0, ≥50% → −1 (extreme greed = bearish contrarian) |
The ten normalized signals are equal-weighted and averaged to produce a single composite in [−1, +1]. That value is then mapped to a 0–100 reading via G = 50 + 50 × composite. The mapping keeps neutral at 50 and lets extreme readings approach 0 or 100 symmetrically.
Component 10 is the only market-wide reading and applies identically across SPY, QQQ, and IWM. The other nine components vary by index — that's what produces the cross-index divergence that the gauge is meant to surface.
Why equal weights? A weighted scheme implies a regime prior — that one indicator matters more than another in some circumstances. For a daily cross-index snapshot, that prior is hard to justify: the regime that makes Bollinger matter more (range-bound) is not the regime that makes RSI matter more (trending). Equal weights keep the composite regime-neutral and let the user layer their own view on top.
Why include put/call ratio? The v2 widget added put/call as the seventh component, computed as the ratio of total put volume (or open interest) to total call volume on the nearest-options-month chain for each ETF. High put/call (>1.0) reflects defensive positioning and maps to a bearish signal; low put/call (<1.0) reflects bullish positioning. The mapping uses 0.5 → +1 (very bullish), 1.0 → 0 (neutral), 1.5 → −1 (very bearish), linear in between. Equity-options chains are uniformly available across SPY/QQQ/IWM, so this is the only sentiment-style indicator that gives directly comparable readings across the three proxies.
Why include σ-distance? Pure price-based indicators (RSI, MACD, Bollinger) are scale-dependent and don't generalize across instruments with different price levels. σ-distance normalizes the gap from the 50-day SMA in units of the 50-day rolling standard deviation, so a +2σ reading on SPY (~$742) and a +2σ reading on IWM (~$293) mean the same thing: the index is 2 daily-standard-deviations above its trend. The mapping is clamped at ±2.5σ (anything beyond is treated as extreme).
Why include ATM IV? Implied volatility reflects the options market's expectation of future realized volatility, and is forward-looking in a way that price-based indicators aren't. Low IV (<20%) typically corresponds to complacent markets; high IV (>40%) to stressed markets. The mapping uses 10% IV → +1 (calm), 30% IV → 0 (neutral), 50% IV → −1 (stressed). Reading is taken from the live options chain at the strike nearest the spot, in the expiration closest to 30 DTE.
Why include AAII bullish %? The American Association of Individual Investors releases a weekly sentiment survey every Thursday morning, polling their members on a six-month directional outlook. The "bullish %" component is the share of respondents expecting the market to rise. AAII bullish is read contrarian: when individual investors are extremely bearish (bullish % < 20%), that's historically associated with short-term market bottoms; when they're extremely bullish (bullish % > 50%), it's associated with short-term tops. The mapping uses ≤20% bullish → +1 (extreme fear is bullish), 30% → 0 (normal), ≥50% → −1 (extreme greed is bearish). AAII publishes the survey data on their public site (aaii.com/sentimentsurvey); programmatic fetching from aaii.com is blocked by Incapsula, so the gauge reads AAII's latest value from a manual weekly input file (trading-journal-build/market-data/aaii-bullish.json). The file is refreshed each Thursday morning after AAII publishes the new reading, and the gauge holds that value stable for the rest of the week.
Why a contrarian read on AAII and not on RSI? RSI is a position indicator — it tells you where price has been stretched. AAII bullish is a sentiment indicator — it tells you where retail positioning has been stretched. The two interact: a deeply oversold RSI reading combined with a deeply bearish AAII reading is a stronger signal than either alone. Equal-weighting the two lets the composite reflect both views; if you trust sentiment more than price, you can mentally upweight the AAII component; if you trust price more than sentiment, you can upweight the position indicators. The gauge keeps equal weights by default to avoid baking in a regime prior.
What the indicator table shows
The signal table beneath the three dials lists each component's raw reading so you can see which sub-signals are doing the work. A reading of 47 on the S&P 500 with an RSI of 44.7 and a Bollinger position of 0.21 is a different state from a 47 reading driven by an RSI of 51 and a position of 0.50. The composite is the headline; the table is the audit trail.
The AAII row in the table shows the same value across all three indices because AAII bullish is a market-wide reading. The signal class on each cell reflects the contrarian normalization: a bearish signal class (blue text) means AAII is above 30% bullish (the market is too optimistic → contrarian bearish); a bullish signal class (red text) means AAII is below 30% bullish (the market is too pessimistic → contrarian bullish). At extreme readings (≥50% bullish or ≤20% bullish) the signal saturates at ±1 and the row becomes a strong determinant of the composite.
For a worked example, take today's NASDAQ-100 reading of 30 (Oversold). The composite averages six signals of roughly −0.45, −0.26, −0.94, −0.21, −0.73, +0.14 — about −0.41 — which maps to 50 + 50 × (−0.41) = 29.7, rounded to 30. The biggest single contributor is the Bollinger position of 0.03, meaning QQQ is sitting almost exactly on its lower 20-day band. That single sub-signal contributes about −0.94 to the composite, accounting for roughly two-thirds of the index's oversold reading. The RSI at 41.1 and % above 50-day SMA at −3.67% reinforce; the volume ratio at 1.14× modestly offsets by showing participation rather than capitulation.
By contrast, the S&P 500 at 47 (Neutral) is being held up by a relatively shallow pullback (−2.22% from 20-day high) and a still-positive distance from the 50-day SMA (−0.79%, barely below). The Russell 2000 at 44 (Neutral) sits between the two: weaker on momentum than SPY but stronger on trend, with the small-cap bid visible in the +0.48% distance from the 50-day SMA.
How traders use these readings
In a typical options-trading workflow, the gauge is one of several reads used to set context, not to fire trades directly. Common uses:
- Sizing decisions. When the gauge is in an extreme zone (G < 20 or G > 80), trade size is often reduced because the existing trend is at risk of reversal. When the gauge is neutral, full position sizing per the playbook is appropriate.
- Strategy selection. High-gauge readings favor short-volatility structures (iron condors, short verticals, covered calls). Low-gauge readings favor long-volatility structures (long calls, long straddles, debit spreads).
- Cross-index divergence. When one index is in oversold while the others are neutral or overbought, the market is telling you that the move is narrow — a sector or factor trade, not a beta trade. The trade implication is that any directional structure should be on the specific index that's stretched, not on SPX generically.
- Timing. A gauge moving from neutral to overbought gradually is a different signal than a gauge that spikes to overbought in one session. The former is trend confirmation; the latter is often a blow-off top.
Methodology and limitations
The gauge uses normalized signals — each component is mapped to a [−1, +1] range using piecewise linear mappings. The exact normalization breakpoints (RSI 30/70, Bollinger 0/1, ±5% from 50-day SMA, ±1.5% for MACD, AAII 20/30/50) are heuristic and are not derived from historical regime statistics. The gauge will mis-read regime transitions because every underlying component is lagging by construction.
The gauge does not incorporate:
- Fundamentals (earnings, valuation, free cash flow)
- Macro context (rates, inflation, geopolitical)
- Cross-asset relationships (bond/equity correlation, USD strength)
- Sector rotation
- Intraday signals — the composite is end-of-day only
These are read separately and are not part of the composite. The gauge is a technical context read, not a complete market view. The added sentiment component (AAII) brings in some psychological context but still excludes positioning, fund flows, and credit-market signals.
Update cadence
The current page reflects end-of-day data for the most recent trading session. The composite is recomputed at the close; the next refresh shows the next session's reading. Live intraday updates are not currently published. Each component's raw input (RSI, MACD, Bollinger, % from high, % from SMA, volume ratio) is recomputed from the prior 60+ trading days of daily data using standard formulas.
The refresh job runs at 4:30 PM ET Mon–Fri as an OpenClaw cron, immediately after the equity market closes at 4:00 PM and after AAII (if Thursday) has had its chance to publish at 7:30 AM ET. The cron calls trading-journal-build/build_market_gauge.py, which:
- Reads the latest AAII reading from
trading-journal-build/market-data/aaii-bullish.json(manually-pasted each Thursday after the AAII release). - Pulls 100 days of OHLCV from yfinance for SPY, QQQ, IWM.
- Pulls the nearest-options-month chain for each to compute put/call ratio and ATM IV.
- Computes all ten components per index, normalizes to [−1, +1], averages, maps to 0–100.
- Writes
trading-journal-build/market-gauge-widget.html(and the website copy). - After the gauge refresh, the parent
build.pyruns to publish the rest of the site. The next-deploy git commit/push is the standard inline-build pattern that builds all Tredey pages at once.
If yfinance fails to return data on a given day (rate limit, transient outage), the cron keeps the prior widget in place so the page never goes blank.
See also
- Playbook SOP — how the gauge reading fits into trade selection
- Standard deviations — the math under indicators like RSI and Bollinger
- Probabilities — what indicator readings actually imply for option pricing
- Risk vs reward — how sizing interacts with regime reads
The gauge is informational. It is not investment advice. Every input indicator is a lagging read of price action; combining lagging reads does not produce a leading signal. Use the gauge as one input among many, alongside structure, events, and risk management.
About this article
Editor: Tredey Editorial Desk. The desk has tracked options, index-derivative structure, and daily U.S. equity markets since 2017, with a working book in SPX/XSP index options and a public trade log that records every entry, adjustment, and close.
Launched: Tredey went live in as an editorial trading-journal site covering SPX/XSP options, daily market outlooks, and the standard operating procedure that governs every position recorded on the trade log.
Editorial process: Each forecast distils overnight data and primary sources (Cboe option chains, Federal Reserve releases, Treasury auctions, FRED historicals) into the worked-example frame: what the tape is saying, the mechanism behind the move, what to do this week. Forecasts are reviewed against the live close on the next publication; the track record is self-auditing on the forecasts page.
Corrections policy: When an article gets a fact wrong (wrong strike, wrong P&L, wrong expected-move calculation), we correct it inline and append a dated correction note at the top of the affected page. Substantive corrections are credited to the reporter with permission. Send corrections to the address on the contact page.
Disclosure: Tredey does not provide trading signals, price targets, or financial advice. The desk may hold the positions, options, or underlyings mentioned in a forecast or trade-log entry at the time of publication; positions are disclosed in the trade-log entry itself. Nothing on this site is investment advice — see the full disclaimer.