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.
| Example | Period | Use Case |
|---|---|---|
vwap | None (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. VWAP | Interpretation |
|---|---|
| Price well below VWAP | Trading at a discount to volume-weighted fair value. Institutional buyers may see this as attractive. Potential support zone. |
| Price slightly below VWAP | Near fair value, leaning cheap. VWAP may act as a magnet pulling price back up. |
| Price at VWAP | At the volume-weighted average -- equilibrium. No directional edge. |
| Price slightly above VWAP | Near fair value, leaning expensive. VWAP may act as a magnet pulling price back down. |
| Price well above VWAP | Trading at a premium to volume-weighted fair value. Institutional sellers may see this as a good exit. Potential resistance zone. |
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.
= (Equal) -- Not Recommended for VWAP
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.
- Use
</>when you want to act while price is on one side of VWAP (state-based). Pair withmax_countto limit repeated firing. - Use
cross_above/cross_belowwhen you want to act at the moment price pierces through VWAP (event-based). Nomax_countneeded -- 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
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.
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 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 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).