Average daily range (ADR%): the volatility floor momentum screens use
ADR% is how far a stock travels between its high and its low on an average day, expressed as a percentage of its price. Momentum screens use it as a floor, because a name that moves half a percent a session can be in a perfectly good uptrend and still be the wrong vehicle for a swing trade: the move you are trading for is smaller than the stop you would have to give it. QM Screener computes ADR% over the last 20 sessions for every stock it screens, gates the Momentum Continuation screen on it, brackets it on both sides for Swing Momentum, and prints it on every row of every screen.
What ADR% measures
ADR% is a measurement of movement, not of direction. A stock in free fall and a stock in a strong advance can post the same number, so ADR% on its own would return the market's messiest charts. It earns its place beside two other things: a ranking, which decides whether a stock is strong, and a trend rule, which decides whether the strength is current. ADR% only answers the third question — whether the stock moves enough to be worth the trouble.
It has a second job here. Several measurements on a row are expressed in units of the stock's own ADR rather than in absolute percent: how tightly its moving averages are bunched, how far price sits from that bundle, and how much ground its last ten sessions covered. Measured absolutely, a leader with a wide daily range looks loose by construction and can never be tight; measured in its own ADR, it is judged by its own standard.
How ADR% is computed here
For each of the last 20 sessions, divide the session's high by its low. Take the mean of those 20 ratios, subtract one, and multiply by one hundred. That is the whole formula, and it is computed once per stock per run from the same end-of-day bars every other number on the row comes from.
Five details decide what the figure can and cannot say.
- It is an intraday measurement. Each ratio uses one session's own high and low, so the gap between yesterday's close and today's open is not part of it. A stock that gaps four percent and then goes nowhere all day contributes a small ratio, not a large one.
- It is a ratio, not a dollar range. High over low is already scale-free, so a low-priced stock and a high-priced one are directly comparable and there is no second division by price.
- The window is fixed at 20 sessions. It is not configurable, on the command line or in the dashboard. Every screen, every row and every export uses the same lookback, which is what makes two rows comparable.
- Sessions that cannot produce a ratio are dropped before the mean is taken — a missing or zero low, for example. If fewer than 20 usable sessions remain, the stock is left out of the run rather than scored on a shorter window. The same is true of history in general: a ticker with fewer than 65 daily bars is not scored at all, which is why very recent listings are missing from every list.
- The result is rounded to two decimals and carried on the row as
adr_pct_20d. That is the field name in the result document, in the CSV export and in the API, so a number you read on screen and a number your own code reads are the same number.
The floor, screen by screen
Six screens run over the same universe, and ADR% is computed the same way for every one of them. Two of them test it. (The screens that need a 200-day average, a 52-week range or a beta download a full year of bars; the rest take nine months. The ADR window is the last 20 sessions either way.)
| Screen | ADR% rule | How the comparison is made |
|---|---|---|
| Momentum Continuation | above 2.50% | strictly greater-than |
| Trend Template | none | not tested |
| VCP | none | not tested |
| Gappers | none | not tested |
| Defensive Strength | none | not tested |
| Swing Momentum | 3% to 8% | inclusive at both ends |
Two things about that table are worth reading carefully. The Momentum Continuation rule is strictly greater-than, as every shared filter on that screen is: a stock whose ADR% lands exactly on 2.50 fails rather than passes, and the run's own self-audit re-checks the published list against the same comparison. The Swing Momentum rule is a band, and both ends are inclusive — it is the one place on the site where a stock can be rejected for moving too much.
The four screens with no ADR rule are not oversights. Trend Template is an eight-point trend-confirmation checklist and volatility is not one of the eight; the points it does test are written out in the trend template checklist. VCP is looking for a range that is contracting, so a floor under the range would argue with the thesis. Gappers gates on the size of the gap and on volume against the 50-day average instead. And Defensive Strength is deliberately hunting the lower-volatility end of the market, so a volatility floor would fight it.
The Momentum Continuation floor is the one a run can move: --min-adr-pct sets it, and the list that run publishes is cut at whatever it was given. Every other ADR rule on the site is a module constant with no flag behind it.
Why there is a floor — and why the same number has a ceiling
The floor is swing-trade arithmetic. A position is held for days or weeks and closed at a level decided in advance; the distance to that level has to be large relative to the spread and the slippage you pay, and it has to be reachable in the time you are giving it. A stock averaging one percent of range a day will not travel a swing trade's distance in a swing trade's time, however good the chart looks. That is the whole argument for the floor, and it is why a volatility test sits in the rules beside the trend rule and the ranking rather than being left to judgement.
The ceiling is the other side of the same coin, and it lives somewhere different: not in the filters, but in the setup score. The consolidation score reads two things — how wide the 10, 20 and 50-day exponential moving average bundle is, and how far price sits from that bundle — and measures both in ADRs. A bundle of 0.4 ADRs or less scores full marks and one of 3 ADRs or more scores nothing; price within 0.1 ADR of the band scores full marks and 2 ADRs or more scores nothing. The setup tags are built on that score, and the PARABOLIC tag asks separately for a ten-day range of 3 ADRs or more on top of a large extension above the 50-day average.
Dividing by a stock's own ADR is what makes the score portable — but taken literally it flatters the wildest names on the market, because a stock that swings tens of percent a day makes almost any bundle look narrow next to it. So the ADR used as the yardstick stops growing at 12%. Past that point extra volatility buys no extra slack, and a name that moves in lottery tickets is no longer scored as though it were resting. The cap applies to the divisor only: the row still reports the stock's real ADR%, and no screen rejects a name for being volatile except the Swing Momentum band.
The tags themselves — BASE, TIGHT, TRENDING, EXTENDED, PARABOLIC — are covered in how to screen for momentum stocks and, name by name, in the setup tags.
What the live screen shows
ADR% is a column on every screen's passing table, not only on the two that gate on it, so a row always carries the value that admitted it — or the value that was never tested. On a narrow screen the table collapses to two numbers per row chosen by the screen itself, and for both Momentum Continuation and Swing Momentum ADR% is one of the two.
It also turns up inside the consolidation cell. The tooltip there spells out the EMA bundle width and the distance from the band twice — once in raw percent and once in ADRs — using the capped figure, so the explanation and the score cannot argue with each other on a very volatile name.
Every row opens a candlestick chart in place, drawn from the same end-of-day bars the screen used, which is where an ADR number becomes a picture: the figure in the column is the height of a typical candle. And the value travels with the list — adr_pct_20d is a column in the CSV export and a field in the JSON result document and over the MCP server.
A free account sees it too. ADR% is one of the fields carried on a free row, so the top 5 names of each screen arrive with their volatility figure attached rather than as bare tickers.
How to use this in QM Screener
- Open the dashboard at https://qmscreener.com/ and choose a screen in the picker at the top of the page. There is no per-screen link to bookmark; the picker is how a screen is chosen. The one deep link the dashboard takes is
?view=chart&t=TICKER, which opens straight onto a chart. - Start with the band, not the floor. Pick Swing Momentum and use its ADR% control: the lower box offers 2, 3, 4, 5 and the upper box 6, 8, 10, 15, and it opens at 3 to 8. That is the fastest way to see what a volatility bracket does to a list, because you can widen and narrow it and watch the count move.
- Then compare. Switch to Momentum Continuation, which applies only the floor, and sort by the ADR column. The top of that sort is where the biggest daily ranges on the list live, and it is where the 12% ceiling on the consolidation score starts to bite.
- Chart before you conclude. A high ADR from a single violent session and a high ADR from twenty steady ones look identical in a column and nothing alike on a chart. Every row opens one in place.
- Take the list with you. Export as a TradingView watchlist, a CSV, a PNG of the table or share text, or read the same result document over the HTTP API and the MCP server.
A free account — a verified email address, no card — sees the top 5 names of each screen every day and can chart them. The full list, the per-row values and the exports are $10 a month or $84 a year, each starting with a 7-day free trial. Start there, or sign in if you already have an account.
QM Screener is an independent product, assembled from publicly documented criteria, and is not affiliated with, endorsed by, or sponsored by any trader, author, publisher or firm.
Frequently asked questions
What does ADR% actually measure?
The size of an average session's swing, as a percentage of price. It is the mean of each of the last 20 sessions' high divided by its low, minus one, times one hundred. It says nothing about direction: a stock falling hard and a stock advancing hard can post the same figure, which is why it is only ever used next to a trend rule and a ranking, never on its own.
Is this the same as ATR?
No, and nothing here computes an ATR. ADR% as used on this site is built from each session's own high and low, so the gap between one day's close and the next day's open never enters it, and it is a ratio rather than a number of dollars, so a low-priced stock and a high-priced one are directly comparable without dividing by price a second time.
Which screens apply an ADR floor?
Two of the 6. Momentum Continuation requires ADR% strictly above 2.50%. Swing Momentum brackets it on both sides and asks for 3% to 8% inclusive. The other four test no ADR rule at all — the figure is still computed and still printed on every row, it is just not a gate on those lists.
Can I change the floor?
The Momentum Continuation floor is the one a run can move: --min-adr-pct on the command line sets it, and the value a run used is what its passing list was cut on. The band on Swing Momentum is a module constant with no flag. Neither is editable from the dashboard: a control there cuts the list the run already published rather than re-running the screen. What the dashboard does give you is the swing screen's own ADR% control and an ADR column you can sort every screen's list by.
Does a higher ADR make a stock rank better?
No. The ranking is relative strength, not volatility, and ADR% is a gate rather than a score. In the one place ADR is used as a measuring stick — the consolidation score — it is capped at 12%, so past that point extra volatility stops buying extra slack. The row still shows the stock's true figure.
Read next
- How to screen for momentum stocks — the five measurements every screen here is built from, ADR% among them, plus the setup tags and an end-of-day routine.
- The trend template checklist — the eight-point screen that tests no ADR rule, and what it tests instead.
- The VCP screen — the other screen that measures range, from the opposite direction.
- All guides — everything published so far.
- Compare with Finviz — a filter builder can express an ADR floor; the difference is who maintains it and whether two runs a month apart used the same one.
Educational content, not financial advice. QM Screener lists stocks that passed published filters; it does not recommend trades, size positions or know anything about your circumstances. US equities, end-of-day, refreshed once per trading day after the close.