6.4 KiB
VWAPSD: VWAP with Standard Deviation Bands
Standard deviation bands around VWAP measure institutional consensus — proximity signals fair value, distance signals opportunity.
| Property | Value |
|---|---|
| Category | Channel |
| Inputs | OHLCV bar (TBar) |
| Parameters | numDevs (default DefaultNumDevs) |
| Outputs | Multiple series (Upper, Lower, Vwap, StdDev, Width) |
| Output range | Tracks input |
| Warmup | 2 bars |
| PineScript | vwapsd.pine |
- VWAP with Standard Deviation Bands combines the Volume Weighted Average Price with a single configurable standard deviation band pair, providing a ...
- Similar: VwapBands, BBands | Complementary: Cumulative volume delta | Trading note: VWAP standard deviation bands; 1σ/2σ/3σ levels used for institutional mean-reversion.
- Validated against TA-Lib, Skender, and Tulip reference implementations where available.
VWAP with Standard Deviation Bands combines the Volume Weighted Average Price with a single configurable standard deviation band pair, providing a simpler alternative to VWAPBANDS (which uses dual \pm 1\sigma and \pm 2\sigma levels). Three running sums enable O(1) streaming updates. A session reset mechanism clears accumulations at configurable intervals, keeping the indicator anchored to current market structure. The configurable deviation parameter allows traders to select their desired confidence level (1\sigma ≈ 68%, 2\sigma ≈ 95%, 3\sigma ≈ 99.7%).
Historical Context
VWAP emerged in the 1980s as institutional traders needed a benchmark reflecting actual market participation. Berkowitz, Logue, and Noser (1988) established VWAP as the standard for measuring execution quality. The concept is straightforward: weight each price by the volume traded at that price, producing an average that reflects where the most conviction-backed trading occurred.
The standard deviation extension follows the same reasoning as Bollinger Bands but applied to volume-weighted statistics. By adding bands at n standard deviations from VWAP, the indicator creates a statistically grounded channel that adapts to actual volume-weighted volatility.
VWAPSD differs from VWAPBANDS only in output structure: VWAPSD emits one band pair at a configurable distance, while VWAPBANDS always emits two band pairs (\pm 1\sigma and \pm 2\sigma). The underlying VWAP and variance calculations are identical.
Architecture & Physics
1. Running Sum Accumulation
Three cumulative sums, reset at session boundaries:
\Sigma_{pv} = \sum_{i=1}^{n} P_i \cdot V_i, \quad \Sigma_v = \sum_{i=1}^{n} V_i, \quad \Sigma_{p^2v} = \sum_{i=1}^{n} P_i^2 \cdot V_i
where P_i is the source price (typically HLC3) and V_i is volume. Zero-volume bars are skipped to prevent distortion.
2. VWAP (Center Line)
\text{VWAP}_t = \frac{\Sigma_{pv}}{\Sigma_v}
3. Volume-Weighted Standard Deviation
Using the computational identity \text{Var}(X) = E[X^2] - (E[X])^2:
\sigma^2 = \frac{\Sigma_{p^2v}}{\Sigma_v} - \text{VWAP}^2
\sigma = \sqrt{\max(0,\;\sigma^2)}
4. Band Construction
U_t = \text{VWAP}_t + k \cdot \sigma_t
L_t = \text{VWAP}_t - k \cdot \sigma_t
where k is the number of standard deviations (default 2.0).
5. Session Reset
On a reset condition, all running sums restart from zero. Configurable reset intervals include intraday (1m through 4H), daily, weekly, monthly, quarterly, semi-annual, annual, or never.
6. Complexity
Streaming: O(1) per bar. Three additions to running sums, one division, one square root. Memory: three doubles for running sums plus scalar state (~64 bytes per instance).
Mathematical Foundation
Parameters
| Symbol | Name | Default | Constraint | Description |
|---|---|---|---|---|
k |
numDevs | 2.0 | 0.1 – 5.0 |
Number of standard deviations for bands |
VWAPSD vs VWAPBANDS
| Aspect | VWAPSD | VWAPBANDS |
|---|---|---|
| Band pairs | 1 (configurable k\sigma) |
2 (\pm 1\sigma and \pm 2\sigma) |
| Default deviation | 2.0 | 1.0 (inner); 2.0 (outer) |
| VWAP calculation | Identical | Identical |
| Variance calculation | Identical | Identical |
Output Interpretation
| Output | Interpretation |
|---|---|
| Price above VWAP | Buyers paying above fair value; bullish intraday bias |
| Price below VWAP | Sellers accepting below fair value; bearish intraday bias |
| Price at upper band | Overextended above volume-weighted mean by k\sigma |
| Price at lower band | Overextended below volume-weighted mean by k\sigma |
| Band width expanding | Intraday volume-weighted dispersion increasing |
| Band width near zero | Very tight price clustering around VWAP |
Performance Profile
Operation Count (Streaming Mode)
VWAPSD is slightly simpler than VWAPBANDS (one band pair instead of two), with identical VWAP and variance computation:
| Operation | Count | Cost (cycles) | Subtotal |
|---|---|---|---|
| MUL (price × vol for sum_pv) | 1 | 3 | 3 |
| MUL (price² × vol for sum_pv2) | 2 | 3 | 6 |
| ADD (3 running sums) | 3 | 1 | 3 |
| DIV (sum_pv / sum_vol for VWAP) | 1 | 15 | 15 |
| DIV (sum_pv2 / sum_vol for E[X²]) | 1 | 15 | 15 |
| MUL (VWAP² for variance) | 1 | 3 | 3 |
| SUB (E[X²] - VWAP²) | 1 | 1 | 1 |
| SQRT (σ) | 1 | 20 | 20 |
| MUL (k × σ) | 1 | 3 | 3 |
| ADD/SUB (VWAP ± k·σ) | 2 | 1 | 2 |
| Total (hot) | 14 | — | ~71 cycles |
Saves ~5 cycles vs VWAPBANDS by emitting 2 bands instead of 4. Session reset adds one CMP per bar.
Batch Mode (SIMD Analysis)
Cumulative sums are inherently sequential. Band arithmetic is vectorizable:
| Optimization | Benefit |
|---|---|
| Running sum accumulation | Sequential (prefix sum dependency) |
| Variance → SQRT → bands | Vectorizable in a batch post-pass |
| Session reset detection | Sequential (comparison per bar) |
Resources
- Berkowitz, S., Logue, D. & Noser, E. (1988). "The Total Cost of Transactions on the NYSE." The Journal of Finance, 43(1), 97–112.
- Kissell, R. (2013). The Science of Algorithmic Trading and Portfolio Management. Academic Press.