Hurst -- Hurst Exponent
Contents
Overview
The Hurst Exponent measures the "memory" of a price series using Rescaled Range (R/S) analysis. It answers the most fundamental question in quantitative trading: is this market trending, mean-reverting, or random?
The calculation works by dividing the price series into sub-periods of varying lengths, computing the rescaled range (the range of cumulative deviations from the mean, divided by the standard deviation) for each, and then fitting a power law to find the exponent H. A Hurst Exponent of 0.5 corresponds to a random walk -- past price changes have no bearing on future ones. Values above 0.5 indicate persistence (trending behavior -- an up move is more likely to be followed by another up move). Values below 0.5 indicate anti-persistence (mean-reverting behavior -- an up move is more likely to be followed by a down move).
This is THE regime detector. If Hurst says the market is random (H near 0.5), no technical indicator has a statistical edge -- you are just gambling. Hurst above 0.55 means momentum strategies (MACD, EMA crossovers, breakout entries) have a mathematical basis. Hurst below 0.45 means mean-reversion strategies (RSI dip-buys, Z-Score entries, Bollinger Band bounces) have a mathematical basis. This is the foundation for all regime-adaptive strategies.
Format
hurst_{period}
The period defines the lookback window -- how many candles of price data are used to estimate the Hurst Exponent via R/S analysis.
| Example | Period | Use Case |
|---|---|---|
hurst_100 | 100 | Moderate lookback -- reacts faster to regime changes, noisier |
hurst_200 | 200 | Standard -- good balance of stability and responsiveness |
hurst_500 | 500 | Very stable -- captures the dominant long-term regime, slow to update |
Period range: 50 to 500.
Value range: 0 to 1 (always).
Understanding Hurst Values
| Hurst Range | Regime | Interpretation |
|---|---|---|
| 0.00 -- 0.40 | Strong mean reversion | Price frequently reverses direction. Past moves are strongly anti-persistent. Mean-reversion strategies (RSI, Z-Score, BB bounces) have strong edge. |
| 0.40 -- 0.50 | Weak mean reversion / random | Slight anti-persistence but close to random. The edge for mean reversion is marginal. Proceed with caution. |
| 0.50 | Pure random walk | No memory. Past prices give zero information about future direction. No technical strategy has a statistical edge. |
| 0.50 -- 0.60 | Weak trend | Slight persistence. Momentum strategies may work but the edge is marginal. Require strong confirmation signals. |
| 0.60 -- 1.00 | Strong trend | Price moves are highly persistent. Trends tend to continue. Momentum strategies (MACD, EMA crossovers, breakout entries) have strong edge. |
Hurst Exponent is a statistical property of the price series, not a timing signal. It tells you what kind of strategies will work in the current regime, not when to enter or exit. Always combine Hurst with a directional indicator for actual trade signals.
Understanding Operators with Hurst
Each operator behaves differently with Hurst. Because Hurst is a regime filter (it classifies the market's behavior, not its direction), it is almost always used as a gate on top of directional entry triggers.
> (Greater Than) -- State-Based
What it does: The trigger is true on every candle where the Hurst Exponent is above the threshold.
On the chart: The market is in a trending regime. Price moves tend to persist -- up follows up, down follows down. This trigger stays active for as long as Hurst remains above the threshold.
[[actions.triggers]]
indicator = "hurst_200"
operator = ">"
target = "0.55"
timeframe = "1h"
Typical use: "Only trade momentum strategies when the market is actually trending." A Hurst above 0.55 confirms that trend-following indicators (MACD, EMA crossovers) have a statistical basis. Without this filter, momentum signals in random-walk markets are just noise.
< (Less Than) -- State-Based
What it does: The trigger is true on every candle where the Hurst Exponent is below the threshold.
On the chart: The market is in a mean-reverting regime. Price moves tend to reverse -- deviations from the mean are corrected. This trigger stays active for as long as Hurst remains below the threshold.
[[actions.triggers]]
indicator = "hurst_200"
operator = "<"
target = "0.45"
timeframe = "1h"
Typical use: "Only trade mean-reversion strategies when the market is actually mean-reverting." A Hurst below 0.45 confirms that dip-buy strategies (RSI oversold, Z-Score below -2, price at lower Bollinger Band) have a mathematical edge.
cross_above -- Event-Based
What it does: Fires once, at the exact candle where the Hurst Exponent transitions from below the threshold to above it. The previous candle had Hurst <= the target, and the current candle has Hurst > the target.
[[actions.triggers]]
indicator = "hurst_200"
operator = "cross_above"
target = "0.55"
timeframe = "1h"
Typical use: Detect the moment the market shifts from random/mean-reverting into a trending regime. This is a regime change signal -- you may want to switch from mean-reversion strategies to momentum strategies, or enable a trend-following bot.
cross_below -- Event-Based
What it does: Fires once, at the exact candle where the Hurst Exponent transitions from above the threshold to below it. The previous candle had Hurst >= the target, and the current candle has Hurst < the target.
[[actions.triggers]]
indicator = "hurst_200"
operator = "cross_below"
target = "0.50"
timeframe = "1h"
Typical use: Detect the moment the market loses its trending character. When Hurst drops below 0.50, the trend has broken down and momentum strategies lose their edge. This can be used to exit trend-following positions or pause a momentum bot.
= (Equal) -- Not Recommended for Hurst
Why: Hurst produces floating-point values calculated to many decimal places. Exact equality (e.g., hurst_200 = 0.50) will almost never be true. Use > or < instead.
- Use
>to gate momentum strategies behind a trending regime. This is the most common Hurst operator. - Use
<to gate mean-reversion strategies behind an anti-persistent regime. - Use
cross_above/cross_belowto detect regime transitions and switch strategy modes.
TOML Examples
Trending Regime + MACD Entry
Only enter on MACD bullish crossovers when Hurst confirms the market is trending. Without the Hurst filter, MACD crossovers in random-walk markets produce many false signals.
[[actions]]
type = "open_long"
amount = "100 USDC"
[[actions.triggers]]
indicator = "hurst_200"
operator = ">"
target = "0.55"
timeframe = "1h"
[[actions.triggers]]
indicator = "macd_12_26_9"
operator = "cross_above"
target = "macd_signal"
timeframe = "1h"
Mean-Reverting Regime + RSI Entry
Only buy RSI oversold dips when Hurst confirms the market is mean-reverting. In a trending regime, RSI can stay oversold for extended periods as the trend continues lower.
[[actions]]
type = "open_long"
amount = "100 USDC"
[[actions.triggers]]
indicator = "hurst_200"
operator = "<"
target = "0.45"
timeframe = "1h"
[[actions.triggers]]
indicator = "rsi_14"
operator = "<"
target = "30"
timeframe = "1h"
max_count = 1
Avoid Random Walk Markets
Gate all entries behind a Hurst filter that excludes the random-walk zone. This strategy only enters when the market has clear character -- either trending (momentum entry) or mean-reverting (dip entry) -- and stays flat when the market is random.
# Momentum entry in trending regime
[[actions]]
type = "open_long"
amount = "75 USDC"
[[actions.triggers]]
indicator = "hurst_200"
operator = ">"
target = "0.55"
timeframe = "1h"
[[actions.triggers]]
indicator = "ema_12"
operator = "cross_above"
target = "ema_26"
timeframe = "1h"
# Dip entry in mean-reverting regime
[[actions]]
type = "open_long"
amount = "75 USDC"
[[actions.triggers]]
indicator = "hurst_200"
operator = "<"
target = "0.45"
timeframe = "1h"
[[actions.triggers]]
indicator = "rsi_14"
operator = "<"
target = "30"
timeframe = "1h"
max_count = 1
Hurst + Half-Life Combo
Combine Hurst with Half-Life for a complete mean-reversion setup. Hurst confirms the regime is mean-reverting, and Half-Life confirms the reversion happens fast enough to be tradeable.
[[actions]]
type = "open_long"
amount = "100 USDC"
[[actions.triggers]]
indicator = "hurst_200"
operator = "<"
target = "0.45"
timeframe = "1h"
[[actions.triggers]]
indicator = "halflife_200"
operator = "<"
target = "30"
timeframe = "1h"
[[actions.triggers]]
indicator = "rsi_14"
operator = "<"
target = "30"
timeframe = "1h"
max_count = 1
Tips
Hurst Exponent estimation is noisy on short lookback windows. With a period of 50 or 100, the value can jump around significantly from candle to candle, making it unreliable as a regime classifier. Use 200 or more candles for a stable reading. The trade-off is slower reaction to regime changes, but for a structural indicator like Hurst, stability matters more than speed.
Hurst tells you what kind of market you are in, not when to buy or sell. Always pair Hurst with a directional indicator. Hurst > 0.55 + MACD cross = trending momentum entry. Hurst < 0.45 + RSI oversold = mean-reversion dip entry. Hurst alone is useless for trade timing.
Build regime-adaptive strategies: when Hurst says "trending," use momentum indicators (MACD, EMA crossovers, ROC). When Hurst says "mean-reverting," use oscillators (RSI, StochRSI, Z-Score, Bollinger Bands). When Hurst says "random," stay flat. This single indicator decides which strategy gets activated.
Regimes are fractal -- a market can be trending on the daily timeframe but mean-reverting on the 5-minute chart. Compute Hurst on the timeframe that matches your trading horizon. For swing trades (holding days to weeks), use Hurst on daily candles. For intraday trades, use Hurst on hourly candles. Do not mix regime reads across timeframes.