Markets › Futures · ES futures (1-minute bars)
VWAP Strategy Backtest: ES Futures, 5-Minute Bars, 2020 to 2026
The three common VWAP strategies described by Investopedia (with the VWAP, against it, and the standard-deviation bands), tested on 1,737 sessions of E-mini S&P 500 futures with costs and a control.
Buried · No proven edgeSix crossings a day. Costs ate the rest.
Variants tried: 3 · Passed every gate: 0 · Holdout opened: yes (already used)
Short answer: not on ES futures after costs. We tested the three common VWAP strategies on 5-minute bars from 2020 to 2026: trading with the VWAP made a little before costs and lost after them, trading against it lost, and the standard-deviation bands lost even before costs.How much costs took here, compared across all 54 of our tests →
00The verdict in three lines
- An Investopedia article on VWAP strategies describes trading with the VWAP, trading against it, and standard-deviation bands around it, and says the first two do not appear to hold a statistical edge over many trades (the article). We tested all three on ES futures, 5-minute bars, New York session, January 2020 to September 2026, at $30.76 a round trip.
- The claim holds after costs. Trading with the VWAP made +$9.06 a trade before costs (t-statistic 1.35, not significant) and -$254,020 after; trading against it, the exact mirror, won 72.5% of its trades and ended at -$466,195.
- The bands did worst. Buying two to three standard deviations below the VWAP (and selling above) lost before costs, 75% of the trades hit the stop, and the entries did worse than every run of the control. All three Buried.
01What we tested
- The session VWAP on 5-minute bars from 09:30 New York, as in the article's formula: the typical price (high + low + close) / 3 weighted by volume, accumulated from the open and reset every session. Bands: the VWAP plus and minus 2 and 3 volume-weighted standard deviations.
- VW-TREND (with the VWAP): long when a bar closes above the VWAP after closing at or below it, short on the opposite crossing; each crossing flips the position.
- VW-REV (against the VWAP): the same crossings, the opposite side. It is the exact mirror of VW-TREND: the same times, so their results before costs are equal and opposite.
- VW-BANDS: long when a bar closes between 2 and 3 standard deviations below the VWAP, stop one tick below the 3 SD line, out after the first bar that closes back at the VWAP; shorts the mirror. From 10:00 on, as the bands mean little in the first bars; one position at a time.
- All: entries at the next minute's open, one contract, flat at the session close (13:00 or 13:15 on early-close days). Three variants of strategies not tested before on the site, so the development t-statistic bar is 2.0.
02Data and costs
ES (E-mini S&P 500) futures, NinjaTrader's back-adjusted 1-minute history with real contract volume, 1,737 New York sessions from 2 January 2020 to 25 September 2026. Costs: $30.76 per round trip (commission and one tick of slippage on each fill), as in every ES test on the site; a flip pays two. Periods: development 2020 to 2023, validation January 2024 to March 2025, holdout April 2025 to September 2026, already used by earlier ES tests. Engine check: a self-test with hand-worked sessions and an independent re-implementation that matched every trade of all three strategies (vw_selftest_result.txt).
03Results
Dollars per contract. Gross is before costs.
| Variant | Rule | Trades | Trades a day | Gross per trade | Net after costs | Net per trade | Winners | Profit factor | Verdict |
|---|---|---|---|---|---|---|---|---|---|
| VW-TREND | With the VWAP: long on a close above it, short on a close below | 11,707 | 6.7 | +$9.06 | -$254,020 | -$21.70 | 20.5% | 0.89 | Buried |
| VW-REV | Against the VWAP: long on a close below it, short on a close above | 11,707 | 6.7 | -$9.06 | -$466,195 | -$39.82 | 72.5% | 0.79 | Buried |
| VW-BANDS | Bands: buy between -2 and -3 SD, sell between +2 and +3 SD, stop beyond 3 SD, target the VWAP | 7,803 | 4.5 | -$11.75 | -$331,708 | -$42.51 | 22.4% | 0.78 | Buried |
Cumulative net dollars by month. * Holdout already used before this test.
By period
| Variant | Development 2020 to 2023 (trades) | Validation Jan 2024 to Mar 2025 (trades) | Holdout* Apr 2025 to Sep 2026 (trades) | Development t | Validation PF |
|---|---|---|---|---|---|
| VW-TREND | -$116,101 (7,014) | -$31,355 (2,145) | -$106,564 (2,548) | -2.11 | 0.92 |
| VW-REV | -$315,401 (7,014) | -$100,605 (2,145) | -$50,189 (2,548) | -5.73 | 0.76 |
| VW-BANDS | -$188,621 (4,681) | -$62,220 (1,573) | -$80,867 (1,549) | -5.71 | 0.78 |
All three lost money after costs in every period.
04Before and after costs, year by year
| Year | VW-TREND gross | VW-TREND net | VW-REV gross | VW-REV net | VW-BANDS gross | VW-BANDS net |
|---|---|---|---|---|---|---|
| 2020 | +$8,300 | -$49,375 | -$8,300 | -$65,975 | +$10,162 | -$28,195 |
| 2021 | +$23,213 | -$29,818 | -$23,213 | -$76,243 | -$10,924 | -$42,022 |
| 2022 | +$48,725 | -$2,490 | -$48,725 | -$99,940 | -$32,747 | -$69,260 |
| 2023 | +$19,413 | -$34,417 | -$19,413 | -$73,242 | -$11,124 | -$49,144 |
| 2024 | +$19,750 | -$33,988 | -$19,750 | -$73,488 | -$11,983 | -$52,217 |
| 2025 | +$31,350 | -$19,404 | -$31,350 | -$82,104 | -$16,923 | -$49,375 |
| 2026 (to 25 Sep) | -$44,663 | -$84,527 | +$44,663 | +$4,798 | -$18,147 | -$41,494 |
Trading with the VWAP was positive before costs in every full year, the only encouraging pattern in this test. But +$9.06 a trade is about a third of the round trip, and with about 6.7 trades a day the costs come to some $207 a day against about $61 of gross gain.
05Long, short, and how the trades ended
| Variant | Longs: trades / gross / net | Shorts: trades / gross / net | Ended by | Median minutes held |
|---|---|---|---|---|
| VW-TREND | 5,905 / +$84,650 / -$96,988 | 5,802 / +$21,438 / -$157,032 | cross 10,029, session close 1,678 | 15 |
| VW-REV | 5,802 / -$21,438 / -$199,907 | 5,905 / -$84,650 / -$266,288 | cross 10,029, session close 1,678 | 15 |
| VW-BANDS | 3,689 / -$39,787 / -$153,261 | 4,114 / -$51,900 / -$178,447 | stop 5,886, vwap 1,295, session close 622 | 10 |
The mirror shows how little a win rate says: against the VWAP, 72.5% of the trades won and the strategy lost the most; with the VWAP, 20.5% won and it lost the least.
By hour of entry (New York, net and trades)
| Entry hour | VW-TREND | VW-REV | VW-BANDS |
|---|---|---|---|
| 9:00 to 10:00 | -$43,145 (2,026) | -$81,495 (2,026) | – |
| 10:00 to 11:00 | -$87,080 (3,013) | -$98,280 (3,013) | -$129,948 (2,762) |
| 11:00 to 12:00 | -$77,881 (1,798) | -$32,731 (1,798) | -$73,643 (1,459) |
| 12:00 to 13:00 | +$11,903 (1,384) | -$97,047 (1,384) | -$10,467 (978) |
| 13:00 to 14:00 | -$28,439 (1,196) | -$45,139 (1,196) | -$41,614 (830) |
| 14:00 to 15:00 | +$2,441 (1,091) | -$69,559 (1,091) | -$28,582 (865) |
| 15:00 to 16:00 | -$31,819 (1,199) | -$41,944 (1,199) | -$47,454 (909) |
06Is it the signal or chance?
The moved-entry control: every real entry moved by one random offset of whole sessions, at least 5% of them, to the same minute after the open in another session, same direction, then managed by the same exit (the next opposite crossing, or the stop and the VWAP target) and costs; 500 runs with fixed seeds. The bar is the 95th percentile of the average net result per trade.
| Variant | Trades | Real average per trade | Control trades (mean) | Control median | Control 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|---|
| VW-TREND | 11,707 | -$21.70 | 3,960 | -$23.44 | -$50.23 to -$0.75 | 55.4 |
| VW-REV | 11,707 | -$39.82 | 3,960 | -$38.05 | -$60.77 to -$11.29 | 44.6 |
| VW-BANDS | 7,803 | -$42.51 | 6,711 | -$32.10 | -$37.77 to -$26.51 | 0.0 |
The crossing rules sit in the middle of the control. The band entries sit below every run of it: buying two standard deviations under the VWAP picked worse moments than the same trades on other days.
07The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.0 on development | 4. Above the 95th percentile of the moved-entry control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| VW-TREND | 11,707 | fail | pass | fail | fail | fail | fail |
| VW-REV | 11,707 | fail | pass | fail | fail | fail | fail |
| VW-BANDS | 7,803 | fail | pass | fail | fail | fail | fail |
08Verdict by variant
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| VW-TREND | Costs | 1, 3, 4, 5, 6 | Buried |
| VW-REV | No proven edge | 1, 3, 4, 5, 6 | Buried |
| VW-BANDS | No proven edge | 1, 3, 4, 5, 6 | Buried |
Costs (with the VWAP): positive before costs, not significantly, and negative after. No proven edge (against the VWAP, bands): negative before costs. Not tested: other markets, timeframes and VWAP anchors, combinations with other indicators, lower-cost execution.
TWhat this shows, and what to take into your own tests
What the results show
- Trading with the VWAP made +$9.06 a trade before costs, positive in every full year, but with a t-statistic of 1.35 and about 6.7 trades a day the $30.76 round trip turned it into -$254,020.
- Trading against the VWAP is the exact mirror: it won 72.5% of its trades and lost $466,195.
- The VWAP bands lost before costs (-$11.75 a trade); 75% of the trades ended at the stop, and the entries did worse than every run of the control.
What remains unknown
- Other markets, timeframes and VWAP anchors (the overnight session, weekly VWAP), and the VWAP combined with other signals, as the Investopedia article suggests.
- Execution at lower cost: a trader paying less than one tick of slippage per fill would lose less, but the trend version's gross result is about a third of our cost.
Why it failed
On 5-minute ES bars the price crosses its session VWAP about 6.7 times a day, so a crossing rule trades constantly. Following the crossing had a small edge before costs, about +$9.06 a trade, a third of a round trip. The bands bet on a return to the VWAP from two and three standard deviations away; on ES the price more often kept going and hit the stop.
What you can apply to your own tests
- Count how often a rule trades before you test its profit: at $30.76 a round trip, seven trades a day cost about $215.
- A rule and its mirror image tell you a lot: if neither side makes money after costs, the signal is not worth trading at that cost.
- Check claims you read, even reasonable ones: Investopedia's statement that neither VWAP tactic has an edge held up after costs here; before costs one side had a small one.
A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.
FAQCommon questions
Does a VWAP strategy work?
Not in our test on ES futures. Trading with the VWAP made +$9.06 a trade before costs and -$254,020 after, over 11,707 trades; trading against it ended at -$466,195; the VWAP bands at -$331,708.
What is the win rate of a VWAP strategy?
It depends on the side, and it misleads. Trading against the VWAP won 72.5% of its trades and lost the most; trading with it won 20.5% and lost the least.
How was the VWAP strategy tested?
On ES futures 1-minute data from 2020 to 2026, 5-minute bars of the New York session with the session VWAP, $30.76 per round trip and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.
09Check our arithmetic
vw_spec.md
vw_lib.js · vw_ref.js · vw_selftest.js · vw_run.js
control_audit_lib.js · em_lib.js · fx_data.js · gh_lib.js · hourly_lib.js · ma_lib.js · na_lib.js · rb_lib.js · rsi2_protocol.js
vw_selftest_result.txt · vw_results.txt · vw_summary.json
Code provenance: our own code, written from the VWAP formula and the strategies as described in the article and fixed in the specification. No third-party source code is used or published.
10Data notes
Holes. Removing the trades open across a known hole in the ES file changes nothing: VW-TREND 1, VW-REV 1, VW-BANDS 0 trade(s) removed, every verdict unchanged.
Back-adjustment. The file is back-adjusted, which shifts older prices by a constant at each roll; the VWAP and the bands move with the prices, so every signal and result in points is unchanged.
Volume. Real ES contract volume from the exchange, as the VWAP needs; the evening and overnight hours are not part of the session VWAP used here.
11Corrections
22 Oct 2026, navigation: added a link to the new guide comparing trading costs across all our tests. No result changed. 22 Oct 2026, navigation: added a link to the new guide comparing trend following and mean reversion across all our tests. No result changed.
+More tests and guides
- Noise area breakout es
- Intraday momentum strategy es
- Bollinger bands strategy backtest
- Rsi strategy backtest
- Trend following vs mean reversion: this test next to the others of its style
- Free prop firm challenge calculator
- What all the backtests found so far
- The backtesting protocol
- How to backtest a trading strategy without fooling yourself
- Backtesting glossary