345 Strategies
Research · Volume

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.
4 kinds of market
NQ and ES futures, SPY, Bitcoin on two exchanges, and ten large US stocks
2018-2026
plus a fresh 2026 window nothing was tuned on
1-minute fills
every entry, stop and exit checked minute by minute, after costs
0 of 13
volume ideas held up as a direction signal on the index markets, and 0 of 9 on stocks

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
setup bar high setup bar low = stop Setup bar Next bar breaks out entry: next 1-minute openafter a 1-minute close above the high 1R= risk

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.

High volumeLow volumeEverything elseLuck range

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
Every break: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.03R+0.03R0.00R±0.08R13,849 / 13,849
NQ2023-26+0.05R0.00R+0.05R±0.09R9,247 / 9,866
ES2018-22+0.03R−0.03R+0.07R±0.10R8,193 / 8,193
ES2023-26−0.02R−0.03R+0.01R±0.10R8,936 / 8,672
SPY2018-220.00R−0.01R+0.01R±0.08R12,656 / 12,656
SPY2023-26+0.01R0.00R+0.01R±0.10R7,977 / 8,561
BTC2018-22−0.07R−0.27R+0.20R±0.11R · beyond37,669 / 37,669
BTC2023-26−0.21R−0.34R+0.14R±0.09R · beyond52,579 / 36,785
BTC (CB)2018-22−0.02R−0.20R+0.18R±0.11R · beyond57,678 / 57,678
BTC (CB)2023-26−0.15R−0.31R+0.16R±0.10R · beyond36,424 / 45,971
Stocks2018-22+0.02R+0.01R+0.01R±0.04R60,535 / 60,535
Stocks2023-26−0.03R−0.08R+0.05R±0.04R · beyond46,568 / 49,694
2-1-2 only: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22−0.01R+0.04R−0.06R±0.14R1,011 / 1,983
NQ2023-260.00R−0.01R+0.01R±0.21R530 / 1,433
ES2018-22+0.07R−0.06R+0.13R±0.22R607 / 1,187
ES2023-26−0.10R0.00R−0.10R±0.20R561 / 1,331
SPY2018-22+0.05R0.00R+0.05R±0.16R936 / 1,666
SPY2023-26−0.04R−0.04R+0.01R±0.23R478 / 1,121
BTC2018-22−0.05R−0.33R+0.27R±0.19R · beyond4,003 / 6,109
BTC2023-26−0.28R−0.38R+0.10R±0.12R5,757 / 5,209
BTC (CB)2018-22−0.04R−0.23R+0.19R±0.16R · beyond6,823 / 8,882
BTC (CB)2023-26−0.19R−0.30R+0.10R±0.13R3,912 / 6,095
Stocks2018-220.00R0.00R0.00R±0.08R4,695 / 9,559
Stocks2023-26−0.05R−0.10R+0.04R±0.08R3,466 / 7,592
3-1-2 only: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.04R0.00R+0.05R±0.28R190 / 357
NQ2023-26−0.19R−0.11R−0.08R±0.30R102 / 305
ES2018-22+0.01R−0.24R+0.25R±0.38R108 / 205
ES2023-26−0.23R+0.11R−0.34R±0.42R97 / 229
SPY2018-22+0.14R−0.04R+0.18R±0.37R147 / 265
SPY2023-26−0.14R−0.18R+0.04R±0.39R82 / 190
BTC2018-22+0.06R−0.17R+0.23R±0.37R651 / 1,386
BTC2023-26−0.20R−0.19R−0.01R±0.30R802 / 1,091
BTC (CB)2018-22+0.05R−0.14R+0.19R±0.30R905 / 1,759
BTC (CB)2023-26−0.18R−0.30R+0.12R±0.30R558 / 1,208
Stocks2018-22−0.09R+0.08R−0.17R±0.17R530 / 1,124
Stocks2023-26−0.15R−0.02R−0.12R±0.18R402 / 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
The breakout minute: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.03R+0.05R−0.02R±0.06R13,849 / 13,849
NQ2023-26+0.03R0.00R+0.03R±0.07R8,817 / 11,227
ES2018-22−0.02R+0.01R−0.03R±0.09R8,193 / 8,193
ES2023-26−0.01R−0.02R+0.02R±0.08R8,481 / 9,350
SPY2018-22−0.02R+0.02R−0.04R±0.07R12,656 / 12,656
SPY2023-26+0.01R+0.02R−0.02R±0.09R7,509 / 9,669
BTC2018-22−0.11R−0.24R+0.13R±0.08R · beyond37,669 / 37,669
BTC2023-26−0.20R−0.31R+0.10R±0.06R · beyond44,364 / 43,900
BTC (CB)2018-22−0.04R−0.19R+0.15R±0.09R · beyond57,678 / 57,678
BTC (CB)2023-26−0.20R−0.31R+0.10R±0.07R · beyond30,143 / 49,828
Stocks2018-22+0.04R0.00R+0.04R±0.03R · beyond60,535 / 60,535
Stocks2023-26−0.04R−0.07R+0.02R±0.03R41,612 / 56,351
The breakout bar so far: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.04R+0.04R0.00R±0.07R13,849 / 13,849
NQ2023-26+0.01R0.00R+0.01R±0.08R9,128 / 10,188
ES2018-22+0.01R−0.02R+0.02R±0.10R8,193 / 8,193
ES2023-26−0.02R−0.03R+0.01R±0.09R8,754 / 8,813
SPY2018-220.00R+0.02R−0.02R±0.08R12,656 / 12,656
SPY2023-260.00R+0.02R−0.01R±0.10R8,021 / 8,733
BTC2018-22−0.09R−0.27R+0.18R±0.10R · beyond37,669 / 37,669
BTC2023-26−0.19R−0.35R+0.16R±0.07R · beyond47,522 / 40,703
BTC (CB)2018-22−0.03R−0.20R+0.18R±0.10R · beyond57,678 / 57,678
BTC (CB)2023-26−0.15R−0.32R+0.17R±0.08R · beyond34,866 / 47,069
Stocks2018-22+0.03R0.00R+0.03R±0.04R60,535 / 60,535
Stocks2023-26−0.05R−0.08R+0.03R±0.04R45,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
Session volume so far: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.04R+0.05R−0.01R±0.09R13,849 / 13,849
NQ2023-26+0.03R+0.03R0.00R±0.12R9,194 / 9,465
ES2018-220.00R−0.01R+0.02R±0.12R8,193 / 8,193
ES2023-26−0.03R−0.03R+0.01R±0.13R9,746 / 8,301
SPY2018-22−0.02R+0.03R−0.05R±0.10R12,656 / 12,656
SPY2023-260.00R+0.02R−0.02R±0.12R8,436 / 8,399
BTC2018-22−0.13R−0.21R+0.08R±0.15R37,669 / 37,669
BTC2023-26−0.25R−0.28R+0.03R±0.12R59,297 / 33,424
BTC (CB)2018-22−0.06R−0.14R+0.08R±0.13R57,678 / 57,678
BTC (CB)2023-26−0.19R−0.34R+0.14R±0.13R · beyond34,561 / 46,436
Stocks2018-22+0.02R+0.02R+0.01R±0.05R60,535 / 60,535
Stocks2023-26−0.06R−0.06R0.00R±0.05R47,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
Setup bar: average result per trade, R
MarketYearsVolume your wayVolume against youGapLuck rangeTrades (or days)
NQ2018-22+0.07R+0.02R+0.05R±0.04R · beyond13,849 / 13,849
NQ2023-26+0.03R+0.01R+0.01R±0.05R10,494 / 10,248
ES2018-22+0.02R−0.02R+0.04R±0.06R8,193 / 8,193
ES2023-26−0.02R−0.04R+0.02R±0.06R9,079 / 9,268
SPY2018-220.00R+0.01R−0.01R±0.04R12,656 / 12,656
SPY2023-26−0.02R+0.04R−0.06R±0.06R · beyond8,720 / 8,925
BTC2018-22−0.15R−0.19R+0.03R±0.04R37,669 / 37,669
BTC2023-26−0.24R−0.25R+0.01R±0.04R46,505 / 41,057
BTC (CB)2018-22−0.08R−0.13R+0.05R±0.05R · beyond57,678 / 57,678
BTC (CB)2023-26−0.24R−0.26R+0.02R±0.05R38,286 / 39,768
Stocks2018-22+0.02R+0.01R+0.01R±0.02R60,535 / 60,535
Stocks2023-26−0.05R−0.05R0.00R±0.02R48,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
Setup bar volume: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.03R+0.09R−0.06R±0.13R5,927 / 6,171
NQ2023-26+0.04R+0.05R−0.01R±0.18R4,159 / 4,563
ES2018-22−0.02R+0.07R−0.10R±0.17R3,594 / 3,831
ES2023-26−0.07R+0.02R−0.09R±0.15R3,960 / 4,198
SPY2018-220.00R+0.02R−0.02R±0.13R5,964 / 6,106
SPY2023-260.00R+0.05R−0.04R±0.16R3,765 / 4,060
BTC2018-22+0.11R−0.20R+0.31R±0.23R · beyond15,682 / 12,379
BTC2023-26−0.12R−0.33R+0.22R±0.18R · beyond21,497 / 12,592
BTC (CB)2018-22+0.17R−0.12R+0.29R±0.22R · beyond24,350 / 19,274
BTC (CB)2023-26−0.06R−0.28R+0.22R±0.19R · beyond15,646 / 15,690
Stocks2018-22+0.06R+0.04R+0.02R±0.07R28,612 / 24,782
Stocks2023-26−0.04R−0.07R+0.03R±0.06R21,739 / 20,545
Breakout minute volume: average result per trade, R
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-22+0.04R+0.11R−0.06R±0.10R6,079 / 6,274
NQ2023-26+0.05R+0.08R−0.03R±0.11R4,012 / 5,246
ES2018-22−0.04R+0.10R−0.14R±0.13R · beyond3,589 / 3,856
ES2023-26−0.04R−0.01R−0.03R±0.12R3,883 / 4,580
SPY2018-22−0.03R+0.03R−0.06R±0.10R6,026 / 6,015
SPY2023-26+0.01R+0.08R−0.06R±0.14R3,667 / 4,509
BTC2018-22+0.02R−0.14R+0.16R±0.15R · beyond16,547 / 11,555
BTC2023-26−0.13R−0.27R+0.14R±0.12R · beyond19,904 / 13,951
BTC (CB)2018-22+0.12R−0.11R+0.23R±0.15R · beyond25,553 / 18,130
BTC (CB)2023-26−0.14R−0.29R+0.15R±0.12R · beyond14,343 / 15,753
Stocks2018-22+0.07R+0.04R+0.03R±0.05R29,888 / 24,121
Stocks2023-26−0.04R−0.08R+0.03R±0.05R21,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
2-2 reversals: average result per trade, R
MarketYearsSpike setup barOther 2-2sGapLuck rangeTrades (or days)
NQ2018-22+0.03R−0.01R+0.04R±0.10R1,134 / 10,542
NQ2023-26+0.08R+0.01R+0.07R±0.13R441 / 8,116
ES2018-22−0.03R−0.04R+0.01R±0.14R645 / 6,116
ES2023-26+0.02R−0.03R+0.05R±0.15R515 / 6,946
SPY2018-22−0.06R−0.03R−0.03R±0.10R1,040 / 9,568
SPY2023-26+0.16R0.00R+0.16R±0.28R461 / 6,944
BTC2018-22−0.06R−0.21R+0.15R±0.14R · beyond3,208 / 30,968
BTC2023-26−0.15R−0.25R+0.10R±0.10R · beyond5,666 / 30,343
BTC (CB)2018-22−0.03R−0.14R+0.11R±0.13R5,034 / 46,099
BTC (CB)2023-26−0.17R−0.25R+0.08R±0.13R2,527 / 33,245
Stocks2018-22−0.07R0.00R−0.07R±0.05R · beyond4,887 / 46,326
Stocks2023-26−0.02R−0.05R+0.04R±0.06R3,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
Yesterday's high or low: share of days that closed beyond the level, %
MarketYearsHigh volumeLow volumeGapLuck rangeTrades (or days)
NQ2018-2257.8%61.8%−4.0 pts±7.0 pts374 / 374
NQ2023-2655.4%59.5%−4.1 pts±8.3 pts251 / 301
ES2018-2260.2%69.0%−8.8 pts±8.6 pts · beyond226 / 226
ES2023-2655.4%60.0%−4.6 pts±8.5 pts296 / 230
SPY2018-2256.8%63.4%−6.6 pts±7.0 pts377 / 377
SPY2023-2654.7%58.8%−4.0 pts±8.5 pts265 / 274
BTC2018-2255.5%46.8%+8.7 pts±7.8 pts · beyond310 / 310
BTC2023-2648.0%48.8%−0.8 pts±7.2 pts410 / 342
BTC (CB)2018-2255.8%47.8%+8.0 pts±6.1 pts · beyond513 / 513
BTC (CB)2023-2649.7%47.6%+2.0 pts±9.1 pts157 / 510
Stocks2018-2259.6%59.2%+0.5 pts±3.7 pts1,761 / 1,761
Stocks2023-2659.4%58.3%+1.1 pts±4.0 pts1,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
Reached +1R before the stop: share of trades reaching +1R before the stop, %
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-2251.4%50.0%+1.4 pts±1.8 pts11,593 / 10,813
NQ2023-2649.9%51.5%−1.6 pts±2.3 pts9,206 / 6,647
ES2018-2251.1%49.3%+1.8 pts±2.4 pts7,149 / 6,695
ES2023-2650.4%50.3%+0.1 pts±2.5 pts8,015 / 6,672
SPY2018-2249.8%49.1%+0.7 pts±1.8 pts10,897 / 10,424
SPY2023-2649.6%49.3%+0.3 pts±2.3 pts8,111 / 6,000
BTC2018-2249.1%48.6%+0.6 pts±1.0 pts35,762 / 33,847
BTC2023-2649.8%49.9%−0.1 pts±0.9 pts40,991 / 39,733
BTC (CB)2018-2249.6%49.9%−0.4 pts±0.8 pts54,233 / 52,242
BTC (CB)2023-2649.8%50.7%−0.9 pts±1.0 pts46,302 / 27,126
Stocks2018-2250.6%51.3%−0.6 pts±0.9 pts49,253 / 46,677
Stocks2023-2650.2%50.8%−0.6 pts±1.1 pts45,723 / 31,550
Average result per trade: average result per trade, R
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-22+0.05R+0.03R+0.02R±0.06R13,849 / 13,849
NQ2023-260.00R+0.03R−0.03R±0.07R11,227 / 8,817
ES2018-22+0.01R−0.02R+0.03R±0.09R8,193 / 8,193
ES2023-26−0.02R−0.01R−0.02R±0.08R9,350 / 8,481
SPY2018-22+0.02R−0.02R+0.04R±0.07R12,656 / 12,656
SPY2023-26+0.02R+0.01R+0.02R±0.09R9,669 / 7,509
BTC2018-22−0.24R−0.11R−0.13R±0.08R · beyond37,669 / 37,669
BTC2023-26−0.31R−0.20R−0.10R±0.06R · beyond43,900 / 44,364
BTC (CB)2018-22−0.19R−0.04R−0.15R±0.09R · beyond57,678 / 57,678
BTC (CB)2023-26−0.31R−0.20R−0.10R±0.07R · beyond49,828 / 30,143
Stocks2018-220.00R+0.04R−0.04R±0.03R · beyond60,535 / 60,535
Stocks2023-26−0.07R−0.04R−0.02R±0.03R56,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
Average result per trade: average result per trade, R
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-22+0.03R+0.03R0.00R±0.08R13,849 / 13,849
NQ2023-260.00R+0.05R−0.05R±0.09R9,866 / 9,247
ES2018-22−0.03R+0.03R−0.07R±0.10R8,193 / 8,193
ES2023-26−0.03R−0.02R−0.01R±0.10R8,672 / 8,936
SPY2018-22−0.01R0.00R−0.01R±0.08R12,656 / 12,656
SPY2023-260.00R+0.01R−0.01R±0.10R8,561 / 7,977
BTC2018-22−0.27R−0.07R−0.20R±0.11R · beyond37,669 / 37,669
BTC2023-26−0.34R−0.21R−0.14R±0.09R · beyond36,785 / 52,579
BTC (CB)2018-22−0.20R−0.02R−0.18R±0.11R · beyond57,678 / 57,678
BTC (CB)2023-26−0.31R−0.15R−0.16R±0.10R · beyond45,971 / 36,424
Stocks2018-22+0.01R+0.02R−0.01R±0.04R60,535 / 60,535
Stocks2023-26−0.08R−0.03R−0.05R±0.04R · beyond49,694 / 46,568
Reached +1R before the stop: share of trades reaching +1R before the stop, %
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-2250.1%50.0%+0.1 pts±1.9 pts11,932 / 10,440
NQ2023-2649.0%52.1%−3.1 pts±2.2 pts · beyond8,477 / 6,575
ES2018-2249.6%50.0%−0.3 pts±2.4 pts7,341 / 6,501
ES2023-2649.8%49.7%+0.1 pts±2.5 pts7,686 / 6,789
SPY2018-2248.4%49.8%−1.5 pts±2.0 pts11,204 / 10,026
SPY2023-2649.7%49.8%−0.1 pts±2.5 pts7,498 / 6,065
BTC2018-2249.1%48.7%+0.4 pts±1.0 pts35,981 / 33,504
BTC2023-2650.1%49.7%+0.4 pts±0.9 pts34,525 / 47,039
BTC (CB)2018-2249.7%49.9%−0.2 pts±0.8 pts54,499 / 51,941
BTC (CB)2023-2649.7%50.6%−0.8 pts±1.0 pts42,951 / 32,526
Stocks2018-2250.9%50.8%+0.1 pts±1.1 pts50,794 / 44,820
Stocks2023-2649.5%51.0%−1.4 pts±1.1 pts · beyond41,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
Average result per trade: average result per trade, R
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-22+0.05R+0.04R+0.01R±0.09R13,849 / 13,849
NQ2023-26+0.03R+0.03R0.00R±0.12R9,465 / 9,194
ES2018-22−0.01R0.00R−0.02R±0.12R8,193 / 8,193
ES2023-26−0.03R−0.03R−0.01R±0.13R8,301 / 9,746
SPY2018-22+0.03R−0.02R+0.05R±0.10R12,656 / 12,656
SPY2023-26+0.02R0.00R+0.02R±0.12R8,399 / 8,436
BTC2018-22−0.21R−0.13R−0.08R±0.15R37,669 / 37,669
BTC2023-26−0.28R−0.25R−0.03R±0.12R33,424 / 59,297
BTC (CB)2018-22−0.14R−0.06R−0.08R±0.13R57,678 / 57,678
BTC (CB)2023-26−0.34R−0.19R−0.14R±0.13R · beyond46,436 / 34,561
Stocks2018-22+0.02R+0.02R−0.01R±0.05R60,535 / 60,535
Stocks2023-26−0.06R−0.06R0.00R±0.05R49,184 / 47,579
Reached +1R before the stop: share of trades reaching +1R before the stop, %
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-2250.6%49.5%+1.1 pts±2.1 pts11,655 / 10,765
NQ2023-2649.4%51.6%−2.2 pts±2.5 pts8,007 / 6,907
ES2018-2250.1%49.1%+0.9 pts±2.7 pts7,218 / 6,652
ES2023-2649.0%50.0%−1.0 pts±2.6 pts7,220 / 7,727
SPY2018-2249.2%49.3%−0.1 pts±2.1 pts11,054 / 10,271
SPY2023-2649.6%49.7%−0.1 pts±2.7 pts7,286 / 6,669
BTC2018-2249.4%49.0%+0.4 pts±1.0 pts35,460 / 34,500
BTC2023-2649.8%50.0%−0.2 pts±1.0 pts31,169 / 53,928
BTC (CB)2018-2249.6%50.2%−0.6 pts±0.8 pts53,927 / 53,084
BTC (CB)2023-2649.4%50.5%−1.1 pts±1.1 pts · beyond43,098 / 31,221
Stocks2018-2250.7%50.9%−0.2 pts±1.1 pts49,288 / 46,633
Stocks2023-2650.0%50.4%−0.5 pts±1.2 pts39,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
Inside bar, then the break: average result per trade, R
MarketYearsVolume dried upOther inside barsGapLuck rangeTrades (or days)
NQ2018-22+0.04R+0.02R+0.02R±0.12R2,107 / 3,492
NQ2023-26−0.05R−0.02R−0.03R±0.15R1,488 / 2,595
ES2018-22−0.07R−0.04R−0.04R±0.16R1,276 / 2,123
ES2023-260.00R−0.09R+0.09R±0.16R1,354 / 2,404
SPY2018-220.00R+0.05R−0.04R±0.13R1,841 / 3,342
SPY2023-26−0.08R−0.01R−0.07R±0.15R1,221 / 2,359
BTC2018-22−0.26R−0.16R−0.10R±0.12R6,552 / 13,792
BTC2023-26−0.35R−0.25R−0.11R±0.11R5,745 / 14,597
BTC (CB)2018-22−0.20R−0.08R−0.12R±0.11R · beyond9,223 / 22,202
BTC (CB)2023-26−0.30R−0.27R−0.04R±0.11R6,529 / 13,264
Stocks2018-22+0.04R+0.01R+0.03R±0.06R11,226 / 19,104
Stocks2023-26−0.09R−0.06R−0.03R±0.05R8,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
Yesterday's high or low: share of days that closed beyond the level, %
MarketYearsLow volumeHigh volumeGapLuck rangeTrades (or days)
NQ2018-2261.8%57.8%+4.0 pts±7.0 pts374 / 374
NQ2023-2659.5%55.4%+4.1 pts±8.3 pts301 / 251
ES2018-2269.0%60.2%+8.8 pts±8.6 pts · beyond226 / 226
ES2023-2660.0%55.4%+4.6 pts±8.5 pts230 / 296
SPY2018-2263.4%56.8%+6.6 pts±7.0 pts377 / 377
SPY2023-2658.8%54.7%+4.0 pts±8.5 pts274 / 265
BTC2018-2246.8%55.5%−8.7 pts±7.8 pts · beyond310 / 310
BTC2023-2648.8%48.0%+0.8 pts±7.2 pts342 / 410
BTC (CB)2018-2247.8%55.8%−8.0 pts±6.1 pts · beyond513 / 513
BTC (CB)2023-2647.6%49.7%−2.0 pts±9.1 pts510 / 157
Stocks2018-2259.2%59.6%−0.5 pts±3.7 pts1,761 / 1,761
Stocks2023-2658.3%59.4%−1.1 pts±4.0 pts1,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.

QuestionNQNasdaq-100 futuresESS&P 500 futuresSPYS&P 500 ETFBTCBitcoin, BinanceStocksFive large stocks (AAPL, MSFT, NVDA, AMZN, TSLA), pooled
2018-222023-262018-222023-262018-222023-262018-222023-262018-222023-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.01R0.00R+0.02R+0.01R−0.05R−0.02R+0.08R+0.03R+0.01R0.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.01R0.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.01R0.00R−0.02R−0.01R+0.05R+0.02R−0.08R−0.03R−0.01R0.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 on Coinbase matches Binance. It is in each question's chart and in the Bitcoin section. Stocks = AAPL, MSFT, NVDA, AMZN and TSLA pooled.▲ better than the other group, beyond luck▼ worse, beyond luck○ within the luck rangeValues: R per trade, or percentage points for "% of days" and "+1R first" questions

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.

Quiet, narrow setup bar
Bitcoin at $60,000, stop $150 away. A 0.10% round-trip fee is $60, which is 0.40R gone before the trade starts.
Busy, wide setup bar
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.

−0.20R0.00R+0.20R+0.40RGap, Binance (●) and Coinbase (◆), 2023-2026. Bar = luck range.High-volume setup barBinance: +0.14R, luck range ±0.09RCoinbase: +0.16R, luck range ±0.10RHeavy breakout minuteBinance: +0.10R, luck range ±0.06RCoinbase: +0.10R, luck range ±0.07RBusy breakout barBinance: +0.16R, luck range ±0.07RCoinbase: +0.17R, luck range ±0.08RHigh-volume dayBinance: +0.03R, luck range ±0.12RCoinbase: +0.14R, luck range ±0.13RVolume leaning your wayBinance: +0.01R, luck range ±0.04RCoinbase: +0.02R, luck range ±0.05RHigh volume with TFCBinance: +0.22R, luck range ±0.18RCoinbase: +0.22R, luck range ±0.19RDried-up inside barBinance: −0.11R, luck range ±0.11RCoinbase: −0.04R, luck range ±0.11R2-2 off a volume spikeBinance: +0.10R, luck range ±0.10RCoinbase: +0.08R, luck range ±0.13R
−0.20R0.00R+0.20R+0.40RGap, Binance (●) and Coinbase (◆), 2023-2026. Bar = luck range.High-volume setup barBinance: −0.01R, luck range ±0.10RCoinbase: +0.03R, luck range ±0.10RHeavy breakout minuteBinance: −0.01R, luck range ±0.06RCoinbase: −0.01R, luck range ±0.08RBusy breakout barBinance: +0.03R, luck range ±0.07RCoinbase: +0.04R, luck range ±0.08RHigh-volume dayBinance: −0.05R, luck range ±0.12RCoinbase: +0.05R, luck range ±0.14RVolume leaning your wayBinance: −0.03R, luck range ±0.04RCoinbase: −0.03R, luck range ±0.05RHigh volume with TFCBinance: +0.07R, luck range ±0.18RCoinbase: +0.08R, luck range ±0.20RDried-up inside barBinance: −0.02R, luck range ±0.10RCoinbase: +0.04R, luck range ±0.11R2-2 off a volume spikeBinance: −0.04R, luck range ±0.10RCoinbase: −0.06R, luck range ±0.13R

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.

0 of 9
direction tests passed on stocks
334,000
breakout trades on 15, 30 and 60-minute charts
3 of 45
single-stock results beyond luck in 2023-26, about what chance gives (2)

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.

−0.10R−0.05R0.00R+0.05R+0.10RGap, five stocks pooled (●), 2023-2026. Bar = luck range.High-volume setup barfive stocks pooled: +0.05R, luck range ±0.04RHeavy breakout minutefive stocks pooled: +0.02R, luck range ±0.03RBusy breakout barfive stocks pooled: +0.03R, luck range ±0.04RHigh-volume dayfive stocks pooled: 0.00R, luck range ±0.05RVolume leaning your wayfive stocks pooled: 0.00R, luck range ±0.02RHigh volume with TFCfive stocks pooled: +0.03R, luck range ±0.06RDried-up inside barfive stocks pooled: −0.03R, luck range ±0.05R2-2 off a volume spikefive stocks pooled: +0.04R, luck range ±0.06R
−0.10R−0.05R0.00R+0.05R+0.10RGap, five stocks pooled (●), 2023-2026. Bar = luck range.High-volume setup barfive stocks pooled: +0.02R, luck range ±0.04RHeavy breakout minutefive stocks pooled: 0.00R, luck range ±0.03RBusy breakout barfive stocks pooled: +0.01R, luck range ±0.04RHigh-volume dayfive stocks pooled: −0.01R, luck range ±0.05RVolume leaning your wayfive stocks pooled: −0.01R, luck range ±0.02RHigh volume with TFCfive stocks pooled: +0.01R, luck range ±0.06RDried-up inside barfive stocks pooled: −0.02R, luck range ±0.05R2-2 off a volume spikefive stocks pooled: +0.01R, luck range ±0.06R
Each stock on its own: high-volume setup bars
High-volume minus low-volume setup bar, average result per trade (R). Luck range in brackets.
Stock2018-22, after costs2023-26, after costs2023-26, before costs
AAPL0.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
Breaks of yesterday's high or low: share of days closing beyond the level, busiest third of sessions vs quietest third
Stock2018-222023-26
AAPL63% vs 52%63% vs 53%
MSFT65% vs 53%63% vs 56%
NVDA65% vs 54%64% vs 53%
AMZN65% vs 61%61% vs 58%
TSLA64% vs 58%68% vs 58%
All five64% 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).

NQ+4.3%
ES+3.8%
SPY−0.3%
BTC, Binance−0.2%
BTC, Coinbase−0.4%

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 bars

2. 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-19

SPY 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 btccb

5. 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 tsla

Five 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.