ACADEMY · TESTING A CLAIM

Does Price Really Snap Back to VWAP?

· 6 min read TESTING A CLAIM ETFs

Scope: measured on SPY only, on one-minute closes, at 30- and 60-minute horizons, against a null sampled the same way. The VWAP is anchored at 09:30, not the 04:00 anchor our charts draw.

Only when it is very far away — and much less often than the folklore claims. At ordinary distances, SPY comes back to touch its VWAP less often than a coin-flip random walk with the same volatility would, by 4 to 6 percentage points. A real magnet appears only in the most stretched tenth of readings, worth about 4.5 points of touch probability over chance at one hour, with no average drift attached. And the famous version of the trade — fade the stretch on range days — is real, large, and unusable: it exists only under a label the market prints at the close.

All 26 research notes

What exactly did we measure?#

Every regular-hours minute from 10:00 to 15:00 ET on SPY, February 2025 through August 2026: 116,487 minute-observations across 387 sessions. For each minute we take the distance between price and the session VWAP — anchored at 09:30 and recomputed from one-minute volume-weighted prices — and express it in units of that day's typical wander, so a stretch at 10:15 and a stretch at 14:30 mean the same thing. (That normalized distance is written z below.) Then, over the next 30 and 60 minutes, measured against the moving VWAP itself: did price touch it, retrace half the distance, or extend further away?

Two things to flag before the numbers, because both would otherwise ambush a careful reader. The VWAP here is anchored at 09:30, which is the one traders quote — our own charts draw a 04:00-anchored line, and those two are meaningfully apart in the first hours of the session. Nothing below was tested on the 04:00 version. And touches are measured on one-minute closes, so a poke that reverses inside a minute is invisible; that constraint drives the whole design of the comparison.

The base rate is the entire question#

"Price came back to VWAP" is not a finding unless it happens more often than aimless wandering would produce. A driftless random walk has a known chance of reaching a barrier at any given distance — so that is the number every touch rate has to beat.

But the textbook version of that number is the wrong one here, and getting this wrong would have manufactured our headline. The classic first-passage formula describes a continuous path, so it counts every touch, including ones that happen and reverse between two closes. Our measurement, walking one-minute closes, cannot see those. Comparing the two would penalise reality for blinking. So the null is built by simulation instead: four million random-walk paths, observed at exactly the same one-minute sampling as the measurement, asked how often they cross the barrier.

The difference is not cosmetic. At the 60-minute horizon the textbook null would have shown an overall deficit of 6.7 percentage points; the sampling-matched null shows 2.7. Roughly sixty percent of the "effect" was the measurement blinking. A worked example, for scale: sitting about 30 cents below VWAP on a typical day, a coin-flip path gets back to that line within the hour about 60% of the time — that is the number to beat, not a hunch.

The answer, by distance#

Touch rates within 60 minutes against the sampling-matched null, with 95% intervals from a bootstrap clustered by trading day (bands on the same day are not independent observations):

Distance from VWAP (quintile of z) Touched within 60 min Random-walk null Difference [95% CI]
1 (nearest) 80.7% 82.0% −1.3 pp [−3.2, +0.4]
2 55.7% 60.1% −4.4 pp [−7.1, −1.8]
3 35.2% 40.7% −5.5 pp [−8.0, −2.9]
4 21.1% 24.9% −3.8 pp [−5.8, −1.7]
5 (most stretched) 14.6% 13.1% +1.5 pp [−0.3, +3.7]
Top tenth only 14.4% 10.0% +4.5 pp [+1.8, +7.5]

Read the sign change. Through the middle of the distribution price returns to VWAP less often than diffusion predicts — moves away from VWAP have local persistence, the opposite of magnetism. Only in the extreme tail does a genuine pull appear, and there it is unambiguous. The 30-minute horizon draws the same picture with the crossover in the same place (−3.8 to −6.0 pp through the middle, +2.9 pp [+1.6, +4.4] in the top tenth).

Average drift back toward VWAP is indistinguishable from zero in every bucket at both horizons — all within about a basis point, every interval containing zero. So even the extreme-tail magnet is a statement about whether price gets back, not about making money on the trip.

One bias worth naming because it runs against us: VWAP is a cumulative average, so when price sits away from it the line drifts toward price. Our barrier chases, while the null's does not — which should make touches easier, not harder. The middle-quintile deficit survives that headwind.

But doesn't it work on range days?#

Yes — spectacularly, in hindsight. Split the most-stretched quintile by what kind of day it turned out to be, and the folk wisdom appears exactly as advertised: on range days, touch rates beat the null by 9.0 pp [+5.0, +13.3] and drift toward VWAP runs +7.2 bp per hour [+4.7, +9.8] (n=7,817). On trend days both flip hard the other way (−3.9 pp, −7.2 bp [−9.3, −4.6]). The two regimes very nearly cancel, which is why the pooled answer looked like nothing.

Then apply the standing question: was the conditioning variable known at event time? A day's full open-to-close character is not — at 11:30 you do not know how today finishes. Re-run the same split using only the trend up to the minute of the reading and the separation collapses: calm-so-far +2.4 pp [−0.9, +6.0], mid −0.1 pp, trending-so-far +2.3 pp [−0.6, +5.9], with drift within ±2 bp of zero in all three and no ordering at all. The regimes stop being different from each other the moment the label has to be earned in real time.

Be precise about what that does and does not establish. It kills this real-time proxy — the day's trend so far — which is the simplest one available. It does not prove no ex-ante regime classifier works; opening-range character, gap type, volume pace and breadth are all knowable at 11:30 and none of them were tested here. What the result does show is that the enormous hindsight effect does not survive contact with the crudest honest attempt to trade it, and that is where the burden of proof now sits.

What survives#

Three things worth keeping. Price at ordinary distances from VWAP is stickier away than chance, so "it has to come back" is, minute for minute, a slightly losing description of the tape. There is a real magnet, but it lives only in the top tenth of stretch and pays no average drift — a fact about arrival, not about profit. And the range-day version of the story is not false; it is currently unidentifiable in advance, which for a trader is the more expensive of the two problems.

Scope: SPY only; QQQ and the other funds untested. Horizons of 30 and 60 minutes only. VWAP anchored at 09:30, not the 04:00 anchor our charts draw. Touches on one-minute closes, with a sampling-matched null — true touch rates are higher on both sides, and the comparison is built to survive that. Distances are normalized by same-day volatility, a standard scaling convention that peeks at the full session; the ex-ante regime check deliberately does not use it for classification. Multiple distance buckets and horizons were examined, so treat any single marginal cell with suspicion — the two results stated here are the ones that hold at both horizons. Window: 2025-02-10 to 2026-08-28, 387 sessions. Not trading advice.

See these levels on a live chart

Option-derived levels and futures tape on one timeline.