A 0-100 bullishness score from seven independent dimensions, re-normalised over whatever data is live. Read its polarity before comparing it to Cycle Position.
A single 0-100 score for how bullish the market currently is, plus a six-phase cycle label from Deep Bear through Accumulation and Recovery to Bull and Euphoria.
80 here means a healthy bull market. That is the opposite polarity to Cycle Position, which scores risk — the two share a tab, and every surface that shows them together states the direction.
Seven independent dimensions are each scored 0-100 for bullishness and weighted: trend, momentum, breadth, sentiment, derivatives, liquidity and macro. Every input is free — no dimension depends on a paid key.
The weights are re-normalised over whatever data is actually live. A dropped signal must never inflate the others: the score once swung several points because a single API timed out, and re-normalising is what stopped that.
There is no black box and no fabricated input. Each dimension publishes its own sub-score and the weight it carried, so a reader can see which signal moved the composite.
A cold compute fans out across many sources and is slow, so the stale window comfortably exceeds it: a lapsed cache is served while the refresh runs behind the caller, never by making someone wait.
Regime answers what the market is doing now. Cycle Position answers how far through the cycle we are. A market can be short-term bullish and late-cycle at once — that combination is the whole reason both exist.
A composite hides its disagreements. Read the per-dimension breakdown when the headline is near the middle, because a 50 built from three extremes is not a 50 built from seven neutrals.
Phase labels are thresholds over a continuous score. A market sitting on a boundary will flip its label on noise.
Open the live Market Regime tab →