Join today
Strategies / Mean reversion / Fisher Transform Cross

Fisher Transform Cross Strategy

The Fisher Transform of the typical price, over 13 bars, drives every trade. A cross up through -5 opens a long and a cross down through 5 opens a short. The system is always in the market and flips direction on each opposite signal.

Mean reversionLong & shortIntradayEUR/USD3 min
n/aProfit factor
140,774Net profit USD
50.23%Win rate
6,227Trades
-50,961Max drawdown
22.61Avg trade

Best run of 6. EUR/USD, 3 min, spread 1, from run sweeps:2026-09-23-EURUSD-3m-opt.tsv:3.

Entry rules, long

  1. Members only

Entry rules, short

  1. Members only

Exit rules

  1. Members only

Test conditions

PeriodUp to 2026-09-23
InstrumentEUR/USD, 3 minutes
Spread1 points
Contracts1
Starting capital1,000,000
CostsSpread only. Commissions and overnight financing are not included.
BarsUp to 200,000 bars, fewer where the instrument has less history
Last tested2026-09-23

Parameters

positionSize
Contracts per trade
1
fisherPeriod
Lookback for the Fisher Transform
13
upperLevel
Sell short when Fisher drops back below this
5
lowerLevel
Buy when Fisher climbs back above this
-5
valueSmoothing
Weight of the previous normalised value
0.67
clampTrigger
Normalised value beyond this is clamped
0.99
clampValue
Clamp level, keeps the log finite
0.999

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
EUR/USDBest run3 minn/a 6,22750.23140,774 USD-50,961
EUR/USD4 hoursn/a 1,55059.1084,954 USD-48,632
Dow Jones1 hourn/a 1,26860.9624,659 EUR-20,758
Dow Jones4 hoursn/a 34160.1213,477 EUR-9,514
GBP/USDDailyn/a 44259.955,897 USD-5,630
FTSE 100Dailyn/a 34963.045,538 EUR-3,169

Charts

Results by run

Net profit against max drawdown

Net profitMax drawdown
0-100K-50K100K200KEUR/USD · 3 minEUR/USD · 4 hoursDow Jones · 1 hourDow Jones · 4 hoursGBP/USD · DailyFTSE 100 · Daily

The code

ProBuilder, rewritten to house standard

Every file in the library uses the same header, the same section order and the same variable names. The numbers above were produced by the original version before the rewrite, and the rewrite has not yet been compiled in ProRealTime.

// ============================================================
// Fisher Transform Cross
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long & short
// Timeframe tested: 3 minutes
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = false

// --- Parameters ---
positionSize = 1          // contracts per trade
fisherPeriod = 13         // lookback for the Fisher Transform
upperLevel = 5            // sell short when Fisher drops back below this
lowerLevel = -5           // buy when Fisher climbs back above this
valueSmoothing = 0.67     // weight of the previous normalised value
clampTrigger = 0.99       // normalised value beyond this is clamped
clampValue = 0.999        // clamp level, keeps the log finite

// --- Indicators ---
// Fisher Transform of the typical price. fisherValue and fisherLine carry over from the previous bar.
IF BarIndex < fisherPeriod THEN
  fisherValue = 0
  fisherLine = 0
ELSE
  highestPrice = Highest[fisherPeriod](TypicalPrice)
  lowestPrice = Lowest[fisherPeriod](TypicalPrice)
  IF highestPrice > lowestPrice THEN
    fisherValue = ((TypicalPrice - lowestPrice) / (highestPrice - lowestPrice) - 0.5) + valueSmoothing * fisherValue
  ENDIF
  IF fisherValue > clampTrigger THEN
    fisherValue = clampValue
  ENDIF
  IF fisherValue < (0 - clampTrigger) THEN
    fisherValue = 0 - clampValue
  ENDIF
  fisherLine = 0.5 * LOG((1 + fisherValue) / (1 - fisherValue)) + 0.5 * fisherLine
ENDIF

15 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • There is no stop, no target and no separate exit, so each trade lasts until the opposite cross, however far price moves against it.
  • Drawdowns are deep: USD 50,961.00 on the headline EUR/USD 3 minute run, and EUR 20,758.20 against EUR 24,658.60 profit on Dow Jones 1 hour.
  • Win rate on the best run is 50.23% over 6,227 trades, with an average trade of USD 22.61, so costs matter a lot on 3 minute bars.
  • Profit factor was not recorded, because only sweep data exists.

Indicators used

Fisher Transform

How to load it

  1. Copy the code with the copy button above the code block.
  2. In ProRealTime, open a chart of the instrument and timeframe you want to test, then open ProOrder > New trading system and choose "Create with programming".
  3. Paste the code, give the system a name and save it.
  4. Click "Backtest", set your own spread and position size, and run it before you consider trading it live.

Questions

About this strategy

Can it trade automatically?

Yes. It runs in ProOrder at 1 contract and needs no stop or target settings, since it only reverses.

Which markets were tested?

EUR/USD 3 minutes made USD 140,774.00. EUR/USD 4 hours, Dow Jones 1 hour and 4 hours, GBP/USD daily and FTSE 100 daily were all positive too.

What risk does 1 contract carry?

The headline run hit a max drawdown of USD 50,961.00 at 1 contract. On FTSE 100 daily it was EUR 3,169.00.

Why a 3 minute chart when the name says daily?

The daily version works, but the sweep found the most profit on EUR/USD 3 minutes. Daily runs trade less and had higher win rates, such as 63.04% on FTSE 100.

Related

Strategies like this one

Slow MACD Slope

Best run on the same market, EUR/USD.

6.80 PF · 7,305 trades

Monday Dip Buy

Also a mean reversion strategy.

n/a PF · 146 trades

ATR Band

Also a mean reversion strategy.

10.31 PF · 53 trades

Always-in systems behave differently in a portfolio. Join the ProRealAlgos waitlist to find out how.

The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.

Past backtest results do not guarantee future results. This is not financial advice. Curated and maintained by ProRealAlgos. ProRealTime™ is a trademark of ProRealTime SAS. prorealalgos.comStatsDocs