Fractal Adaptive Moving Average (FRAMA)
period
= 16 (8–64) • fast_period
= 1 (1–10) • slow_period
= 198 (50–300) Overview
The Fractal Adaptive Moving Average (FRAMA), developed by John Ehlers, is a sophisticated technical indicator that applies fractal geometry and chaos theory to create an intelligent moving average. FRAMA is constructed based on the Exponential Moving Average algorithm, but its smoothing factor is dynamically calculated using the current fractal dimension of the price series. This allows FRAMA to distinguish between trending markets (fractal dimension near 1) and choppy markets (fractal dimension near 2), automatically adjusting its behavior to follow strong trend movements closely while remaining flat during consolidation periods.
The key innovation of FRAMA is its use of fractal mathematics to solve the age-old dilemma of moving averages: the trade-off between responsiveness and smoothness. When price moves in straight lines (dimension = 1), the exponential smoothing factor becomes 1, making FRAMA follow price exactly without any smoothing. When price exhibits highly volatile, saw-toothed movements (dimension = 2), the smoothing factor drops to approximately 0.01, equivalent to a 200-period simple moving average. This adaptive mechanism allows FRAMA to track price closely during significant moves while filtering out noise during lateral price movements.
Interpretation & Trading Signals
Adaptive Behavior:
- Trending Markets (D≈1): FRAMA follows price closely with minimal lag
- Choppy Markets (D≈2): FRAMA slows down significantly to filter noise
- Normal Markets (D≈1.5): Moderate smoothing for balanced response
- Automatic Adjustment: No manual parameter optimization needed
Trading Signals:
- Uptrend Signal: FRAMA crosses above price - consider buying positions
- Downtrend Signal: FRAMA dips below price - consider selling/shorting
- Support/Resistance: FRAMA acts as dynamic support in uptrends, resistance in downtrends
- Trend Strength: Distance between price and FRAMA indicates trend momentum
Calculation Formula:
- FRAMA(i) = A(i) × Price(i) + (1-A(i)) × FRAMA(i-1)
- Alpha (A) = EXP(-4.6 × (D - 1))
- D = 1: A = 1 (no smoothing, follows price exactly)
- D = 2: A = 0.01 (heavy smoothing, ~200 SMA)
Example Usage
Code examples will be available once the Rust implementation is complete.
Performance Analysis
Related Indicators
Pivot Moving Average
Technical analysis indicator
Variable Index Dynamic Average
Technical analysis indicator
Variable Length Moving Average
Technical analysis indicator
Arnaud Legoux Moving Average
Moving average indicator
Centered Weighted Moving Average
Moving average indicator
Double Exponential Moving Average
Moving average indicator