Market Breadth: Why Counting Stocks Above MA Beats Watching Indices
This article uses the platform's 4-section teaching structure: Concept / How We Compute It / How to Read / Caveats.
1. Concept
Market-cap-weighted indices are dominated by mega-caps. When an index rises 1%, it may be a single name carrying the load while 1,800 other stocks do nothing. Market breadth solves this by directly counting how many stocks are participating in the trend.
The most common breadth metric is "% above MA20 / MA60 / MA120 / MA240":
The percentage of stocks whose closing price is above their N-day moving average.
- High % → most stocks above trend → broad bullish participation
- Low % → most stocks below trend → broad bearish state
- Index new high + breadth declining → mega-cap concentration, warning signal
This is a daily must-watch for institutional traders but rarely shown on retail platforms.
2. How We Compute It
Data Source
All TW listed stocks' daily close (sp_tw_h) × basic_info.index (TWSE / TPEX / Emerging).
Flow (computed daily after close at 21:30 TPE)
- Split by market (TWSE / TPEX / Emerging / All-Market)
- For each stock, compute N-day SMA (N = 20 / 60 / 120 / 240)
- Compare today's close vs MA: close > MA → "above"
- Sample bias protection: stocks with fewer than N days of history are excluded from the denominator
- Persist to
market_breadth_d_tw(one row = one market × one day)
Percentile Rank
Each card's P{n} badge shows the indicator's percentile over the past 252 trading days:
- P80 = higher than 80% of historical days
- P20 = lower than 80% of historical days
This turns raw numbers like "65%" into context: "is this relatively high or low?"
Update Cadence
- Cron: daily 21:30 TPE
- Admin backfill:
python Crawlers/calc_market_breadth_tw.py --backfill 252
3. How to Read
Absolute Levels
| % above MA60 | State | Action |
|---|---|---|
| > 80% | 🔴 Overheated | Bullish extreme, short-term caution |
| 60–80% | 🟠 Strong | Uptrend in progress |
| 40–60% | ⚪ Neutral | Range-bound |
| 20–40% | 🟢 Weak | Downtrend in progress |
| < 20% | 🟢 Oversold | Bearish extreme, contrarian buy zone |
Advanced: Divergence Reading
This is where breadth earns its keep:
- Healthy bull: index up + breadth up in sync
- Mega-cap concentration: index up + breadth down → few names leading, many already weak → top warning
- Structural bottom: index down + breadth up → leaders rebounding ahead of majority → base forming
MA Period Semantics
- MA20: short-term momentum (3–4 weeks). For swing traders.
- MA60: intermediate trend (~1 quarter). Most institutionally watched.
- MA120 / MA240: long-term trend. Reflects structural bull/bear regimes.
Best read as a 3-line panel (short/mid/long):
- All three high → broad healthy bull
- Short high but long low → rally within a weak regime
- Short low but long high → healthy pullback; long-term trend intact
4. Caveats
⚠️ Sample Bias
Newly listed stocks (< N days of history) are excluded from the MA denominator. The UI explicitly shows Sample 1850 / 1920 on hover. Don't read small-sample days as stable signals.
⚠️ TW vs US
- Currently only TW breadth is available (paired with ^TWII)
- US breadth (paired with ^GSPC) is planned for a later release
- Trading calendars differ (Chinese New Year, typhoon days etc.); time-series cannot be directly cross-compared
⚠️ Not a Buy/Sell Signal
Breadth is a state description, not a trading directive. High breadth can persist; low breadth can keep falling. Combine with:
- Monthly revenue momentum (coming in Phase 4)
- Institutional flows
- Macro indicators
⚠️ Difference from Fear & Greed
Market breadth is only one of the sub-indicators in Fear & Greed composites. We will add more sentiment indicators (volatility, new highs/lows, margin) over time but will not publish a single composite score — that forces our subjective weights onto users. You compose your own view.
Further Reading
- Advance/Decline & Up-Down Volume (coming with Phase 1A.3)
- 52-Week Highs & Lows (coming)
- Momentum & 52-Week High Breakouts (planned)
Try It
- Open Home → Taiwan → Rankings — breadth cards sit at the top
- Hover the main number to see sample size
- Click the 📐 icon to view the full formula and site parameters