Calculate the Average True Range (ATR) of a given price series.

The Average True Range (ATR) is a technical indicator that measures the volatility of an asset’s price movements over a specified number of periods. It provides insights into the potential price range of an asset, which can help traders and investors make more informed decisions.

The formula is as follows:

\[\text{TR} = \max(\text{high} - \text{low},\; \operatorname{abs}(\text{high} - \text{previous\_close}),\; \operatorname{abs}(\text{low} - \text{previous\_close}))\] \[\text{ATR} = \text{Wilder's Smoothed Moving Average of TR over} \text{window} \text{periods}\]

Also known as: ATR, volatility indicator. See volatility_model.get_average_true_range for the full formula; Wilder’s smoothing constant (1/window) is slower than a standard EMA’s (2/(window+1)) of the same window.

Average True Range (ATR) in Python

get_average_true_range is part of the Technicals module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_average_true_range as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(tickers=["AAPL", "MSFT"])

toolkit.technicals.get_average_true_range()

Which returns:

Date AAPL MSFT Benchmark
2026-06-18 8.1636 12.5379 11.0343
2026-06-22 8.065 12.4293 11.1386
2026-06-23 7.945 11.7 11.7414
2026-06-24 7.85 11.4886 11.9636
2026-06-25 8.9529 11.9543 12.1729
2026-06-26 9.2186 12.5764 12.0579
2026-06-29 8.6679 13.4336 12.3993
2026-06-30 8.345 12.9479 11.1721
2026-07-01 8.3464 13.5143 10.7443
2026-07-02 8.9414 13.1671 10.4364

Parameters

get_average_true_range accepts the following parameters:

  • period (str): Period for which to calculate the ATR.
  • window (int): Number of periods for ATR calculation. The number of periods (time intervals) over which to calculate the Average True Range.
  • rounding (int | None): Number of decimal places to round the resulting ATR values to. If None, no rounding is performed.
  • growth (bool): Flag indicating whether to return the ATR growth rate. If True, the ATR growth rate is calculated.
  • lag (int | list[int]): Number of periods to lag the ATR values by. If an integer is provided, all ATR values are lagged by the same number of periods. If a list of integers is provided, each ATR value is lagged by the corresponding number of periods.
  • standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.
Share