Adaptive Moving Average: One That Adjusts
An adaptive moving average changes its own smoothing from bar to bar, running fast when price is travelling in a straight line and slow when it is churning. The efficiency ratio that steers it - net travel divided by total travel - is a direct measurement of how trend-like the current market is.
How it works
An ordinary moving average has one speed and keeps it forever. That is the complaint everybody has about them: the setting that works in a trend is too slow in a fast move and too fast in a quiet one.
An adaptive average changes its smoothing every bar. When price is moving in something close to a straight line it behaves like a short-period average; when price is churning it behaves like a long one.
The best-known version is Perry Kaufman’s, usually written as KAMA — the Kaufman adaptive moving average. Others exist, and they all share the same architecture: a measurement of market condition, mapped onto a smoothing constant.
The efficiency ratio, which is the interesting part
Take the last ten bars. Measure how far price ended up from where it started — that is net travel. Then add up the absolute size of each individual bar-to-bar move — that is total travel. Divide the first by the second.
A perfectly straight advance scores 1.0, because every step went the same way and nothing was retraced. A market that ended exactly where it began scores 0.0, no matter how violently it moved in between.
The ratio is then mapped onto a smoothing constant somewhere between a fast average (typically 2 periods) and a slow one (typically 30). High efficiency pushes the constant toward the fast end and the line hurries to catch price; low efficiency pushes it toward the slow end and the line goes almost flat.
Measured across this site’s shared 576-bar history, the median 10-bar efficiency ratio is 0.34, with the tenth percentile at 0.08 and the ninetieth at 0.71. So the typical market state here is one where price retraced roughly two-thirds of everything it travelled.
Only 30% of bars scored above 0.5. That figure is the single most useful thing on this page, and it has nothing to do with the average: it says that on this data, a market travelling more forwards than sideways was the exception rather than the rule, and any trend system was in unfavourable conditions roughly seven bars in ten.
In practice: use the ratio, think hard about the average
Plot the efficiency ratio in its own pane and read it as a regime gauge. Rising toward 0.7 means trend-following tools have a chance. Sitting under 0.2 means every crossover system on the chart is about to generate signals that reverse. That is actionable in a way “the average adapted” is not.
The average itself costs you two extra parameters. A simple average has one number to choose. This has three: the efficiency lookback, the fast bound and the slow bound. Every additional parameter is another dial to tune on past data, and tuning three dials on one history is how a backtest starts describing that history instead of the market.
That is the honest objection to it, and it applies to every adaptive indicator, not just this one. More machinery is not more edge; it is more surface area for fitting.
The ratio is timeframe-dependent in a way that surprises people. Aggregate the same data into longer bars and the within-bar churn disappears into the bars themselves, so efficiency rises. The same market is “choppy” on a five-minute chart and “trending” on a daily one, and the number changes without anything changing.
Volume is absent from the whole calculation. A straight move on no participation and a straight move on heavy participation score identically, which is a real limitation given that the second is the one that tends to continue.
A gap is maximally efficient by construction — all net travel, no intermediate churn, because nothing traded in between. So a gapping instrument reads as more trending than it is, and the average speeds up on the least informative kind of move there is.
And here is the structural problem with using it as a trailing stop: the efficiency ratio is backward-looking. At the moment a new move begins, the lookback window is still full of the chop that preceded it, so the ratio is low and the line is slow — precisely when you wanted it responsive. It speeds up once the move is established, which is once you no longer needed the speed.
Whatever the line does, each signal you act on costs 2% of a typical bar’s range in round-trip costs on this history. Adaptivity changes how many signals you get, not what each one costs.
What an adaptive average is not
It is not a market-condition detector you can trust in isolation. The efficiency ratio measures the recent past, and regimes change without warning.
It is not a fix for the lag problem. It trades lag for parameter count. In the conditions where it runs fast, a plain short average would also have run fast.
It is not standardised. “Adaptive moving average” describes a family — Kaufman’s version, variable index dynamic averages, fractal adaptive averages — that use different condition measurements. Two charts with the same label can behave very differently.
And it is not independent of a plain average. It is still a smoothing of the same closes, so it cannot disagree with a simple average about anything except timing.
When it fails
In a range it flattens out and stops generating signals — which is the design working exactly as intended, and is also indistinguishable from the tool being broken. Users conclude it has stopped working and switch it off, generally just before conditions change.
The second failure is the transition. Coming out of chop into a trend, the ratio lags the change, so the line is slowest at the start of the move it was supposed to catch. Coming out of a trend into chop, it is fastest just as speed becomes a liability.
A third is over-tuning. Three parameters plus a lookback gives four dimensions to optimise, and any four-dimensional optimisation on a few hundred bars will find something that looks excellent and is noise.
A fourth is reading the ratio as a direction. Efficiency of 0.9 means price moved in a straight line. It says nothing about which way, and nothing about whether it continues.
And a fifth is assuming the thresholds transfer. A 0.5 reading is common on some instruments and rare on others. The 30%-above-0.5 figure measured here is a property of this series, not a universal constant, which is exactly why it is worth computing on your own data rather than borrowing.
The original data
Across this site’s shared 576-bar history, the 10-bar efficiency ratio has a median of 0.34, a tenth
percentile of 0.08 and a ninetieth of 0.71, and exceeds 0.5 on 30% of bars. The figures live in
research/series-measurements.json, produced by site/measure_series.py, so the calculation is
inspectable rather than asserted.
Compute that distribution on your own instrument and timeframe before using any adaptive tool. It takes a few lines of code and it tells you two things nothing else will: what counts as a high reading on your chart, and how often you can expect one. A threshold borrowed from an article written about a different market is a number with no relationship to the data you are trading, and this is one of the few indicator questions where the right answer is genuinely specific to you.
Related
Moving average is the parent page for the family this belongs to. Simple moving average is the fixed-speed baseline an adaptive line is measured against. And choosing indicators carries the measured version of the parameter-count problem this page raises.
I use the efficiency ratio and I do not use the average it was invented for, which sounds perverse until you plot the ratio on its own. It answers the question I actually have most mornings - is this a market worth trading a trend system in today - and the adaptive line built on top of it answers a question I did not ask.
— Michael Whitman
This page is educational, not financial advice. Test every idea on your own charts before risking money.