PositionSizeTool
Forex · Stocks · Crypto — size every trade from your risk, not from hope

Average True Range Calculator

Last updated 28 September 2026

Every stop is a bet about distance: you are saying price will not reach the line before the trade works. Average true range is the measurement that tells you whether that bet is reasonable. Paste a run of highs, lows and closes below and the page works out each bar's true range, smooths them into one reading, converts that reading into pips and into money, and then divides your risk budget by it to get a size you can actually place.

What this page does not do: it does not choose where your stop goes — picking the level is the stop loss calculator's job, and this page supplies the input that decision needs. It does not convert lots into units, which is the lot size calculator, and it does not add several open trades together, which is the forex risk calculator. One more thing it does not have: price history. The series loaded in the box is an illustrative series for working the arithmetic by hand, labelled as such everywhere it appears. Nothing here is market data and nothing here is a forecast.

At a glance

The series

Illustrative series — not market data. Replace it with your own, oldest bar first, one line per bar, high then low then close. Commas, spaces, tabs or semicolons all work.

How it is read
What the run says
ATR, 14 bars
20.47
of price per bar; latest true range 60.00
True range of the latest bar—
Simple mean, same window—
ATR in pips—
Stop at 1.5 x ATR—
That stop in pips—
Loss per unit at the stop—
Size the budget pays for—
Same size in lots—
Worst case at that size—
Instrument and bars
True range bar by bar
Every true range the run produced, with the three distances it was chosen from.
BarHighLowPrev closeH − LGapTrue range
152480.002420.002420.0060.000.0060.00

The first line of the series has no previous close in front of it, so it supplies the starting close and produces no true range of its own.

Three distances, and two of them sit outside the bar

High minus low is the obvious way to measure how far something moved in a session, and it is the one every chart package hands you without being asked. It is also incomplete, because it only counts movement that happened while that bar was open. Price also travels between bars: the market closes on Friday at one level and opens Sunday evening somewhere else, and a position held over the weekend was exposed to every tick of that distance even though no candle body covers it.

True range fixes this by taking the largest of three distances — today's high minus today's low, today's high minus the previous close, and today's low minus the previous close. The last two are taken as absolute values, because the gap can be in either direction and the size of the hurt is the same either way. On ordinary bars the first one wins and true range is simply the height of the bar. When a different one wins, the bar is not what moved the money.

2430.00 2426.00 2420.00 2412.00 2406.00 2400.00 previous close 2426.00 close 2412.00 H − L 14.00 |high − prev close| 6.00 |low − prev close| 20.00 the true range The bar itself is quiet. The distance that mattered was travelled before the bar opened.

Those figures are bar thirteen of the illustrative series below, and they make the point cleanly. The bar's own height is 14.00, which would make it one of the tamer bars in the run. It opened below the previous close of 2426.00 and the low sat 20.00 underneath it, so its true range is 20.00 — forty-three percent more movement than the bar shows, on a bar that looks uneventful. Size a stop off the height of that candle and you size it off the wrong number.

The recursive step that keeps the reading alive

A single true range is one observation. What traders actually work with is a running average of them, and the standard construction is Wilder's: a plain average to get started, then a recursion that never looks at the whole window again.

true range = max( high - low, |high - previous close|, |low - previous close| ) first reading = (TR_1 + TR_2 + ... + TR_n) / n today's reading = ( yesterday's reading x (n - 1) + today's TR ) / n ATR in pips = ATR / pip size stop distance = ATR x the multiple you chose loss per unit = stop distance (USD account, USD-quoted symbol) units = risk budget / loss per unit, rounded DOWN to the unit step lots = units / contract size worst case = units x stop distance

The fifteen true ranges of the illustrative series, with the three candidate distances behind each one. The Gap column is whichever of the two close-based distances was larger:

Illustrative series — not market data. Sixteen lines of highs, lows and closes used only to demonstrate the arithmetic.
BarHighLowClosePrev closeH − LGapTrue range
12412.002396.002406.002400.0016.0012.0016.00
22418.002402.002401.002406.0016.0012.0016.00
32410.002392.002395.002401.0018.009.0018.00
42400.002380.002390.002395.0020.0015.0020.00
52402.002386.002399.002390.0016.0012.0016.00
62416.002398.002412.002399.0018.0017.0018.00
72428.002410.002418.002412.0018.0016.0018.00
82424.002400.002404.002418.0024.0018.0024.00
92412.002396.002408.002404.0016.008.0016.00
102420.002406.002416.002408.0014.0012.0014.00
112430.002414.002422.002416.0016.0014.0016.00
122436.002420.002426.002422.0016.0014.0016.00
132420.002406.002412.002426.0014.0020.0020.00
142424.002408.002420.002412.0016.0012.0016.00
152480.002420.002472.002420.0060.000.0060.00

Three steps take that column to the reading, and every one can be checked with a calculator:

  1. The first fourteen true ranges add to 244.00, so the seed reading is 244.00 / 14 = 17.4286.
  2. Bar fifteen's true range is 60.00. The recursion is (17.4286 x 13 + 60.00) / 14 = 286.5714 / 14 = 20.4694.
  3. The plain average of the last fourteen true ranges is 20.5714 — ten cents above the Wilder figure, because one bar is being weighted differently.

Step two is the whole idea. The reading is not recomputed from scratch each bar; it keeps thirteen fourteenths of itself and admits one fourteenth of the new observation. That is why the sixty-dollar bar moved the figure by 3.04 and not by sixty, and it is why yesterday's calm does not come back the moment today is calm again.

How long an outlier stays in the number

A simple average forgets on a schedule: the bar that falls out of the window is gone completely. The recursion forgets by a fraction instead, multiplying whatever is left of an old surprise by thirteen fourteenths each bar. The illustrative numbers above make the decay easy to see — assume the sixty-dollar bar is followed by ordinary bars whose true range is 17.4286 each, and watch what the reading does.

What happens to an illustrative 60.00 true range after the bar itself has passed, with every following bar back at 17.4286.
Bars since the spikeReadingExcess still left overShare of the original surprise
020.46943.0408100%
120.25222.823693%
319.86322.434680%
519.52792.099369%
1018.87781.449248%
1418.50611.077535%
2018.11930.690723%
2417.94210.513517%

The practical version of that table is short: roughly nine bars for half of a surprise to wear off, and a sixth of it still sitting in the reading twenty-four bars later. Two things follow. A reading taken the day after a news bar belongs to the news bar, and sizing off it will give you a smaller position than the market's ordinary behaviour calls for. And the reverse is the trap that costs money — volatility readings fall quietly after a violent week, size grows while nothing about the instrument has changed, and the next surprise arrives against a position that was only ever safe in a quiet reading.

One reading, four contracts

A volatility reading arrives in price: twenty cents here, sixty dollars there, thirty-five cents somewhere else. Before it can decide a size it has to become two other things — a count of pips, which is what your stop is quoted in, and an amount of money, which is what your account pays. Both conversions are done by the instrument's own specification, and those specifications are the part nobody publishes next to their calculator. Ours are below, taken from the site's own contract file.

Every metal in the PositionSizeTool contract file: quote currency, pip size, contract size and unit step.
SymbolClassQuotePip sizeContract sizeUnit step
XAU/USDmetalUSD0.011001
XAG/USDmetalUSD0.00150001
XPT/USDmetalUSD0.011001
XPD/USDmetalUSD0.011001

Pip size divides the price reading into pips; contract size multiplies the units into lots. Take one illustrative reading of 0.35 of price and run it through all four:

One illustrative reading of 0.35 of price, converted with the pip size and contract size above. Pips are the reading divided by the pip size; money per lot is the reading multiplied by the contract size, which holds because all four are quoted in USD.
SymbolPip sizePips in the moveContract sizeUSD moved, per lot
XAU/USD0.013510035.00
XAG/USD0.00135050001750.00
XPT/USD0.013510035.00
XPD/USD0.013510035.00

Same reading, same direction, same everything — and silver counts ten times the pips and costs fifty times the money per lot. Neither figure is a property of the reading. They are properties of the row the instrument sits on, which is why a volatility number cannot be carried from one symbol to another by eye.

The pip size is not a rounding convention someone chose for neatness; it follows how the instrument is quoted. Gold and the two platinum-group metals here are quoted to two decimals, so a pip is 0.01 of a dollar of price, and silver is quoted to three, so a pip is a tenth of that. The consequence travels in both directions: a stop that reads as "fifty pips" on gold is five dollars of price, and the same fifty pips on silver is five cents.

Because the contract size is what converts units into lots, the money also scales with the lot count in the ordinary linear way — and the four contracts do not scale alike:

Money moved by the same illustrative 0.35 reading at three lot sizes, using the contract sizes above. USD per lot is the reading times the contract size, multiplied by the lot count.
SymbolContract size0.10 lot, USD1.00 lot, USD5.00 lots, USD
XAU/USD1003.5035.00175.00
XAG/USD5000175.001750.008750.00
XPT/USD1003.5035.00175.00
XPD/USD1003.5035.00175.00

Read that table across the diagonal and the fifty-fold gap turns into something a trader can feel: a tenth of a lot of silver moves 175.00, which is what five whole lots of gold move. Someone who carries a habit of "one lot" from gold into silver is not taking a similar position, they are taking one fifty times the size, and the position size calculator will say so only if the contract field was changed with the symbol.

Every row above also carries a unit step of 1, which means volumes on these four are quoted in single ounces and nothing finer. That single column decides how much of your budget goes unused after rounding: giving up part of a unit costs you one hundredth of a lot on gold and one five-thousandth of a lot on silver, so the same rounding looks trivial in one order ticket and invisible in the other while costing exactly the same in money.

Three of the four rows are identical — gold, platinum and palladium share a pip size of 0.01, a contract size of 100 and a step of 1, so every conversion on this page treats them the same way. What differs between them in practice is the reading that goes in, not the arithmetic that comes out.

One budget at four stop widths

The multiple is the only free variable left once the reading is measured, so it is worth seeing what it actually controls. Take the illustrative 0.35 reading and a 500.00 risk budget, and set the stop at one, one and a half, two and three times it:

Same 500.00 budget, same illustrative 0.35 reading, four stop widths. Units are the budget divided by the loss on one unit, rounded down to the unit step of 1; lot counts use the contract sizes above.
MultipleStop, in priceStop, XAU pipsStop, XAG pipsUnitsXAU/USD lotsXAG/USD lotsWorst case, USD
1.00.35035.00350.00142814.280.2856499.80
1.50.52552.50525.009529.520.1904499.80
2.00.70070.00700.007147.140.1428499.80
3.01.050105.001050.004764.760.0952499.80

Every row lands on the same worst case to the cent, and that is the point. Widening the stop does not change what you lose when you are wrong; it changes how much you are allowed to hold. The multiple is a size control wearing the costume of a risk control, and treating it as the second is how a stop gets widened until a position fits.

The rounding is visible in the last column and deliberately uneven: every row gives up part of a unit, which leaves 0.20 of the 500.00 unused. That leftover is bounded by one step times the loss on one unit — 0.35 at the narrowest stop here and 1.05 at the widest — so a wider stop does not lose you proportionally more to rounding, it only ever costs you the one unit you refused to buy.

The two lot columns are the same unit count divided by two contract sizes, and they are the number the platform actually wants. Fourteen and a quarter lots of gold becomes a quarter of a lot and a bit of silver for the identical trade, which is also why the rounding at the unit step bites differently on the two: on gold a step of one unit is a hundredth of a lot, and on silver it is a five-thousandth.

One last check on the conversion, run on the tool at the top of this page rather than by hand. With the illustrative series loaded, gold's specifications in place and the budget set to 500.00, the reading is 20.47 and the size comes back as 16 units, or 0.16 lot. Change nothing but the two specification fields — pip size to 0.001 and contract size to 5,000 — and the same reading, the same budget and the same multiple return 16 units and 0.0032 lot. No volatility figure moved. Only the contract did.

Your platform's volume field wants lots. The risk lives on units. The contract size is the only thing standing between them, and it is exactly the column most traders never look up.

Where the number enters the order

The reading's job ends at producing a distance. From there it is the same division every page on this site is built on: the money you are willing to lose, divided by the distance to the level that makes the trade wrong. Average true range supplies the second half of that sentence in a form that adapts to the instrument, instead of a number picked because it looked tidy.

Three places people get it wrong. The first is timeframe: a fourteen-bar reading on a daily chart and a fourteen-bar reading on an hourly chart are answers to different questions, and only one of them describes the stop you are about to place. Read it off the chart you are trading, not the one that happens to be open. The second is the multiple. One and a half is common, two and three are used for wider stops, and none of them is produced by the arithmetic — it is a choice you make before you see how much size it gives you, which is the only order in which it is a choice rather than a rationalisation. The third is currency: true range is measured in the instrument's quote currency and your losses are paid in your account currency. Every symbol in the table above is quoted in USD, which is why the conversion disappeared there; put a cross pair in front of this page and the quote-to-account rate comes back.

What this page gives you to carry across is a distance with a reason behind it. The stop loss calculator turns a size and a budget into the distance you are allowed, the forex position size calculator turns a distance and a budget into the size, and either one is better for having been fed a measured number instead of a round one.

Checklist for reading a volatility figure

None of this says where the market is going. Average true range describes how much ground it covers, not which direction it covers it in, and the only claim it makes about tomorrow is that the arithmetic will look the same.

Questions traders ask

Is ATR the same thing as volatility?

It is a measure of distance travelled, which is one useful piece of what the word volatility is used to mean. It says nothing about direction, and unlike a standard deviation it does not describe how the observations are spread around an average — a quiet week and a week of alternating fifty-dollar bars can produce the same reading here. What it does measure is the thing a stop has to survive.

Why is my platform's ATR different from this page's?

Three usual reasons, in order of how much they matter: different smoothing, different session boundaries, and a different starting point. A simple average of the last fourteen true ranges gives 20.5714 on the illustrative series here, against the 20.4694 the recursion gives — small on this data, and larger right after an outlier, which is exactly when it matters. Many platforms use an exponential average instead of Wilder's, and some start their daily bars at a different hour.

How do I turn ATR into a stop loss?

Pick a multiple and multiply: 1.5 x 20.4694 is 30.70 of price on this page's example, which is 3,070.41 pips at gold's pip size. That gives you the distance, and then size follows from your budget divided by what each unit loses over that distance. Choosing where the level sits rather than how wide it is belongs to the stop loss calculator.

Can the same ATR multiple be used for targets?

Yes, and it is what an R-multiple target really is — three times the reading away from entry is a "3R" target only because the stop was one times something related to it. Be clear that the reading measures distance, not probability; nothing here says how often price gets that far.

Does this work on stocks, indices and crypto?

The true range part works on anything with a high, a low and a close. The money part depends on the contract: one share loses one dollar of quote currency per dollar of price the same way one ounce does, so the unit count comes out the same, while the lot or share-lot conversion follows whatever contract size that venue publishes.

What if my account currency is not the quote currency?

Then every money figure above needs one more multiplication. The distance stays measured in the instrument's quote currency; what you lose is that amount converted at the rate between the quote currency and the currency your account is held in, which is the step the position size calculator handles for cross pairs.

Related guides

Open the position size calculator