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.

ExamplePeriodUse Case
hurst_100100Moderate lookback -- reacts faster to regime changes, noisier
hurst_200200Standard -- good balance of stability and responsiveness
hurst_500500Very 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 RangeRegimeInterpretation
0.00 -- 0.40Strong mean reversionPrice frequently reverses direction. Past moves are strongly anti-persistent. Mean-reversion strategies (RSI, Z-Score, BB bounces) have strong edge.
0.40 -- 0.50Weak mean reversion / randomSlight anti-persistence but close to random. The edge for mean reversion is marginal. Proceed with caution.
0.50Pure random walkNo memory. Past prices give zero information about future direction. No technical strategy has a statistical edge.
0.50 -- 0.60Weak trendSlight persistence. Momentum strategies may work but the edge is marginal. Require strong confirmation signals.
0.60 -- 1.00Strong trendPrice moves are highly persistent. Trends tend to continue. Momentum strategies (MACD, EMA crossovers, breakout entries) have strong edge.

Note

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.

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.

Choosing the right operator

  • 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_below to 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

Use long periods (200+) for stability

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 is a regime detector, not a timing tool

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.

Combine with directional indicators per regime

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.

Re-evaluate regimes on higher timeframes

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.