🪙
 Get student discount & enjoy best sellers ~$7/week

Average Daily Range (ADR)

The Average Daily Range (ADR) is a cornerstone volatility indicator for traders seeking to understand and harness the daily price movement of financial instruments. ADR quantifies the average difference between the high and low prices over a set period, offering a clear, actionable measure of volatility. This comprehensive guide will demystify ADR, providing you with the technical, mathematical, and practical expertise to use it with confidence in your trading strategies.

1. Hook & Introduction

Imagine you are a trader watching a stock that sometimes surges and other times barely moves. You want to know: how much does this stock typically move in a day? Enter the Average Daily Range (ADR). ADR is a simple yet powerful tool that helps traders set realistic expectations, manage risk, and spot opportunities. In this guide, you will learn what ADR is, how to calculate it, and how to use it to improve your trading results—whether you are a day trader, swing trader, or investor.

2. What is Average Daily Range (ADR)?

The Average Daily Range (ADR) is a technical indicator that measures the average difference between the daily high and low prices of a security over a specified period, typically 14 or 20 days. Unlike the Average True Range (ATR), which includes gaps, ADR focuses solely on the high-low range, making it a pure measure of intraday volatility. ADR is widely used by traders to set profit targets, stop-losses, and to filter trades based on volatility conditions.

  • Purpose: Quantifies typical daily price movement.
  • Common Periods: 14, 20, or 30 days.
  • Assets: Stocks, forex, commodities, crypto.

ADR is especially valuable for traders who want to avoid entering trades during periods of low volatility or want to capitalize on high-volatility environments.

3. Mathematical Formula & Calculation

Calculating ADR is straightforward. For each day, subtract the low from the high to get the daily range. Sum these ranges over your chosen period (N days), then divide by N.

ADR = (Sum of (High - Low) over N days) / N

Worked Example (5 days):

  • Day 1: High = 110, Low = 100 → Range = 10
  • Day 2: High = 112, Low = 102 → Range = 10
  • Day 3: High = 115, Low = 105 → Range = 10
  • Day 4: High = 120, Low = 110 → Range = 10
  • Day 5: High = 118, Low = 108 → Range = 10

ADR = (10 + 10 + 10 + 10 + 10) / 5 = 10

Each term: High = highest price of the day, Low = lowest price of the day, N = number of days.

4. How Does ADR Work in Practice?

ADR is a volatility filter. It helps traders understand the typical price movement and avoid surprises. For example, if a stock’s ADR is 2%, and today it has already moved 2.5%, a trader might avoid entering a new position, expecting limited further movement. Conversely, if the price has only moved 0.5% by midday, there may be more room for action.

  • Setting Targets: Use ADR to set realistic profit targets and stop-losses.
  • Trade Filtering: Avoid trades when price has already exceeded ADR.
  • Volatility Analysis: Spot periods of unusual activity or quietness.

ADR is best used in conjunction with trend and momentum indicators for robust decision-making.

5. Why is ADR Important for Traders?

ADR is crucial because it provides a statistical edge. By knowing the average daily movement, traders can:

  • Set Realistic Expectations: Avoid overestimating potential profits.
  • Manage Risk: Place stop-losses outside the typical daily range to avoid whipsaws.
  • Identify Breakouts: A move beyond ADR may signal a breakout or news-driven event.
  • Filter Trades: Only trade when volatility is within a preferred range.

For example, a forex trader might only enter trades when ADR is above a certain threshold, ensuring enough movement for profit.

6. ADR vs. ATR and Other Volatility Indicators

ADR is often compared to the Average True Range (ATR) and Bollinger Bands. Here’s how they differ:

Indicator Measures Best Use Lag
ADR Average high-low range Setting targets, volatility filter Low
ATR True range (includes gaps) Stop-loss, volatility Medium
Bollinger Bands Standard deviation Breakouts, mean reversion Medium

ADR is simpler and more focused on intraday movement, while ATR accounts for overnight gaps. Bollinger Bands use standard deviation to create dynamic support and resistance levels. Each has its place, but ADR is often the first step for volatility analysis.

7. Real-World Trading Scenarios Using ADR

Let’s look at how traders use ADR in practice:

  • Day Trading: A trader sees that a stock’s ADR is $1.50. By 2 PM, the stock has already moved $1.40. The trader decides not to chase further moves, avoiding late entries.
  • Swing Trading: A swing trader uses ADR to set stop-losses just outside the average range, reducing the chance of being stopped out by normal volatility.
  • Forex: In EUR/USD, if the ADR is 80 pips, and the pair has moved 75 pips, a trader may avoid new trades, expecting limited further movement.

ADR helps traders stay disciplined and avoid emotional decisions.

8. Coding ADR: Multi-Language Implementation

Below are real-world code examples for calculating ADR in various programming languages. Use these snippets to integrate ADR into your trading systems or analysis tools.

// C++: Calculate ADR
#include <vector>
double calculateADR(const std::vector<double>& highs, const std::vector<double>& lows, int period) {
    double sum = 0;
    int n = highs.size();
    for (int i = n - period; i < n; ++i) {
        sum += highs[i] - lows[i];
    }
    return sum / period;
}
# Python: Calculate ADR
def calculate_adr(highs, lows, period):
    ranges = [h - l for h, l in zip(highs[-period:], lows[-period:])]
    return sum(ranges) / period if ranges else 0
# Example usage:
highs = [110, 112, 115, 120, 118]
lows = [100, 102, 105, 110, 108]
adr = calculate_adr(highs, lows, 5)
print(f"ADR: {adr}")
// Node.js: Calculate ADR
function calculateADR(highs, lows, period) {
  const ranges = highs.slice(-period).map((h, i) => h - lows.slice(-period)[i]);
  return ranges.reduce((a, b) => a + b, 0) / period;
}
// Example usage:
const highs = [110, 112, 115, 120, 118];
const lows = [100, 102, 105, 110, 108];
console.log('ADR:', calculateADR(highs, lows, 5));
// Pine Script: ADR Indicator
//@version=5
indicator("Average Daily Range (ADR)", overlay=true)
length = input.int(14, minval=1, title="Length")
adr = ta.sma(high - low, length)
plot(adr, color=color.blue, title="ADR")
// MetaTrader 5: ADR Calculation
#property indicator_chart_window
input int period = 14;
double adr[];
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[])
{
   ArraySetAsSeries(high, true);
   ArraySetAsSeries(low, true);
   ArrayResize(adr, rates_total);
   for(int i=period; i<rates_total; i++)
   {
      double sum = 0;
      for(int j=0; j<period; j++)
         sum += high[i-j] - low[i-j];
      adr[i] = sum / period;
   }
   return(rates_total);
}

These code snippets allow you to calculate ADR in your preferred environment, whether you are building a custom indicator or backtesting strategies.

9. Interpretation & Trading Signals

Interpreting ADR is about context. Here’s how traders use ADR for signals:

  • Rising ADR: Indicates increasing volatility. May signal a breakout or trend acceleration.
  • Falling ADR: Suggests quiet markets. Often precedes a volatility expansion.
  • Price Exceeds ADR: May indicate an overextended move—potential for reversal or exhaustion.

Bullish Signal: If price breaks above ADR after a period of low volatility, it may signal the start of a new trend.
Bearish Signal: If price falls below ADR after a period of high volatility, it may indicate trend exhaustion.

Always combine ADR with trend and momentum indicators for confirmation.

10. Combining ADR With Other Indicators

ADR is most effective when used with other technical tools:

  • RSI (Relative Strength Index): Filter trades by momentum. For example, only take trades when ADR is above average and RSI signals overbought/oversold.
  • ATR (Average True Range): Compare ADR to ATR for deeper volatility analysis. If ATR is much higher than ADR, gaps or news events may be influencing price.
  • Moving Averages: Confirm trend direction. Use ADR to filter trades in the direction of the trend.

Example: A trader only enters long trades when ADR is above its 20-day average and the 50-day moving average is rising.

11. Backtesting & Performance

Backtesting ADR-based strategies is essential for understanding their effectiveness. Here’s how you can set up a simple backtest in Python:

// C++: Backtest ADR-based strategy (pseudo-code)
// Loop through price data, enter trade if price moves above ADR, exit at close or stop-loss.
# Python: Simple ADR Backtest
import pandas as pd

def backtest_adr(df, adr_period=14):
    df['ADR'] = df['High'].rolling(adr_period).apply(lambda x: x.max() - x.min())
    df['Signal'] = (df['Close'] - df['Open']).abs() > df['ADR']
    wins = df[df['Signal']].shape[0]
    total = df.shape[0]
    win_rate = wins / total if total else 0
    return win_rate
# df = pd.DataFrame({'Open':..., 'High':..., 'Low':..., 'Close':...})
# print('Win Rate:', backtest_adr(df))
// Node.js: Backtest ADR-based strategy (pseudo-code)
// Loop through price data, check if daily move exceeds ADR, count wins/losses.
// Pine Script: ADR Backtest Example
//@version=5
indicator("ADR Backtest", overlay=true)
length = input.int(14, minval=1)
adr = ta.sma(high - low, length)
long_signal = close > open and (high - low) > adr
plotshape(long_signal, style=shape.triangleup, location=location.belowbar, color=color.green)
// MetaTrader 5: ADR Backtest (pseudo-code)
// Loop through bars, enter trade if range > ADR, track win/loss.

Performance Insights:

  • ADR strategies tend to perform best in trending markets.
  • In sideways markets, false signals can occur—combine with trend filters.
  • Typical win rates vary, but ADR helps avoid low-volatility traps.

12. Advanced Variations

Experienced traders and institutions often tweak ADR for specific needs:

  • Median ADR: Use the median instead of the mean to reduce the impact of outliers.
  • Weekly/Monthly ADR: Apply ADR to weekly or monthly bars for swing or position trading.
  • Volatility Bands: Combine ADR with volatility bands to create dynamic support/resistance zones.
  • Institutional Use: Some funds use ADR to size positions or manage portfolio risk, especially in options trading.
  • Scalping: Use a shorter ADR period (5-7 days) for high-frequency strategies.
  • Swing Trading: Use longer periods (20-30 days) for broader context.

Experiment with different periods and calculation methods to suit your trading style.

13. Common Pitfalls & Myths

While ADR is powerful, it is not foolproof. Avoid these common mistakes:

  • Assuming High ADR Means Opportunity: Sometimes high ADR signals risk, not reward.
  • Ignoring Market Context: News events or earnings can cause abnormal moves—ADR may not reflect true risk.
  • Over-Reliance: Using ADR alone without confirmation from trend or momentum indicators can lead to false signals.
  • Signal Lag: ADR is a lagging indicator; it reflects past volatility, not future movement.

Always use ADR as part of a broader trading plan.

14. Conclusion & Summary

The Average Daily Range (ADR) is a simple yet effective tool for measuring volatility and setting realistic trading expectations. It helps traders manage risk, set targets, and filter trades based on volatility. While ADR is not a standalone solution, it is a valuable addition to any trader’s toolkit. Use it with other indicators like ATR, RSI, and moving averages for best results. Remember, context is key—always consider the broader market environment before making decisions. For more on volatility tools, explore guides on ATR and Bollinger Bands.

Frequently Asked Questions about Average Daily Range (ADR)

What is the formula to calculate Average Daily Range?

The formula is: A = (H + L) / 2, B = (H - L) / 2, and ADR = (A + B) / 2.

How often should I use Average Daily Range?

You can use the ADR indicator on a daily, weekly, or monthly basis, depending on your trading strategy and market conditions.

What does a high Average Daily Range indicate?

A high ADR indicates increased volatility in the stock price, making it more suitable for aggressive traders.

Can I use Average Daily Range with other technical indicators?

Yes, you can use the ADR indicator in conjunction with other technical indicators to get a more accurate analysis of the market trends and potential trading opportunities.

Is Average Daily Range suitable for all types of traders?

No, the ADR indicator is not suitable for conservative traders or those who prefer to avoid high-risk trades.



How to post a request?

Posting a request is easy. Get Matched with experts within 5 minutes

  • 1:1 Live Session: $60/hour
  • MVP Development / Code Reviews: $200 budget
  • Bot Development: $400 per bot
  • Portfolio Optimization: $300 per portfolio
  • Custom Trading Strategy: $99 per strategy
  • Custom AI Agents: Starting at $100 per agent
Professional Services: Trading Debugging $60/hr, MVP Development $200, AI Trading Bot $400, Portfolio Optimization $300, Trading Strategy $99, Custom AI Agent $100. Contact for expert help.
⭐⭐⭐ 500+ Clients Helped | 💯 100% Satisfaction Rate


Was this content helpful?

Help us improve this article