How it works
The Fisher Transform starts from a statistical observation. Price changes are not normally distributed — they cluster near the middle with occasional fat-tailed excursions — which means most indicators built on them spend the bulk of their time in an uninformative middle band. The transform applies a mathematical function that stretches values near the edges of a bounded range out toward infinity while leaving the middle relatively compressed. Feed it a series confined to -1 to +1 and the output has sharply defined, spiky extremes instead of a smear.
In practice the input is a normalised price position: where the current price sits within the high-low range of the lookback window, rescaled to run from -1 to +1 and lightly smoothed so a single bar cannot swing it fully. The transform is then applied and the result is itself smoothed slightly. What comes out is an unbounded oscillator whose turning points are unusually crisp — instead of a rounded top that could be anywhere within several bars, you typically get a distinct spike and an immediate reversal.
That sharpness is the whole reason to use it. Where RSI or a Stochastic gives an ambiguous plateau at a turn, the Fisher Transform gives a peak you can point at. Traders use the crossover between the Fisher line and its trigger — which is simply the previous bar's Fisher value — as the entry signal, which fires within a bar or two of the extreme rather than after a slow curve has rolled over.
The cost is equally clear. Sharpening the extremes does not create information; it amplifies whatever is in the input, noise included. A market making a small new range high produces the same sharp spike as one making a decisive break, because both are at the top of their window. And because the output is unbounded, the amplitude of a spike depends on how close to the range edge price got rather than on how significant the move was, so a reading of 4 is not four times as meaningful as a reading of 1.
It belongs to the same family of engineering-influenced indicators as the Relative Vigor Index, and shares their character: mathematically deliberate, responsive, and dependent on being embedded in a framework that decides when to listen. On its own, in a trending market, its trigger crossovers fire against the trend as reliably as any range-position oscillator's.
Calculation
The arithmetic in words, in the order it happens.
First normalise price position. Using the median price (high + low) / 2, compute a raw value = 2 x ((price - lowest low over N) / (highest high over N - lowest low over N)) - 1, which runs from -1 at the bottom of the range to +1 at the top. Smooth it recursively: value = 0.33 x raw value + 0.67 x the previous value, then clamp it just inside -1 and +1 so the logarithm stays defined. Apply the transform: fisher = 0.5 x the natural logarithm of ((1 + value) / (1 - value)), then smooth once more as fisher = that result + 0.5 x the previous fisher. The default N is 9. The trigger line is simply the previous bar's fisher value, so the crossover is a one-bar comparison rather than a moving average.
Source
An AlgoBeamScript implementation of the formula above, written by us from the arithmetic so the code and the calculation agree line for line.
Runs unchanged on the platform and in the AlgoBeamTS runtime. The language reference is in the documentation.
Inputs
Defaults are the values most charting packages ship with. They are conventions, not optimal settings — the right length depends on your instrument and your holding period.
| Input | Default | What it changes |
|---|---|---|
| Length | 9 | Bars in the high-low window used to normalise price position. Short settings make the transform reach its extremes almost every swing; lengthening it to 20 or more means a spike represents a genuine multi-week range extreme. |
| Source | HL/2 (median price) | The price normalised against the range. The median price is conventional because it represents the centre of the bar; using close makes the indicator react more strongly to closing auctions and late-session moves. |
How to read it
What practitioners take from the plot. Read these as descriptions of market state, not as entry signals.
- Sharp spike to a high value then a turn down
- Price reached the top of its recent range and immediately retreated. The crisp turning point is precisely what the transform exists to produce.
- Fisher crossing below its trigger line
- The current value is below the previous bar's — the earliest possible confirmation that the spike has rolled over. Fast, and correspondingly prone to false starts.
- Fisher crossing above its trigger line from a deep low
- The mirror long trigger, most useful when the low was made at a level that already mattered structurally.
- Crossing the zero line
- Price has moved from the lower half of its recent range to the upper half, or the reverse. A coarser and more stable read than the trigger crossover.
- Repeated large spikes in both directions
- The market is oscillating within a range and the transform is magnifying it. Amplitude here reflects the transform's mathematics, not market significance.
Limitations
Where this indicator misleads. None of these are fixed by a better parameter.
- It amplifies noise as readily as signal. A trivial new range extreme in a quiet market produces the same dramatic spike as a decisive breakout.
- It is unbounded, so there is no level at which a reading is definitively extreme, and thresholds do not transfer between instruments or timeframes.
- The one-bar trigger line makes it very quick to flip, which produces frequent false crossovers in choppy conditions.
- Being range-position based, it embeds in trends like the Stochastic: it will spike and turn against a sustained move repeatedly while price keeps going.
Educational reference. This page explains how an indicator is built and how it is commonly read. It is not investment advice, not a recommendation and not a signal service. No indicator is profitable on its own — each is a way of describing a market, and any rule built on one has to be tested with realistic costs before it is traded.