Volume · MES
Does a high-volume day on MES tend to see continued high volume the next day
841,354
median daily volume
n=2582025-08-31 to 2026-09-07
median daily volume
841,354
avg next day volume after high day
1,043,850.88
avg next day volume after low day
736,942.13
corr today vol next day vol
0.54
prob next day high given today high
0.69
prob next day high given today low
0.31
num high vol days
129
num low vol days
130
Methodology
Computed by independently generating and running analysis code against real MES 1-minute bars from 2025-08-31 to 2026-09-07, 25 separate times in parallel, then taking the answer the largest group of independent attempts agreed on. The exact code is shown below.
Show the code
bars_et = to_et(bars)
rth = rth_session(bars_et)
rth = rth.copy()
rth['trading_date'] = trading_date(rth)
daily_vol = rth.groupby('trading_date')['volume'].sum().sort_index()
n = len(daily_vol)
if n < 3:
result = {"sample_size": 0}
else:
median_vol = daily_vol.median()
high_vol_mask = daily_vol > median_vol
# shift to get next day's volume
next_day_vol = daily_vol.shift(-1)
valid = high_vol_mask & next_day_vol.notna()
high_days_next = next_day_vol[valid]
low_vol_mask = ~high_vol_mask
valid_low = low_vol_mask & next_day_vol.notna()
low_days_next = next_day_vol[valid_low]
avg_next_after_high = float(high_days_next.mean()) if len(high_days_next) > 0 else None
avg_next_after_low = float(low_days_next.mean()) if len(low_days_next) > 0 else None
# correlation between day's volume and next day's volume
combined = pd.DataFrame({'vol': daily_vol, 'next_vol': next_day_vol}).dropna()
corr = float(combined['vol'].corr(combined['next_vol'])) if len(combined) > 1 else None
# probability that next day is also high volume, given today is high volume
next_high_mask = next_day_vol > median_vol
valid_pairs = high_vol_mask & next_day_vol.notna()
prob_next_high_given_high = float(next_high_mask[valid_pairs].mean()) if valid_pairs.sum() > 0 else None
valid_pairs_low = low_vol_mask & next_day_vol.notna()
prob_next_high_given_low = float(next_high_mask[valid_pairs_low].mean()) if valid_pairs_low.sum() > 0 else None
result = {
"sample_size": int(len(combined)),
"median_daily_volume": float(median_vol),
"avg_next_day_volume_after_high_day": avg_next_after_high,
"avg_next_day_volume_after_low_day": avg_next_after_low,
"corr_today_vol_next_day_vol": corr,
"prob_next_day_high_given_today_high": prob_next_high_given_high,
"prob_next_day_high_given_today_low": prob_next_high_given_low,
"num_high_vol_days": int(high_vol_mask.sum()),
"num_low_vol_days": int(low_vol_mask.sum()),
}
- Generated and independently re-derived 25 times, then checked for logical consistency, before being shown to you -- the figures above are the answer the largest number of those independent attempts agreed on. Still a generated, one-off calculation, treat it as a rough, one-off analysis rather than a permanent fixture.
Related
This is historical statistical information only. It is not investment advice, and past performance does not indicate future results. Trading involves risk of loss.