S&P 500 Zweig Breadth Thrust
Top: S&P 500 (SPX) with thrust signals · Bottom: 10-day EMA of S&P 500 constituent breadth Adv/(Adv+Dec) — 0.40 washed-out / 0.615 euphoric, 90-day exclusivity — free proxy, not NYSE data
Loading data…
Drag = pan · shift+drag = box-zoom · scroll = zoom X · drag Y-axis = zoom Y · dblclick = reset — both panels sync
What is Zweig Breadth Thrust?
Marty Zweig's thrust = momentum of market breadth. For NYSE, each day compute Breadth = Advancing Issues / (Advancing + Declining Issues), then Zweig = 10-day EMA(Breadth). A thrust signal fires when Zweig jumps from <0.40 (excessive pessimism, washed-out) to >0.615 (excessive optimism) within 10 trading days — a rare, powerful breadth surge that has preceded durable rallies. The classic levels are dashed in the lower panel: red 0.615 / green 0.40.

Why a proxy?

True NYSE Adv/Dec is not free: Yahoo delisted ^NYA.A/^NYA.D in June 2026, Bloomberg/Refinitiv/FMP premium required. So this page builds breadth from S&P 500 constituents instead (free Yahoo closes, today's ~500 tickers): each day Breadth = Advancers / (Advancers + Decliners), then Zweig = 10-day EMA(Breadth) clipped 0.2–0.8. A thrust fires when Zweig jumps from <0.40 to >0.615 within 10 trading days, keeping one signal per 90 days. Caveats: the ticker list is today's constituents (survivorship bias this far back), and 500 large-caps behave differently from ~2800 NYSE issues — this proxy misses some genuine NYSE thrusts (Jan 2019, Apr 2020, Nov 2023, Apr 2025) and fires extras of its own. Compare with SentimenTrader/SubuTrade accordingly.

Reading the chart

Top (SPX, log): black line = S&P 500. Red dots = thrust days in this S&P-breadth series (e.g. 1982 recovery, Mar 2009 bottom, 2011 rebounds, Oct 2022 rally). These dots are not NYSE thrusts — see caveats.
Bottom (Zweig, 0.2–0.8): blue line = Zweig. Dashed lines = 0.40 / 0.615. Red dots = same thrusts where blue crosses 0.615 after being <0.40 in prior 10d.
Both panels share X. Drag = pan, shift+drag = box-zoom (both sync), scroll = zoom X, Y-drag = zoom Y per panel, dblclick = reset. Legend toggles.

Data & caveats

Constituent closes + SPX via query1.finance.yahoo.com/v8/finance/chart/… (no key). Zweig + signals recomputed daily by zweig-breadth-thrust-update.py. This is an S&P 500 breadth proxy, not exchange-tallied NYSE breadth — expect missing/extra thrusts versus NYSE sources (SentimenTrader, SubuTrade), not 1–3d shifts. Not investment advice.