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.

ES futures · 5-minute bars, New York session · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · No proven edge

Six crossings a day. Costs ate the rest.

BornFrozen 14 Oct 2026 (vw_spec.md), before any VWAP was computed
Died14 Oct 2026

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.

VariantRuleTradesTrades a dayGross per tradeNet after costsNet per tradeWinnersProfit factorVerdict
VW-TRENDWith the VWAP: long on a close above it, short on a close below11,7076.7+$9.06-$254,020-$21.7020.5%0.89Buried
VW-REVAgainst the VWAP: long on a close below it, short on a close above11,7076.7-$9.06-$466,195-$39.8272.5%0.79Buried
VW-BANDSBands: buy between -2 and -3 SD, sell between +2 and +3 SD, stop beyond 3 SD, target the VWAP7,8034.5-$11.75-$331,708-$42.5122.4%0.78Buried
-$400k-$200k$0k202120222023202420252026validationholdout*VW-TRENDVW-REVVW-BANDS

Cumulative net dollars by month. * Holdout already used before this test.

By period

VariantDevelopment 2020 to 2023 (trades)Validation Jan 2024 to Mar 2025 (trades)Holdout* Apr 2025 to Sep 2026 (trades)Development tValidation PF
VW-TREND-$116,101 (7,014)-$31,355 (2,145)-$106,564 (2,548)-2.110.92
VW-REV-$315,401 (7,014)-$100,605 (2,145)-$50,189 (2,548)-5.730.76
VW-BANDS-$188,621 (4,681)-$62,220 (1,573)-$80,867 (1,549)-5.710.78

All three lost money after costs in every period.

04Before and after costs, year by year

YearVW-TREND grossVW-TREND netVW-REV grossVW-REV netVW-BANDS grossVW-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

VariantLongs: trades / gross / netShorts: trades / gross / netEnded byMedian minutes held
VW-TREND5,905 / +$84,650 / -$96,9885,802 / +$21,438 / -$157,032cross 10,029, session close 1,67815
VW-REV5,802 / -$21,438 / -$199,9075,905 / -$84,650 / -$266,288cross 10,029, session close 1,67815
VW-BANDS3,689 / -$39,787 / -$153,2614,114 / -$51,900 / -$178,447stop 5,886, vwap 1,295, session close 62210

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 hourVW-TRENDVW-REVVW-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.

VariantTradesReal average per tradeControl trades (mean)Control medianControl 5th to 95thPercentile (95 needed)
VW-TREND11,707-$21.703,960-$23.44-$50.23 to -$0.7555.4
VW-REV11,707-$39.823,960-$38.05-$60.77 to -$11.2944.6
VW-BANDS7,803-$42.516,711-$32.10-$37.77 to -$26.510.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

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.0 on development4. Above the 95th percentile of the moved-entry control5. Positive without the 10 best trades6. Holdout net positive (already used)
VW-TREND11,707failpassfailfailfailfail
VW-REV11,707failpassfailfailfailfail
VW-BANDS7,803failpassfailfailfailfail

08Verdict by variant

VariantCauseGates failedVerdict
VW-TRENDCosts1, 3, 4, 5, 6Buried
VW-REVNo proven edge1, 3, 4, 5, 6Buried
VW-BANDSNo proven edge1, 3, 4, 5, 6Buried

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

Frozen specificationThe three strategies, VWAP and bands, costs, periods, gates and control, dated before any VWAP was computed.
vw_spec.md
CodeThe engine (its readings of the rules at the top), the independent re-implementation, the self-test and the run (node vw_run.js). Needs your own ES 1-minute history.
vw_lib.js · vw_ref.js · vw_selftest.js · vw_run.js
Shared code it usesThe ES loader, the exchange calendar, statistics and control helpers.
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
ResultsSelf-test result, the console output of the run and all numbers as one file.
vw_selftest_result.txt · vw_results.txt · vw_summary.json
Trade logs (CSV)Every trade of the three strategies, with entry and exit times (New York), prices, stop, gross and net dollars and the exit reason.
VW-TREND · VW-REV · VW-BANDS
Data recordFile hashes and the holes in the data.
data_manifest.md · data_holes.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