Does volume tell you which way a breakout will go?
Volume did not predict the direction of a breakout. This study tests the common volume beliefs, high and low, on eight years of 1-minute data from Nasdaq and S&P 500 futures, SPY, Bitcoin and large US stocks. Every test was written down before its result was seen.
Short answer: no.
- High volume did not make breakouts more likely to work. That held for the setup bar, the breakout minute, the day and full timeframe continuity. Busy and quiet breakouts finished within a few hundredths of a risk unit of each other on NQ, ES and SPY.
- Low volume did not make breakouts more likely to fail. Quiet breakouts reached their first target before the stop as often as busy ones, about half the time either way. A quiet pullback did not predict the trend continuing.
- Volume does say something about how far price may travel (a 2-4% better forecast of the day's range), the long-known link between volume and volatility. That improvement did not change any trading decision tested here.
- Bitcoin looked different at first, and the cause was fees. A percentage fee costs narrow, quiet setups more, so high-volume breaks lost less. Before fees the difference disappeared, and both groups lost money.
- Five large stocks gave the same answer. On AAPL, MSFT, NVDA, AMZN and TSLA, 2018-2026, none of the nine tests passed. The near miss, high-volume setup bars, was the same cost arithmetic as Bitcoin in a smaller dose. One pattern did hold on five more stocks: breaks of yesterday's high or low held into the close more often on busy days (about 63% against 55%). That is about how far a move carries, not which way, and it is not a tested trade.
How the tests were run
One simple, mechanical breakout was measured hundreds of thousands of times. The trades were then sorted by how busy volume was, and the busiest were compared with the quietest.
- Find every breakout. On 15, 30 and 60-minute charts, a trade starts when a 1-minute candle closes above the prior bar's high (long) or below its low (short). In TheStrat terms, the bar has gone in force.
- Trade it the same way every time. Enter at the next minute's open. Stop at the other side of the prior bar. Exit at the stop or the end of the session. Commissions and slippage come off every trade.
- Sort by volume. Volume is measured against what is normal for that time of day over the last 20 sessions, so a busy lunch hour and a busy open are judged fairly. The busiest third of trades is compared with the quietest third.
- Check it on years it was never tuned on. 2018-2022 is where a pattern could be spotted. 2023-2026 is where it has to hold up. A real effect shows in both.
R is the result in units of the amount risked. Risking $100 to make $50 is +0.5R. An average of +0.05R per trade is $5 per $100 risked.
How to read the charts: the luck range
Split any set of trades into two random piles and their averages will differ a little, by chance alone. The luck range is how big that difference gets 95% of the time. If volume really mattered, the gap between busy and quiet trades would land outside it, in both periods. Every chart below shows the gap as a dot and the luck range as a shaded band. The "Could this be luck?" button shows random splits piling up.
When volume is high
The usual claim: heavy volume means real participation, so the move is more likely to follow through.
Does a high-volume setup bar make the break more likely to work?
No. On NQ, ES and SPY, breaks from a high-volume setup bar finished within 0.05R per trade of breaks from a low-volume one, inside the range luck alone produces. That held for 2-1-2 and 3-1-2 setups too. On five large stocks, high-volume setup bars did 0.05R better in 2023-2026 but only 0.01R better in 2018-2022, and before trading costs the later gap halves and falls inside luck: the same cost arithmetic as Bitcoin.
All numbers for this question
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.03R | +0.03R | 0.00R | ±0.08R | 13,849 / 13,849 |
| NQ | 2023-26 | +0.05R | 0.00R | +0.05R | ±0.09R | 9,247 / 9,866 |
| ES | 2018-22 | +0.03R | −0.03R | +0.07R | ±0.10R | 8,193 / 8,193 |
| ES | 2023-26 | −0.02R | −0.03R | +0.01R | ±0.10R | 8,936 / 8,672 |
| SPY | 2018-22 | 0.00R | −0.01R | +0.01R | ±0.08R | 12,656 / 12,656 |
| SPY | 2023-26 | +0.01R | 0.00R | +0.01R | ±0.10R | 7,977 / 8,561 |
| BTC | 2018-22 | −0.07R | −0.27R | +0.20R | ±0.11R · beyond | 37,669 / 37,669 |
| BTC | 2023-26 | −0.21R | −0.34R | +0.14R | ±0.09R · beyond | 52,579 / 36,785 |
| BTC (CB) | 2018-22 | −0.02R | −0.20R | +0.18R | ±0.11R · beyond | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.15R | −0.31R | +0.16R | ±0.10R · beyond | 36,424 / 45,971 |
| Stocks | 2018-22 | +0.02R | +0.01R | +0.01R | ±0.04R | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.03R | −0.08R | +0.05R | ±0.04R · beyond | 46,568 / 49,694 |
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | −0.01R | +0.04R | −0.06R | ±0.14R | 1,011 / 1,983 |
| NQ | 2023-26 | 0.00R | −0.01R | +0.01R | ±0.21R | 530 / 1,433 |
| ES | 2018-22 | +0.07R | −0.06R | +0.13R | ±0.22R | 607 / 1,187 |
| ES | 2023-26 | −0.10R | 0.00R | −0.10R | ±0.20R | 561 / 1,331 |
| SPY | 2018-22 | +0.05R | 0.00R | +0.05R | ±0.16R | 936 / 1,666 |
| SPY | 2023-26 | −0.04R | −0.04R | +0.01R | ±0.23R | 478 / 1,121 |
| BTC | 2018-22 | −0.05R | −0.33R | +0.27R | ±0.19R · beyond | 4,003 / 6,109 |
| BTC | 2023-26 | −0.28R | −0.38R | +0.10R | ±0.12R | 5,757 / 5,209 |
| BTC (CB) | 2018-22 | −0.04R | −0.23R | +0.19R | ±0.16R · beyond | 6,823 / 8,882 |
| BTC (CB) | 2023-26 | −0.19R | −0.30R | +0.10R | ±0.13R | 3,912 / 6,095 |
| Stocks | 2018-22 | 0.00R | 0.00R | 0.00R | ±0.08R | 4,695 / 9,559 |
| Stocks | 2023-26 | −0.05R | −0.10R | +0.04R | ±0.08R | 3,466 / 7,592 |
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.04R | 0.00R | +0.05R | ±0.28R | 190 / 357 |
| NQ | 2023-26 | −0.19R | −0.11R | −0.08R | ±0.30R | 102 / 305 |
| ES | 2018-22 | +0.01R | −0.24R | +0.25R | ±0.38R | 108 / 205 |
| ES | 2023-26 | −0.23R | +0.11R | −0.34R | ±0.42R | 97 / 229 |
| SPY | 2018-22 | +0.14R | −0.04R | +0.18R | ±0.37R | 147 / 265 |
| SPY | 2023-26 | −0.14R | −0.18R | +0.04R | ±0.39R | 82 / 190 |
| BTC | 2018-22 | +0.06R | −0.17R | +0.23R | ±0.37R | 651 / 1,386 |
| BTC | 2023-26 | −0.20R | −0.19R | −0.01R | ±0.30R | 802 / 1,091 |
| BTC (CB) | 2018-22 | +0.05R | −0.14R | +0.19R | ±0.30R | 905 / 1,759 |
| BTC (CB) | 2023-26 | −0.18R | −0.30R | +0.12R | ±0.30R | 558 / 1,208 |
| Stocks | 2018-22 | −0.09R | +0.08R | −0.17R | ±0.17R | 530 / 1,124 |
| Stocks | 2023-26 | −0.15R | −0.02R | −0.12R | ±0.18R | 402 / 1,009 |
Does heavy volume on the breakout confirm the move?
No. Heavy volume on the breakout minute, or on the breakout bar so far, did not separate breaks that ran from breaks that failed. The later-years gaps run from −0.02R to +0.03R on NQ, ES, SPY and five large stocks.
All numbers for this question
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.03R | +0.05R | −0.02R | ±0.06R | 13,849 / 13,849 |
| NQ | 2023-26 | +0.03R | 0.00R | +0.03R | ±0.07R | 8,817 / 11,227 |
| ES | 2018-22 | −0.02R | +0.01R | −0.03R | ±0.09R | 8,193 / 8,193 |
| ES | 2023-26 | −0.01R | −0.02R | +0.02R | ±0.08R | 8,481 / 9,350 |
| SPY | 2018-22 | −0.02R | +0.02R | −0.04R | ±0.07R | 12,656 / 12,656 |
| SPY | 2023-26 | +0.01R | +0.02R | −0.02R | ±0.09R | 7,509 / 9,669 |
| BTC | 2018-22 | −0.11R | −0.24R | +0.13R | ±0.08R · beyond | 37,669 / 37,669 |
| BTC | 2023-26 | −0.20R | −0.31R | +0.10R | ±0.06R · beyond | 44,364 / 43,900 |
| BTC (CB) | 2018-22 | −0.04R | −0.19R | +0.15R | ±0.09R · beyond | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.20R | −0.31R | +0.10R | ±0.07R · beyond | 30,143 / 49,828 |
| Stocks | 2018-22 | +0.04R | 0.00R | +0.04R | ±0.03R · beyond | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.04R | −0.07R | +0.02R | ±0.03R | 41,612 / 56,351 |
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.04R | +0.04R | 0.00R | ±0.07R | 13,849 / 13,849 |
| NQ | 2023-26 | +0.01R | 0.00R | +0.01R | ±0.08R | 9,128 / 10,188 |
| ES | 2018-22 | +0.01R | −0.02R | +0.02R | ±0.10R | 8,193 / 8,193 |
| ES | 2023-26 | −0.02R | −0.03R | +0.01R | ±0.09R | 8,754 / 8,813 |
| SPY | 2018-22 | 0.00R | +0.02R | −0.02R | ±0.08R | 12,656 / 12,656 |
| SPY | 2023-26 | 0.00R | +0.02R | −0.01R | ±0.10R | 8,021 / 8,733 |
| BTC | 2018-22 | −0.09R | −0.27R | +0.18R | ±0.10R · beyond | 37,669 / 37,669 |
| BTC | 2023-26 | −0.19R | −0.35R | +0.16R | ±0.07R · beyond | 47,522 / 40,703 |
| BTC (CB) | 2018-22 | −0.03R | −0.20R | +0.18R | ±0.10R · beyond | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.15R | −0.32R | +0.17R | ±0.08R · beyond | 34,866 / 47,069 |
| Stocks | 2018-22 | +0.03R | 0.00R | +0.03R | ±0.04R | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.05R | −0.08R | +0.03R | ±0.04R | 45,466 / 51,406 |
Do breakouts work better on high-volume days?
No. Breaks taken on busy sessions and quiet sessions finished about the same on every index market and on five large stocks, in both periods.
All numbers for this question
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.04R | +0.05R | −0.01R | ±0.09R | 13,849 / 13,849 |
| NQ | 2023-26 | +0.03R | +0.03R | 0.00R | ±0.12R | 9,194 / 9,465 |
| ES | 2018-22 | 0.00R | −0.01R | +0.02R | ±0.12R | 8,193 / 8,193 |
| ES | 2023-26 | −0.03R | −0.03R | +0.01R | ±0.13R | 9,746 / 8,301 |
| SPY | 2018-22 | −0.02R | +0.03R | −0.05R | ±0.10R | 12,656 / 12,656 |
| SPY | 2023-26 | 0.00R | +0.02R | −0.02R | ±0.12R | 8,436 / 8,399 |
| BTC | 2018-22 | −0.13R | −0.21R | +0.08R | ±0.15R | 37,669 / 37,669 |
| BTC | 2023-26 | −0.25R | −0.28R | +0.03R | ±0.12R | 59,297 / 33,424 |
| BTC (CB) | 2018-22 | −0.06R | −0.14R | +0.08R | ±0.13R | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.19R | −0.34R | +0.14R | ±0.13R · beyond | 34,561 / 46,436 |
| Stocks | 2018-22 | +0.02R | +0.02R | +0.01R | ±0.05R | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.06R | −0.06R | 0.00R | ±0.05R | 47,579 / 49,184 |
Does volume leaning your way help (buying volume on a long, selling volume on a short)?
No. It looked slightly helpful on futures in the early years, then not in the later ones, and SPY went the opposite way. On stocks it did nothing in either period. Once you know whether the setup bar's minutes went up or down, weighting them by volume adds nothing.
All numbers for this question
| Market | Years | Volume your way | Volume against you | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.07R | +0.02R | +0.05R | ±0.04R · beyond | 13,849 / 13,849 |
| NQ | 2023-26 | +0.03R | +0.01R | +0.01R | ±0.05R | 10,494 / 10,248 |
| ES | 2018-22 | +0.02R | −0.02R | +0.04R | ±0.06R | 8,193 / 8,193 |
| ES | 2023-26 | −0.02R | −0.04R | +0.02R | ±0.06R | 9,079 / 9,268 |
| SPY | 2018-22 | 0.00R | +0.01R | −0.01R | ±0.04R | 12,656 / 12,656 |
| SPY | 2023-26 | −0.02R | +0.04R | −0.06R | ±0.06R · beyond | 8,720 / 8,925 |
| BTC | 2018-22 | −0.15R | −0.19R | +0.03R | ±0.04R | 37,669 / 37,669 |
| BTC | 2023-26 | −0.24R | −0.25R | +0.01R | ±0.04R | 46,505 / 41,057 |
| BTC (CB) | 2018-22 | −0.08R | −0.13R | +0.05R | ±0.05R · beyond | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.24R | −0.26R | +0.02R | ±0.05R | 38,286 / 39,768 |
| Stocks | 2018-22 | +0.02R | +0.01R | +0.01R | ±0.02R | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.05R | −0.05R | 0.00R | ±0.02R | 48,685 / 50,306 |
With full timeframe continuity, does high volume add anything?
No. With the 60-minute, daily and weekly bars all on the trade's side, high-volume setups did slightly worse than low-volume ones in all six index market-and-period cells, though none by more than luck explains. On stocks high volume leaned slightly better (+0.03R), also within luck, and the lean disappears before costs.
All numbers for this question
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.03R | +0.09R | −0.06R | ±0.13R | 5,927 / 6,171 |
| NQ | 2023-26 | +0.04R | +0.05R | −0.01R | ±0.18R | 4,159 / 4,563 |
| ES | 2018-22 | −0.02R | +0.07R | −0.10R | ±0.17R | 3,594 / 3,831 |
| ES | 2023-26 | −0.07R | +0.02R | −0.09R | ±0.15R | 3,960 / 4,198 |
| SPY | 2018-22 | 0.00R | +0.02R | −0.02R | ±0.13R | 5,964 / 6,106 |
| SPY | 2023-26 | 0.00R | +0.05R | −0.04R | ±0.16R | 3,765 / 4,060 |
| BTC | 2018-22 | +0.11R | −0.20R | +0.31R | ±0.23R · beyond | 15,682 / 12,379 |
| BTC | 2023-26 | −0.12R | −0.33R | +0.22R | ±0.18R · beyond | 21,497 / 12,592 |
| BTC (CB) | 2018-22 | +0.17R | −0.12R | +0.29R | ±0.22R · beyond | 24,350 / 19,274 |
| BTC (CB) | 2023-26 | −0.06R | −0.28R | +0.22R | ±0.19R · beyond | 15,646 / 15,690 |
| Stocks | 2018-22 | +0.06R | +0.04R | +0.02R | ±0.07R | 28,612 / 24,782 |
| Stocks | 2023-26 | −0.04R | −0.07R | +0.03R | ±0.06R | 21,739 / 20,545 |
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.04R | +0.11R | −0.06R | ±0.10R | 6,079 / 6,274 |
| NQ | 2023-26 | +0.05R | +0.08R | −0.03R | ±0.11R | 4,012 / 5,246 |
| ES | 2018-22 | −0.04R | +0.10R | −0.14R | ±0.13R · beyond | 3,589 / 3,856 |
| ES | 2023-26 | −0.04R | −0.01R | −0.03R | ±0.12R | 3,883 / 4,580 |
| SPY | 2018-22 | −0.03R | +0.03R | −0.06R | ±0.10R | 6,026 / 6,015 |
| SPY | 2023-26 | +0.01R | +0.08R | −0.06R | ±0.14R | 3,667 / 4,509 |
| BTC | 2018-22 | +0.02R | −0.14R | +0.16R | ±0.15R · beyond | 16,547 / 11,555 |
| BTC | 2023-26 | −0.13R | −0.27R | +0.14R | ±0.12R · beyond | 19,904 / 13,951 |
| BTC (CB) | 2018-22 | +0.12R | −0.11R | +0.23R | ±0.15R · beyond | 25,553 / 18,130 |
| BTC (CB) | 2023-26 | −0.14R | −0.29R | +0.15R | ±0.12R · beyond | 14,343 / 15,753 |
| Stocks | 2018-22 | +0.07R | +0.04R | +0.03R | ±0.05R | 29,888 / 24,121 |
| Stocks | 2023-26 | −0.04R | −0.08R | +0.03R | ±0.05R | 21,541 / 21,522 |
Is a 2-2 reversal off a volume spike more reliable?
Not reliably. In the later years spike reversals did a little better on all three index markets and on stocks, but every gap sits inside the luck range, a fresh check on 2026 data did not confirm it, and on stocks spike reversals did clearly worse in 2018-2022.
All numbers for this question
| Market | Years | Spike setup bar | Other 2-2s | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.03R | −0.01R | +0.04R | ±0.10R | 1,134 / 10,542 |
| NQ | 2023-26 | +0.08R | +0.01R | +0.07R | ±0.13R | 441 / 8,116 |
| ES | 2018-22 | −0.03R | −0.04R | +0.01R | ±0.14R | 645 / 6,116 |
| ES | 2023-26 | +0.02R | −0.03R | +0.05R | ±0.15R | 515 / 6,946 |
| SPY | 2018-22 | −0.06R | −0.03R | −0.03R | ±0.10R | 1,040 / 9,568 |
| SPY | 2023-26 | +0.16R | 0.00R | +0.16R | ±0.28R | 461 / 6,944 |
| BTC | 2018-22 | −0.06R | −0.21R | +0.15R | ±0.14R · beyond | 3,208 / 30,968 |
| BTC | 2023-26 | −0.15R | −0.25R | +0.10R | ±0.10R · beyond | 5,666 / 30,343 |
| BTC (CB) | 2018-22 | −0.03R | −0.14R | +0.11R | ±0.13R | 5,034 / 46,099 |
| BTC (CB) | 2023-26 | −0.17R | −0.25R | +0.08R | ±0.13R | 2,527 / 33,245 |
| Stocks | 2018-22 | −0.07R | 0.00R | −0.07R | ±0.05R · beyond | 4,887 / 46,326 |
| Stocks | 2023-26 | −0.02R | −0.05R | +0.04R | ±0.06R | 3,322 / 39,030 |
Does a high-volume break of yesterday's high or low hold?
No, if anything the opposite. High-volume breaks held into the close 4 to 9 points less often than low-volume ones, then went the other way on five symbols the pattern wasn't found on. On five large stocks there was no difference either way.
All numbers for this question
| Market | Years | High volume | Low volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | 57.8% | 61.8% | −4.0 pts | ±7.0 pts | 374 / 374 |
| NQ | 2023-26 | 55.4% | 59.5% | −4.1 pts | ±8.3 pts | 251 / 301 |
| ES | 2018-22 | 60.2% | 69.0% | −8.8 pts | ±8.6 pts · beyond | 226 / 226 |
| ES | 2023-26 | 55.4% | 60.0% | −4.6 pts | ±8.5 pts | 296 / 230 |
| SPY | 2018-22 | 56.8% | 63.4% | −6.6 pts | ±7.0 pts | 377 / 377 |
| SPY | 2023-26 | 54.7% | 58.8% | −4.0 pts | ±8.5 pts | 265 / 274 |
| BTC | 2018-22 | 55.5% | 46.8% | +8.7 pts | ±7.8 pts · beyond | 310 / 310 |
| BTC | 2023-26 | 48.0% | 48.8% | −0.8 pts | ±7.2 pts | 410 / 342 |
| BTC (CB) | 2018-22 | 55.8% | 47.8% | +8.0 pts | ±6.1 pts · beyond | 513 / 513 |
| BTC (CB) | 2023-26 | 49.7% | 47.6% | +2.0 pts | ±9.1 pts | 157 / 510 |
| Stocks | 2018-22 | 59.6% | 59.2% | +0.5 pts | ±3.7 pts | 1,761 / 1,761 |
| Stocks | 2023-26 | 59.4% | 58.3% | +1.1 pts | ±4.0 pts | 1,319 / 1,551 |
When volume is low
The mirror claim: light volume means nobody is behind the move, so it is more likely to fail, or that a quiet pullback is healthy.
Are low-volume breakouts more likely to be fakeouts?
No. Breakouts on the quietest third of breakout minutes reached +1R before the stop 49.6% to 51.3% of the time on NQ, ES and SPY, the same as the busiest third (49.1% to 51.5%). On five large stocks it was 50% to 51% either way. Their average result per trade was the same too.
All numbers for this question
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | 51.4% | 50.0% | +1.4 pts | ±1.8 pts | 11,593 / 10,813 |
| NQ | 2023-26 | 49.9% | 51.5% | −1.6 pts | ±2.3 pts | 9,206 / 6,647 |
| ES | 2018-22 | 51.1% | 49.3% | +1.8 pts | ±2.4 pts | 7,149 / 6,695 |
| ES | 2023-26 | 50.4% | 50.3% | +0.1 pts | ±2.5 pts | 8,015 / 6,672 |
| SPY | 2018-22 | 49.8% | 49.1% | +0.7 pts | ±1.8 pts | 10,897 / 10,424 |
| SPY | 2023-26 | 49.6% | 49.3% | +0.3 pts | ±2.3 pts | 8,111 / 6,000 |
| BTC | 2018-22 | 49.1% | 48.6% | +0.6 pts | ±1.0 pts | 35,762 / 33,847 |
| BTC | 2023-26 | 49.8% | 49.9% | −0.1 pts | ±0.9 pts | 40,991 / 39,733 |
| BTC (CB) | 2018-22 | 49.6% | 49.9% | −0.4 pts | ±0.8 pts | 54,233 / 52,242 |
| BTC (CB) | 2023-26 | 49.8% | 50.7% | −0.9 pts | ±1.0 pts | 46,302 / 27,126 |
| Stocks | 2018-22 | 50.6% | 51.3% | −0.6 pts | ±0.9 pts | 49,253 / 46,677 |
| Stocks | 2023-26 | 50.2% | 50.8% | −0.6 pts | ±1.1 pts | 45,723 / 31,550 |
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.05R | +0.03R | +0.02R | ±0.06R | 13,849 / 13,849 |
| NQ | 2023-26 | 0.00R | +0.03R | −0.03R | ±0.07R | 11,227 / 8,817 |
| ES | 2018-22 | +0.01R | −0.02R | +0.03R | ±0.09R | 8,193 / 8,193 |
| ES | 2023-26 | −0.02R | −0.01R | −0.02R | ±0.08R | 9,350 / 8,481 |
| SPY | 2018-22 | +0.02R | −0.02R | +0.04R | ±0.07R | 12,656 / 12,656 |
| SPY | 2023-26 | +0.02R | +0.01R | +0.02R | ±0.09R | 9,669 / 7,509 |
| BTC | 2018-22 | −0.24R | −0.11R | −0.13R | ±0.08R · beyond | 37,669 / 37,669 |
| BTC | 2023-26 | −0.31R | −0.20R | −0.10R | ±0.06R · beyond | 43,900 / 44,364 |
| BTC (CB) | 2018-22 | −0.19R | −0.04R | −0.15R | ±0.09R · beyond | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.31R | −0.20R | −0.10R | ±0.07R · beyond | 49,828 / 30,143 |
| Stocks | 2018-22 | 0.00R | +0.04R | −0.04R | ±0.03R · beyond | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.07R | −0.04R | −0.02R | ±0.03R | 56,351 / 41,612 |
Does a quiet setup bar mean nobody is behind the move?
No. Breaks from the quietest setup bars averaged −0.03R to +0.03R per trade on NQ, ES and SPY, within luck of breaks from the busiest ones, and reached +1R first just as often. The one exception: on five large stocks in 2023-2026, the quietest setup bars reached +1R first slightly less often (49.6% against 51.0%), a gap that was absent in 2018-2022.
All numbers for this question
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.03R | +0.03R | 0.00R | ±0.08R | 13,849 / 13,849 |
| NQ | 2023-26 | 0.00R | +0.05R | −0.05R | ±0.09R | 9,866 / 9,247 |
| ES | 2018-22 | −0.03R | +0.03R | −0.07R | ±0.10R | 8,193 / 8,193 |
| ES | 2023-26 | −0.03R | −0.02R | −0.01R | ±0.10R | 8,672 / 8,936 |
| SPY | 2018-22 | −0.01R | 0.00R | −0.01R | ±0.08R | 12,656 / 12,656 |
| SPY | 2023-26 | 0.00R | +0.01R | −0.01R | ±0.10R | 8,561 / 7,977 |
| BTC | 2018-22 | −0.27R | −0.07R | −0.20R | ±0.11R · beyond | 37,669 / 37,669 |
| BTC | 2023-26 | −0.34R | −0.21R | −0.14R | ±0.09R · beyond | 36,785 / 52,579 |
| BTC (CB) | 2018-22 | −0.20R | −0.02R | −0.18R | ±0.11R · beyond | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.31R | −0.15R | −0.16R | ±0.10R · beyond | 45,971 / 36,424 |
| Stocks | 2018-22 | +0.01R | +0.02R | −0.01R | ±0.04R | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.08R | −0.03R | −0.05R | ±0.04R · beyond | 49,694 / 46,568 |
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | 50.1% | 50.0% | +0.1 pts | ±1.9 pts | 11,932 / 10,440 |
| NQ | 2023-26 | 49.0% | 52.1% | −3.1 pts | ±2.2 pts · beyond | 8,477 / 6,575 |
| ES | 2018-22 | 49.6% | 50.0% | −0.3 pts | ±2.4 pts | 7,341 / 6,501 |
| ES | 2023-26 | 49.8% | 49.7% | +0.1 pts | ±2.5 pts | 7,686 / 6,789 |
| SPY | 2018-22 | 48.4% | 49.8% | −1.5 pts | ±2.0 pts | 11,204 / 10,026 |
| SPY | 2023-26 | 49.7% | 49.8% | −0.1 pts | ±2.5 pts | 7,498 / 6,065 |
| BTC | 2018-22 | 49.1% | 48.7% | +0.4 pts | ±1.0 pts | 35,981 / 33,504 |
| BTC | 2023-26 | 50.1% | 49.7% | +0.4 pts | ±0.9 pts | 34,525 / 47,039 |
| BTC (CB) | 2018-22 | 49.7% | 49.9% | −0.2 pts | ±0.8 pts | 54,499 / 51,941 |
| BTC (CB) | 2023-26 | 49.7% | 50.6% | −0.8 pts | ±1.0 pts | 42,951 / 32,526 |
| Stocks | 2018-22 | 50.9% | 50.8% | +0.1 pts | ±1.1 pts | 50,794 / 44,820 |
| Stocks | 2023-26 | 49.5% | 51.0% | −1.4 pts | ±1.1 pts · beyond | 41,476 / 34,101 |
Should you skip breakouts on low-volume days?
Not on this evidence. Breaks taken on the quietest sessions finished within about 0.05R per trade of breaks on the busiest sessions, on every index market and on five large stocks, in both periods.
All numbers for this question
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.05R | +0.04R | +0.01R | ±0.09R | 13,849 / 13,849 |
| NQ | 2023-26 | +0.03R | +0.03R | 0.00R | ±0.12R | 9,465 / 9,194 |
| ES | 2018-22 | −0.01R | 0.00R | −0.02R | ±0.12R | 8,193 / 8,193 |
| ES | 2023-26 | −0.03R | −0.03R | −0.01R | ±0.13R | 8,301 / 9,746 |
| SPY | 2018-22 | +0.03R | −0.02R | +0.05R | ±0.10R | 12,656 / 12,656 |
| SPY | 2023-26 | +0.02R | 0.00R | +0.02R | ±0.12R | 8,399 / 8,436 |
| BTC | 2018-22 | −0.21R | −0.13R | −0.08R | ±0.15R | 37,669 / 37,669 |
| BTC | 2023-26 | −0.28R | −0.25R | −0.03R | ±0.12R | 33,424 / 59,297 |
| BTC (CB) | 2018-22 | −0.14R | −0.06R | −0.08R | ±0.13R | 57,678 / 57,678 |
| BTC (CB) | 2023-26 | −0.34R | −0.19R | −0.14R | ±0.13R · beyond | 46,436 / 34,561 |
| Stocks | 2018-22 | +0.02R | +0.02R | −0.01R | ±0.05R | 60,535 / 60,535 |
| Stocks | 2023-26 | −0.06R | −0.06R | 0.00R | ±0.05R | 49,184 / 47,579 |
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | 50.6% | 49.5% | +1.1 pts | ±2.1 pts | 11,655 / 10,765 |
| NQ | 2023-26 | 49.4% | 51.6% | −2.2 pts | ±2.5 pts | 8,007 / 6,907 |
| ES | 2018-22 | 50.1% | 49.1% | +0.9 pts | ±2.7 pts | 7,218 / 6,652 |
| ES | 2023-26 | 49.0% | 50.0% | −1.0 pts | ±2.6 pts | 7,220 / 7,727 |
| SPY | 2018-22 | 49.2% | 49.3% | −0.1 pts | ±2.1 pts | 11,054 / 10,271 |
| SPY | 2023-26 | 49.6% | 49.7% | −0.1 pts | ±2.7 pts | 7,286 / 6,669 |
| BTC | 2018-22 | 49.4% | 49.0% | +0.4 pts | ±1.0 pts | 35,460 / 34,500 |
| BTC | 2023-26 | 49.8% | 50.0% | −0.2 pts | ±1.0 pts | 31,169 / 53,928 |
| BTC (CB) | 2018-22 | 49.6% | 50.2% | −0.6 pts | ±0.8 pts | 53,927 / 53,084 |
| BTC (CB) | 2023-26 | 49.4% | 50.5% | −1.1 pts | ±1.1 pts · beyond | 43,098 / 31,221 |
| Stocks | 2018-22 | 50.7% | 50.9% | −0.2 pts | ±1.1 pts | 49,288 / 46,633 |
| Stocks | 2023-26 | 50.0% | 50.4% | −0.5 pts | ±1.2 pts | 39,721 / 36,644 |
Does low volume on a pullback (inside bar) mean the trend will continue?
No. Inside bars where volume dried up (quietest quarter) broke no better than other inside bars: −0.03R on NQ, +0.09R on ES and −0.07R on SPY and −0.03R on five large stocks in the later years, all inside the luck range.
All numbers for this question
| Market | Years | Volume dried up | Other inside bars | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | +0.04R | +0.02R | +0.02R | ±0.12R | 2,107 / 3,492 |
| NQ | 2023-26 | −0.05R | −0.02R | −0.03R | ±0.15R | 1,488 / 2,595 |
| ES | 2018-22 | −0.07R | −0.04R | −0.04R | ±0.16R | 1,276 / 2,123 |
| ES | 2023-26 | 0.00R | −0.09R | +0.09R | ±0.16R | 1,354 / 2,404 |
| SPY | 2018-22 | 0.00R | +0.05R | −0.04R | ±0.13R | 1,841 / 3,342 |
| SPY | 2023-26 | −0.08R | −0.01R | −0.07R | ±0.15R | 1,221 / 2,359 |
| BTC | 2018-22 | −0.26R | −0.16R | −0.10R | ±0.12R | 6,552 / 13,792 |
| BTC | 2023-26 | −0.35R | −0.25R | −0.11R | ±0.11R | 5,745 / 14,597 |
| BTC (CB) | 2018-22 | −0.20R | −0.08R | −0.12R | ±0.11R · beyond | 9,223 / 22,202 |
| BTC (CB) | 2023-26 | −0.30R | −0.27R | −0.04R | ±0.11R | 6,529 / 13,264 |
| Stocks | 2018-22 | +0.04R | +0.01R | +0.03R | ±0.06R | 11,226 / 19,104 |
| Stocks | 2023-26 | −0.09R | −0.06R | −0.03R | ±0.05R | 8,843 / 16,251 |
Does a low-volume break of yesterday's high or low fail?
No, the reverse. Low-volume breaks of yesterday's high or low held into the close more often than high-volume ones on NQ, ES and SPY (59% to 69% of days against 55% to 60%). The later-years gaps were within luck, the pattern flipped on new symbols, and on five large stocks there was no difference.
All numbers for this question
| Market | Years | Low volume | High volume | Gap | Luck range | Trades (or days) |
|---|---|---|---|---|---|---|
| NQ | 2018-22 | 61.8% | 57.8% | +4.0 pts | ±7.0 pts | 374 / 374 |
| NQ | 2023-26 | 59.5% | 55.4% | +4.1 pts | ±8.3 pts | 301 / 251 |
| ES | 2018-22 | 69.0% | 60.2% | +8.8 pts | ±8.6 pts · beyond | 226 / 226 |
| ES | 2023-26 | 60.0% | 55.4% | +4.6 pts | ±8.5 pts | 230 / 296 |
| SPY | 2018-22 | 63.4% | 56.8% | +6.6 pts | ±7.0 pts | 377 / 377 |
| SPY | 2023-26 | 58.8% | 54.7% | +4.0 pts | ±8.5 pts | 274 / 265 |
| BTC | 2018-22 | 46.8% | 55.5% | −8.7 pts | ±7.8 pts · beyond | 310 / 310 |
| BTC | 2023-26 | 48.8% | 48.0% | +0.8 pts | ±7.2 pts | 342 / 410 |
| BTC (CB) | 2018-22 | 47.8% | 55.8% | −8.0 pts | ±6.1 pts · beyond | 513 / 513 |
| BTC (CB) | 2023-26 | 47.6% | 49.7% | −2.0 pts | ±9.1 pts | 510 / 157 |
| Stocks | 2018-22 | 59.2% | 59.6% | −0.5 pts | ±3.7 pts | 1,761 / 1,761 |
| Stocks | 2023-26 | 58.3% | 59.4% | −1.1 pts | ±4.0 pts | 1,551 / 1,319 |
Every question, every market, on one screen
Each cell is the gap for the side named in the question (2018-22 and 2023-26). A ▲ or ▼ means the gap was bigger than luck, better or worse. A hollow circle means it was within luck. On the index markets almost every cell is hollow, and the few that aren't don't repeat in the other period. The Bitcoin columns are full of arrows, for the reason explained in the next section. The stocks columns have a few, for a smaller dose of the same reason.
| Question | NQNasdaq-100 futures | ESS&P 500 futures | SPYS&P 500 ETF | BTCBitcoin, Binance | StocksFive large stocks (AAPL, MSFT, NVDA, AMZN, TSLA), pooled | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| 2018-22 | 2023-26 | 2018-22 | 2023-26 | 2018-22 | 2023-26 | 2018-22 | 2023-26 | 2018-22 | 2023-26 | |
| When volume is high | ||||||||||
| Does a high-volume setup bar make the break more likely to work? | 0.00R | +0.05R | +0.07R | +0.01R | +0.01R | +0.01R | +0.20R | +0.14R | +0.01R | +0.05R |
| Does heavy volume on the breakout confirm the move? | −0.02R | +0.03R | −0.03R | +0.02R | −0.04R | −0.02R | +0.13R | +0.10R | +0.04R | +0.02R |
| Do breakouts work better on high-volume days? | −0.01R | 0.00R | +0.02R | +0.01R | −0.05R | −0.02R | +0.08R | +0.03R | +0.01R | 0.00R |
| Does volume leaning your way help (buying volume on a long, selling volume on a short)? | +0.05R | +0.01R | +0.04R | +0.02R | −0.01R | −0.06R | +0.03R | +0.01R | +0.01R | 0.00R |
| With full timeframe continuity, does high volume add anything? | −0.06R | −0.01R | −0.10R | −0.09R | −0.02R | −0.04R | +0.31R | +0.22R | +0.02R | +0.03R |
| Is a 2-2 reversal off a volume spike more reliable? | +0.04R | +0.07R | +0.01R | +0.05R | −0.03R | +0.16R | +0.15R | +0.10R | −0.07R | +0.04R |
| Does a high-volume break of yesterday's high or low hold? | −4.0 pts | −4.1 pts | −8.8 pts | −4.6 pts | −6.6 pts | −4.0 pts | +8.7 pts | −0.8 pts | +0.5 pts | +1.1 pts |
| When volume is low | ||||||||||
| Are low-volume breakouts more likely to be fakeouts? | +1.4 pts | −1.6 pts | +1.8 pts | +0.1 pts | +0.7 pts | +0.3 pts | +0.6 pts | −0.1 pts | −0.6 pts | −0.6 pts |
| Does a quiet setup bar mean nobody is behind the move? | 0.00R | −0.05R | −0.07R | −0.01R | −0.01R | −0.01R | −0.20R | −0.14R | −0.01R | −0.05R |
| Should you skip breakouts on low-volume days? | +0.01R | 0.00R | −0.02R | −0.01R | +0.05R | +0.02R | −0.08R | −0.03R | −0.01R | 0.00R |
| Does low volume on a pullback (inside bar) mean the trend will continue? | +0.02R | −0.03R | −0.04R | +0.09R | −0.04R | −0.07R | −0.10R | −0.11R | +0.03R | −0.03R |
| Does a low-volume break of yesterday's high or low fail? | +4.0 pts | +4.1 pts | +8.8 pts | +4.6 pts | +6.6 pts | +4.0 pts | −8.7 pts | +0.8 pts | −0.5 pts | −1.1 pts |
Bitcoin's volume effect was the fees
Every test was run again on Bitcoin, on Binance (2020-2026) and Coinbase (2018-2026). The rules were the same, with a 24-hour day starting at midnight UTC (4 PM PT in winter, 5 PM PT in summer). The written expectation was that nothing would pass. By the pre-set rule, five of the direction tests passed. High-volume breaks lost 0.10 to 0.22R less per trade than low-volume ones, on both exchanges.
The reason is arithmetic, not volume. Crypto fees are a percentage of price, and a quiet setup bar is usually a narrow one. The same fee takes a bigger slice of the risk.
Bitcoin at $60,000, stop $150 away. A 0.10% round-trip fee is $60, which is 0.40R gone before the trade starts.
Same price, stop $400 away. The same $60 fee is only 0.15R.
Switch between the two views. After fees, most gaps sit outside the luck range. Before fees, every one falls inside it.
Two more facts keep this from being an edge. Every group lost money. Plain breakouts on Bitcoin averaged −0.17 to −0.29R per trade in 2023-2026 after fees, and even the high-volume third averaged −0.06 to −0.21R. And "skip narrow setups when fees are a percentage" is a rule about bar size and fees. Volume was only standing in for range.
The before-fee check was added after a first run stopped on a data error, before any result had been read. The pre-registration had already flagged that fees work through stop size.
Single stocks: the same answer, and one pattern that held
Volume is discussed most for stocks, so every test was run again on five of the most traded US stocks: AAPL, MSFT, NVDA, AMZN and TSLA. The window is May 2018 to October 2026, regular hours, with a 0.02% round-trip cost (about 4 cents a share on a $200 stock).
The five were pooled, counting each day once, and each stock was also checked on its own. The pass rule was set before the run. After the Bitcoin result, it also required a gap to survive before costs.
The near miss was the cost again
High-volume setup bars did 0.05R better than quiet ones in 2023-2026, on all five stocks. But a percentage cost takes a bigger bite out of a narrow, quiet bar, as on Bitcoin. Before costs, the gap halves and falls inside luck. In 2018-2022 it was only 0.01R. The switch below shows every test both ways.
Each stock on its own: high-volume setup bars
| Stock | 2018-22, after costs | 2023-26, after costs | 2023-26, before costs |
|---|---|---|---|
| AAPL | 0.00R (±0.08R) | +0.04R (±0.08R) | +0.01R (±0.08R) |
| MSFT | −0.01R (±0.08R) | +0.07R (±0.07R) | +0.04R (±0.07R) |
| NVDA | +0.03R (±0.07R) | +0.02R (±0.08R) | 0.00R (±0.08R) |
| AMZN | +0.02R (±0.08R) | +0.09R (±0.07R) · beyond | +0.07R (±0.07R) |
| TSLA | +0.02R (±0.08R) | +0.03R (±0.07R) | +0.01R (±0.07R) |
| All five | +0.01R (±0.04R) | +0.05R (±0.04R) · beyond | +0.02R (±0.04R) |
The lead: busy days and yesterday's high or low
One pattern in the stock data was steady, though it was not one of the pre-set questions. When a stock broke yesterday's high or low on a busy day (session volume high for the time of day), the break held into the close about 64% of the time, against about 56% on quiet days. That held in both periods and on all five stocks. It fits the "stocks in play" idea: on days a stock is busy, its moves carry further. It is about how far a move goes on a busy day, not which way, and it did not show up clearly on NQ, ES or SPY.
Checking it fairly. Because it was found by looking, it did not count until it repeated on stocks it was not found on. The test was written down first (pass: busy days ahead overall, with at least 4 of 5 new stocks agreeing) and run on META, AMD, GOOGL, AVGO and COST. It held. Busy-day breaks of yesterday's high or low closed beyond the level 63% of the time, against 55% on quiet days. That is a gap of 8 points against a luck range of ±2.7 points, and all five new stocks pointed the same way (AMD +10, GOOGL +9, AVGO +10, COST +6 points, and META +2 on data from mid-2022 only, since it traded under the symbol FB before that).
What it is, and what it isn't. It uses only volume known before the break, so it is not hindsight. But it describes how far a move carries on a busy day, the volume-and-volatility link again, not a buy or sell signal. It has not been tested as a trade after costs. It did not show clearly on NQ, ES or SPY, which fits the idea that it is about a single stock being "in play" rather than the whole market being busy.
Each stock on its own
| Stock | 2018-22 | 2023-26 |
|---|---|---|
| AAPL | 63% vs 52% | 63% vs 53% |
| MSFT | 65% vs 53% | 63% vs 56% |
| NVDA | 65% vs 54% | 64% vs 53% |
| AMZN | 65% vs 61% | 61% vs 58% |
| TSLA | 64% vs 58% | 68% vs 58% |
| All five | 64% vs 56% | 64% vs 56% |
One limit on the stock data. The volume here is trades on the Nasdaq exchange only, not the whole market. Dark pools and other off-exchange venues handle a large share of US stock volume, and they are not in these numbers. Relative volume is a ratio against the same stock's own history, so a steady venue share cancels out. Shifts in where trades happen do not. See what was not tested.
What volume is good for: how far, not which way
Busy markets move more. That is the oldest result about volume, and it held here. The question is whether volume adds anything to what recent price ranges already tell you, and whether that changes a decision.
Forecasting the day's range at the open: how much more accurate the forecast got with prior-day and overnight volume added to a price-only forecast (2023-2026).
Futures gain because of the overnight session: a busy night means a wider day, beyond what the overnight range already says. SPY and Bitcoin have no separate overnight session, and prior-day volume alone added nothing.
Did it change a decision? No.
Sizing a breakout system
Sizing MES breakout trades by the volume-aided range forecast did worse than sizing by price alone on 2023-2026: −0.78 against −0.50 ticks per contract (1,240 trades).
Selling SPY 0DTE straddles
Selling only on days with a low forecast range, at 7:00 AM PT (10:00 ET), did no better with volume than without, and neither beat simply selling every day (684 sessions).
Holding vs taking profit
Holding a trade to the close when a big range was forecast, and taking +1R otherwise, improved by 0.002 to 0.006R per trade with volume added: too small to matter, on every market.
Exiting on a volume spike cost money
Same breakouts, managed minute by minute. The tests covered exiting on a volume spike (three times normal), with the trade or against it, and using volume to pick a wider or tighter stop.
Spike exits lost to holding
Cutting a trade on a volume spike, in either direction, cost 0.02 to 0.05R per trade compared with holding to the stop or the close.
No better than price spikes
Exiting on a volume spike did no better than exiting on an unusually big price bar, which needs no volume data at all.
Volume didn't pick the stop
Whether a wider or tighter stop helped did not depend on breakout volume (0 of 7 exit and stop tests passed on ES and SPY).
What was not tested, and why it might matter
This study covers plain bar volume, the number under every candle. A null result here says nothing about richer kinds of volume data. These are the gaps.
Dark pools and off-exchange trades
A large share of US stock volume trades away from the exchanges, in dark pools and with wholesalers, and is reported to the tape afterwards. The stock and SPY volume here came from single exchanges: Nasdaq for the stocks, NYSE Arca for SPY before April 2026. Off-exchange volume is not in it at all. Block prints, which some traders read as institutional intent, were not studied. Relative volume is a ratio against the same symbol's history, so a steady venue share cancels out, but it is not the full tape. Futures and Bitcoin differ here. CME futures trade on one exchange, and each Bitcoin exchange was tested on its own.
Order flow: delta, footprint, bid/ask
Whether trades hit the bid or lifted the offer is different information from how many traded. A rough version (volume on up minutes against down minutes) added nothing beyond price. True order flow was not tested.
Volume profile and volume at price
Levels where a lot of volume traded (high-volume nodes, value areas) are a different idea from how busy a bar was. Not tested.
Picking which stocks to trade, and smaller stocks
Ten of the largest, most traded US stocks were tested one at a time. Published research that finds volume useful is mostly about choosing which stocks to trade on a given day ("stocks in play" on unusual relative volume) from a list of thousands. That is a different question, and small and mid-cap stocks, earnings days as a group, and premarket volume were not tested.
Options volume and unusual activity
Not tested.
Overnight futures, and daily or weekly setups
Index signals here are regular-hours, intraday (15 to 60-minute bars). Overnight futures sessions and daily or weekly breakouts were not tested.
Safeguards against false positives
- Written down first. Each round's questions, pass rules and data were committed to a public log before its results were run. Nine rounds: direction, range and exits, a forward check, new symbols, published claims, decisions, Bitcoin, single stocks, and a confirmation on five more stocks.
- One rule to pass, set in advance. The gap had to point the same way in both periods, be well outside the luck range in 2023-2026 after correcting for running nine tests at once, and point the same way on the other markets.
- Real fills. Entry is the next 1-minute open after the signal, never the signal price, and stops and exits are checked minute by minute on real (unadjusted) prices, after costs: 0.5 point round trip on NQ and ES, $0.02 a share on SPY, 0.10% on Bitcoin, 0.02% on stocks.
- Days count together. Trades on the same day tend to win or lose together, so the luck ranges treat each day as one unit. That makes them wider, and harder to beat, than counting every trade separately.
- Ideas found by looking were re-tested. Four patterns that looked steady after round 1 were checked on fresh 2026 data. None held up. The closest, high-volume breaks of yesterday's high or low failing more, then reversed on five new symbols.
- A bug was found and fixed. Rebuilding the code for public release showed that the first SPY runs left a timeframe-continuity value unset for trades in the last half hour (12:30 to 1:00 PM PT). The corrected numbers are shown. No conclusion changed. NQ and ES were not affected and reproduce exactly.
The technical version
Relative volume = volume against the median of the same minutes over the prior 20 sessions, for the setup bar (C1), the trigger minute, the forming bar to the trigger, and the session to the trigger. Terciles cut on 2018-2022 within each timeframe. Signed share = (up-minute volume minus down-minute volume) / total, in the trade's direction. Spike = top 10% C1 RVOL. Dry-up = bottom 25%. Timeframe continuity = price on the trade's side of the 60m, D and W opens. Stops narrower than 0.05 ATR dropped. Futures: front quarterly contract until 00:00 ET on the Tuesday of expiration week, three sessions before each switch dropped. Luck range = ±1.96 session-clustered standard errors. Pass rule on the primary market (NQ, and Binance for Bitcoin): same sign both periods, holdout |t| ≥ 2, Holm-corrected within-timeframe-by-year permutation p < 0.05 across the nine direction tests, same sign on the other markets. Stocks: Nasdaq-exchange (XNAS ITCH) 1-minute bars, split-adjusted, pooled with one cluster per date. Pass also required the pooled before-cost gap to have the same sign with |t| ≥ 2 and at least 4 of 5 stocks to agree. Range forecasts: holdout mean squared error of log range against a price-only model.
Questions a skeptic would ask
- Isn't volume supposed to matter only with a real signal and timeframe continuity?
- That is how it was tested. Every trade here is a Strat signal (an in-force break, 2-1-2, 3-1-2, a 2-2 reversal or an inside-bar break), and two tests added full continuity on the 60-minute, daily and weekly. With continuity, high volume did slightly worse, not better. As a heads-up that the day may be wide, volume carries a little information. As a filter on the signal, it added nothing.
- Does high volume confirm a breakout?
- Not in this data. On NQ and ES futures and SPY from 2018 to 2026, breakouts with heavy volume on the setup bar, the breakout minute or the session finished about the same as breakouts on light volume, with gaps inside what luck alone produces.
- Are low-volume breakouts more likely to be fakeouts?
- No. The quietest third of breakouts reached +1R before the stop about as often as the busiest third, near 50% on every index market, and averaged the same result.
- Does low volume on a pullback mean the trend will continue?
- Not in this data. Inside bars where volume dried up broke no better than other inside bars. With timeframe continuity, a quiet setup bar leaned slightly better across 2018-2026 but was within luck everywhere and flipped on fresh 2026 data.
- Maybe it works on a different timeframe or market?
- The tests covered 15, 30 and 60-minute bars separately, two futures markets, an ETF, Bitcoin on two exchanges and ten large stocks. The answer was the same on each. Daily and weekly setups, small stocks, picking stocks by volume, and overnight futures were not tested. See what was not tested.
- Doesn't everyone know volume confirms moves? Some studies found it.
- The studies that find volume useful mostly pick among many stocks on a given day, which was not tested here. Two published claims were testable. The first half-hour predicting the last half-hour more on busy days did not hold. Index returns reversing more after high-volume days partly held on daily data, not intraday. Others who measured volume confirmation and found no consistent relationship match this result.
- What is trading volume good for, then?
- Forecasting how big the move or the day may be. Volume improved range forecasts by about 2-4% on futures, mostly from overnight volume, but that did not change a sizing or premium-selling decision in these tests.
- Does volume work on Bitcoin?
- No. On Binance and Coinbase, high-volume breaks lost less money after a 0.10% fee, but only because the fee costs narrow, quiet setups more in R. Before fees the gaps vanished, and every group still lost money.
- Does volume work on individual stocks?
- Not as a direction signal on large stocks. On AAPL, MSFT, NVDA, AMZN and TSLA from 2018 to 2026, 0 of 9 tests passed, and the near miss came from trading costs, not volume. One pattern held up on five other stocks: breaks of yesterday's high or low held into the close more often on busy days (about 63% against 55%), a sign of how far a move carries on a busy day rather than a direction signal.
- Doesn't dark-pool volume change this for stocks?
- It might. It was not tested. The stock volume here is one exchange's trades, not the full tape, so off-exchange and dark-pool volume is missing. Relative volume compares a stock with its own history, which cancels a steady venue share, but block prints and shifts between venues were not studied.
Reproduce the results
The code is public in 345-strategies/strat-enrichment, folder volume/. The market data is licensed and can't be shared, so bring your own 1-minute bars. They cost a few dollars from a vendor such as Databento, and Bitcoin is free from Binance. Fed the same bars, the code reproduces the NQ and ES tables digit for digit. All results on this page are also available as JSON and as plain text.
1. Install
git clone https://github.com/345-strategies/strat-enrichment
cd strat-enrichment
pip install -e ".[dev]" databento
pytest tests/test_volume.py # runs the whole study on synthetic bars2. Get 1-minute bars
python - <<'EOF'
import databento as db
c = db.Historical() # reads DATABENTO_API_KEY
for root, start in (("NQ", "2018-01-01"), ("ES", "2019-12-01")):
c.timeseries.get_range(dataset="GLBX.MDP3", schema="ohlcv-1m", stype_in="parent",
symbols=[f"{root}.FUT"], start=start, end="2026-09-23").to_file(f"{root.lower()}_raw.dbn.zst")
EOF
python volume/prep_futures.py NQ data/nq.parquet nq_raw.dbn.zst --end 2026-09-22
python volume/prep_futures.py ES data/es.parquet es_raw.dbn.zst --start 2020-01-01 --end 2026-05-15
python volume/prep_stocks.py data/spy.parquet spy_arca.dbn.zst --start 2018-05-01 --end 2026-04-21
python volume/prep_stocks.py data/spyfwd.parquet spy_fwd.csv --start 2026-05-08 --end 2026-10-19SPY from 2018: NYSE Arca bars (ARCX.PILLAR) work for prices and volume. The published runs used consolidated prices with Arca volume. To match, pass consolidated bars as the file and Arca bars with --volume-from. The forward files start May 8, 2026 because relative volume needs 20 prior sessions.
3. Run the index rounds
python volume/run.py data/ results/4. Bitcoin, free data
python volume/fetch_binance.py BTCUSDT 2020-01 2026-05 raw/binance/
python volume/prep_crypto.py data/btc.parquet raw/binance/*.zip --start 2020-01-01 --end 2026-05-04
python volume/prep_crypto.py data/btccb.parquet coinbase_btcusd_1m.csv --start 2018-01-01 --end 2026-04-11
python volume/volstudy.py data/btc.parquet btc results/work --market crypto
python volume/volstudy.py data/btccb.parquet btccb results/work --market crypto
cd volume
python analyze_btc.py ../results/work ../results/RESULTS_ROUND7_BTC.md
python lit.py ../results/work ../results/RESULTS_ROUND7_BTC_LIT.md btc btccb5. Stocks
python - <<'EOF'
import databento as db
c = db.Historical()
for s in ("AAPL", "MSFT", "NVDA", "AMZN", "TSLA"):
c.timeseries.get_range(dataset="XNAS.ITCH", schema="ohlcv-1m", symbols=[s],
start="2018-05-01", end="2026-10-24").to_file(f"{s.lower()}.dbn.zst")
EOF
python volume/prep_stocks.py data/aapl.parquet aapl.dbn.zst --start 2018-05-01 --end 2026-10-23 --splits 2020-08-31:4
python volume/prep_stocks.py data/msft.parquet msft.dbn.zst --start 2018-05-01 --end 2026-10-23
python volume/prep_stocks.py data/nvda.parquet nvda.dbn.zst --start 2018-05-01 --end 2026-10-23 --splits 2021-07-20:4,2024-06-10:10
python volume/prep_stocks.py data/amzn.parquet amzn.dbn.zst --start 2018-05-01 --end 2026-10-23 --splits 2022-06-06:20
python volume/prep_stocks.py data/tsla.parquet tsla.dbn.zst --start 2018-05-01 --end 2026-10-23 --splits 2020-08-31:5,2022-08-25:3
for s in aapl msft nvda amzn tsla; do
python volume/volstudy.py data/$s.parquet $s results/work --market stocks --cost-pct 0.0002
done
cd volume
python analyze_stocks.py ../results/work ../results/RESULTS_ROUND8_STOCKS.md aapl msft nvda amzn tslaFive stocks for eight and a half years cost about $5 in Databento credit. --splits divides earlier prices by each split ratio (and multiplies volume), so a split doesn't look like a crash.
Expect the last digit or two to differ with bars pulled fresh from a vendor. The conclusions should not move. If one does, please open an issue. Not reproducible from public code: the sizing and straddle decisions, because that breakout system's trades and the option quotes are not public.