MA disparity settings: the 5% level that never arrived
4,320 disparity index settings tested on USD/JPY. The 5% level textbooks quote was never reached on a 25-period line, and the zero line is a moving average crossover.
The disparity index measures how far the close sits from its own moving average, as a percentage of that average. There is one line of arithmetic behind it:
disparity = (close − moving average) / moving average × 100
Some platforms plot close / average × 100 instead, which is the same series with 100 added to it. A reading of +5 here is a reading of 105 there.
The level quoted with it is almost always the same one: a 25-period average, and 5% as the point where price has gone too far and should come back. That number comes from daily equity charts.
So the first thing worth measuring is whether it exists here. On USD/JPY across 2024 and 2025, on 15-minute, hourly and 4-hour bars, not one bar printed a 25-period disparity of 5%.
What the MA disparity actually measures
The numerator is the distance from the average. The denominator is the price level at the time. Zero means the close is sitting on the line.
That is what separates it from RSI or Stochastics. Those are squeezed into a 0-to-100 frame, so 70 means the same thing on every instrument. This one is not squeezed into anything: it is a fraction of the current price, so the range it reaches depends on the market and on the timeframe.
Measured on a 25-period simple moving average:
| Timeframe | Median | Nine bars in ten | 2024 max | 2025 max |
|---|---|---|---|---|
| 15-minute | 0.09% | 0.27% | 1.94% | 1.94% |
| Hourly | 0.19% | 0.56% | 2.78% | 1.67% |
| 4-hour | 0.41% | 1.05% | 4.54% | 2.35% |
Median and the nine-in-ten figure are 2025. The same "5%" is an extreme a 4-hour chart did not reach in two years, and 2.6 times the largest reading a 15-minute chart produced at all.
The level that never arrived
Lengthen the period and 5% does appear. Over both years, three settings out of the thirty measured got there:
| Setting | Bars past 5% | Largest reading that year |
|---|---|---|
| 4-hour, period 200, 2024 | 4.02% | 9.60% |
| 4-hour, period 75, 2024 | 0.39% | 7.08% |
| Hourly, period 200, 2024 | 0.22% | 6.25% |
All three are 2024. USD/JPY rose 1,632 pips that year with a 2,237-pip range; 2025 fell 56 pips with a 1,900-pip range. What produced a 5% reading was the year, not the setting.
At the period the level is actually published with, 25, even 3% was reached in only one of six cells: 4-hour bars in 2024, on 0.38% of them.
Percent of price is not a stable unit here
Two measurements say what that unit costs in practice.
One percent is a different number of pips every month
USD/JPY traded between 139.723 and 161.940 in 2024. The same 1% gap is 139.7 pips at the low end of that year and 161.9 pips at the high end. In 2025 the range was 139.923 to 158.663, so 1% ran from 139.9 to 158.7 pips.
The same level fires two to three and a half times as often in one quarter as another
This matters more. A percent threshold and an ATR threshold were each calibrated on the whole year to fire on exactly 20% of its bars, then read quarter by quarter.
| Timeframe and year | Percent: quietest quarter → busiest | ATR: same |
|---|---|---|
| 15-minute 2024 | 11.4% → 32.4% (2.83x) | 18.0% → 21.9% (1.22x) |
| 15-minute 2025 | 12.5% → 28.6% (2.30x) | 18.0% → 21.8% (1.22x) |
| Hourly 2024 | 12.3% → 32.8% (2.66x) | 17.2% → 21.6% (1.26x) |
| Hourly 2025 | 12.8% → 31.3% (2.44x) | 16.2% → 22.6% (1.40x) |
| 4-hour 2024 | 9.7% → 34.5% (3.56x) | 18.5% → 20.9% (1.13x) |
| 4-hour 2025 | 14.9% → 30.5% (2.05x) | 16.3% → 22.7% (1.39x) |
The percent unit swung more in all six cells. Its quietest quarter came in under 10% and its busiest went over 34%. The ATR unit stayed between 16 and 23 everywhere.
The steadier unit did not make more money
This is where the expectation breaks. If percent is the wrong unit, ATR should trade better.
Across 90 cells — the same reading, period, timeframe and year, each unit allowed its own best level — ATR finished ahead in 26. Comparing medians rather than bests, ATR won 33 of 90.
The reason is trade count. Holding the fire rate steady means firing in quiet markets too. On 15-minute bars the long fade took a median of 29 trades a year in percent and 161 in ATR. As the cost section below shows, cost is trade count times spread, so steadying the rate is also multiplying the bill.
The average catches up, not the price
"It always comes back to zero" is true. What comes back is the question.
Every bar that pushed the reading past a level was followed forward to the bar the sign flipped, and that round trip was split into the part price moved and the part the average moved. The two shares sum to 100%.
| Timeframe and year | Price's share | Average's share | Bars to zero |
|---|---|---|---|
| 15-minute 2024 | −1.6% | 101.6% | 20.2 |
| 15-minute 2025 | −0.7% | 100.7% | 19.5 |
| Hourly 2024 | −26.8% | 126.8% | 20.1 |
| Hourly 2025 | −4.0% | 104.0% | 16.7 |
| 4-hour 2024 | −24.1% | 124.1% | 20.6 |
| 4-hour 2025 | +9.2% | 90.8% | 17.3 |
Period 25, level 0.25% (0.5% on 4-hour bars). Across all 18 cells, which add periods 10 and 75, the price share was negative in 13. The average's share ran from 61.6% to 139.6%.
Read plainly: price does not have to move at all for the reading to return to zero, because the average is moving towards price the whole time. The "reversion" the indicator is named for is mostly arithmetic.
Counting episodes instead of averaging them changes the picture. Price did end up back in the trade's favour in 52.0% to 78.1% of round trips. More than half come back; the mean is still negative because the ones that do not come back travel much further. That is the high-win-rate, negative-expectancy shape, visible in the price series before any strategy is written on top of it.
Shuffling the bars changes almost nothing
Each close-to-close change was kept exactly once and put in a random order, so the volatility, the drift and the fat tails all belong to the market and only the sequence does not. Period 25, 2025:
| Timeframe | Nine-in-ten (real / shuffled) | Share past 0.25% | Bars to zero |
|---|---|---|---|
| 15-minute | 0.269% / 0.258% | 11.9% / 10.9% | 19.5 / 20.7 |
| Hourly | 0.558% / 0.521% | 39.6% / 39.5% | 16.7 / 17.1 |
| 4-hour | 1.051% / 0.998% | 69.5% / 67.3% | 15.2 / 12.7 |
Nearly identical. The round trip is a property of subtracting a trailing mean of closes from a close, not a property of this market.
One column does separate them. The 99th percentile was 0.563%, 1.129% and 1.997% on real bars against 0.462%, 0.899% and 1.573% on shuffled ones. The extremes belong to the market; the round trip does not.
Zero is a moving average crossover
The denominator is a price and prices are positive, so the sign of the reading is the sign of (close − average). Zero disagreements over three timeframes and five periods, and zero again between the percent and ATR versions of the same reading.
The backtest says the same thing. Running the zero cross against a crossover of the close (a 1-period simple average) and the same N-period average:
| Period | Disparity zero cross | Close / average cross |
|---|---|---|
| 5 | 1,688 trades, +1,323.4 pips | 1,688 trades, +1,323.4 pips |
| 10 | 1,053 trades, +2,007.6 pips | 1,053 trades, +2,007.6 pips |
| 25 | 600 trades, +2,227.8 pips | 600 trades, +2,227.8 pips |
| 75 | 335 trades, +787.0 pips | 335 trades, +787.0 pips |
| 200 | 268 trades, −1,966.8 pips | 268 trades, −1,966.8 pips |
Hourly bars, 2025. Swapping the simple average for an exponential, weighted, smoothed or Hull average produced the same identity in all five cases.
Reading the zero line is reading a moving average crossover. Adding the disparity has not added a condition.
One cell out of sixty did diverge between the two units: 4-hour bars, 2024, period 200. The ATR basis divides by an average true range over the same window and Wilder's smoothing needs its own window before that settles, so it is given twice the warmup and starts later. The sign never changed; the line simply began on a different bar.
Adding it to a chart
Stated as facts:
- MT4 / MT5 ship no indicator by this name. What they do ship is Envelopes (Insert > Indicators > Trend > Envelopes), which draws lines at the average times (1 ± d/100) — the same calculation, drawn on the price pane instead of underneath it. For the oscillator form, install a distributed .mq4 or .mq5 file.
- TradingView has community scripts published as "Disparity Index". It is not in the built-in list.
- Formiq (browser) has it in the indicator list. Period, guide lines and the unit (percent or multiples of ATR) are settings, and the backtest side accepts four readings: level, level fade, break out of ±level, and the zero cross.
The envelope reads wicks; the disparity reads closes
The lower envelope band sits at average × (1 − d/100), so touching the lower band and printing a reading below −d% are the same condition, differing only in which price is judged. The envelope looks at the bar's low and high; the disparity looks at its close.
Entering at the lower line and exiting at the upper one, period 25:
| Trades | Net | |
|---|---|---|
| Envelope (wick), hourly, 0.5%, 2025, long | 41 | +61.5 pips |
| Disparity (close), hourly, 0.5%, 2025, long | 31 | +769.9 pips |
| Envelope (wick), hourly, 0.5%, 2024, long | 48 | +926.5 pips |
| Disparity (close), hourly, 0.5%, 2024, long | 29 | +169.5 pips |
Over 36 cells (three timeframes, two years, three levels, both directions) the close never traded more often than the wick — 36 of 36. It finished ahead in 17 of 36. Judging on closes reliably cuts the trade count and does not reliably improve the result.
How this was tested
| Item | Value |
|---|---|
| Pair | USD/JPY |
| Timeframes | 15-minute, hourly, 4-hour |
| Periods | 5, 10, 25, 75, 200 |
| Levels (percent) | 0.15, 0.3, 0.5, 0.8, 1.2 |
| Levels (ATR) | 1.0, 1.5, 2.0, 2.5, 3.0 |
| Exit levels (percent) | 0 (back to the average), 0.15, 0.3 |
| Exit levels (ATR) | 0, 0.75, 1.5 |
| Averages | simple, exponential, weighted, smoothed, Hull |
| Windows | 2024, 2025, first half 2025, second half 2025 |
| Spread | 0.3 pips |
| Lot | 0.1 |
| Fills | at the close |
| Stops and targets | none in the sweep, measured separately |
| Combinations | 4,320, plus 360 for the averaging grid |
Three readings were run:
- Fade — past the level, take the other side, and give it back when the reading returns to the average. This opens buys or sells but never both, so the long and the short were swept as separate systems.
- Break — up through +level opens a long, down through −level a short. Symmetric, so entry and exit share one rule set.
- Zero cross — through zero one way opens, through it the other way reverses.
Results for the three readings
2025, measured in percent:
| Reading | Timeframe | Profitable | Median | Mean win rate | Median trades |
|---|---|---|---|---|---|
| Fade, long | 15-minute | 35/75 | +0.0 pips | 65.2% | 29 |
| Fade, long | Hourly | 42/75 | +110.5 pips | " | 30 |
| Fade, long | 4-hour | 60/75 | +466.2 pips | " | 20 |
| Fade, short | 15-minute | 31/75 | −76.5 pips | 66.4% | 23 |
| Fade, short | Hourly | 53/75 | +201.4 pips | " | 27 |
| Fade, short | 4-hour | 63/75 | +718.9 pips | " | 21 |
| Break | 15-minute | 15/25 | +300.0 pips | 36.7% | 37 |
| Break | Hourly | 9/25 | −749.4 pips | " | 42 |
| Break | 4-hour | 8/25 | −851.6 pips | " | 30 |
| Zero cross | 15-minute | 2/5 | −641.6 pips | 23.8% | 2,704 |
| Zero cross | Hourly | 4/5 | +1,323.4 pips | " | 600 |
| Zero cross | 4-hour | 1/5 | −918.6 pips | " | 149 |
Mean win rate pools the three timeframes. The fade wins about two trades in three and finishes ahead in most cells; the zero cross wins one in four and only survives on hourly bars. Counting settings that were profitable in both years cuts that down hard: 19, 13 and 7 of 75 for the long fade, and 11, 17 and 11 for the short.
Last year's best setting in this year
| Reading | Timeframe | Best of 2025 | The same setting in 2024 |
|---|---|---|---|
| Fade, long | 15-minute | period 200, 0.8% → 0.15%: +1,368.6 pips (34 trades) | +118.9 pips (31st of 75) |
| Fade, long | Hourly | period 200, 0.5% → 0: +1,327.8 pips (32 trades, 81.3% wins) | −511.2 pips (65th) |
| Fade, long | 4-hour | period 75, 0.5% → 0.3%: +1,373.6 pips (18 trades) | −394.8 pips (54th) |
| Fade, short | 4-hour | period 25, 0.8% → 0.3%: +1,419.2 pips (21 trades, 85.7% wins) | −1,840.1 pips (69th) |
Running it the other way is no better. The best of 2024 (15-minute long fade, period 5, 0.15% → 0.3%) made +2,155.5 pips, and the same setting made +255.6 pips in 2025 for 21st of 75 — against a 2025 median of 0.0 pips.
Rank correlation between the two years, across the six percent-fade cells: 0.016, −0.254, −0.116, 0.062, −0.217, −0.286. Near zero or negative everywhere.
The exception is the zero cross, at 1.000 on 15-minute bars and 0.400 on hourly. That is the rank correlation of a moving average crossover.
A 65% win rate that was mostly the trend
The fade only ever opens one side. Hold a long for b bars in a year that rises and it collects the rise, whatever opened it. So the drift an unconditional position of the same length would have earned — the window's total move divided by its bar count, times the bars held — was subtracted from every setting.
| Timeframe, year, side | Pips per trade | = drift | + edge | Settings with a positive edge |
|---|---|---|---|---|
| 4-hour 2025, long | +29.20 | −1.24 | +30.44 | 60/69 |
| 4-hour 2025, short | +40.61 | +1.40 | +39.21 | 60/70 |
| 4-hour 2024, long | −22.54 | +46.07 | −68.61 | 0/72 |
| Hourly 2024, long | −10.91 | +21.22 | −32.13 | 5/72 |
| Hourly 2025, long | +10.70 | −0.74 | +11.44 | 42/63 |
On 4-hour bars in 2024, not one of 72 settings had a positive edge left after the drift came out. The ATR version was 0 of 57.
2025 drifted 56 pips and the fade's edge survives clearly. 2024 rose 1,632 pips and it is wiped out. Whether "the disparity fade works" is a statement about the indicator or about the year depends entirely on which year was measured.
The short side is the mirror. The 4-hour short in 2024 lost 74.08 pips a trade, of which 76.04 was the drift, leaving an edge of +1.96. Losing money selling into a rising year is not the indicator's doing.
Which average to measure from
The reading is a distance from a moving average, so which average is a real setting. Five were run with everything else held.
As lines first: the share of bars on which each disagrees with the simple average about which side of zero price is on, period 25, 2025.
| Average | 15-minute | Hourly | 4-hour |
|---|---|---|---|
| Exponential | 7.0% | 6.5% | 5.3% |
| Weighted | 8.2% | 8.0% | 8.3% |
| Smoothed | 15.8% | 15.6% | 12.0% |
| Hull | 36.8% | 37.1% | 37.9% |
The Hull average points the opposite way on nearly four bars in ten. This is not a cosmetic choice.
On results, across 72 cells (four readings, three timeframes, two years, three periods), the count of cells each average won: Hull 24, smoothed 14, weighted 13, simple 11, exponential 10. The simple average the textbook specifies is not last, and not first. A 24-to-10 spread is not wide enough to call any of them the right one.
Filters, stops and the spread
Cost is trade count times spread
No article in this series has found an exception, and there is none here: the two columns agree to the tenth of a pip both are rounded to.
| System | Spread 0 | Spread 0.3 | Difference | Trades × 0.3 |
|---|---|---|---|---|
| Zero cross 25, 15-minute, 2025 | +169.6 pips | −641.6 pips | 811.2 pips | 811.2 (2,704 trades) |
| Zero cross 25, hourly, 2025 | +2,407.7 pips | +2,227.8 pips | 179.9 pips | 180.0 (600 trades) |
| Break 25 ±0.5%, hourly, 2025 | −1,662.1 pips | −1,680.6 pips | 18.5 pips | 18.6 (62 trades) |
The 15-minute zero cross makes +169.6 pips at zero spread. Its break-even spread is 0.063 pips, which makes it a system that loses to its own bill. The same setting on hourly bars breaks even at 4.013 pips.
What the filters did
Hourly, period 25, zero cross:
| 2025 | 2024 | |
|---|---|---|
| Baseline | +2,227.8 pips (600) | +2,546.5 pips (601) |
| ADX ≥ 25 | +554.8 pips (176) | +24.9 pips (161) |
| London + NY | +1,793.1 pips (328) | +892.6 pips (353) |
| Tokyo | +564.3 pips (247) | +2,427.2 pips (210) |
| Stop 40 pips | +2,454.0 pips (558) | +3,604.2 pips (559) |
| Target 40 pips | +2,369.4 pips (599) | +1,195.1 pips (598) |
No filter improved both years. ADX made it worse in both. The session windows point opposite ways: London and New York in 2025, Tokyo in 2024.
A 40-pip stop improved both. On 15-minute bars a 20-pip stop lifts −641.6 pips to −147.4 (still a loss). The zero cross wins a quarter of its trades with an average win more than three times its average loss, so a stop cuts very few winners.
What this test shows
- The 5% level does not exist on intraday USD/JPY. A 25-period line never reached it in two years. Levels have to be measured per timeframe, not copied.
- The return to zero is mostly the average moving. Price's share was negative in 13 of 18 cells, and shuffled bars produce the same round trip.
- The zero cross is a moving average crossover. Zero sign disagreements, identical trades and identical pips. The disparity adds no condition there.
- A steadier unit did not trade better. ATR holds the quarterly fire rate inside 1.13x to 1.40x but beat percent in only 26 of 90 cells, because steadying the rate means trading through quiet markets.
- The 65% win rate was the year. In 2024's rise, all 72 4-hour long-fade settings had a negative edge once the drift was subtracted.
Where this test stops
- One pair. The unit is a fraction of price, so the 0.27% / 0.56% / 1.05% figures are USD/JPY's, for these two years, and do not transfer to a pair trading at a different level.
- Two market characters. 2024 rose 1,632 pips and 2025 fell 56. The fade's conclusions are almost fully explained by that difference, which means more years are needed before they are conclusions rather than observations.
- The shuffled control is a close-only series. Each bar's high and low collapse onto its close, so it cannot be used for anything that reads wicks — including the envelope comparison above.
- Fills are at the close with no slippage. A setting that trades 2,700 times a year on 15-minute bars will execute worse than this in practice.
- Unreachable does not mean unusable. Measure the level this market actually reaches and the rule fires. What this test measured is that even after re-typing the level, last year's ranking did not survive into this one.
Related tests
- Bollinger band settings — the same fade-or-follow pair of readings, with the band set by standard deviation
- Moving average cross settings — what the zero line here turned out to be
- CCI settings — distance from an average, divided by the average distance
- Psychological line settings — where subtracting the drift was first used in this series
Questions people ask
- What is a good disparity index setting for forex?
- The level has to come from the timeframe, not from a textbook. On USD/JPY in 2025 a 25-period disparity kept nine bars in ten inside 0.27% on 15-minute bars, 0.56% on hourly bars and 1.05% on 4-hour bars. Levels between 0.3% and 0.5% were where the fade's results peaked in this sweep, but the rank correlation between 2024 and 2025 was near zero or negative in every one of six cells, so a level chosen on one year did not carry to the next.
- Does the disparity index reach 5% on currency pairs?
- Not on a 25-period line. Across 2024 and 2025, on 15-minute, hourly and 4-hour USD/JPY bars, not one bar printed a 25-period disparity of 5% or more. The largest reading in two years was 1.94% on 15-minute bars, 2.78% on hourly bars and 4.54% on 4-hour bars. The 5% figure comes from daily equity charts, where price moves away from a 25-day average by an order of magnitude more.
- Why does the disparity index always return to zero?
- Mostly because the moving average walks up to the price, not because the price comes back. Splitting each round trip into the part price contributed and the part the average contributed, the price share was negative in 13 of 18 cells measured, meaning price kept moving away while the average closed the gap. The average's share ran from 61.6% to 139.6%.
- Is the disparity index zero line the same as a moving average crossover?
- Yes. The denominator is a price and prices are positive, so the sign of the reading is the sign of close minus the average. Over three timeframes and five periods there were zero disagreements, and in the backtest the zero cross and a close-versus-average crossover produced identical trade counts and identical pips at every period from 5 to 200 and for all five averaging methods.
- Is the disparity index built into MT4 or TradingView?
- MT4 and MT5 ship Envelopes (Insert > Indicators > Trend > Envelopes), which draws the same calculation as two lines on the price chart rather than as an oscillator underneath it. The disparity itself is a custom indicator you install as an .mq4 or .mq5 file. TradingView has community scripts under the name Disparity Index. Formiq has it in the chart list and as a backtest condition with four readings.
Formiq is a free browser-based FX terminal with replay practice and no-code backtesting. Open the chart or see what the free plan includes.