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.
Fisher Transform on MES 5m — sharp peaks at reversal points
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
| Setting | Default | Range | Notes |
|---|---|---|---|
| Period | 10 | 2–200 | Lookback 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
| Handle | Type | Plotted | Notes |
|---|---|---|---|
| Fisher Line | Numeric | Always | The main transformed value, saturating around ±3.8. |
| Trigger Line | Numeric | Always | The Fisher Line lagged by one bar. Crossovers are primary trade triggers. |
| Slope | Numeric | On select | Rate of change of the Fisher Line. |
Fisher Transform node — default state
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.
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.
Fisher crossover with recent-extreme filter
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.