Volume is the fuel that drives price.
| Property | Value |
|---|---|
| Category | Volume |
| Inputs | OHLCV bar (TBar) |
| Parameters | None |
| Outputs | Single series (WAD) |
| Output range | Unbounded |
| Warmup | 1 bar |
| PineScript | wad.pine |
- Williams Accumulation/Distribution (WAD) is Larry Williams' contribution to the volume analysis toolkit.
- No configurable parameters; computation is stateless per bar.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
Williams Accumulation/Distribution (WAD) is Larry Williams' contribution to the volume analysis toolkit. Unlike the standard Accumulation/Distribution Line that uses the close's position within the day's range, WAD incorporates True Range concepts. This gives it a different perspective on buying and selling pressure.
Developed by Larry Williams (of Williams %R fame), WAD was introduced in his 1979 book "How I Made One Million Dollars... Last Year... Trading Commodities." Williams designed the indicator to be more sensitive to actual price movement between periods, not just within a single bar.
The key innovation: WAD compares today's close to yesterday's close, then uses True Range (incorporating gaps) to measure how much of the day's range was "captured" by the movement.
WAD is a cumulative indicator that measures buying/selling pressure using the relationship between consecutive closes and True Range concepts.
For each bar, we establish boundaries that account for gaps:
The direction of the close relative to the previous close determines the calculation:
The genius of WAD lies in how it handles different market conditions:
Upward Movement (Close > Previous Close): When price closes higher than yesterday, we measure from the True Low (which could be below the current bar's low if we gapped up). This captures the full extent of buying pressure.
Downward Movement (Close < Previous Close): When price closes lower than yesterday, we measure from the True High (which could be above the current bar's high if we gapped down). This captures the full extent of selling pressure.
Unchanged (Close = Previous Close): No price movement detected; no volume impact on WAD.
Williams Accumulation/Distribution uses directional price comparison to select a TrueRange component, then accumulates — O(1).
| Operation | Count | Cost (cycles) | Subtotal |
|---|---|---|---|
| Previous close comparison | 1 | 2 cy | ~2 cy |
| TrueHigh / TrueLow conditional select | 1 | 3 cy | ~3 cy |
| WAD_bar = C - TrueRange selected | 1 | 1 cy | ~1 cy |
| WAD cumulative += WAD_bar | 1 | 1 cy | ~1 cy |
| NaN guard + state update | 1 | 2 cy | ~2 cy |
| Total | O(1) | — | ~9 cy |
O(1) cumulative. No window, no smoothing. The conditional branch (up day vs down day vs unchanged) is predicted by the CPU after a few bars.
| Metric | Score | Notes |
|---|---|---|
| Throughput | 10 | High; O(1) calculation with simple comparisons. |
| Allocations | 0 | Zero-allocation in hot paths. |
| Complexity | O(1) | Constant time per update. |
| Accuracy | 10 | Matches TA-Lib and Ooples implementations. |
| Timeliness | 10 | No lag; updates immediately with each bar. |
| Overshoot | N/A | Cumulative indicator; concept doesn't apply. |
| Smoothness | 2 | Jagged; reflects raw volume and price movement. |
| Library | Status | Notes |
|---|---|---|
| QuanTAlib | ✅ | Validated. |
| TA-Lib | N/A | Not implemented. |
| Skender | N/A | Not implemented. |
| Tulip | N/A | Not implemented. |
| Ooples | ✅ | Matches CalculateWilliamsAccumulationDistribution. |
| Aspect | WAD | ADL |
|---|---|---|
| Close Reference | Previous close | Current bar's H-L range |
| Gap Handling | Explicitly incorporated via True Range | Ignored |
| Volume Multiplier | Price movement (absolute) | Close Location Value (normalized -1 to +1) |
| Creator | Larry Williams (1979) | Marc Chaikin |
-
First Bar: The first bar in a series produces WAD = 0 since there's no previous close. Don't interpret this as meaningful.
-
Scale Dependency: Like ADL, the absolute value of WAD depends on starting point and volume magnitude. Focus on trend and divergences.
-
Volume Magnitude: WAD values can grow very large because the price movement isn't normalized. A high-volume day with large price movement will dominate the cumulative sum.
-
Zero Volume: If volume is zero, the bar contributes nothing to WAD regardless of price movement. Ensure your data source provides valid volume.
-
Gap Significance: WAD specifically accounts for gaps through True Range. This makes it more sensitive to overnight gaps than ADL, which can be good or bad depending on your analysis goals.
- Williams, L. (1979). "How I Made One Million Dollars... Last Year... Trading Commodities." Windsor Books.
- https://school.stockcharts.com/doku.php?id=technical_indicators:williams_ad