Volume Accumulation (VA) measures the cumulative flow of volume weighted by where price closes relative to the bar's midpoint. When price closes above the midpoint, volume is considered buying pressure; when below, selling pressure. The cumulative sum reveals the net directional conviction of market participants over time.
Unlike the Accumulation/Distribution Line (ADL) which uses the full bar range, VA simplifies to the midpoint—a cleaner measure that's less sensitive to extreme wicks. This makes VA particularly useful in markets prone to liquidity spikes that create artificial range extensions.
## Historical Context
Volume Accumulation emerged from the Williams Accumulation/Distribution line developed by Larry Williams in the 1970s. While Williams' original formula used the relationship between close and true range, VA simplifies this to the midpoint relationship:
- **ADL approach**: Uses (Close - Low) / (High - Low) as the multiplier
The midpoint simplification offers several advantages:
1.**Symmetric treatment**: Above and below midpoint are treated equally
2.**Reduced sensitivity**: Extreme wicks have less impact than in ADL
3.**Computational simplicity**: One subtraction instead of division
4.**No divide-by-zero**: ADL can produce NaN when High = Low; VA cannot
VA gained popularity in technical analysis software during the 1990s as a cleaner alternative to the more complex ADL formula. It appears in various trading platforms under names like "Volume Accumulation Oscillator" or simply "VA."
## Architecture & Physics
VA operates as a simple cumulative indicator with no lookback period or decay. Each bar contributes a signed volume amount based on price position relative to midpoint.
### Component Breakdown
1.**Midpoint Calculation**: Average of high and low prices
2.**Volume Attribution**: Multiply volume by (close - midpoint)
3.**Cumulation**: Running sum of attributed volume
The cumulative sum can be parallelized using prefix scan algorithms, but the benefit is marginal for typical series lengths (< 10K bars). Sequential implementation is preferred for simplicity.
### Memory Footprint
| Scope | Size |
| :--- | :--- |
| Per instance | ~104 bytes (State record struct × 2) |
VA validation focuses on internal consistency between streaming, batch, and span modes (verified with 1e-10 tolerance) and formula correctness against manual calculations.
## Common Pitfalls
1.**Unbounded Values**: VA accumulates indefinitely with no reset mechanism. After thousands of bars, values can become extremely large (millions in volume units). Consider normalizing or using VA change rather than absolute level.
2.**No Mean Reversion**: Unlike oscillators, VA has no center point. The indicator trends; it doesn't oscillate. Divergence analysis works, but overbought/oversold levels don't apply.
3.**Volume Scale Dependency**: VA values depend entirely on volume magnitude. A 100M share day in a liquid stock produces larger contributions than a 10K share day. Cross-instrument comparison requires normalization.
4.**Zero Volume Bars**: Bars with zero volume contribute nothing to VA regardless of price position. This is mathematically correct but can cause visual gaps in the indicator for illiquid instruments.
5.**Range Compression**: Very small bars (High ≈ Low) produce near-zero VA contributions even with significant volume. This differs from ADL which can produce large values from small ranges.
6.**Cumulative Drift**: Any floating-point error accumulates over time. While individual errors are minuscule (~1e-15), millions of bars can accumulate measurable drift. The implementation maintains last-valid tracking for NaN recovery.
7.**Session Considerations**: VA does not reset across sessions. For intraday analysis, consider comparing VA change within a session rather than absolute levels that include prior day's accumulation.
8.**isNew Parameter**: Bar correction (isNew = false) properly restores the previous VA state. Incorrect usage causes cumulative errors that propagate forward indefinitely.