Mass Index
systemic:core-miIndicatorsfunction1 crInputs
| Name | Type | Description |
|---|---|---|
| Window Fast | integer | The EMA period for the **first smoothing** of the daily range. |
| Window Slow | integer | The EMA period for the **second smoothing** (double-EMA) of the daily range. |
| Price High | floatarray | The highest price reached during each period—one of two inputs used to calculate the daily range. |
| Price Low | floatarray | The lowest price reached during each period—paired with Price High to calculate the daily range. |
Outputs
| Name | Type | Description |
|---|---|---|
| MI | floatarray | The Mass Index value—a volatility measure that detects potential trend reversals through range expansion analysis. |
The Mass Index is a unique volatility-based indicator developed by Donald Dorsey in 1992. Unlike momentum indicators that measure direction, the Mass Index measures range expansion and contraction—detecting when volatility is building toward a potential trend reversal.
Key insight: The Mass Index doesn't tell you which way the market will move—only that it's likely to change direction soon. You need other indicators to determine bullish vs. bearish.
The Reversal Bulge Pattern
The Mass Index's signature signal is the "reversal bulge":
- MI rises above 27 (range is expanding rapidly)
- MI falls below 26.5 (expansion is exhausting)
- A trend reversal often follows
flowchart LR
subgraph Phase1["1. Buildup"]
A["MI rising toward 27"]
end
subgraph Phase2["2. Bulge"]
B["MI crosses above 27"]
end
subgraph Phase3["3. Trigger"]
C["MI drops below 26.5"]
end
subgraph Phase4["4. Signal"]
D["Reversal imminent"]
end
Phase1 --> Phase2 --> Phase3 --> Phase4
Mathematical Foundation
The Mass Index uses a clever ratio of EMAs to detect when price ranges are expanding unusually fast:
Step 1: Calculate the Daily Range
Step 2: Smooth the Range (Fast EMA)
Step 3: Double-Smooth (Slow EMA)
Step 4: Calculate the EMA Ratio
Step 5: Sum Over 25 Periods
Why This Formula Works
The ratio of single-EMA to double-EMA is normally close to 1.0 (when ranges are stable). When ranges start expanding rapidly, the fast EMA reacts quicker than the slow EMA, pushing the ratio above 1.0.
Summing 25 of these ratios:
- Stable market: MI ≈ 25 (each ratio ≈ 1.0)
- Expanding ranges: MI > 27 (ratios consistently > 1.0)
- Contracting ranges: MI < 25 (ratios < 1.0)
flowchart TD
subgraph Inputs["Price Inputs"]
H["High prices"]
L["Low prices"]
end
subgraph Range["Daily Range"]
R["High − Low"]
end
subgraph Fast["Fast EMA"]
F["9-period EMA of Range"]
end
subgraph Slow["Slow EMA"]
S["9-period EMA of Fast EMA"]
end
subgraph Ratio["EMA Ratio"]
RAT["Fast / Slow"]
end
subgraph Sum["Mass Index"]
MI["Sum of 25 Ratios"]
end
H --> R
L --> R
R --> F --> S
F --> RAT
S --> RAT
RAT --> MI
Interpreting Mass Index Values
| MI Value | Market Condition | Implication |
|---|---|---|
| < 25 | Range contracting | Low volatility, trend may continue |
| 25-26 | Normal volatility | No signal |
| 26-27 | Range expanding | Watch for bulge formation |
| > 27 | Significant expansion | Reversal bulge forming |
| Drops below 26.5 (after >27) | Exhaustion | Reversal signal triggered |
Trading Strategies
Strategy 1: Classic Reversal Bulge
The textbook Mass Index strategy:
| Step | Condition | Action |
|---|---|---|
| 1 | MI rises above 27 | Alert: volatility expanding |
| 2 | MI drops below 26.5 | Signal triggered |
| 3 | Check current trend | Determine reversal direction |
| 4 | Confirm with other indicator | Enter trade |
Critical: The Mass Index only signals that a reversal may occur—not which direction. Use a trend indicator (EMA, ADX) to determine if you should go long or short.
Strategy 2: MI + Moving Average
| Condition | Interpretation | Action |
|---|---|---|
| MI reversal bulge + Price below 50 EMA | Bearish trend exhausting | Look for long entry |
| MI reversal bulge + Price above 50 EMA | Bullish trend exhausting | Look for short entry |
Strategy 3: Volatility Confirmation
Use MI as a filter for other signals:
| MI State | Other Signal | Trade? |
|---|---|---|
| MI > 27 | Any entry signal | Wait—reversal coming |
| MI < 25 | Trend-following signal | Proceed—trend stable |
| MI dropping from 27+ | Breakout signal | High probability setup |
Missing Data
A bar is skipped whenever High or Low is missing there. Both EMAs and the final rolling sum run
over the observed-bar subsequence — a Friday-to-Monday gap bridges as one adjacent step, not
three calendar days — then the result is placed back at the original bar positions. Every skipped
bar and the warm-up before the first computable value are None at full input length; nothing is
forward-filled or defaulted to 0.
Known divergence (out of scope): the underlying implementation applies
window_fastto both EMA stages —window_slowonly sizes the final rolling sum, never a second EMA period as the formula above implies. This predates the null-handling migration and is not corrected here.
Configuration Parameters
| Parameter | Default | Description |
|---|---|---|
| Window Fast | 9 | EMA period for smoothing the daily range |
| Window Slow | 9 | EMA period for double-smoothing |
Note: Unlike most indicators, the fast and slow windows in Mass Index are typically the same (both 9). The "slow" EMA is applied to the fast EMA, not to the original data.
Alternative Configurations
| Style | Fast | Slow | Effect |
|---|---|---|---|
| Standard | 9 | 9 | Classic Dorsey settings |
| Sensitive | 7 | 7 | Earlier signals, more noise |
| Smooth | 12 | 12 | Fewer signals, more reliable |
Mass Index vs. Other Volatility Indicators
| Indicator | Measures | MI Advantage |
|---|---|---|
| ATR | Average range magnitude | MI detects changes in range, not absolute size |
| Bollinger Bands | Standard deviation | MI uses ratio approach, less lag |
| VIX | Implied volatility | MI works on any asset, uses price only |
| Keltner Channels | ATR-based bands | MI specifically designed for reversals |
Strengths
| Aspect | Benefit |
|---|---|
| Direction-agnostic | Works equally in uptrends and downtrends |
| Early warning | Signals form before the reversal, not after |
| Unique approach | Measures range dynamics others ignore |
| Clear threshold | 27/26.5 levels provide objective signals |
Limitations
| Aspect | Challenge |
|---|---|
| No direction | Must combine with trend indicators |
| Rare signals | Bulges above 27 don't occur frequently |
| False signals | Can trigger in choppy, trendless markets |
| Requires confirmation | Never trade MI signals alone |
Combining MI with Other Modules
| Combination | Purpose |
|---|---|
| MI + EMA | Determine reversal direction (long vs. short) |
| MI + RSI | Confirm overbought/oversold at reversal |
| MI + MACD | Dual confirmation of momentum shift |
| MI + ADX | Verify trend strength before reversal |
| MI + ATR | Size positions based on current volatility |
Historical Context
Donald Dorsey introduced the Mass Index in his 1992 article in Technical Analysis of Stocks & Commodities magazine. His insight was that trend reversals are often preceded by range expansion—prices become more volatile before changing direction.
The indicator remains valuable because it captures a market dynamic that most momentum indicators miss: the exhaustion of a trend through increasing volatility.
Data Alignment and Multi-Input Considerations
The Mass Index requires synchronized High and Low price series. When connecting different data sources:
Input Alignment
| Scenario | System Behavior | Impact on MI |
|---|---|---|
| Same source, same timeframe | No adjustment needed | Accurate range calculation |
| Different timeframes | Upsampling via forward-fill | Artificial range consistency |
| Different data lengths | Padding via last-value extension | Edge distortion |
Critical Alignment Warning
Because the Mass Index relies on the relationship between High and Low prices:
Misaligned data can produce:
- Negative ranges if Low exceeds High after misalignment
- Artificially stable ranges when forward-fill creates repeated identical values
- Distorted EMA ratios that generate false reversal signals
Best Practice: Always source High and Low prices from the same OHLC data feed and timeframe. Never mix daily High with intraday Low data.
Window Parameters
The window_fast and window_slow parameters are constants and require no alignment consideration—they define the EMA periods applied uniformly across the synchronized price data.
Indicator Profile
quadrantChart
title MI Indicator Profile
x-axis Low Popularity --> High Popularity
y-axis Low Reliability --> High Reliability
quadrant-1 High potential
quadrant-2 Established leaders
quadrant-3 Niche tools
quadrant-4 Popular but risky
MI - Stocks: [0.35, 0.65]
MI - Crypto: [0.25, 0.55]
Profile Dimensions
| Dimension | Stocks | Crypto | Explanation |
|---|---|---|---|
| Popularity | 0.35 | 0.25 | Niche indicator—known primarily among volatility specialists. Less documented than mainstream indicators like RSI or MACD. |
| Reliability | 0.65 | 0.55 | Specific reversal bulge pattern has historical backing, but signals are rare. Cryptocurrency volatility patterns less studied. |
| Complexity | Moderate | Moderate | Double-EMA ratio approach requires understanding EMA mathematics. Threshold-based signals are straightforward once understood. |
| Versatility | Limited | Limited | Designed specifically for reversal detection—not adaptable to trend-following or mean-reversion strategies without modification. |
| Recent Interest | Stable | Growing | Classic indicator with consistent niche following. Crypto traders increasingly exploring volatility-based indicators. |