All 31 research notes
ACADEMY · TESTING A CLAIM

Does VWAP Hold in a Trend? As a Ceiling, Barely. As a Floor, No.

· 9 min read TESTING A CLAIM ETFs

Scope: measured on SPY only, on one-minute bars, at 30- and 60-minute horizons, on two VWAP anchors — the 09:30 session line most platforms draw and the 04:00 line our charts draw — each stated per table. Trend and touch are defined from information available at the touch minute.

When a downtrend brings SPY back up to its VWAP, the line holds a little more often than it breaks — 51–54% of resolved touches on the session line, 57–60% for the first touch of the day on the line that counts pre-market volume — and only that last cell clears chance, at the edge. When an uptrend brings price back down to VWAP, the line breaks more often than it holds: 45% held on the session line with the interval clear of 50, and 33% after a strong pre-market rally. The first touch of the day is not special on either side, and at the line the median bounce and the median poke through it are the same size. VWAP is a slightly better ceiling than floor on this fund, and neither by enough to build an entry on.

Downtrend — price rallies up to VWAP Uptrend — price pulls back down to VWAP
Held, 04:00 line, first touch of the day (30 min) 57–60%, interval excludes 50 43–45%
Held, 09:30 line, first touch 48–50% 46–47%
Held, 09:30 line, all touches 51–54% 45%, interval excludes 50
Median bounce vs poke, first regular-session touch 13.0 vs 13.3 bp 12.8 vs 13.5 bp
First touch after a ≥0.3% pre-market move the same way 55% (n=62) 33% (n=58), excludes 50

"Held" is the share of touches that reached a 0.10% barrier either way. On the 04:00 first-touch row, 37–41% of touches reached neither within 30 minutes; the full tables below show that share per row.

What exactly did we measure?#

SPY, one-minute bars, 2025-02-10 to 2026-09-15, 401 sessions. Two VWAPs, because two are in use: the session VWAP anchored at 09:30, which most platforms draw by default, and the 04:00-anchored line that includes pre-market volume, which our own charts draw. The 04:00 line is taken as stored. The 09:30 line is rebuilt from one-minute volume-weighted prices; where a bar's own volume-weighted price is missing it is filled with the bar's close before the cumulative sum.

A trend exists at minute t if, using only bars up to t, the VWAP has moved in one direction over the prior 30 minutes and price closed on that side of it in at least 20 of those 30 minutes. A shorter 15/12 version was run alongside and is quoted where it differs. On the 04:00 line the trend can be built from pre-market bars, so the first regular-session minute is eligible; on the 09:30 line the first eligible minute is 10:00, because the line barely exists before then.

A touch is a bar whose range spans the line while the previous bar sat entirely on the trend side — a fresh arrival, not a bar hugging the line. Touches are ranked: first of the regular session, first of the extended day, second, third and later.

"Held" is scored as a race from the line: does price travel 0.10% in the trend direction before it travels 0.10% through the line? The barriers are symmetric, so a driftless random walk scores 50%. Trend drift pushes the score up — so 50 is a conservative bar for the claim that the line holds, and every bias in the tables below runs in the claim's favour. A touch where price reaches neither barrier within the horizon has no result; its share is shown per row, and "held" is the share of the touches that did resolve. Bounce and poke are the medians, over every touch including the unresolved ones, of the furthest price travelled in each direction from the line within the horizon. Intervals are 95%, bootstrapped by trading day.

The answer, on the line our charts draw#

04:00-anchored VWAP, trend from 30/20, 30-minute horizon. Asterisks mark intervals that exclude 50.

Downtrend — price rallies up into VWAP n No result Held 95% CI Bounce bp Poke bp Ratio
First touch of the regular session 332 11% 54.1% [48, 60] 13.0 13.3 0.98
Second 278 15% 48.1% [42, 55] 10.6 12.5 0.85
Third and later 764 17% 48.7% [44, 54] 10.4 10.6 0.98
First touch of the extended day (pre-market counted) 385 37% 57.4%* [51, 64] 8.5 6.1 1.39
Same, 15/12 trend 392 40% 60.2%* [54, 67] 7.3 6.0 1.22
Same, 60-minute horizon 385 17% 55.2% [50, 61] 13.5 10.2 1.32
First regular touch after pre-market fell ≥0.3% 62 0% 54.8% [42, 66] 20.9 25.5 0.82
Uptrend — price pulls back down into VWAP n No result Held 95% CI Bounce bp Poke bp Ratio
First touch of the regular session 345 8% 48.9% [44, 54] 12.8 13.5 0.95
Second 287 14% 48.0% [42, 54] 10.8 11.7 0.93
Third and later 757 20% 43.4%* [38, 48] 8.2 10.1 0.82
First touch of the extended day 395 41% 44.9% [38, 51] 7.1 6.3 1.13
Same, 60-minute horizon 395 21% 42.0%* [37, 47] 9.9 11.5 0.86
First regular touch after pre-market rose ≥0.3% 58 0% 32.8%* [21, 45] 12.7 21.8 0.58

Read the two tables against each other, and read the No result column first. The extended-day first touches are mostly pre-market touches, and 37–41% of them go a full half hour without reaching either barrier — thin pre-market tape does not move 0.10% quickly. Among the ones that do resolve, the downside holds 57% and clears 50; give it an hour and 55% of a larger resolved set hold, with the interval's lower edge sitting on 50. That is the strongest cell the "VWAP holds" claim has, and it is a lean at the edge of chance. On the upside nothing clears chance in the claim's favour, three cells clear it against, and the strong-pre-market case is lopsided: the poke through is nearly twice the bounce, and every one of those 58 touches resolved.

The same shape on the line everyone else draws#

09:30-anchored session VWAP, all touches from 10:00, trend from 30/20.

n No result, 30 / 60 min Held, 30 min Held, 60 min Bounce bp Poke bp Ratio
Downtrend, all touches 1,114 18% / 7% 51.3% [47, 55] 53.6% [50, 57] 10.8 10.0 1.08
Downtrend, first touch 296 15% / 5% 48.2% [42, 54] 50.0% [44, 56] 11.0 11.4 0.96
Uptrend, all touches 1,153 17% / 8% 45.1%* [41, 49] 44.8%* [41, 49] 9.3 10.6 0.88
Uptrend, first touch 313 10% / 3% 45.9% [40, 52] 46.5% [41, 52] 10.7 12.7 0.84

Different anchor, about three times the sample, same asymmetry. The downside straddles 50 with a lean toward holding; the upside sits below 50 and its interval clears it at both horizons.

Does the first touch matter?#

Not in the way the folklore says. On the 09:30 line the first touch holds 48% in downtrends and 46% in uptrends — no better than the third touch onward (53% and 44%). On the 04:00 line the first regular-session touch is the best downside cell at 54%, but its interval straddles 50 and the bounce–poke ratio is 0.98. The one first-touch cell that stands out is the pre-market one on the downside, and what makes it stand out is a bounce that is small in absolute terms (8.5 bp, over every touch) against a poke that is smaller still (6.1 bp).

The clean way to say it: the first touch is where the line is most informative, because the least has happened to it yet — but the price behaviour at it is not distinguishable from later touches.

What about "too far, too fast"?#

That is a different question, and it was measured separately in Does price really snap back to VWAP?: through the middle of the distance distribution price returns to VWAP less often than a random walk would, and a genuine pull appears only in the most stretched tenth — worth about +4.5 points of touch probability at one hour, with average drift indistinguishable from zero. So "stretched too far comes back" is true only at the extreme, and even there it is a statement about the touch, not about a profitable trip. It does not license fading ordinary extensions.

How to use VWAP, given all this#

As a map, not a trigger. Price crosses VWAP many times a day. On the 09:30 line we counted 2,267 fresh trend-side arrivals in 401 sessions: 897 held, 967 went through, and 403 did neither within the half hour. A line that holds about four times in ten and breaks about four times in ten is a reference for where price sits relative to the day's average transaction, and that is what it is good for.

Direction first. The one durable fact here is the asymmetry. In a downtrend the return to VWAP is the only cell with a lean toward holding — and it is a lean, 51–60% depending on the line and the touch. In an uptrend the pullback to VWAP breaks more often than it holds, and after a strong pre-market rally it breaks two times in three. Whatever you do at the line should not be symmetric.

At the line, the bounce is worth about what the poke costs. Median bounce and median poke are 13.0 and 13.3 bp on the first regular-session touch in a downtrend, 12.8 and 13.5 bp in an uptrend. A stop placed just through the line is hit about as often as the bounce plays out, and an entry there is roughly a 1:1 proposition with a coin-flip hit rate. That is not an edge; it is a location.

Where the numbers do point somewhere. In an uptrend, a pullback to VWAP is a better place to lighten a long than to add to one — the line fails 55% of the time on the session line and, after a strong open, 67%. In a downtrend, a rally to VWAP is where counter-trend longs most often stall — 51–60% of resolved touches, depending on the line — which makes it a more defensible place to take profit on a counter-trend bounce than to initiate a fresh short. Both are statements about where to reduce, not where to enter, because reducing does not need an edge — it only needs a place.

What the numbers do not support. "Trending day, price comes back to VWAP, it bounces back into the trend" — as a rule that applies in both directions. It applies weakly in one and fails in the other. "First touch is the strongest" — no. "Stretched too far, it snaps back" — only in the most stretched tenth, and it pays no drift.

Scope: SPY only; QQQ and the other funds untested. Two anchors, 04:00 and 09:30, as stated per table. Horizons 30 and 60 minutes. Trend defined from information available at the touch minute; two definitions run, both quoted where they differ. "Held" uses symmetric 0.10% barriers over the touches that reached one; a driftless walk scores 50 and trend drift raises the score, so the bar is conservative for the holding claim. The share of touches reaching neither barrier is shown per row and runs from 0% to 41%. Bounce and poke are medians over every touch, in basis points of the line. About seventy cells were examined across anchors, sides, ranks, horizons and two trend definitions, so treat any single marginal interval with suspicion; the two results stated in the opening — a downside lean at the edge of chance, an upside failure that clears it — hold across both anchors, both trend definitions and both horizons. The pre-market ≥0.3% cells have n=58 and n=62 and are quoted for their size, not their precision. Window 2025-02-10 to 2026-09-15, 401 sessions. Not trading advice.

See these levels on a live chart

Whale-sized prints, XJER and key levels on one order-flow chart.