Fisher Transform

A statistical transformation that converts price into a Gaussian-distributed value. Turning points become sharp peaks rather than smooth curves — sharper visual reversals.

Updated 2026-05-24
8 min read
advanced

A statistical transformation that converts price data into a Gaussian normal distribution, making turning points stand out as sharp peaks rather than gradual curves. Built specifically to identify reversal moments earlier and more decisively than smoothing-based oscillators.

Placeholder · Video / Clip

Fisher Transform on MES 5m — sharp peaks at reversal points

Author hint: MES 5m, dark theme, ~60-bar window. Fisher Transform (10) plotted in a sub-panel with the Fisher Line and Trigger Line visible, plus horizontal markers at ±2.5. Show one full cycle with a clear reversal point where the Fisher Line spikes against the saturation limit (~±3.8). ≤ 10 seconds, no audio. Save to /public/images/guide/indicators/fisher-transform/chart.mp4.

What it measures

  • Statistically normalized price position. The transformation maps the typical price within its recent range to a Gaussian distribution.
  • Reversal probability. Extreme transformed values (the saturation limits near ±3.8) correspond to historically unusual price positions.
  • Sharp turning points. Where most oscillators round through their extremes, Fisher Transform spikes hard against the limits.

Formula

How AlgoLift computes it
HH = max(High over period)
LL = min(Low over period)
mid = (HH + LL) / 2
range = HH − LL

Value[t] = 0.33 × 2 × ((HL2 − mid) / range) + 0.67 × Value[t-1]
                       where HL2 = (High + Low) / 2
Value[t] = max(min(Value[t], 0.999), -0.999)   (clip to avoid undefined log)

Fisher[t] = 0.5 × ln((1 + Value[t]) / (1 − Value[t])) + 0.5 × Fisher[t-1]
Trigger[t] = Fisher[t-1]

The key is the 0.5 × ln((1 + V) / (1 − V)) transformation — applied to a price-position value in [−1, +1], it stretches readings near the extremes far beyond the ±1 bounds, while values near 0 stay close to 0. The result has a sharper, more distribution-like character than the input.

In AlgoLift the values are saturated at approximately ±3.8 (the natural saturation point of the Fisher transformation for finite inputs).

Developed by John Ehlers, with detailed treatment in his 2002 book Cybernetic Analysis for Stocks and Futures.

Inputs in AlgoLift

SettingDefaultRangeNotes
Period102–200Lookback for the high/low range.

Recommended periods

  • 5–9 (fast): Short-term reversal scalping.
  • 10 (default): Ehlers's original. Works for most timeframes.
  • 20–30: Smoother readings for swing setups.

Outputs in AlgoLift

HandleTypePlottedNotes
Fisher LineNumericAlwaysThe main transformed value, saturating around ±3.8.
Trigger LineNumericAlwaysThe Fisher Line lagged by one bar. Crossovers are primary trade triggers.
SlopeNumericOn selectRate of change of the Fisher Line.
Placeholder · Screenshot

Fisher Transform node — default state

Author hint: The Fisher Transform node on a fresh canvas with default Period=10. Both output handles labeled. Dark theme. Tight crop. Save to /public/images/guide/indicators/fisher-transform/node.png.

How to read it

  • Fisher > +2.5: Statistically unusual upside extreme. Strong reversal candidate in range regimes.
  • Fisher < −2.5: Statistically unusual downside extreme.
  • Fisher near ±3.8: Saturated reading — the rarest condition. Strong contrarian signal in any non-trending regime.
  • Fisher Line crosses Trigger Line: Primary entry/exit trigger. Cross from below = bullish, cross from above = bearish.
  • Sharp peak: The indicator's signature — Fisher Line shoots to an extreme then snaps back, often coinciding with a price reversal point.
Key Takeaway

Fisher Transform's value is the shape of its peaks. Where most oscillators round through extremes, Fisher snaps. The sharpness makes turning points unambiguous when they occur — but the indicator still suffers the same false-signal problem in trends that all oscillators do.

Best in / worst in

Best in range-bound or cyclical markets, on instruments where you want unambiguous reversal signals, and as a high-precision counter-trend trigger.

Worst in strong trends (Fisher will saturate at +3.8 or −3.8 and stay there for many bars), on instruments with persistent gaps (the high/low calculation gets distorted), and during news-driven volatility spikes.

Three setups

1. Fisher / Trigger crossover at an extreme

The canonical setup — line crosses signal with the prior reading saturated.

  • Long: Fisher Line crosses above Trigger Line AND Fisher was < −2.5 within the last 3 bars.
  • Short: Fisher Line crosses below Trigger Line AND Fisher was > +2.5 within the last 3 bars.

The recent-extreme requirement filters out crossovers happening in the middle of the range.

Placeholder · Screenshot

Fisher crossover with recent-extreme filter

Author hint: Node graph showing Fisher Line and Trigger Line outputs feeding a crossover Comparison, gated by a Tally tracking recent extreme readings, into an Entry node. Save to /public/images/guide/indicators/fisher-transform/setup-01.png.

2. Saturation reversal entry

Trade the moment Fisher snaps back from the ±3.8 saturation limit.

  • Long: Fisher was ≥ 3.5 within last 2 bars AND Fisher slope just turned negative — momentum exhaustion from a saturated upside extreme — counter-trend short.

Wait, reverse: this is a short setup. Let me restate:

  • Short (reversal from upside extreme): Fisher was ≥ 3.5 within last 2 bars AND Fisher slope just turned negative AND KAMA ER < 0.3 (range regime, not a trend extreme).
  • Long (reversal from downside extreme): Symmetric with Fisher ≤ −3.5.

The KAMA filter is essential — without it, this setup fades real trends.

3. Fisher confluence with another oscillator

Require Fisher and another oscillator to both signal an extreme.

  • Long: Fisher Line < −2.5 AND RSI < 30 AND Fisher Line crosses above Trigger Line.
  • Short: Symmetric.

The dual-extreme requirement filters out false signals that Fisher alone would fire.

Advanced patterns in AlgoLift

Fisher as a fast exit on mean-reversion trades. Enter mean-reversion trades using any other system. Exit when Fisher Line crosses the Trigger Line in the opposite direction — the sharpness of the cross makes the exit decisive, rarely waffling. Wire via Set Exit Condition.

Fisher saturation as a regime warning. When Fisher has been at saturation (|Fisher| > 3.5) for more than 5 consecutive bars, the market is in a strong directional trend — mean-reversion strategies should be paused. Use a Tally node to count saturated bars; pause the strategy when the count exceeds threshold.

Multi-timeframe Fisher confirmation. Add a 1h data series alongside your 5m execution chart. Only allow 5m Fisher entries when the 1h Fisher is in the same direction. The cross-timeframe agreement filter dramatically reduces false reversal signals.

Common mistakes

  • Treating saturation as automatic reversal. Fisher saturates often in trends — that's a feature of the math, not a signal. The saturation only matters as a reversal cue when paired with a regime check.
  • Using Fisher alone in trending markets. Same failure mode as other oscillators: every extreme will eventually un-saturate, but that doesn't mean price reverses. Filter aggressively in trends.
  • Confusing the Trigger Line with a signal line. Trigger is just the previous bar's Fisher value — not an EMA, not a smoothed reference. The crossover is essentially a slope-sign change, not a moving-average cross.
  • Tuning the period too tightly. Fisher's behavior changes meaningfully with period — but tuning beyond 10 bars in either direction usually fits noise. See overfitting in trading.
Common Misconception
Myth
The Gaussian transformation gives Fisher predictive power that other oscillators lack.
Reality
The Gaussian transformation changes the *shape* of the signal, not its information content. Fisher's sharper peaks make reversals more visually obvious, which has psychological value, but the underlying market data is the same as any other oscillator works on. Better visualization helps; magic predictive power doesn't.