VWAP — Volume-Weighted Average Price — is the price at which the average institutional dollar transacted since the session open. Pension funds, mutual funds, and algorithmic desks measure their execution quality against VWAP. That performance pressure creates predictable price behavior: the market gravitates toward VWAP, tests it repeatedly, and reacts strongly at it.
Section 1: Core Mechanics
VWAP is the cumulative sum of (Typical Price × Volume) for each bar from the session open, divided by the cumulative sum of Volume. It resets at each market open. Price above VWAP means the average buyer today is in profit. Price below VWAP means the average buyer is losing.
What Is VWAP?
Developed as an institutional execution benchmark, VWAP allows large traders to measure whether their orders were executed favorably relative to the day's average. A buy order executed at $50.10 when VWAP is $50.35 = favorable execution (below average price). This performance pressure makes VWAP a self-fulfilling price anchor — institutions buying below it and selling above it creates the mean-reversion behavior you observe.
Formula
Where:
- (Typical Price for bar i)
- = Volume for bar i
- = number of bars since session open
VWAP accumulates from bar 1 (open) to bar n (current bar). Every new bar updates the running numerator and denominator.
Example calculation (first 3 bars of a session):
| Bar | TP | Volume | TP × Vol | Cumulative TP×Vol | Cumulative Vol | VWAP |
|---|---|---|---|---|---|---|
| 1 | 100.33 | 500,000 | 50,165,000 | 50,165,000 | 500,000 | 100.33 |
| 2 | 101.17 | 750,000 | 75,877,500 | 126,042,500 | 1,250,000 | 100.83 |
| 3 | 100.83 | 600,000 | 60,498,000 | 186,540,500 | 1,850,000 | 100.83 |
Inputs
- High, Low, Close: Used to calculate Typical Price per bar
- Volume: Weights each bar's contribution
- Session anchor: VWAP resets at each new session open
Parameters
| Parameter | Default | Notes |
|---|---|---|
| Session anchor | Market open (9:30 AM ET for US stocks) | Can be anchored to any date for Anchored VWAP |
| Standard deviation bands | ±1 and ±2 SD | Optional overlay to define expected daily range |
| Typical Price source | (H+L+C)/3 | Fixed convention — do not change |
Output Range
VWAP plots on the price scale, overlaid on candlesticks as a solid line. It starts near the opening price, updates with each bar, and drifts throughout the session. It never resets mid-session.
Visual Behavior
Early in the session, VWAP closely tracks price because few bars have accumulated. By midday, VWAP becomes stable — it takes significant volume to shift it meaningfully. Late-session VWAP is heavily anchored to the day's dominant price action. Price oscillates around VWAP throughout the day in a mean-reverting pattern.
Section 2: Interpretation & Signals
Signal Zones
| Price vs. VWAP | Interpretation |
|---|---|
| Price above VWAP | Buyers are in profit — bullish intraday bias |
| Price below VWAP | Buyers are underwater — bearish intraday bias |
| Price returning to VWAP from above | Support test — key intraday level |
| Price returning to VWAP from below | Resistance test — sellers defending average cost |
| Price accepted above VWAP after opening below | Intraday trend shift — bullish |
| Price opens above VWAP, stays above all day | Strong trend day — momentum trade |
| Price repeatedly testing and rejecting VWAP | Range day — mean-reversion optimal |
Institutional Context — Why VWAP Creates These Reactions
Institutional orders break large trades into many smaller slices executed throughout the day. The VWAP algorithm (VWAP execution) distributes these slices proportionally to volume — more shares traded during high-volume periods.
When an institutional desk is executing a 5-million-share buy order throughout the day using VWAP, they are specifically buying when price is below the current VWAP — because that improves their execution quality. This systematic buying below VWAP is what creates the support effect you trade.
VWAP Mean Reversion — Price Tests VWAP as Support Three Times
VWAP Standard Deviation Bands
Adding ±1 SD and ±2 SD bands creates a Bollinger-like channel anchored to volume-weighted fair value:
- Price at VWAP + 2SD = statistically extended above VWAP — reversion likely
- Price at VWAP - 2SD = statistically extended below VWAP — bounce likely
- Price between ±1SD = inside normal daily distribution
Anchored VWAP
Anchored VWAP lets you calculate VWAP from any user-defined starting date — not just the session open. Common anchor points:
- Earnings date: VWAP from the post-earnings gap day = average cost basis for all buyers who bought after the earnings event
- IPO date: VWAP from IPO = average cost for all public shareholders
- Major low or high: VWAP from a significant reversal = directional anchor
Anchored VWAP at an earnings gap creates powerful swing-level S/R that persists for weeks or months.
Section 3: Pass vs. Live — Real-Time Reliability
VWAP is a real-time indicator by design. It updates with each trade (or each new bar, depending on your platform). Closed bars' VWAP values are fixed — the current bar's VWAP moves continuously throughout the session.
The live-bar updating is not a flaw — it is the feature. VWAP is designed for execution-level decision-making. Early-morning VWAP is less stable (fewer bars, lower volume) than midday VWAP. This is expected and should be incorporated into how aggressively you trade early VWAP tests.
Section 4: Practical Use Cases
Setup: Standard VWAP + VWAP ± 1SD and ± 2SD bands on 5m or 15m chart Signal: Price pulls back to VWAP from above in an uptrend, touches VWAP, and first 5m bar closes back above VWAP Entry: Close of the first bar that bounces back above VWAP with volume > 20-period average volume Exit: VWAP + 1SD (first target) or VWAP + 2SD (full target on a trend day) Key Rule: On range days, fade VWAP + 1SD and buy VWAP - 1SD. On trend days, buy every pullback to VWAP in the trend direction.
Setup: Anchored VWAP from the most recent earnings date or significant swing low Signal: Price pulls back to Anchored VWAP from above — tests the average cost basis of all participants who entered since that anchor event Entry: Daily close with a bounce candle at Anchored VWAP + volume above 20-day average Exit: Anchored VWAP + 2SD (the extended target) or at the prior high if it comes first Key Rule: Anchored VWAP from earnings is the most reliable VWAP for swing traders — it reflects the institutional cost basis for the post-earnings holder base
Setup: Anchored VWAP from the yearly open or a major structural low Signal: Price pulls back to the yearly Anchored VWAP in a primary bull market — major re-entry zone Entry: Weekly close at or above yearly Anchored VWAP with weekly volume above 20-week average Exit: 3–5 months of trend development targeting prior all-time high or next major resistance zone Key Rule: Yearly Anchored VWAP tests (price returns to it after initially rising above) occur 1–3 times per year in bull markets and represent the highest risk-reward re-entry opportunities for position traders
Real example: JPMorgan Chase (JPM) after its Q1 2024 earnings release on April 12, 2024. The stock gapped from $194 to $200 on earnings day. Anchored VWAP calculated from April 12 forward gave an Anchored VWAP at approximately $205 by late April. When JPM pulled back to $205 on April 25 (intraday low $204.50), the Anchored VWAP held as support and the stock bounced to $211 over the following week — a clean 3% gain from the Anchored VWAP re-entry.
Section 5: Pseudo Code
INPUT: high[], low[], close[], volume[], session_start_index=0
PROCESS:
Step 1: For each bar i from session_start_index to current:
tp[i] = (high[i] + low[i] + close[i]) / 3
cumulative_tpv[i] = cumulative_tpv[i-1] + tp[i] * volume[i]
cumulative_vol[i] = cumulative_vol[i-1] + volume[i]
if cumulative_vol[i] > 0:
vwap[i] = cumulative_tpv[i] / cumulative_vol[i]
else:
vwap[i] = tp[i] # First bar edge case
Step 2: Calculate standard deviation bands (optional)
For each bar i:
variance_sum[i] = variance_sum[i-1] + volume[i] * (tp[i] - vwap[i])**2
vwap_variance[i] = variance_sum[i] / cumulative_vol[i]
vwap_sd[i] = sqrt(vwap_variance[i])
upper1[i] = vwap[i] + 1 * vwap_sd[i]
lower1[i] = vwap[i] - 1 * vwap_sd[i]
upper2[i] = vwap[i] + 2 * vwap_sd[i]
lower2[i] = vwap[i] - 2 * vwap_sd[i]
Step 3: Detect mean reversion signal
if close[i] > vwap[i] and close[i-1] < vwap[i-1]:
signal = "Price crossed VWAP upward — bullish intraday shift"
if close[i] < lower1[i] and close[i-1] >= lower1[i-1]:
signal = "Price entered VWAP - 1SD zone — mean reversion opportunity"
OUTPUT: vwap[], upper1[], lower1[], upper2[], lower2[], signal[]
EDGE CASES:
- Session start: reset all cumulative sums to zero before first bar
- Zero volume bar: skip — do not update cumulative volumes
- Extended hours: use only regular session data for institutional VWAP
- Anchored VWAP: replace session_start_index with anchor bar index — do not reset
Section 6: Parameters & Optimization
Standard VWAP Applications
| VWAP Type | Anchor | Primary Use |
|---|---|---|
| Session VWAP | Market open each day | Day trading intraday reference |
| Weekly VWAP | Monday open | Swing trading weekly reference |
| Monthly VWAP | Month's first session | Position-level trend anchor |
| Anchored VWAP (earnings) | Earnings release date | Post-earnings swing S/R |
| Anchored VWAP (IPO) | IPO date | Long-term cost basis reference |
| Anchored VWAP (swing low) | Major reversal date | Bull market re-entry timing |
Band Width Conventions
| Band | Use Case |
|---|---|
| VWAP ± 1SD | Normal daily range boundary — fade at extremes on range days |
| VWAP ± 2SD | Statistically extended — high-probability reversal zone |
| VWAP ± 3SD | Extremely extended — only appears on major news days |
Does VWAP work for crypto markets?
Yes, but with important differences. Crypto trades 24/7 with no official session open. Most platforms let you choose the VWAP anchor: midnight UTC, New York open (9:30 AM ET), or a custom time. For trading US crypto during US hours, anchor VWAP to 9:30 AM ET for comparability with equity market sessions. CME Bitcoin futures use regular 9:30 AM ET open — their VWAP aligns directly with equity session behavior.
What is the difference between VWAP and a volume-weighted moving average?
VWAP anchors to the session open and accumulates all bars since open — it never "forgets" early session volume. A volume-weighted moving average (VWMA) uses a rolling window (last N bars), just like an SMA but with volume weighting. VWAP shows where the entire session traded on average. VWMA shows where the last N bars traded on average. For intraday institutional reference, VWAP is the standard. For rolling trend analysis, VWMA is more appropriate.
Section 7: Synergies & Conflicts
| Works Well With | Avoid Combining With | |
|---|---|---|
| Volume Profile POC | VWAP gives today's session average; Volume Profile POC gives the prior period's highest-volume level. When both are at the same price, it is a maximum-confluence institutional level. | — |
| Market Profile Value Area | VWAP sitting inside the prior day's Value Area = balanced market. VWAP outside prior Value Area = potential trend day developing. Market Profile contextualizes VWAP's position. | — |
| Moving Averages | On daily charts, the 20-day SMA and Anchored VWAP from a key event often converge at the same level — both provide dynamic S/R, but from different methodologies. Confluence strengthens the level. | — |
| Price Action (candlestick) | A bullish engulfing candle at VWAP support with volume above the 20-bar average = highest-conviction VWAP bounce setup. The pattern provides structure; VWAP provides the institutional anchor. | — |
| Standard RSI on 5m chart at VWAP | — | RSI on very short timeframes produces so much noise that combining with VWAP adds confusion rather than clarity. On short timeframes, use VWAP + volume only. |
| EMA on intraday charts alongside VWAP | — | EMA and VWAP will frequently be at different prices, creating conflicting signals. Decide which is your primary reference — VWAP for institutions, EMA for retail momentum — and use the other as secondary context only. |
Section 8: Common Mistakes
| Mistake | Root Cause | Solution |
|---|---|---|
| Using standard session VWAP on daily charts | VWAP resets each session — daily chart VWAP is not institutional reference | Use Anchored VWAP for swing and position trading |
| Buying every touch of VWAP without context | VWAP touches fail frequently on trending-down days | Determine if today is a trend day or range day first. On trend days, price doesn't bounce at VWAP — it barely touches and keeps going. |
| Ignoring pre-market volume | Pre-market volume shifts VWAP's starting calculation on some platforms | Know whether your platform includes or excludes pre-market volume in VWAP |
| Applying VWAP without volume data | VWAP calculated with even-weight (no volume) is just Typical Price MA | Verify your platform uses real volume weighting in VWAP, not equal weighting |
| Missing the trend vs. range day distinction | Applying mean-reversion VWAP strategy on a trend day | Check the first 30 minutes: if price moved 1%+ from VWAP and didn't return, it is a trend day — only trade in the trend direction at VWAP |
Section 9: Cheat Sheet
USE WHEN: Intraday trading on stocks, futures, or ETFs where institutional participation is high. Price pulling back to VWAP in an established intraday trend. Anchored VWAP acting as support after an earnings gap.
AVOID WHEN: Illiquid instruments or off-hours sessions (thin volume distorts VWAP). Using standard session VWAP on daily or weekly charts for swing signals — use Anchored VWAP instead.
ENTRY SIGNAL: Price touches VWAP from above in an uptrend + first bar close back above VWAP + volume above 20-period average on that bar.
EXIT SIGNAL: VWAP + 1SD (range day target) or VWAP + 2SD (trend day target). Exit if price closes below VWAP with two consecutive bars — intraday trend has shifted.
PARAMETERS: Session reset daily. Bands: ± 1SD and ± 2SD. Anchored VWAP: anchor to earnings date, IPO, or major swing low.
CONFLUENCE: Volume Profile POC (same price) + VWAP + Price Action reversal candle = triple institutional confluence
RISK: On trend days, VWAP provides minimal resistance — mean-reversion plays fail. Identify trend vs. range day in first 30 minutes before committing to strategy type.
BEST TIMEFRAME: 5m to 1H for session VWAP (day trading). Daily to weekly for Anchored VWAP (swing trading).