{"concept":{"id":"https://www.thetrading.tools/concepts/zweig-breadth-thrust#term","slug":"zweig-breadth-thrust","canonicalUrl":"https://www.thetrading.tools/concepts/zweig-breadth-thrust","name":"Zweig Breadth Thrust","alternateNames":["ZBT"],"category":"Market breadth","kind":"Named signal","shortDefinition":"Martin Zweig's rule for a 10-day advance-ratio EMA to jump from below 0.400 to above 0.615 within 10 sessions.","definition":"The Zweig Breadth Thrust is a named breadth signal: the 10-day exponential moving average of advancing issues divided by advancing plus declining issues must rise from below 0.400 to above 0.615 within 10 trading sessions. The washout, surge and time limit are all required.","plainIntro":["Each trading day, some stocks close higher and some close lower. Take the share that closed higher, smooth it over about two weeks so single wild days don't dominate, and you get one number describing how broad the buying is.","The investor Martin Zweig noticed something about that number: markets rarely go from deeply washed out to overwhelmingly strong in a matter of days — and when they do, it has tended to mark the start of major rallies rather than a blip. So he wrote the observation down as an exact recipe: the smoothed share must climb from below 0.40 (most stocks falling) to above 0.615 (most stocks rising) in ten trading days or less.","Because every part of the recipe is required — the washout, the surge, and the deadline — completed signals are rare, which is exactly what makes people watch for them. This page holds the precise rule; our gauge page tracks it live."],"whyItMatters":["The rule demands both a washed-out starting point and an unusually fast participation reversal. That makes completed events rare and distinguishes them from ordinary high-breadth rallies.","A daily state machine is necessary: a reading above 0.615 does not qualify unless a sub-0.400 reading occurred within the permitted window. Looking only at the current EMA loses the path dependency.","Historical reputation should be evaluated on the exact computed universe and the complete event list. Our page publishes every event and every available forward SPY return rather than repeating an undated perfect-record claim."],"formulas":[{"label":"Daily advance ratio","expression":"R(t) = Advances / (Advances + Declines)","explanation":"Our implementation counts common stocks in the disclosed universe; unchanged securities are excluded from this denominator."},{"label":"Smoothed breadth","expression":"Z(t) = EMA10(R(t))","explanation":"The 10-session exponential moving average dampens one-day noise while retaining the speed of the reversal."},{"label":"Completion rule","expression":"Z < 0.400, then Z > 0.615 within ≤ 10 sessions","explanation":"The signal arms at the lower threshold and expires if the upper threshold is not crossed in time. A slow recovery is not a completed ZBT."}],"example":{"title":"A completed 8-session thrust","setup":"Suppose the 10-day EMA closes at 0.392, then reaches 0.620 eight trading sessions later.","steps":["0.392 is below 0.400, so the setup arms on that session.","0.620 is above 0.615, so the completion threshold is crossed.","Eight sessions elapsed, which is within the maximum of 10."],"result":"A Zweig Breadth Thrust completes on the 0.620 close.","interpretation":"If the same upper crossing arrived on session 11, or the low had been 0.402, this exact rule would record no event even though participation improved sharply."},"caveats":["Universe choice changes daily advances and declines. Zweig's historical work used NYSE issues; our common-stock universe is broader, so our dates are an implementation record rather than a claim to be the universal canonical list.","Threshold inclusivity and session counting must be explicit. We require below 0.400 and above 0.615, then count trading sessions in the published state machine.","The signal is rare, so forward-return averages and win rates have high uncertainty. The event table is more informative than a percentage stripped of its denominator.","No active or armed signal is neutral under this rule. It does not mean participation is deteriorating, and a long drought does not invalidate rallies that developed more gradually."],"faq":[{"q":"What exactly completes a Zweig Breadth Thrust?","a":"The 10-day EMA of Advances divided by Advances plus Declines must first be below 0.400 and then close above 0.615 within 10 trading sessions. All parts of the path-dependent rule are required."},{"q":"Why can different ZBT lists disagree?","a":"They may use different exchanges or stock universes, data-cleaning rules, threshold inclusivity, EMA initialization or session counting. A list is reproducible only when those choices are disclosed."},{"q":"Is a 90% up-volume day required for a ZBT?","a":"No. ZBT uses advancing and declining issue counts over multiple sessions; a 90% up day uses volume in one session. They can overlap because both describe broad demand, but neither is a required input to the other."}],"sources":[{"name":"Winning on Wall Street","publisher":"Martin Zweig / Warner Books","note":"Original published source for the named rule.","primary":true},{"name":"What Is a Breadth Thrust and What Are the Risks?","publisher":"CMT Association","href":"https://cmtassociation.org/technically_speaking/technically-speaking-november-2022/","note":"Professional technical-analysis reference and terminology context.","primary":false},{"name":"Zweig Breadth Thrust dataset","publisher":"The Trading Tools","href":"/data/zweig_breadth_thrust/zweig_breadth_thrust.json","note":"Daily inputs, state, completed events and forward SPY returns used by this implementation.","primary":true}],"resources":[{"type":"tool","name":"Zweig Breadth Thrust gauge","href":"/zweig-breadth-thrust","relation":"The operational daily gauge: current EMA, armed state, chart and event catalog."},{"type":"dataset","name":"Zweig Breadth Thrust history","href":"/data/zweig_breadth_thrust/zweig_breadth_thrust.json","relation":"The complete machine-readable series and every event used on this page."},{"type":"manual","name":"The Market Breadth Manual","href":"/manuals/market-breadth","relation":"Compares the signal with other breadth layers and explains where indicators disagree."},{"type":"manual","name":"The McClellan Oscillator Manual","href":"/manuals/mcclellan-oscillator","relation":"Uses the same advance/decline family but measures short-term breadth momentum with different smoothing and no ZBT state machine."}],"relationships":[{"relation":"narrowerThan","conceptId":"https://www.thetrading.tools/concepts/breadth-thrust#term","slug":"breadth-thrust","name":"Breadth Thrust","url":"https://www.thetrading.tools/concepts/breadth-thrust","description":"The parent signal family includes other issue-count and volume-based definitions beyond this named rule."}],"dataDependencies":["https://www.thetrading.tools/data/zweig_breadth_thrust/zweig_breadth_thrust.json","https://www.thetrading.tools/data/ninety_percent_days/ninety_percent_days.json"],"cadence":"trading-day","publishedAt":"2026-08-11","reviewedAt":"2026-08-11","modifiedAt":"2026-08-11"},"currentObservation":{"@type":"Observation","id":"https://www.thetrading.tools/concepts/zweig-breadth-thrust/observations/2026-08-21","conceptId":"https://www.thetrading.tools/concepts/zweig-breadth-thrust#term","asOf":"2026-08-21","label":"Site observation · Zweig Breadth Thrust","headline":"Not armed — 10-day EMA 0.499","detail":"The named rule cannot complete until its EMA first falls below 0.400. The last completed event on our disclosed universe was 2019-01-08.","active":false,"tone":"neutral","metrics":[{"label":"10-day EMA","value":"0.499"},{"label":"State","value":"Neutral"},{"label":"Completed events","value":"6"},{"label":"Last event","value":"2019-01-08"},{"label":"With 90% up-volume day","value":"5 of 6"}],"methodology":"10-day EMA of Advances / (Advances + Declines), below 0.400 then above 0.615 within 10 sessions, on our disclosed common-stock universe.","source":"/data/zweig_breadth_thrust/zweig_breadth_thrust.json"},"separationNote":"The concept is the durable definition. currentObservation is a dated measurement produced by the named implementation and may be null when its source is unavailable."}