Market Regime Detection for Crypto: Bull, Bear, and Sideways Classification
Multi-signal regime classification using on-chain, derivatives, and macro data instead of price-only indicators.
The bull/bear/sideways frame and why it's incomplete
Most crypto traders classify the market into three states: bull, bear, or sideways. The model is intuitive and works as a first-pass mental shorthand — you size aggressively in bull, defensively in bear, and tactically in sideways. The problem is what the three buckets hide.
Inside what looks like a single "bull" you can find at least three structurally different conditions: an early-cycle TREND where momentum is confirmed and volatility is compressed, a late-cycle EUPHORIA where MVRV is extended and supply held in profit is near historic peaks, and a SQUEEZE where price is grinding higher but funding rates are extreme and open interest is screaming overcrowding. The same +5% week on the chart can mean three completely different things for risk.
The same problem holds on the downside. A 10% drop inside a healthy TREND is mechanically different from a 10% drop in a PANIC regime with cascading liquidations and macro risk-off. Price-only classification treats both as "bearish action" and prescribes the same defensive response. That's a mis-pricing of risk. The bull/bear/sideways frame is not wrong — it's underspecified.
What "regime" really means
A regime is a persistent statistical state of the market. It is defined not by current price direction but by the joint distribution of returns, volatility, positioning, and macro context over a window. Regime changes are slow relative to noise but fast relative to cycles — they typically persist for days to weeks, not minutes and not months.
The closest analog outside crypto is the NBER's recession dating process. Recessions are not declared from a single GDP print; the committee waits for multiple indicators (employment, industrial production, real income) to confirm before changing the official state. The lag is a feature: it filters noise and produces classifications that hold up under scrutiny.
Applying the same logic to crypto means accepting that regime is a derived quantity, not an input. You don't observe "TREND" directly; you compute it from a basket of signals and confirm it across time. A regime detector that flips between states every hour is misclassifying noise. A regime detector that takes days to acknowledge a real shift is over-smoothing. The right calibration sits between these extremes, and it depends on what the regime label will be used for.
Why price-only classification fails
Three concrete failure modes make price-only regime detection unreliable in crypto.
First, late-cycle divergence. Price can grind higher for weeks while on-chain metrics deteriorate. MVRV climbs above 3, NUPL crosses into the euphoria band, exchange netflow turns positive (coins moving onto exchanges to be sold), and ETF flows soften. A price-only model sees "bull" and recommends maximum exposure. A multi-signal model sees the divergence and flags EUPHORIA, which is structurally a sell-strength state, not a buy-the-dip state.
Second, squeeze conditions inside trends. The funding rate can sit at the 95th percentile of its 30-day history while price is up 8% on the week. From a price perspective, this looks healthy. From a positioning perspective, the trade is dangerously crowded — one liquidation cluster being hit can cascade into a 15% downside move that the price chart alone gave no warning about.
Third, regime-change masking. The transition from a confirmed TREND to a CORRECTION or POST-PEAK regime often shows up first in volatility and positioning, not in price. Realized volatility expands, open interest contracts, basis premium collapses — all while the price is still chopping near the highs. A trader watching only price sees no signal until the actual decline begins, by which point the favorable risk window has already closed.
The common thread: price is a lagging indicator of regime change. Faster indicators exist, but you have to compute them from data the chart doesn't show.
Multi-signal regime classification
A serviceable regime model needs inputs from at least four families: structural (where the cycle is), tactical (where positioning is), volatility (what the dispersion is doing), and macro (what the cross-asset environment supports).
In practice, these inputs can feed a five-state classifier:
• TREND — directional momentum confirmed, volatility moderate, positioning constructive, macro supportive. Maximum risk envelope. • RANGE — no clear direction, volatility low to moderate, positioning balanced. Reduced risk envelope, mean-reverting bias. • SQUEEZE — funding rate and OI z-score at extremes, basis premium stretched, L/S ratio skewed. Directional risk asymmetric, small adverse moves can cascade. • EUPHORIA — MVRV / NUPL extended, supply in profit at cycle highs, ETF flows softening, drawdown from ATH minimal. Structurally a fade-strength state. • PANIC — drawdown deep, realized volatility expanded, exchange netflow extreme, macro risk-off. Survival mode, preserve capital.
The signals are not equally weighted. Different regime probabilities lean on different sources. PANIC weighting tilts toward volatility and macro coupling because those move fastest. EUPHORIA tilts toward structural (MVRV, NUPL, supply) because those define the cycle position. SQUEEZE tilts toward tactical (funding, basis, OI, L/S) because those are the proximate cause. A model that gives every input equal weight in every regime will produce muddy labels.
Hysteresis and regime probabilities
A common failure mode in regime detectors is flickering: the model crosses a boundary, flips labels, the underlying noisy signal reverses, the label flips back. The trader sees three regime changes in one afternoon and stops trusting the output.
Two design choices fix this. The first is hysteresis: require N consecutive bars or M of the last K signals to vote for a new state before the label changes. A regime that needs three consecutive hours of confirming signal to flip is much less noisy than one that flips on the first reading.
The second is regime probabilities instead of hard labels. Rather than emit "TREND" or "RANGE," emit P(TREND) = 0.62, P(RANGE) = 0.31, P(SQUEEZE) = 0.07. Downstream consumers (sizing logic, alerts, AI prompt context) can use the full probability distribution. A position sizer that takes 62% of TREND-appropriate size plus 31% of RANGE-appropriate size produces smooth transitions instead of step changes.
Probabilities also expose ambiguity honestly. When the strongest regime sits at 0.40 and three others share the rest, the model is telling you the market is at a transition point. That information is more useful than an arbitrary winner-takes-all label.
The cost of hysteresis is delayed reaction. The cost of probabilities is more complex consumer logic. Both costs are worth paying for any system that has to operate continuously.
From detection to action
A regime label that sits in a dashboard and informs nothing is decorative. The point of regime detection is to bind downstream behavior — specifically, the size and shape of allowed risk.
Concrete examples of regime-conditioned policy:
• Position cap multiplier. A maximum position size that is 100% of base in TREND, 70% in RANGE, 40% in SQUEEZE (with squeeze-direction-aware further haircuts), 25% in EUPHORIA, 10% in PANIC. Same trader, same conviction, very different exposure ceilings. • Leverage cap. Leverage allowed in TREND collapses to zero in PANIC. The reasoning is symmetric to position size: borrowing amplifies whatever the regime delivers, and PANIC delivers the worst tail outcomes. • Allowed actions. New long entries blocked in EUPHORIA. Stop-loss tightening required in SQUEEZE. Borrowing against volatile collateral disabled in PANIC. These are not preferences — they're structural rules of engagement that change with regime. • Alert thresholds. A 5% intraday move is noise in a volatile PANIC regime and noteworthy in a quiet TREND. Alert systems should re-scale by regime, not fire on fixed price thresholds.
The deepest point is that regime detection is not for analysis. It is for policy. A market regime classifier whose only output is a label on a chart is missing the back half of the system. The full pipeline is: signals → regime probability → policy permissions → enforcement at the trade level. Without the last two steps, you have a regime model that knows things but cannot do anything with what it knows.
See risk permissions in action.
RiskState converts 30+ live market signals into dynamic risk permissions. Try the live demo or read the API docs.