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.

Advertisement

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:

  1. 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.
  2. 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).
  3. 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.
  4. 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:

  1. Reads the latest AAII reading from trading-journal-build/market-data/aaii-bullish.json (manually-pasted each Thursday after the AAII release).
  2. Pulls 100 days of OHLCV from yfinance for SPY, QQQ, IWM.
  3. Pulls the nearest-options-month chain for each to compute put/call ratio and ATM IV.
  4. Computes all ten components per index, normalizes to [−1, +1], averages, maps to 0–100.
  5. Writes trading-journal-build/market-gauge-widget.html (and the website copy).
  6. After the gauge refresh, the parent build.py runs 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

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.

Disclaimer. The Trading Journal publishes this content for informational and educational purposes only. Nothing here is investment advice. Trading options involves substantial risk of loss and is not appropriate for every investor. Past performance, including the journal entries on this site, does not guarantee future results. You are solely responsible for your trading decisions. See the full disclaimer.