Guide · Trading

Anchored VWAP, and the one setup that survived testing

VWAP is just an average price weighted by volume. Anchoring it to an event instead of the session open turns it into something more useful: a running record of what everyone who traded since that event has paid.


What is anchored VWAP?

VWAP — volume-weighted average price — is the average price paid per share over a period, weighting each price by the volume traded there. Standard VWAP resets every session. Anchored VWAP (AVWAP) starts from a bar you choose and keeps running from there.

VWAP = Σ(price × volume) ÷ Σ(volume), summed from the anchor bar to now

That choice is the whole idea. Anchor to an earnings gap and the line tracks the average cost basis of everyone who has traded since that earnings report. When price sits above it, that cohort is collectively in profit; below it, collectively underwater. The technique was popularised by Brian Shannon, whose framing is that price and volume tell you what participants actually did, not what they said.

The running calculation, bar by bar

AVWAP is a cumulative statistic, not a rolling one. Both sums run from the anchor and never reset, which is why the line gets progressively less sensitive to any single new bar — a hundred bars after the anchor, one day's volume moves it very little. Typical price is the standard input: (high + low + close) ÷ 3.

Eight daily bars, anchored on bar 1, which is the earnings gap. Volumes are in millions and every column is shown so the arithmetic is reproducible:

BarHighLowCloseTypical priceVol (M)TP × VolCum TP×VolCum VolAVWAPClose vs line
152.4049.1051.8051.100018.0919.800919.80018.051.1000above
252.1050.6050.9051.20009.0460.8001,380.60027.051.1333below
351.2049.4049.6050.066711.0550.7331,931.33338.050.8246below
450.0048.2048.5048.900014.0684.6002,615.93352.050.3064below
549.6047.9049.4048.96678.0391.7333,007.66760.050.1278below
650.8049.2050.6050.200012.0602.4003,610.06772.050.1398above — reclaim
751.6050.3051.4051.100016.0817.6004,427.66788.050.3144above — confirms
852.2051.0052.0051.733313.0672.5335,100.200101.050.4970above
Bar 6, worked in full: typical price = (50.80 + 49.20 + 50.60) ÷ 3 = 150.60 ÷ 3 = 50.2000 TP × volume = 50.2000 × 12.0 = 602.400 cumulative = 3,007.667 + 602.400 = 3,610.067 cum volume = 60.0 + 12.0 = 72.0 AVWAP = 3,610.067 ÷ 72.0 = 50.1398 close 50.60 is above 50.1398 → the line is reclaimed

Two structural things are visible in that table. Price lost the line on bar 2 and spent four bars underneath it, so everyone who bought since the earnings gap was collectively underwater for four sessions. And the AVWAP itself drifted down from 51.13 to 50.13 while price fell, because the heavy volume on bars 3 and 4 traded below the existing average. The line is not a fixed level; it is dragged toward wherever the volume actually transacts. That is the property that makes it different from a moving average, which weights a quiet day and a capitulation day identically.

Where do you anchor?

An anchor is only meaningful if the event changed who owns the stock. Useful anchors:

  • The earnings gap — the most common one, because it resets the story and usually prints the highest volume bar of the quarter
  • A 52-week high or low, where a lot of positioning changed hands
  • The first bar of a major news event, index inclusion, guidance change, or an analyst-day repricing
  • The start of a base or consolidation, to see whether the base is being absorbed or distributed
  • The exact bar of a prior failed breakout, to measure whether trapped buyers are back to breakeven
  • A capitulation bar — the highest-volume down day of a decline — which anchors to the cohort most likely to sell into any bounce

Anchoring to a random Tuesday produces a line that looks meaningful and means nothing. If you cannot say in one sentence why that bar mattered, it is not an anchor.

Scoring a candidate anchor

The discipline that stops anchor selection from becoming after-the-fact chart drawing is to score candidates on criteria fixed in advance, before you look at where the resulting line sits. Four criteria, 0 to 2 each:

Criterion0 points1 point2 points
Volume at the anchor barBelow the 50-day average1–2× averageMore than 2× average
Did the story change?No identifiable eventTechnical event only (new high, base start)A named fundamental event: earnings, guidance, index inclusion
Age of the anchorOlder than about a year, or fewer than 10 bars ago3–12 months1–3 months, still the dominant narrative
Has price respected the line?Price has crossed it repeatedly with no reactionOne or two clean reactionsThree or more clean touches or rejections

Six or more out of eight is worth trading. Below four, the line is decoration. The fourth criterion is the one people skip and it is the most informative: an anchor nobody is trading against is just a curve on a chart, and the evidence that participants care is that price has already reacted to it more than once.

The age criterion cuts both ways for a reason. A very fresh anchor has too little volume behind it, so the line whips around on every new bar and generates signals that reverse the next day. A very old one has so much cumulative volume that a full day of trading barely moves it, and the cohort it represents has largely turned over anyway.

Multi-anchor confluence, and why it is mostly an illusion

The seductive pattern is two or three AVWAPs from different anchors converging at the same price. The claim is that this marks a level where several cohorts share a breakeven. Sometimes that is real. Usually it is a counting artefact, and the arithmetic shows why.

Suppose a stock trades in a $20 range around $50 and you call it confluence when an AVWAP sits within ±1% of current price — a $1.00-wide band out of a $20 range, so roughly a 5% chance per anchor if the lines were placed at random:

Anchors on the chartP(at least one within ±0.5%)P(at least one within ±1%)
12.5%5.0%
37.3%14.3%
511.9%22.6%
818.3%33.7%

Put eight anchors on a chart and a third of the time one of them is sitting near price for no reason at all. That is the same multiple-comparisons problem that ruins backtests, applied to a chart — the treatment is identical and it is covered properly in the backtest overfitting guide. The working rules:

  • One anchor per thesis, chosen before entry. If the thesis is "buyers since the Q2 gap are back to breakeven", there is exactly one line that tests it.
  • Confluence only counts if each anchor was independently scored above the threshold. Two 7-out-of-8 anchors converging is information. A 7 and a 2 converging is one anchor and a coincidence.
  • Never add an anchor after seeing where price is. That is drawing the target around the arrow.
  • Cap the chart at three lines. Not because three is magic, but because a hard cap forces the selection decision to happen consciously.

What is an AVWAP reclaim?

A reclaim is price crossing back above an anchored VWAP it had been trading under, and then holding. The reading is simple: the average buyer since that event has gone from losing to breaking even. Supply that was overhead — people waiting to get out flat — is either gone or has stopped pressing.

Stated mechanically enough to code, which is the only version that can be tested:

ENTRY CONDITIONS (all must hold) 1. anchor is defined and scored 6 of 8 or better, and it was defined before this bar existed 2. price closed BELOW the AVWAP for at least N bars (N = 3 in my tests; fewer and it is noise, not a reclaim) 3. current bar CLOSES above the AVWAP 4. next bar also closes above the AVWAP -- confirmation and does not close below the reclaim bar's low 5. volume on the reclaim bar is at or above its 20-bar average 6. fill is the OPEN of the bar after confirmation, never the close that generated the signal INVALIDATION stop = AVWAP at entry − (0.5 × ATR14) exit if price closes below the AVWAP for 2 consecutive bars Everything above is knowable at the time it is used. That is the property that makes it testable.

Condition 6 is the one that silently invents edges when you get it wrong. The reclaim is only known once the bar has closed, so the earliest honest fill is the following open. Filling at the signal close is the textbook lookahead bias, and on a mean-reverting signal it can flip a losing system into a spectacular one.

Condition 2 is the one that separates a reclaim from a routine oscillation. Without a minimum number of bars beneath the line, every intraday wiggle across a flat AVWAP registers as a signal, and you end up with hundreds of trades that are measuring nothing but the spread.

Stop placement, worked

The design property that makes this setup sizeable is that the signal and the invalidation are the same object. If the thesis is "the average buyer since the anchor is no longer underwater", then the thesis is wrong precisely when price is back below that line. You do not need a second, unrelated rule to tell you when to leave.

Continuing the worked example. Confirmation came on bar 7, so entry is the bar 8 open at $51.50, with the AVWAP at $50.3144 and ATR14 at $1.60:

buffer = 0.5 × ATR14 = 0.5 × 1.60 = 0.80 stop = 50.3144 − 0.80 = 49.5144 → 49.51 1R per share = 51.50 − 49.51 = 1.99 (3.86% of price) $30,000 account at 1% risk = $300 budget shares = 300 ÷ 1.99 = 150.75 → round DOWN to 150 risk = 150 × 1.99 = $298.50 position = 150 × 51.50 = $7,725 = 25.75% of the account Targets: 1R = 53.49 2R = 55.48 3R = 57.47 Trailing, once bar 8 closes: AVWAP has risen to 50.4970 new stop = 50.4970 − 0.80 = 49.70 (tightened $0.19)

Three things in that arithmetic are worth arguing with. The buffer must scale with volatility — a fixed cent amount gets run over on a wide-range name and sits too far away on a quiet one, which is why it is expressed as an ATR multiple. The share count rounds down, always, so the realised risk is $298.50 rather than something above the budget. And the position works out to 25.75% of the account, which is over the notional cap most sizing rules apply on top of the risk rule — that conflict is resolved by cutting share count, never by tightening the stop, and the logic is in the position sizing guide.

The trailing behaviour is a genuine feature of the technique. Because AVWAP rises when price rises on volume, a stop pinned to it tightens automatically without you choosing a percentage — the line does the trailing. The cost is that in a fast advance the line lags far behind, so it gives back a lot before stopping out. Pairing it with a structural stop from the stop placement guide, and taking whichever is tighter once you are past 1R, is the usual compromise.

AVWAP and volume profile

These two tools answer adjacent questions and are strongest together. AVWAP gives you one number: the average price paid since a specific event. Volume profile gives you the whole distribution: how much volume traded at each price over a period, regardless of when.

Anchored VWAPVolume profile
What it summarisesThe mean of a cohort's cost basisThe full shape of transacted volume by price
Time dimensionCentral — the anchor defines the cohortAbsent — it aggregates across the whole window
AnswersIs this cohort in profit?Where is acceptance, and where is the gap?
Best signalA reclaim of the lineA rejection at a low-volume node, or acceptance into a high-volume node
WeaknessA single number hides a bimodal distributionSays nothing about who is holding, or when they bought

The combination that carries real information is an AVWAP reclaim happening at the lower edge of a high-volume node. The AVWAP says the cohort has stopped losing; the profile says there is enough transacted volume at that price for the level to be defended rather than sliced through. The combination that should make you suspicious is an AVWAP sitting in a low-volume gap, because almost nothing changed hands there, so almost nobody has a decision to make at that price.

This is also the honest limit of AVWAP as a concept. A mean is a poor summary of a bimodal distribution: if half the volume since the anchor traded at $45 and half at $56, the AVWAP reads about $50 and describes precisely nobody. Overlaying the volume profile is how you find out whether the average you are trading against actually represents a real cluster of participants. When the same anchor sits inside a tightening range, the VCP base structure is often the better read of what is happening.

Timeframe and session inclusion

Two configuration choices change the line materially and neither has a universally correct answer, which means both must be fixed in advance and applied consistently.

  • Bar interval. AVWAP computed from daily bars and from 5-minute bars over the same span will not match, because typical price is an approximation and the approximation error differs with bar size. Finer bars are more accurate and vastly more data. Pick the interval you will actually trade on and never mix them within one study.
  • Extended hours. Including pre- and post-market volume changes both sums. Most large caps trade a modest share of volume outside regular hours, but it is concentrated around news and therefore at prices away from the regular-hours average, so it pulls the line disproportionately.
  • Anchor bar inclusion. Does the anchor bar itself count, or does the sum start on the bar after? On a huge earnings gap this is not a rounding difference — the gap bar is often the largest single volume contribution in the whole series.
  • Price input. Typical price (H+L+C)/3 is standard; some platforms use the close, others use (H+L)/2. On a wide-range bar these differ by a meaningful amount and the difference compounds through the cumulative sum.
  • Adjustments. Splits and dividends must be applied consistently to prices and volumes across the whole series, or the cumulative sums are silently wrong from the adjustment date backwards.
Illustrative sensitivity to extended-hours inclusion: shift in AVWAP ≈ (share of volume outside RTH) × (its average price offset) 8% of volume trading 1.5% away from the RTH average → 0.08 × 1.5% = 0.12% shift = $0.06 on a $50 stock 15% of volume trading 3.0% away → 0.15 × 3.0% = 0.45% shift = $0.23 on a $50 stock Against a stop buffer of $0.80, the first is noise and the second is not. It is a configuration decision, not a detail.

The practical consequence: your platform's AVWAP and your backtest engine's AVWAP will disagree unless you have checked all five settings. Reconcile them on one symbol, one anchor, one date before you trust any result that spans the two, because a systematic offset of even a few cents changes which bars register as reclaims.

Does it actually work?

Partly, and less than the headline suggests. I built a screener and a no-lookahead backtest engine, then ran my own swing setups through walk-forward testing rather than a curve-fit in-sample check. Most of them did not survive.

SetupWalk-forward resultVerdict
AVWAP reclaim+0.117R over 4,933 trades, 129-symbol 10-year universe, 95% CI [+0.057, +0.174]The only survivor — but see the random-entry control below. An earlier, roughly double figure on ~100 hand-picked trades is retired: it failed my own adversarial re-test
VCP-style contraction≈ breakevenNeutral, not traded mechanically
Gap / opening-range-breakout proxy−0.28RDropped
Market-regime filterReduced expectancyRejected
Normalised-momentum-lag filterReduced expectancyRejected

The control is the part that matters, and it is the part most write-ups omit. Running the same universe, the same dates, the same stops, the same exits and the same sizing with a risk-matched random entry instead of the AVWAP trigger already captured +0.086R:

AVWAP reclaim, walk-forward: +0.117R over 4,933 trades Risk-matched random entry: +0.086R (73% of the headline) ───────────────────────────────────────────────────────── Signal's own contribution: +0.030R Implied σ_R from the published interval ≈ 2.10 SE of the difference = 2.10 × √(2 ÷ 4,933) = 0.042 95% CI on the difference = [−0.052, +0.114] That interval CROSSES ZERO. The AVWAP reclaim is NOT a validated edge. For scale: detecting a genuine +0.030R at 95% confidence would need roughly 18,758 trades.

So: nearly three quarters of a positive-looking result was available to a coin flip using the same exits and the same risk management. Whatever is working is mostly the exit discipline and the drift of a long-biased universe, not the trigger. +0.117R was never a windfall, and +0.030R with a confidence interval crossing zero is not an edge at all — it is a result consistent with there being no effect. It also gets erased entirely by ordinary costs: at five cents of slippage per side on a stock where 1R is $2.40, the round trip alone is 0.0417R, more than the whole residual.

The first pass at this result deserves an explicit label rather than quiet deletion. An earlier version, run on a handful of names I had picked myself over barely a hundred trades, came back at roughly twice the figure above. It did not survive my own adversarial re-test and it did not reproduce on a wider universe, so the number itself is retired and I no longer republish it — precisely so nobody quotes it back at me as a result. It stands here as an example of what a small sample plus an unstated number of variants produces.

Two filters I expected to help — a market-regime filter and a normalised-momentum-lag filter — were tested on the same data and cut expectancy, so both were rejected rather than retuned. That is the whole discipline: an honest test is one that is allowed to say no. The full write-up is here →

How to use it without fooling yourself

  1. Pick the anchor before you look at the outcome, and score it against fixed criteria. Anchoring after the fact is how every chart becomes a winning chart.
  2. Use one anchor per thesis, capped at three lines. Eight anchors put a line near price a third of the time for no reason at all.
  3. Define the stop as part of the signal, not after entry. If the AVWAP generated the entry, the AVWAP defines the invalidation.
  4. Fill on the bar after confirmation, never on the close that produced the signal. That single index is the difference between a test and a fantasy.
  5. Fix the session, bar interval, price input and anchor-inclusion settings once, and reconcile them between your platform and any testing tool.
  6. Log every trade in R and judge the setup on hundreds of trades, not five. A +0.20R edge needs several hundred trades before it is distinguishable from zero.
  7. Assume your edge is smaller than the backtest says, because costs, slippage, and your own hesitation are not in the backtest — and because on this setup a random entry captured most of it.

Everything above is a process for finding out whether something works, not a claim that this one does. The measurement side lives in the trading journal guide and TradeLog, the sizing side in the R-multiple and expectancy guide, and the step nobody should skip is paper to live — my own execution gate requires 60 closed paper trades with positive realised expectancy before any live broker, and the current record against that gate is zero.

Educational content, not financial advice. No live profit-and-loss figures are claimed anywhere on this site; backtest and walk-forward results are always labelled as such. Full terms: /terms.html

Tools referenced in this guide

  • Swing Screener — the screener and no-lookahead backtest engine behind these results.
  • TradeLog — an R-multiple journal that computes expectancy per setup, offline and local.
  • R-multiple & expectancy guide — the math for sizing and judging any of this.

FAQ

Quick answers

What is anchored VWAP?

Anchored VWAP is a volume-weighted average price calculated from a specific bar you choose rather than from the session open. It represents the average price paid by everyone who has traded since that anchor event, so price above the line means that cohort is collectively in profit and below means it is underwater.

How is anchored VWAP different from regular VWAP?

Regular VWAP resets at the start of each session and is mostly used intraday. Anchored VWAP starts at an event you select, such as an earnings gap, a 52-week high or the start of a base, and keeps running for as long as that event stays relevant, which makes it usable on swing and position timeframes.

Where should you anchor a VWAP?

Anchor to bars where ownership genuinely changed: earnings gaps, 52-week highs or lows, major news, index inclusion, the start of a consolidation, or a prior failed breakout. If you cannot state in one sentence why that bar mattered, it is not a valid anchor.

What does an AVWAP reclaim mean?

A reclaim is price crossing back above an anchored VWAP it had been trading below, and holding there. It signals that the average buyer since the anchor event has moved from a loss to breakeven, which removes overhead supply from traders who were waiting to exit flat.

Does the AVWAP reclaim setup actually work?

In my own walk-forward testing it was the only setup that survived, but it is not a validated edge. On a 129-symbol, 10-year universe the result is +0.117R over 4,933 trades with a 95% confidence interval of +0.057 to +0.174, and a risk-matched random entry using the same exits and sizing already captures +0.086R of that, leaving the signal's own contribution at about +0.030R with a confidence interval that crosses zero. An earlier, roughly double figure measured over barely a hundred hand-picked trades is retired because it failed my own adversarial re-test. This is educational information rather than advice.

How do you calculate anchored VWAP?

Sum typical price times volume from the anchor bar to the current bar, then divide by the summed volume over the same span, where typical price is high plus low plus close divided by three. Both sums are cumulative and never reset, so the line becomes progressively less sensitive to each new bar. It is dragged toward whatever price actually transacted the most volume, which is what distinguishes it from a moving average.

Where do you put the stop on an AVWAP trade?

Just below the anchored VWAP itself, offset by a volatility buffer such as half of ATR14, so the signal and the invalidation are the same object. With the line at 50.31 and ATR14 at 1.60, the stop is 50.31 minus 0.80, or 49.51, and an entry at 51.50 makes 1R equal 1.99 per share. Because the line rises as price rises on volume, the stop trails automatically without you choosing a percentage.

How many anchored VWAPs should you have on a chart?

One per thesis, capped at about three. If a stock trades in a 20 dollar range and you count anything within 1% of price as confluence, a single anchor lands there 5% of the time by chance but eight anchors land there 33.7% of the time. Eight lines guarantee that one of them looks meaningful, which is the same multiple-comparisons problem that ruins backtests, applied to a chart.

Who popularised anchored VWAP?

Brian Shannon is the practitioner most associated with popularising anchored VWAP for swing and position trading, framing it around what participants actually paid rather than around indicator signals.