True Range (TR) is a volatility measure that captures the maximum price movement for each bar, including any gap from the previous close. Developed by J. Welles Wilder Jr. in 1978, TR forms the foundation for Average True Range (ATR) and numerous other volatility-based indicators. Unlike simple High-Low range, TR accounts for overnight gaps and opening jumps, providing a complete picture of price movement.
## Historical Context
J. Welles Wilder Jr. introduced True Range in his seminal 1978 book "New Concepts in Technical Trading Systems." This same work introduced many other foundational indicators including RSI, ATR, Parabolic SAR, and the ADX family.
Wilder recognized that the traditional High-Low range fails to capture the full extent of price movement when markets gap at the open. A stock might have a narrow intraday range but a massive overnight gap—the simple High-Low would miss this volatility entirely. True Range solves this by considering the previous close as a potential extreme.
The elegance of TR lies in its simplicity: take the maximum of three simple calculations. This approach captures all possible price extremes while requiring minimal data (just High, Low, Close, and the previous Close). TR became the building block for ATR, which Wilder used extensively for stop-loss placement and position sizing.
## Architecture & Physics
### 1. Three Range Components
True Range considers three potential extremes:
$$
TR_1 = H_t - L_t
$$
$$
TR_2 = |H_t - C_{t-1}|
$$
$$
TR_3 = |L_t - C_{t-1}|
$$
where:
- $H_t, L_t$ = High, Low of current bar
- $C_{t-1}$ = Close of previous bar
### 2. True Range Calculation
The True Range is the maximum of all three components:
| **Manual** | ✅ | Validated against Wilder formula |
TR is one of the most consistently implemented indicators across all libraries.
## Common Pitfalls
1.**First bar handling**: The first bar has no previous close. The implementation uses High-Low for the first bar. Some implementations return NaN for the first bar—this one returns a valid (though incomplete) value.
2.**Confusing TR with ATR**: TR is the raw, unsmoothed value per bar. ATR is TR smoothed over a period. TR can be very volatile; ATR provides a more stable volatility estimate.
3.**Unit dependency**: TR is in the same units as price. A $500 stock might have TR=10 while a $50 stock has TR=1, even if percentage volatility is identical. Use NATR (Normalized ATR) for percentage-based comparisons.
4.**Gap sensitivity**: TR captures gaps, which may or may not be desirable. For intraday-only volatility, use High-Low range instead.
5.**Comparing across assets**: Don't compare raw TR values across different-priced assets. TR=5 means different things for a $20 stock vs a $200 stock.
6.**Weekend/holiday gaps**: TR will capture large gaps after market closures. This may inflate volatility estimates around holidays. Some strategies filter these bars.
## Trading Applications
### Stop-Loss Placement (via ATR)
TR is the foundation for ATR-based stops:
```
Long stop = Entry - (ATR × multiplier)
Short stop = Entry + (ATR × multiplier)
where ATR = smoothed TR
```
### Position Sizing
Use TR/ATR for volatility-adjusted position sizing:
```
Position size = (Account × Risk%) / (ATR × multiplier)
```
Higher TR means more volatility, so smaller position.
### Breakout Detection
Large TR spikes indicate significant price movement:
```
If TR_today > 2 × ATR_14: Potential breakout
Monitor for continuation or reversal
```
### Volatility Filtering
Filter trades based on minimum TR:
```
If TR < threshold: Skip trade (too quiet, potential whipsaw)
If TR > threshold: Proceed (sufficient volatility for trend)
```
### Gap Analysis
Compare TR to High-Low range to quantify gap impact:
```
Gap contribution = TR - (High - Low)
If gap contribution > 50% of TR: Significant gap move