VWAP -- Volume-Weighted Average Price

Contents


Overview

Volume-Weighted Average Price (VWAP) is the average price an asset has traded at, weighted by volume, cumulative from the session start. Unlike a simple moving average that treats every candle equally, VWAP gives more weight to prices where more volume transacted. It answers the question: what is the true average price that reflects where actual trading occurred?

The calculation is cumulative:

VWAP = cumulative(typical_price x volume) / cumulative(volume)

Where typical_price = (high + low + close) / 3. At each candle, the numerator and denominator are accumulated from the first available candle. This means VWAP is anchored -- it does not have a sliding window like SMA or EMA. Early in the session, VWAP is more responsive to new data. As the session progresses, it becomes increasingly stable because it incorporates more and more historical volume.

VWAP is THE institutional benchmark. Large funds and algorithmic traders use VWAP to measure execution quality -- a buy order filled below VWAP is considered a "good" fill, while a fill above VWAP is considered "poor." This institutional usage creates a self-fulfilling dynamic: price below VWAP attracts institutional buying (they are getting a discount), while price above VWAP attracts institutional selling (they are locking in above-average prices). For retail traders, this means VWAP acts as a dynamic support/resistance level that institutional players actually respect.


Format

vwap

VWAP has no period parameter. It is cumulative from the first available candle in the session.

ExamplePeriodUse Case
vwapNone (cumulative)The volume-weighted average price -- institutional benchmark for fair value

Period range: Not applicable -- VWAP is always cumulative.

Value range: Price-denominated (same units as the asset's price). VWAP tracks very close to the actual price since it is an average of traded prices.


Understanding VWAP Values

VWAP values are in the same currency as the asset's price. The key is not the absolute value but the relationship between price and VWAP.

Price vs. VWAPInterpretation
Price well below VWAPTrading at a discount to volume-weighted fair value. Institutional buyers may see this as attractive. Potential support zone.
Price slightly below VWAPNear fair value, leaning cheap. VWAP may act as a magnet pulling price back up.
Price at VWAPAt the volume-weighted average -- equilibrium. No directional edge.
Price slightly above VWAPNear fair value, leaning expensive. VWAP may act as a magnet pulling price back down.
Price well above VWAPTrading at a premium to volume-weighted fair value. Institutional sellers may see this as a good exit. Potential resistance zone.

Note

VWAP is cumulative and anchored to the session start. As the session progresses, VWAP becomes increasingly stable and harder to move. Early in a session, VWAP is more volatile and reactive. The most reliable VWAP signals come after enough volume has been accumulated to establish a meaningful average.


Understanding Operators with VWAP

Each operator behaves differently with VWAP. Because VWAP is a dynamic price level (not an oscillator), it is most commonly compared against price or used as a target for other indicators.

> (Greater Than) -- State-Based

What it does: The trigger is true on every candle where price is above VWAP. This indicates the asset is trading at a premium to the volume-weighted average.

On the chart: Imagine the VWAP line drawn through the candles. Whenever price is above this line, the trigger is active. The asset is "expensive" relative to where most volume traded.

[[actions.triggers]]
indicator = "price"
operator = ">"
target = "vwap"
timeframe = "1h"

Typical use: Filter for bullish conditions. Price above VWAP means buyers are in control and willing to pay above the average. Combine with momentum indicators for long entries.

< (Less Than) -- State-Based

What it does: The trigger is true on every candle where price is below VWAP. This indicates the asset is trading at a discount to the volume-weighted average.

On the chart: Price is below the VWAP line. The asset is "cheap" relative to where most volume traded -- institutional buyers may be accumulating.

[[actions.triggers]]
indicator = "price"
operator = "<"
target = "vwap"
timeframe = "1h"

Typical use: Discount-buying strategy. When price is below VWAP, you are buying at a price that institutional algorithms consider a bargain. Combine with an RSI dip or support level for precision.

cross_above -- Event-Based

What it does: Fires once, at the exact candle where price transitions from below VWAP to above it. The previous candle had price <= VWAP, and the current candle has price > VWAP.

[[actions.triggers]]
indicator = "price"
operator = "cross_above"
target = "vwap"
timeframe = "1h"

Typical use: Bullish VWAP crossover entry. When price crosses above VWAP, it signals that buyers have seized control and pushed the price above the institutional fair value line. This is a commonly used intraday entry signal.

cross_below -- Event-Based

What it does: Fires once, at the exact candle where price transitions from above VWAP to below it. The previous candle had price >= VWAP, and the current candle has price < VWAP.

[[actions.triggers]]
indicator = "price"
operator = "cross_below"
target = "vwap"
timeframe = "1h"

Typical use: Bearish VWAP crossover exit. When price drops below VWAP, sellers have pushed the market below institutional fair value. This can signal the start of distribution or a shift to bearish control.

Why: VWAP and price are both floating-point values that change with every candle. Exact equality between price and VWAP will almost never occur. Use < or > instead, or use cross_above / cross_below to detect the moment price transitions through VWAP.

Choosing the right operator

  • Use < / > when you want to act while price is on one side of VWAP (state-based). Pair with max_count to limit repeated firing.
  • Use cross_above / cross_below when you want to act at the moment price pierces through VWAP (event-based). No max_count needed -- crossovers fire once by nature.

TOML Examples

Buy Below VWAP

The simplest VWAP strategy. Accumulate when price is trading below the institutional benchmark. The max_count limits entries so you do not keep buying on every candle below VWAP.

[[actions]]
type = "open_long"
amount = "100 USDC"

  [[actions.triggers]]
  indicator = "price"
  operator = "<"
  target = "vwap"
  timeframe = "1h"
  max_count = 3

Sell Above VWAP

Exit positions when price is trading above VWAP -- you are selling at a premium to the volume-weighted average.

[[actions]]
type = "sell"
amount = "100%"

  [[actions.triggers]]
  indicator = "price"
  operator = ">"
  target = "vwap"
  timeframe = "1h"
  max_count = 1

VWAP Bounce with Deviation Confirmation

Buy when price is below VWAP (discount zone) AND VWAP Deviation confirms the discount is statistically significant (more than 1.5 standard deviations below VWAP). This avoids buying minor VWAP dips that lack statistical edge.

[[actions]]
type = "open_long"
amount = "100 USDC"

  [[actions.triggers]]
  indicator = "price"
  operator = "<"
  target = "vwap"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "vwap_dev_20"
  operator = "<"
  target = "-1.5"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "rsi_14"
  operator = "<"
  target = "40"
  timeframe = "1h"

Price Crosses Above VWAP Entry

Enter at the moment price crosses above VWAP with a bullish macro trend. This is the classic intraday VWAP breakout.

[[actions]]
type = "open_long"
amount = "100 USDC"

  [[actions.triggers]]
  indicator = "price"
  operator = "cross_above"
  target = "vwap"
  timeframe = "1h"

  [[actions.triggers]]
  indicator = "sma_50"
  operator = ">"
  target = "sma_200"
  timeframe = "1d"

Tips

VWAP acts as dynamic support and resistance

Because institutional algorithms buy below VWAP and sell above it, VWAP functions as a dynamic support/resistance level that adapts to each session's trading activity. Price tends to gravitate toward VWAP and often bounces off it. This makes VWAP a powerful level for entries and exits -- far more meaningful than arbitrary fixed support/resistance lines.

Combine with VWAP Deviation for statistical rigor

Raw VWAP tells you "price is below fair value." VWAP Deviation (vwap_dev_20) tells you "price is 2.3 standard deviations below fair value." The combination is far more powerful: VWAP gives you the level, VWAP Dev gives you the statistical significance. A VWAP dip at -0.5 dev is noise; a VWAP dip at -2.0 dev is a rare statistical event worth acting on.

VWAP is cumulative -- it smooths over time

VWAP accumulates from the session start, so it becomes increasingly stable as more data is incorporated. Early in a session, VWAP is volatile and reactive. After many candles, it takes massive volume to move VWAP significantly. This means VWAP signals are most reliable after the session has been running long enough to establish a meaningful average.

VWAP is an institutional benchmark, not a crystal ball

VWAP tells you where the market considers fair value based on volume-weighted prices. It does not predict direction. In a strong downtrend, price can stay below VWAP for the entire session -- buying every VWAP discount would be disastrous. Always combine VWAP with trend confirmation (SMA crossovers, RSI) and risk management (stop-losses, max_count).