VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
ACADEMY / Indicators and signals

Kaufman efficiency ratio: formula, 0-to-1 reading and a trend test

The Kaufman efficiency ratio divides the net price change over N bars by the total bar-to-bar distance price travelled in those bars. Near 1 the move was a straight line, near 0 it went nowhere. It measures how clean the recent move was, not whether it continues, so any threshold is a setting to test on your own market.

By · Published · updated · Editorial policy

Contents
  1. What is the Kaufman efficiency ratio and how do you calculate it?
  2. How high must the efficiency ratio be before a trend counts as clean?
  3. How does the efficiency ratio drive the Kaufman adaptive moving average?
  4. Can the efficiency ratio be used as a regime filter?
  5. What does a backtest of an efficiency-ratio rule on ES show?
  6. Which mistakes make an efficiency-ratio test misleading?
  7. Frequently asked questions
  8. References

What is the Kaufman efficiency ratio and how do you calculate it?

The Kaufman efficiency ratio is the net price change over N bars divided by the total distance price travelled bar to bar in those same N bars. It runs from 0 to 1: near 1, price moved almost in a straight line; near 0, it went nowhere. Read it as a gauge of how clean the recent move was, and test any threshold before trusting it.

Think of two drivers who both go from one town to another, 10 kilometres apart in a straight line. One takes the highway and the odometer shows 12 kilometres. The other takes winding back roads and the odometer shows 40 kilometres. Both arrived, but the first trip was far more efficient. The efficiency ratio applies the same idea to price: the straight-line distance is the net change, the odometer reading is the path length.

Path length is the sum of the absolute bar-to-bar changes over the lookback, so every up and down move adds to it, whatever its direction. Here is the only formula you need:

efficiency ratio = |close now − close N bars ago| ÷ Σ |close of each bar − close of the bar before it|

Here N is the lookback, often 10 bars by default; the vertical bars mean "ignore the sign"; and Σ means "add up over all N bars". The top line is the net change, the bottom line is the path length. The bottom line can never be smaller than the top line, so the result always sits between 0 and 1. Because both lines are in price points, the ratio has no unit and can be compared across markets, which is a rare property among technical indicators.

Hypothetical example

Two price paths start at 100 and end at 110 over 10 bars, so both have a net change of 10 points. The first path rises almost every bar, with two small dips, and its path length is 12 points: ratio 10 ÷ 12 = 0.83. The second path zigzags up and down by several points each bar before finishing at 110, with a path length of 40 points: ratio 10 ÷ 40 = 0.25. Same start, same end, same lookback, but one move was clean and the other was mostly noise.

Two hypothetical price paths both go from 100 to 110 in 10 bars: the near-straight path travels 12 points for an efficiency ratio of 0.83, while the zigzag path travels 40 points for an efficiency ratio of 0.25 Same move, different path Hypothetical: 100 to 110 in 10 bars Net 10, path 12 ER 0.83 Net 10, path 40 ER 0.25 Only the straight part counts. So: ER grades the path, not the end.
Same start, same end, very different ratios. The efficiency ratio measures how much of the travelled distance went in one direction.

How high must the efficiency ratio be before a trend counts as clean?

There is no universal level: values near 1 mean a near-straight path and values near 0 mean sideways noise, but the level that separates "clean" from "noisy" depends on the market, the bar size and the lookback, so read the ratio's own distribution before you set a threshold. A threshold is a setting you test, not a fact you look up.

The reason is simple. The ratio compares net change with path length, and the share of path length that is noise changes with the bar size. On very short bars, bar-to-bar wiggles are a larger part of all movement, so the ratio tends to sit lower on average. On daily bars the same market can show higher typical readings. A fixed level such as 0.6 can therefore be rare on one chart and common on another, which is one reason an indicator's role changes when you move from swing to intraday work, as the guide to the best indicators for day trading and where each fails explains.

Ratio readingWhat the last N bars looked likeHow a trend rule usually behaves there
Near 1 (for example above 0.7)Almost every bar moved the same wayEntries follow through more often; late entries are the risk
Middle (for example 0.3 to 0.7)A direction with pullbacksMixed; depends on the rule and the lookback
Near 0 (for example below 0.3)Price ended close to where it started after travelling a lotBreakouts fail and reverse; many small losses

The practical method is to compute the ratio on your own history, sort the values, and see where the 25th, 50th and 75th percentiles fall. A percentile is the value below which that share of the readings sits. If the median on your market and lookback is 0.35, then a threshold of 0.6 will pass only a small fraction of bars, and you should know that before you run a single backtest. Write the threshold down, then test it, then test its neighbours.

Illustration: a price line with a clean up leg, a sideways chop and a clean down leg, with the 10-bar efficiency ratio below it, around 0.7 in both legs and around 0.2 in the chop, and two dashed example thresholds at 0.3 and 0.6 High in trends, low in chop Illustration: price above, ER below Price ER Up Chop Down 0.6 0.3 Either direction can read clean. So: test the dashed levels yourself.
The ratio rises during clean legs in either direction and sinks in the sideways stretch. The dashed levels are examples to test, not rules.

How does the efficiency ratio drive the Kaufman adaptive moving average?

The ratio is the dial that sets how fast the Kaufman adaptive moving average reacts, so the average hugs price in a clean trend and flattens in noise. The Kaufman adaptive moving average (KAMA) is a moving average whose smoothing speed changes bar by bar according to the efficiency ratio. This is why the ratio and the average are almost always studied together: KAMA is the ratio turned into a line on the price chart.

A fixed moving average has one speed. A short one reacts quickly but whipsaws in a range; a long one is calm in a range but lags at every turn. KAMA tries to have both. It is given a fast speed and a slow speed, commonly the speeds of a 2-bar and a 30-bar average, and the efficiency ratio decides where between the two it sits on each bar. A high ratio moves the smoothing toward the fast end, so the average tracks price closely. A low ratio moves it toward the slow end, so the average barely moves and the noise passes beneath it.

  1. Compute the N-bar efficiency ratio on the current bar, with N often 10.
  2. Convert the ratio to a smoothing speed between the fast and slow limits. High ratio, fast; low ratio, slow.
  3. Update the average by moving yesterday's KAMA value toward today's close by that speed.

Two practical consequences follow. First, KAMA's lag is not fixed, so a crossover rule built on it will enter quickly in a clean trend and almost never in chop. Second, a flat KAMA is itself information: it says the ratio has been low. Some traders use the slope or flatness of KAMA as the filter instead of the raw ratio; both carry the same information in different clothes, and both need the same with-and-without test described in the next section.

Illustration: in a clean trend with a high efficiency ratio KAMA hugs price while a fixed moving average lags; in a sideways stretch with a low ratio KAMA goes flat while the fixed average wiggles through price KAMA changes speed Illustration: trend, then chop Price KAMA Fixed MA ER high ER low Fast in trends, flat in chop. So: a flat KAMA means a low ratio.
KAMA speeds up when the ratio is high and slows down when it is low. The fixed average has one speed for both stretches.

Can the efficiency ratio be used as a regime filter?

Yes, and the fair test is to run the same trend rule with and without the filter under the same costs, then compare trade count, average trade after costs and maximum drawdown side by side, not only net profit. A regime filter is a condition that allows a strategy to trade only when the market is in a chosen state, here "recently moved efficiently". The filter does not create trades; it removes some. The question is whether it removes mostly the bad ones.

  1. Compute the N-bar efficiency ratio on every bar of the test history.
  2. Write the threshold down before running anything. Pick it from the ratio's distribution, as in the previous section, not from an equity curve.
  3. Run the trend rule with no filter. This is the baseline. Record trades, average trade after commission and slippage, and max drawdown.
  4. Run the identical rule allowed only when the ratio is above the threshold. Change nothing else: same costs, same sessions, same next-bar execution.
  5. Compare the two runs line by line. A filter earns its place when the average trade rises by more than the trade count falls and the drawdown shrinks.
Two orders for the same filter test. In the fair order the threshold is written first, then the unfiltered baseline runs, then the filtered run. In the fitted order the runs come first, the equity curve is inspected, and the threshold is picked last, so it only describes history. Write the threshold first Two orders for the same test Fair: level first Fitted: level last Threshold Baseline Filtered Runs Curve Threshold A fitted level only describes history. So: fix the level before any run.
The order of steps matters: the threshold is written before the first run, and the unfiltered run is the baseline.

Net profit alone misleads here because a filter always trades less. Fewer trades can lower net profit even when each trade got better, and fewer trades can also make a result lean on three or four big winners. Read the average trade after costs and the drawdown together. The same with-and-without comparison applies whenever you add a condition to an existing rule, for example a volatility gate on a Bollinger Bands strategy before you backtest it. When both runs are evaluated by the backtesting in AlphaPrime (Valynox), every candidate already carries commission, slippage and next-bar execution, so the filtered and unfiltered versions are compared on the same footing rather than on a gross curve.

Hypothetical example

An unfiltered breakout rule takes 200 trades, with an average trade of $80 after costs, a max drawdown of $12,000 and 60 percent of the time in the market. With a useful ratio filter it takes 120 trades, the average trade rises to $150, the drawdown falls to $8,000 and time in market drops to 35 percent: fewer trades, but each one better and the worst stretch shallower. With a harmful filter it takes 40 trades, the average trade is $85, the drawdown is $11,000 and time in market is 10 percent: it removed most of the trades and almost none of the bad ones, and the remaining sample is too small to trust.

Hypothetical example: no filter gives 200 trades, an 80 dollar average trade, the base drawdown and 60 percent time in market; a useful filter gives 120 trades, 150 dollars, a drawdown one third smaller and 35 percent; a harmful filter gives 40 trades, 85 dollars, a drawdown only 8 percent smaller and 10 percent Better trades, not fewer Hypothetical example No filter Useful Harmful Trades Avg trade Drawdown In market 200 $80 Base 60% 120 $150 −33% 35% 40 $85 −8% 10% Useful: avg up, drawdown down. So: never score a filter on net profit.
A filter should raise the average trade more than it cuts the trade count, and it should shrink the drawdown. Fewer trades alone is not an improvement.

What does a backtest of an efficiency-ratio rule on ES show?

Our run on ES daily bars shows one candidate out of the 1,024 the search tried, kept for its return against its drawdown, with 41 trades and 15.84% time in market, and because it was picked after the fact, its numbers flatter it. The run tested the efficiency ratio as the only entry and exit rule, long and short, one contract, with no stop, no target and no other filter, from 2019-01-02 to 2025-06-30, with $20 commission and $25 slippage charged on every trade. It is a test of the ratio as a rule, not of the ratio as a filter over another rule.

Source: AlphaPrime product engine (CPU), run 2026-10-31. ES daily bars, 2019-01-02 to 2025-06-30, long and short, 1 contract, $20 commission and $25 slippage per trade.

NumberResult
Net profit (closed trades)$50,967.5
Max drawdown$19,100
Trades41
Win rate56.1%
Profit factor2.107
Average trade$1,243.11
Time in market15.84%

Read the box as a description of one test, not a forecast, and read the rows together. The candidate was in the market 15.84% of the time, so it sat flat for most of six and a half years and acted only when the ratio said the recent path was clean. Forty-one trades over that period is a small sample: a handful of trades decide the average, and a different handful could have decided it the other way. The best of about a thousand candidates on one history also carries a selection bonus that a fresh stretch of data does not, which is the effect Bailey, Borwein, López de Prado and Zhu (2014) describe. The guide to how to split in-sample and out-of-sample data explains why trades, not years, are the unit to count.

Look at where the equity curve climbs and where it stalls, how deep the drawdown runs, and whether the slope changes at the marked out-of-sample stretch.
Look at where the equity curve climbs and where it stalls, how deep the drawdown runs, and whether the slope changes at the marked out-of-sample stretch. ES · daily · 2019-01-02 to 2025-06-30 · CPU engine backtest

In the equity figure, look for three things. Does the profit arrive in many steps or in two or three jumps? Does the curve keep its shape in the marked out-of-sample stretch, or does it go flat there? And does the drawdown of $19,100 come from one long losing run or from a cluster of fast reversals? These shapes tell you more about how an efficiency-ratio rule behaves than the net profit line does.

Which mistakes make an efficiency-ratio test misleading?

Three mistakes inflate most efficiency-ratio results: a lookback so short the ratio flips every bar, a threshold chosen after looking at the equity curve, and judging the filtered strategy on net profit while forgetting that fewer trades make each cost estimate matter more. Each has a fix that costs little.

MistakeWhat goes wrongFix
Lookback too short (for example 3 bars)The ratio crosses the threshold almost every bar, the filter turns on and off constantly, and trades cluster around noiseUse a lookback long enough that the ratio stays on one side of the threshold for several bars, and check that neighbouring lookbacks (8, 10, 12) behave alike
Threshold picked after seeing the equity curveThe threshold absorbs the history's noise; the curve looks smooth because the level was fitted to itWrite the threshold down from the ratio's distribution first, then judge on data the choice never touched
Judging by net profit onlyFewer trades hide a thin edge; one tick more slippage can erase the whole resultRead the average trade after $20 commission and $25 slippage per trade, then rerun with doubled slippage and see what survives
Three mistakes in an efficiency-ratio test, each next to its fix: a too-short lookback is fixed by checking neighbouring lookbacks, a threshold fitted to the equity curve by writing the threshold first, and judging by net profit only by doubling the costs. All three fixes come before the out-of-sample data is used. Three mistakes, three fixes Each mistake next to its fix Mistake Fix Short lookback Fitted threshold Net profit only Check neighbours Threshold first Double the costs All fixes come before OOS data. So: plan them before the first run.
Each mistake next to the fix that removes it. All three fixes can be applied before the out-of-sample data is spent.

The first row is the one intraday traders meet most. Short bars already lower the ratio's typical level, and a short lookback on top of that produces a flickering filter, which is part of why what testing shows about the best indicator for intraday trading is rarely the indicator with the shortest setting. Pardo (2008) makes the general point that a setting which only works at one value, with poor results at its neighbours, is describing the history rather than the market. The second row is the classic selection trap; the third is why the stress tests in robustness testing that tries to break a strategy start with doubled slippage.

The next step takes an afternoon. Compute the 10-bar efficiency ratio on the market you trade, sort the values and note the 25th, 50th and 75th percentiles. Write one threshold down from that list. Then run your trend rule twice, with and without the filter, under the same costs, and compare trades, average trade after costs and max drawdown line by line before you look at net profit.

Frequently asked questions

Is the Kaufman efficiency ratio the same as KAMA?

No. The efficiency ratio is a number between 0 and 1 that measures how straight the recent price path was. KAMA is a moving average that uses that number to change its smoothing speed on every bar. The ratio is the input; KAMA is one way to use it on a price chart.

What lookback should I use for the efficiency ratio?

Ten bars is the common default, but the right lookback depends on how long the moves you want to catch usually last. A lookback that is too short makes the ratio flip every bar; one that is too long reacts after the move is over. Test a range of neighbouring lookbacks and prefer the region where results are similar rather than the single best value.

Does a high efficiency ratio mean the trend will continue?

Not by itself. A high ratio says the last N bars moved cleanly in one direction; it is a description of the past path. Whether clean moves tend to continue on your market and time frame is exactly what a backtest with and without the ratio filter is for. Moskowitz, Ooi and Pedersen (2012) document persistence in futures returns over months, but that is a separate finding from any single threshold on the ratio.

How is the efficiency ratio different from ADX?

Both try to measure trend strength, but they compute it differently. The efficiency ratio divides net change by path length and is bounded between 0 and 1 with no smoothing of its own. ADX is built from smoothed directional movement and reacts more slowly. The ratio tends to respond faster to a change from trend to chop; ADX tends to produce a smoother line. Which one filters a given rule better is a question for a side-by-side test.

References

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
  • Moskowitz, T. J., Ooi, Y. H., & Pedersen, L. H. (2012). Time Series Momentum. Journal of Financial Economics, 104(2), 228–250.