05 — Moving Averages

VWAP#

Statistical1 min read
◆ The PatternThe average price weighted by where the volume actually traded, used as the day’s fair-value anchor

Volume-Weighted Average Price — the institutional benchmark for trade execution quality.

VWAP = Σ(Typical Price × Volume) / Σ(Volume)
Typical Price = (High + Low + Close) / 3

Resets at the start of each trading day (intraday indicator).

Interpretation:
• Price > VWAP → buyers in control, upward pressure
• Price < VWAP → sellers in control, downward pressure
• Algorithmic traders use VWAP to minimize market impact
Worked example

Each day’s typical price (high + low + close) / 3, weighted by its volume, from day 1. Over the 15 days 1,043,000 shares traded with a typical-price value of 108,266,700, so VWAP = 108,266,700 / 1,043,000 = 103.80; day 15 closes just above it, at 104. Day 13’s heavy volume (95,000 shares near 99.67) pulled VWAP down more than any day before it. On real intraday data VWAP restarts every session; here the 15 days stand in for 15 bars.

The example data: 15 days, used in every indicator here
DayHighLowCloseVolume
11019910050,000
210310010262,000
310310010148,000
410510110470,000
510810410785,000
610810510660,000
711010610990,000
811010710872,000
910810410580,000
1010510210366,000
1110510210455,000
1210410110275,000
13102989995,000
141029910164,000
1510510110471,000
Where it misleads
  • It is a benchmark, not a forecast. Trading desks use it to judge execution; its pull as support or resistance is a heuristic.
  • It goes stale through the day: late in the session it barely moves, because so much volume is already behind it.
  • It assumes each bar traded at its typical price; on wide-range bars that can be far from where the volume actually went through.
In code
tp = (df['high'] + df['low'] + df['close']) / 3
df['vwap'] = (tp * df['volume']).cumsum() / df['volume'].cumsum()
# intraday: group by session date and take the cumulative sums per day
Python, in your browser — edit the code and run it again

Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns high, low, close and volume — the 15 days above.

Sources
  • S. Berkowitz, D. Logue & E. Noser, “The Total Cost of Transactions on the NYSE”, Journal of Finance 43(1), 1988 — VWAP as an execution benchmark
  • R. Kissell, The Science of Algorithmic Trading and Portfolio Management, Academic Press, 2013 — VWAP execution in practice

Last reviewed October 2026 · How this site checks its content · Report a mistake

Check yourself

1. What is VWAP?

Show answer

B. It resets each session and accumulates trade by trade.

2. Why do institutions care about VWAP?

Show answer

B. Buying below VWAP, or selling above it, is read as good execution.

3. Why does VWAP barely move late in the day?

Show answer

B. Early in the session, a few trades move it a lot; later it is anchored by everything that came before.

Pattern bridge: Volume-weighted price is attention over the trading day — each price weighted by how much the market cared. In statistics, it’s a weighted mean.
Linked from 2
← Previous
Double Exponential MA
Open in the full reader, with the topic sidebar