Fractal Adaptive Moving Average (FRAMA)

Parameters: 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