SDES  /  VPOC Migration Pro  /  Data

ES VPOC migration — May 2026

Aggregated from VPOC Migration Pro session logs across 20 trading days in May 2026. RTH only (9:30–16:00 ET) — pre-market and overnight events excluded from this analysis. (The addon itself supports Globex, RTH, or Custom session presets — your own logs can include ETH if you set it that way.) All numbers below are real — not modeled, not back-tested, not simulated.

Instrument: ESTrading days: 20RTH 09:30–16:00 ET
Exclude opening:Active: excluding first 1 min (matches BMBridge opening buffer)
Min shift size:No size filter · drops single-tick flutter when active (ES tick = 0.25)

What happened this month

Filter Active · 1-Min Opening Buffer
All numbers on this page exclude VPOC activity in the first 60 seconds of RTH (9:30:00–9:30:59 ET) — the window where the developing volume profile flickers before volume settles. This matches the opening buffer used by the companion BMBridge tool. Click None in the filter bar above to see raw unfiltered counts, or extend the buffer to 5, 10, 15, or 30 minutes.

Every chart and card below updates live when you change the filter — event counts, cumulative migration, net directional, session activity, naked lifetime, the hour-by-hour activity chart, and big shifts. The filter bar stays visible as you scroll.

20
Trading days (RTH)
9:30–16:00 ET only
817
Total VPOC shifts
41 per trading day
738
Naked touches
37 per trading day
1,496
DVPOC changes
75 per trading day
2.25
Avg shift size (pts)
Max: 45.00
1,837.50
Cumulative migration (pts)
91.88 pts per trading day
+344.50
Net directional move (pts)
+17.23 pts per trading day
+11.14
Avg session net (pts)
Initial → final VPOC per session
Direction split — up vs down VPOC shifts
Each VPOC shift either promoted a higher price (up shift) or a lower price (down shift) to the new VPOC. The bar shows the split for the active filter.
↑ Up shifts: 21/day (51.8%)↓ Down shifts: 20/day (48.2%)
Balanced (no directional bias)

May 2026 — day by day

One cell per calendar day. Green border = trading session captured. Amber dashed = weekday with no data (PC off, holiday, or no sessions). Muted = weekend. Each green cell shows that day's shift count and net-directional move (color-coded). Hover any cell for full stats.

Mon
Tue
Wed
Thu
Fri
Sat
Sun
1
60 shifts
+13.50 pts
2
weekend
3
weekend
4
57 shifts
-18.50 pts
5
10 shifts
+17.75 pts
6
47 shifts
+42.25 pts
7
28 shifts
-37.00 pts
8
38 shifts
+24.75 pts
9
weekend
10
weekend
11
11 shifts
+23.25 pts
12
31 shifts
+14.25 pts
13
12 shifts
-7.50 pts
14
33 shifts
+45.00 pts
15
42 shifts
-20.00 pts
16
weekend
17
weekend
18
20 shifts
-7.00 pts
19
39 shifts
-31.25 pts
20
73 shifts
+129.75 pts
21
77 shifts
+74.25 pts
22
48 shifts
+35.00 pts
23
weekend
24
weekend
25
39 shifts
+4.25 pts
26
107 shifts
-1.50 pts
27
30 shifts
-2.75 pts
28
15 shifts
+46.00 pts
29
no data
30
weekend
31
weekend

20 trading days with data · 1 weekday missing (PC off, holiday, or no sessions). Hover any green cell to see the full day stats.

Raw data downloads: events.csv — every parsed event with prices, sizes, RTH flag (audit any aggregate). · daily_summary.csv — per-day rollups with invariant check. Open in Excel to verify any number on this page.

✓ Sanity check (per dedup spec): 923 matched tested + 136 still naked = 1059 migrations

Range, activity rate, and DVPOC confirmation

DVPOC here means Developing VPOC — the live intraday challenger to the current VPOC. Not the Daily VPOC (some traders use the same acronym for the prior day's settled point of control). What's the difference? →

35.25
Avg VPOC range / segment (pts)
Median: 29.88 · Max: 73.00
19
Median distinct VPOC prices
Avg: 21.6 per segment
8.1
VPOC shifts / RTH hour
Over 130.0 RTH hours
31.5%
DVPOC → VPOC confirmation
303 of 962 shifts

DVPOC confirmation is the rate at which a VPOC shift landed on the price the Developing VPOC was already pointing to. It’s a historical observation, not a forecast signal — it tells you how often the addon’s DVPOC anticipated the next VPOC shift in past sessions.

How long Naked VPOCs sat untouched

8m 47s
Avg time naked before touched
Mean across 923 matched touches
4s
Median time naked before touched
Half are faster, half are slower
73%
Touched within 1 minute
677 of 923
6%
Naked > 30 minutes
57 of 923

Quick touches vs slow touches — how far did the VPOC drift?

Each Naked level is bucketed by how long it stayed untouched. For each bucket, we measure the maximum distance the current VPOC drifted from the Naked level during its naked window. The expectation: quick touches happen because the VPOC barely moved away; slow touches survive because the VPOC drifted farther before snapping back.

Time naked before touchedLevels per dayAvg distance VPOC drifted (pts)Median (pts)Max (pts)
Under 30 sec22/day (60%)0.500.253.75
30 sec – 1 min2.4/day (6%)1.501.256.00
1 – 5 min5.5/day (15%)2.201.758.50
5 – 30 min4.0/day (11%)4.954.2521.75
Over 30 min2.9/day (8%)15.8913.2543.00

When VPOC migrated most

Bucket size:
09:3010:0011:0012:0013:0014:0015:00
235.83.76.93.94.45.0

Each column is one time bucket in the RTH window (9:30–16:00 ET). Numbers shown are per-trading-day averages. Darker green = more VPOC shifts per typical session in that window. Hover any cell to see the raw total across all trading days. Toggle the bucket size to zoom in: 1 hour shows the broad shape, 15 min shows minute-level micro-structure.

Where the VPOC moves most in a typical session

Two views of activity, both shown as per-session averages (total across 20 trading days, divided by 20). Avg migration distance / session = how many points the VPOC typically moves in this hour on a single trading day. Avg net move / session = signed direction — positive bars (green) mean VPOC typically drifts up in this hour, magenta means net down. The cumulative totals across the full month appear in smaller text underneath each row for context.

Hour (ET)Avg migration distance / sessionAvg net move / session
09:30–10
24.51 pts/session · 23.2 shifts
(490.25 pts total · 465 shifts)
-0.81 pts/session
10:00–11
16.49 pts/session · 5.8 shifts
(329.75 pts total · 116 shifts)
+5.89 pts/session
11:00–12
15.40 pts/session · 3.7 shifts
(308.00 pts total · 74 shifts)
+3.62 pts/session
12:00–13
12.20 pts/session · 6.9 shifts
(244.00 pts total · 138 shifts)
-0.40 pts/session
13:00–14
4.50 pts/session · 3.9 shifts
(90.00 pts total · 77 shifts)
-1.15 pts/session
14:00–15
8.66 pts/session · 4.4 shifts
(173.25 pts total · 88 shifts)
+4.49 pts/session
15–16:00
17.51 pts/session · 5.0 shifts
(350.25 pts total · 101 shifts)
+3.89 pts/session

Not a return metric. These bars measure how much the Volume Point of Control moved — not P&L. Most activity does not imply best trading hours; it implies most fair-value contention, which can cut either way.

How big the shifts were

0.25 pts
24 / day (45.5%)
0.50 pts
6.1 / day (11.5%)
0.75 pts
3.5 / day (6.6%)
1.00 pts
3.2 / day (6.0%)
1.25–2.00 pts
5.8 / day (10.9%)
2.00–5.00 pts
6.2 / day (11.6%)
5.00+ pts
4.2 / day (7.8%)

ES futures move in 0.25-pt ticks, so most VPOC shifts are exactly one tick. The long tail toward larger shifts captures moments when volume migrated more aggressively.

When the biggest VPOC migrations actually happened

"Big shift" is defined from the data, not a hardcoded number. A shift counts as big if it's in the chosen top percentile by size — switch between Top 25%, Top 10%, or Top 5% to see the threshold shift. The percentile is computed from the currently-filtered set, so it adjusts as you change the opening-bell filter too.

Threshold:
4.50
Big-shift threshold (pts)
90th percentile of 1,059 RTH shifts
109
Big shifts (top 10%)
5.5 per trading day
45.00
Largest single shift (pts)
Thu 14:12

By hour of day

09:30–10
25 big shifts (23%) · 1.25/day
10:00–11
19 big shifts (17%) · 0.95/day
11:00–12
20 big shifts (18%) · 1.00/day
12:00–13
14 big shifts (13%) · 0.70/day
13:00–14
3 big shifts (3%) · 0.15/day
14:00–15
8 big shifts (7%) · 0.40/day
15–16:00
20 big shifts (18%) · 1.00/day

By day of week

Monday
2.8/monday (10%) · 4 mondays
Tuesday
8.5/tuesday (31%) · 4 tuesdays
Wednesday
7.8/wednesday (28%) · 4 wednesdays
Thursday
4.0/thursday (15%) · 4 thursdays
Friday
4.2/friday (16%) · 4 fridays

Big-shift counts are RTH-only. The threshold (90th percentile) is computed per-period — May's threshold may differ from April's because volatility regimes shift. Day-of-week sample sizes are small for a single month; cross-month patterns will be more meaningful as more sessions log.

Observations

May 2026 produced 817 VPOC shifts across 20 trading days. Direction was balanced. Most active hour: 09:00 ET with 465 VPOC shifts. For every VPOC shift, the addon classifies the prior level as Naked or Tested — this month logged 738 Naked touches (prior VPOCs that price revisited).

At a normalized rate, the VPOC migrated 8.1 times per RTH hour on average. Each log segment held a median of 19 distinct VPOC prices and covered a typical range of 29.88 points from the lowest to highest VPOC observed within that segment.

Cumulatively, the VPOC traveled 1,837.50 points across all shifts this month — the sum of every individual shift's distance. The signed net was +344.50 points (up), meaning if you summed every shift's direction, the VPOC ended the month a net 344.50 points up from where individual shifts started. Per session, the VPOC moved an average of +11.14 points from open to close.

On the Naked side, 1,059 levels became naked during the month (when a VPOC shift moved away from them), and 87% of those were tested before their session ended. The median naked level sat untouched for 4s before being revisited; the mean was 8m 47s. The gap between those two numbers reflects the long-tail distribution — most naked levels get tested fast, a small number sit much longer.

When a Developing VPOC was active and a VPOC shift occurred, the shift landed on the DVPOC price 31.5% of the time (303 of 962 eligible shifts). This is a historical observation of how often the addon's Developing VPOC anticipated the next VPOC — it isn't a forecast signal, and shifts that didn't match still happened frequently.

Each shift here represents real volume migration — the market's declared fair value physically moving to a new price as that level absorbed more contracts than any other. This is one trader's chart-time during RTH, not a back-test; sample size for May is 20 trading days.

All of this is logged automatically by VPOC Migration Pro. The addon tracks every VPOC shift, Naked touch, and DVPOC change tick by tick, then writes a timestamped session log you can review for journaling or post-session analysis like this.

See the addon →
✓ APPROVED · LIVE ON THE BOOKMAP MARKETPLACE

Run this on your own chart.

$25/ month
PAID VIA BOOKMAP STORE · LICENSE ENFORCED BY BOOKMAP

Subscribe through Bookmap — billing, license, and refunds are all handled by Bookmap. Your own session logs save locally, just like the ones used to build this page.

⚡ View on Bookmap Marketplace