TL;DR: The Market Regime banner is the strip at the top of the Insights → Signal page. It synthesizes 6 leading factors into a 0-100 composite (overheated → deep cold spectrum), runs nightly at 04:45, and provides the "what's the market backdrop right now" context for every stock you view. TW is live today; US / JP are still in development.
Concepts
Why look at the market?
A stock doesn't trade in a vacuum. When the market is overheated, every stock is more prone to ATH pullbacks; when the market is deeply bearish, long-side win rate rises and adding shorts gets riskier.
The Market Regime banner crams that backdrop into a one-line summary so you don't have to flip to the Market analytics tab.
6 leading factors
| Factor | High score means | Source |
|---|---|---|
| Trend acceleration | Index uptrend accelerating | Index N-day growth-rate change |
| Market breadth | Advance/decline ratio high | Share of advancing stocks |
| Volatility (inverse) | High score = low vol = healthy | Inverted VIX or realized vol |
| Retail margin | Retail sentiment hot | Margin balance z-score |
| Institutional flow | Institutions aggressive | 3 inst. types N-day cumulative net |
| High/low beta lead | High-β stocks leading | Spread of high-β vs low-β return |
Each factor scores 0-100 standalone; z-score normalized then summed into a composite.
Regime band
Composite → maps to 5 regimes:
| Band | Range | Meaning |
|---|---|---|
| overheated_bull | composite ≥ +20 | Hot bull — trend continues but pullback risk elevated |
| bull | +5 ~ +20 | Healthy uptrend |
| sideways | −5 ~ +5 | Choppy range |
| bear | −20 ~ −5 | Downtrend |
| deep_bear | composite ≤ −20 | Deep bear — don't catch falling knives |
Dispersion (factor disagreement)
The 6 factors can disagree — e.g. "trend acceleration high" but "vol warning" + "institutions turning negative".
dispersion = stdev(6 factors), bucketed into high/medium/low:
- high: ⚠ High factor dispersion (red flag)
- medium: Medium dispersion (yellow flag)
- low: No flag
Why it matters: when dispersion is high, the composite number itself can mislead. Always check the dispersion flag before reading the composite.
Why is volatility "inverse"?
Intuitively, vol = risk. But "healthy bulls" are usually low-vol steady uptrends (VIX low). High factor score = low vol = healthy — keeps direction consistent with the other factors.
That's why the gauge label explicitly says "Volatility (inv.)".
Reading the banner
One-line summary
Market Regime · Bull · Composite +12 · Date 2026-05-30
Meaning: bullish environment, mildly hot, recent data.
Expand the 6 gauges
Each factor shows:
- Name
- Semi-circular speedometer 0-100 visualization
- Numeric value
- Status chip (⚠ Overheated / Warm / Neutral / Cool / ⚠ Frozen)
Market coverage
| Market | Status |
|---|---|
| TW | ✅ Live, nightly 04:45 cron |
| US | 🚧 In development |
| JP | 🚧 In development |
When viewing US / JP stocks, the banner shows a neutral notice "Only TW market regime is live (US/JP coming soon)" — we won't accidentally overlay TW regime data on non-TW stocks.
How to use it
- Open any stock → Insights → Signal → look at the top strip
- Read the regime band and the composite value
- Check the dispersion flag — if red/yellow, the composite may be misleading
- Expand the 6-factor breakdown to see which are hot and which are cold
Combine with stock verdicts
| Market | Stock verdict | Approach |
|---|---|---|
| overheated_bull | Bull | Ride trend but scale in (pullback risk) |
| bull | Bull | Full participation |
| sideways | Bull | Stock momentum can carry you |
| bear | Bull | Stock must be very strong, else market drags it down |
| deep_bear | Bull | Wait — don't catch falling knives |
FAQ
Q1: Sometimes the composite conflicts with the stock verdict — why?
Normal. Stock verdict assesses one stock; market regime assesses the broader market. "Market overheated + stock bullish" = ride trend but size carefully — not "force a short".
Q2: How fresh is the data?
Runs daily at 04:45, writes to market_regime_daily. By pre-open (8:30) you see the latest.
Q3: Why no US / JP yet?
The market_regime_daily table currently only holds TW data (factors built on TW index/margin/flow data). Adding US / JP requires:
- ^GSPC / ^N225 index series
- US / JP institutional flow tables
- Equivalent margin/sentiment data (FINRA for US, etc.)
It's a non-trivial backend addition — scheduled for a later phase.