Volume · MES
Does a high-volume day on MES tend to see continued high volume the next day
841,354
median daily volume
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
69.0%
prob next day high given today low
31.0%
num high vol days
129
num low vol days
130
Methodology
Analysis code was generated by an AI model up to 25 times, run in a sandbox against real MES 1-minute bars from 2025-08-31 to 2026-09-07, and reviewed automatically. Attempts that computed the same set of measures were grouped, and the figures shown are the median of the largest group. Agreement between attempts lowers the chance of a one-off coding slip; it does not prove the code matches the question, so 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 by an AI model up to 25 times, run in a sandbox, and reviewed automatically; the figures above are the median of the largest group of attempts that computed the same measures. Agreement between attempts lowers the chance of a one-off coding slip -- it does not prove the code matches the question, so check the definition and code. A one-off calculation, not 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.