A simple VWAP strategy says: if price is above session VWAP, the buyers are in control, so go long; if it's below, go short. It's the backbone of countless "VWAP trend day" setups for Nasdaq futures. We tested the plain version on 3,884 NQ sessions from June 2010 to April 2026, checking at three different times of the morning. The honest finding: on its own, the above/below-VWAP rule had no edge.
What session VWAP is
VWAP (volume-weighted average price) is the average price paid during the session, weighted by how much traded at each price. Session VWAP resets each morning. Institutions use it as an execution benchmark, and day traders treat it as a line in the sand: above VWAP is "bullish," below is "bearish," and a trend day is one where price stays on one side all day.
Important detail about our version: we calculated VWAP from 15-minute bars, not ticks. For each bar we used the typical price, (High + Low + Close) ÷ 3, multiplied by that bar's volume, summed from the 9:30 am ET open, and divided by cumulative volume. That's a close approximation of the VWAP on your charting platform, but it is not identical to tick-level VWAP.
The exact VWAP trend day rules we tested
- Data: NQ continuous front-month futures, 15-minute bars, regular session only (9:30 am–4:00 pm ET), June 7, 2010 to April 16, 2026.
- Check time: the close of the 15-minute bar starting at 10:00, 10:30 or 11:30 ET (bars are labeled by their start time, so the checks happen at 10:15, 10:45 and 11:45).
- Entry: at that bar's close. If the close is above session VWAP, buy. If it's at or below, sell short. One trade every day, no filters.
- Exit: the 4:00 pm close. No stop, no target.
- Costs: 1.0 NQ point per round trip deducted from every trade. Results are NQ points per 1 contract; MNQ = $2/point, NQ = $20/point.
We deliberately kept this bare-bones. If "above VWAP buy, below VWAP sell" carries real information about the rest of the day, it should show up here before anyone adds extra filters.
VWAP strategy results on MNQ and NQ
| Variant | Trades | Win rate | Avg pts | Total pts | Profit factor | Closed-trade DD (pts) | Pts 2010–19 | Pts 2020–26 | PF 2020–26 |
|---|---|---|---|---|---|---|---|---|---|
| Check at 10:00 bar | 3884 | 49.2% | -0.28 | -1,080.8 | 0.99 | -7,230.5 | -3,200.2 | 2,119.5 | 1.03 |
| Check at 10:30 bar | 3884 | 49.3% | -2.29 | -8,891.8 | 0.92 | -10,379.0 | -3,537.5 | -5,354.2 | 0.93 |
| Check at 11:30 bar | 3884 | 49.8% | -1.32 | -5,139.0 | 0.94 | -6,524.8 | -1,094.0 | -4,045.0 | 0.94 |
All three versions traded every one of the 3,884 sessions.
No edge at any check time
- 10:00 check: 49.2% winners, profit factor 0.99, -1,080.8 points. An average of -0.28 points per trade is a coin flip minus costs.
- 10:30 check: the worst, at -8,891.8 points ($-17,784 on one MNQ contract) and a closed-trade drawdown of 10,379.0 points.
- 11:30 check: -5,139.0 points, profit factor 0.94.
Win rates sat between 49.2% and 49.8%, and average wins and losses were almost the same size. That is what randomness looks like. Being above or below VWAP in the morning told us nothing reliable about where NQ would close.
The robustness check: 2010–2019 vs 2020–2026
Because NQ climbed from about 1,800 to about 26,000 during the test, recent years carry more weight in point totals, so we split the results. The 10:00 version lost -3,200.2 points in 2010–2019 and made 2,119.5 in 2020–2026, with a 2020–2026 profit factor of just 1.03. The 10:30 and 11:30 versions lost money in both halves. Year by year it swings wildly: the 10:30 check made 2,834.8 points in 2022 and then lost -4,368.2 in 2025. A strategy that flips from great to terrible with no change in rules isn't capturing a stable effect.
What this backtest does not model
- Tick-level VWAP. Our VWAP comes from 15-minute typical price × volume. A true tick VWAP would differ slightly, especially early in the session.
- Volume source. Volume is from the front-month contract only, regular session only.
- Fills. Entries and exits assume the exact bar close price, plus the 1-point cost allowance.
- Stops. There are none, so intraday swings against the position aren't limited. All trades close by 4:00 pm, so there's no overnight gap risk.
- Taxes and platform fees beyond the cost allowance.
This is a historical backtest. Past results don't guarantee future results, and nothing here is financial advice.
Key takeaways
- "Above VWAP buy, below VWAP sell," held to the close, lost money at all three check times on NQ from 2010 to 2026 after 1 point of costs.
- Profit factors ranged from 0.92 to 0.99, and win rates stayed just under 50%.
- The 10:30 check was the worst: -8,891.8 points and a 10,379.0-point closed-trade drawdown.
- Our VWAP was computed from 15-minute bars (typical price × volume), not ticks.
- Use session VWAP as a reference or filter, not as a standalone signal.
Put the research to work on your Desk
Explore the tools behind the research, compare the available access, or open your Desk if you already have an account.
FAQ
Does buying above VWAP work on Nasdaq futures?
Not as a standalone rule in our test. Going long above session VWAP and short below it, holding to the 4:00 pm close, lost money at 10:00, 10:30 and 11:30 check times on NQ from 2010 to 2026. The best profit factor was 0.99.
How was VWAP calculated in this test?
From 15-minute regular-session bars: typical price (High + Low + Close) ÷ 3 times volume, summed from 9:30 am ET and divided by cumulative volume. It approximates, but is not identical to, tick-level VWAP.
What time of day is best for a VWAP trend signal?
None of the three we tested had an edge. The 10:00 check was closest to breakeven (-1,080.8 points); 10:30 was worst (-8,891.8 points).
Is VWAP useless for day trading?
No. It's widely used as an execution benchmark and a reference level. Our test only shows that being above or below it mid-morning did not predict the close on NQ by itself.
Loomi.Ai provides educational market research, not financial advice. Trading futures and options involves substantial risk of loss, and backtested results are historical and do not guarantee future returns.
Sources
- Loomi backtest: blog_strategy_tests.py + results JSON, Loomi research