Xiphers Research·← Back to indexDEEN

CL1b — not the side, the crossing (replication of Matteo Conti) · NQ

NQ · dev 2026-03-13 to 2026-08-13 · 106 sessions · 8 control arms

Verdict — NQ

This report judges NQ only. Every thesis gets two separate verdicts, one per instrument, each on its own signal and with its own arbiter width (signed 15 min forward return here). The other instrument sits in a report of its own; neither decides anything about the other.

Slot A — Dev passed on lockout 35 min — forward val running, verdict on 2026-10-08

The author's flagship config, frozen before the run: a 35-minute lockout after every signal, because only the first crossing of a cluster carries information. Not the best column picked afterwards — which column wins is in the grid alongside. Frozen on 2026-08-27.

Val is pending (forward). This thesis was frozen on 2026-08-27; val is the window of the first 30 trading days that accumulate after that — data that did not exist at freeze time. This run computes dev only, so the box shows nothing but whether the dev criterion is met. And “dev criterion met” here means breadth and nothing else: the predicted sign stands in at least half of the hour buckets. How large the effect is, and whether it leaves the control arms at all, is in the line above it — not in the word “passed”. And one more quantity, without which this box gets misread in both directions: on slot A the control arms scatter with σ ≈ 6.3 ticks, so a verdict would need roughly ± 12.7 ticks. For the same config the author reports ⌀ +$62 per trade on one full NQ contract against his baseline of +$4.71 — about +11.5 ticks. Had his effect been present in these 108 sessions exactly as published, it would have landed at z ≈ 1.8 here and failed our own bar. This run therefore cannot refute his finding: “nothing” and “his number” are not distinguishable on this sample. The forward val will not change that either — 30 new trading days bring roughly 126 anchors. The verdict is open, not no edge.

Per instrument separately, and on the NDX variant only. Dev — the predicted sign in at least half of the hour buckets. Val — one forward run, the same sign New York total; that window does not exist yet. Passed only if both. The author has 820 sessions, this run has 108 — the GEX coverage only starts on 2026-03-13. His finding that “2023 was a negative year” cannot be checked here by construction.

Slot · configRoleSessionsnsigned 15 min forward returnBaselineΔ (T)Control spanBuckets with the signResult
Slot A · lockout 35 mindev106437+5.24+3.15+2.09-21.95 … +20.144 of 7Dev criterion met
Slot A · lockout 35 minvalpending (forward, from ≥ 30 new trading days, verdict on 2026-10-08)

This study departs from the default arbiter — it is preregistered on signed 15 min forward return and judged on nothing else; the effort default is P(+X before −X) at the instrument's arbiter width (NQ ±160 T, ES ±40 T).

Preregistration
ClaimAn outside author's claim, recomputed here: the side of the gamma flip is a coin flip, but the moment of crossing carries — and it carries as continuation. Up-crossing long, down-crossing short. Plus the secondary claim that only the first crossing of a cluster carries information.
ConditionPer 5-minute anchor the last frame ≤ anchor against the last frame ≤ previous anchor. If the sign of spot − zero_gamma differs, a crossing happened inside the window; the direction is the new sign. Otherwise flat. Frames with zero_gamma = 0 are warm-up and carry no sign. After an anchor fires, the next 35 minutes are locked out. The debouncing is part of the condition and not a later refinement: at frame level (a 2–4 s cadence) there are 143 crossings per day on NDX and 193 on SPX — the spot oscillates around the level, which is noise. On the 5-minute anchor with a 35-minute lockout, 4.2 signals per day remain; the author reports 4.1. Only there do both measure the same thing. The condition lives entirely in options space (feed spot against feed level), there is no basis mapping onto the futures, and a frame after the anchor is never read.
PredictionSigned 15-minute forward return above the baseline, positive, with the predicted sign in the majority of the hour buckets — and stronger with the lockout than without. The prediction is the author's, not ours.
Target metric (arbiter)signed 15 min forward return — Signed 15-minute forward return in ticks minus baseline, New York total, gross, per instrument separately — two verdicts. The deviation from the default arbiter (hit rate P(+X before −X)) is deliberate and explained in advance: the author measures exactly this, a fixed hold with no stop and no target. The hit-rate and bracket tables run alongside as the robustness reading, because a mean over fat tails is wobbly — by his own number, 20 of 1,500 trades carry 90 % of the profit. His 50-minute refinement is read at the 60-minute grid point; the machine's horizon grid is not bent for a single study.
Baseline (control arm)The same anchors, direction by a cyclic shift of the signal series across the days: day X trades the series of day X+k, 8 control arms. Explicitly not the author's baseline (“hold NQ in 15-minute slices”, ⌀ +$4.71) — that one is always long and therefore measures only the bull drift of the sample. Our arm additionally preserves the direction mix and the time-of-day distribution of the signal; the drift sits in both arms and cancels out.
Success criterionPer instrument separately, and on the NDX variant only. Dev — the predicted sign in at least half of the hour buckets. Val — one forward run, the same sign New York total; that window does not exist yet. Passed only if both. The author has 820 sessions, this run has 108 — the GEX coverage only starts on 2026-03-13. His finding that “2023 was a negative year” cannot be checked here by construction.
SignalSign change of spot − zero_gamma between two 5-minute anchors from feed NQ_NDX classic (0DTE), direction equal to the new sign, then locked out for 35 min — 108 trading days, 2364428 frames, 0.2 % of them warm-up (level 0, flat) — read on the options feed NQ_NDX classic (0DTE) — the same sign series for NQ and ES, the declared cross-instrument exception (thesis.md §2, rule 1). No futures ticks enter the condition, no SPX → futures basis mapping
VariantNDX 0DTE (classic_gex_zero) — the author's source, this is where the verdict falls — An exception from the repo's fixed SPX source, justified in advance: whoever tests an author's claim has to test it on the author's source — otherwise a different claim gets tested. NQ_NDX/classic_gex_zero sits on disk with identical coverage (108 days, 2026-03-13 → 2026-08-13).
Mandatory by-catchCL1b × CL1 — does the crossing carry anything the side does not already say? — The video's central claim as a table: the author says the side is a coin flip and the crossing carries. After an up-crossing the spot sits above the level by construction — the agreement cells are the rule and the disagreement cells the exception. The size of that exception is exactly what is interesting: it shows how often a crossing had already run back inside a 5-minute window.
Mandatory by-catchCL1b × PX1 — or is the crossing just a VWAP crossing? — Mandatory by-catch learned from CL1: there 87.7 % (NQ) and 93.3 % (ES) of all anchors sat in the agreement cells with the VWAP, and zero gamma was largely a VWAP proxy. Every level thesis therefore has to show what it can do in the disagreement cells.
Threshold gridCL1b — lockout grid: how long must it stay quiet after a crossing? — The author claims only the first crossing of a cluster carries information and that a 35-minute lockout doubles the edge. Column 0 is the same crossing without any lockout — it is the control row for exactly that claim. Only the read cell of 35 min judges (slot A, frozen before the run); the remaining columns stand there in full but do not judge. Thresholds named in advance: no lockout · lockout 15 min · lockout 35 min · lockout 60 min.
Threshold gridCL1b — the video's secondary claims: the same rule on the walls — Without a verdict of its own. The author says a touch of the call wall is not rejected but broken through — fading loses, following wins; on the put wall the sign points the same way but too weakly to trade. Both rows run alongside, the same crossing mechanics, only the level differs. Fading is the exact mirror image of following: a negative Δ in a row means “fading wins”, and a separate fade row would be the same number with the sign flipped, so it is not shown twice. Thresholds named in advance: Zero gamma (main arm) · Call wall (major_pos_vol), follow the break · Put wall (major_neg_vol), follow the break.
Reference instead of a duplicate tableMatteo Conti — “I Tested Every Gamma Exposure Belief” — The source of the claims. His numbers: 820 sessions 2023-04 → 2026-07, NDX 0DTE, one value per minute, a fixed hold, no stop and no target, a baseline of “hold NQ in 15-minute slices” at ⌀ +$4.71. Crossing ⌀ +$33.22 over 3,400 trades, with a 35-minute lockout ⌀ +$62, with a 50-minute hold ⌀ +$99 gross. https://www.youtube.com/watch?v=bMs9PzQzrqM
ValVal is pending (forward). This thesis was frozen on 2026-08-27; val is the window of the first 30 trading days that accumulate after that — data that did not exist at freeze time. This run computes dev only, so the box shows nothing but whether the dev criterion is met. And “dev criterion met” here means breadth and nothing else: the predicted sign stands in at least half of the hour buckets. How large the effect is, and whether it leaves the control arms at all, is in the line above it — not in the word “passed”. And one more quantity, without which this box gets misread in both directions: on slot A the control arms scatter with σ ≈ 6.3 ticks, so a verdict would need roughly ± 12.7 ticks. For the same config the author reports ⌀ +$62 per trade on one full NQ contract against his baseline of +$4.71 — about +11.5 ticks. Had his effect been present in these 108 sessions exactly as published, it would have landed at z ≈ 1.8 here and failed our own bar. This run therefore cannot refute his finding: “nothing” and “his number” are not distinguishable on this sample. The forward val will not change that either — 30 new trading days bring roughly 126 anchors. The verdict is open, not no edge.
Data rolesdev: 2026-03-13 to 2026-08-13
Holdoutfrom 2026-08-14 — not computed in this run, not looked at

NQ · NDX 0DTE (classic_gex_zero) — the author's source, this is where the verdict falls

Primary variant — An exception from the repo's fixed SPX source, justified in advance: whoever tests an author's claim has to test it on the author's source — otherwise a different claim gets tested. NQ_NDX/classic_gex_zero sits on disk with identical coverage (108 days, 2026-03-13 → 2026-08-13).

Sign change of spot − zero_gamma between two 5-minute anchors from feed NQ_NDX classic (0DTE), direction equal to the new sign, then locked out for 35 min — 108 trading days, 2364428 frames, 0.2 % of them warm-up (level 0, flat) · brackets 40 / 80 / 120 / 160 / 200 / 280 / 320 / 400 / 560 ticks · fill phase spread 1.85/1.62/1.14/1.50

NQ · Dev — full 0DTE coverage, digging is allowed here

Arbiter of this role: +2.09 T away from the baseline, predicted sign in 4 of 7 hour buckets.

106 sessions, 2026-03-13 to 2026-08-13 · 437 anchors: 191 long (43.7 %) / 246 short / 7831 flat · 0 without ticks · 0 horizons running past the session end · 8 control arms, shifts +92, +22, +97, +41, +75, +71, +89, +23

Hit rate probe: is the direction right?

HourP(+160 before −160)BaselineΔ %Control spanzresolvednDistribution of the daily hit ratesDays above baseline
09:30–10:0048.6 %52.7 %-4.0543.2 … 58.1 %-0.5100.0 %7436 of 74 (48.6 %)
10–1153.0 %46.3 %+6.6736.6 … 49.4 % ◆+2.0100.0 %8342 of 73 (57.5 %)
11–1250.8 %52.7 %-1.9141.4 … 60.0 %-0.098.4 %6126 of 55 (47.3 %)
12–1355.8 %47.3 %+8.5036.0 … 58.0 %+1.394.5 %5225 of 44 (56.8 %)
13–1444.4 %55.1 %-10.6636.4 … 61.5 %-0.793.1 %5416 of 43 (37.2 %)
14–1552.5 %47.4 %+5.1338.5 … 52.5 %+1.190.9 %4018 of 34 (52.9 %)
15–1661.5 %54.2 %+7.3744.2 … 55.8 % ◆+2.3 ●85.2 %5223 of 42 (54.8 %)
New York total52.2 %49.9 %+2.2944.8 … 52.6 %+1.295.2 %41659 of 103 (57.3 %)
Other bracket widths
HourΔ ±40 TΔ ±80 TΔ ±120 TΔ ±200 TΔ ±280 TΔ ±320 TΔ ±400 TΔ ±560 T
09:30–10:00-9.46-2.70-6.76-8.11-7.63-10.87-11.40 ●-5.24
10–11-10.84-1.20+6.02+3.91+6.61 ●+5.54+9.76 ●+9.09
11–12-6.45+0.00+6.45+1.66-8.03-3.26-1.90+1.67
12–13+7.27+3.64+6.60 ●+0.00+7.37+5.77+9.36+5.45
13–14+3.45-7.02-14.29-2.47-5.56-1.61+12.50+33.33 ●
14–15+0.00+6.82-1.22+5.90+8.00+13.66+12.70-17.14
15–16+18.03 ●+19.67 ●+9.87+8.50 ●+9.69+1.01-1.97-6.25
New York total+0.23+3.10+1.19+0.65+1.67-0.76+1.44+2.15

Breadth (7 hours × 9 bracket widths): 54.0 %, control arms 19.0 % to 49.2 %.

Bracket up to the close (16:00 New York) — context

The same calculation as above, except the bracket does not run for 60 minutes but until 16:00 New York — the real arm and all 8 control arms under the same cap. Context, not a verdict: the arbiter stays the 60-min row above.

HourP(+160 before −160)BaselineΔ %Control spanzresolvedn Δ ±40 TΔ ±80 TΔ ±120 TΔ ±200 TΔ ±280 TΔ ±320 TΔ ±400 TΔ ±560 T
09:30–10:0048.6 %52.7 %-4.0543.2 … 58.1 %-0.5100.0 %74-9.46-2.70-6.76-8.11-9.46-10.81 ●-12.87 ●-3.01
10–1153.0 %47.0 %+6.0237.3 … 49.4 % ◆+2.0100.0 %83-10.84-1.20+6.02+2.41+6.66+4.88+7.04 ●+13.24 ●
11–1250.0 %54.8 %-4.8443.5 … 61.3 %-0.2100.0 %62-6.45+0.00+6.45-4.84-7.49-6.73+2.51+9.15
12–1356.4 %47.3 %+9.0940.0 … 56.4 %+1.7100.0 %55+7.27+3.64+9.09 ●+8.25+12.54+11.14+14.78+12.70
13–1445.6 %51.7 %-6.1137.9 … 59.6 %-0.598.3 %57+3.45-6.90-12.07-0.88-0.81+2.17+5.76+10.23
14–1553.5 %50.0 %+3.4938.1 … 53.7 %+1.097.7 %43+0.00+6.82-1.22+1.22-1.60-2.40+4.35-11.54
15–1661.4 %53.7 %+7.7145.2 … 56.5 % ◆+2.2 ●72.1 %44+18.03 ●+22.01 ●+7.19+4.28+6.74+0.76+0.00-26.67
New York total52.2 %49.8 %+2.3944.7 … 52.2 %+1.295.7 %418+0.23+3.22+1.18+0.13+1.20-1.36+0.60+4.63

The resolved column is the interesting one here: it rises against 60 minutes because the slow path is given time. Only the last row runs the other way — the 15:55 anchor has 5 minutes left until the close, so the 15–16 bucket is capped shorter than above, not longer.

CL1b — lockout grid: how long must it stay quiet after a crossing?

The author claims only the first crossing of a cluster carries information and that a 35-minute lockout doubles the edge. Column 0 is the same crossing without any lockout — it is the control row for exactly that claim. Only the read cell of 35 min judges (slot A, frozen before the run); the remaining columns stand there in full but do not judge.

Adjacent thresholds share their signals (Learnings 10): an anchor with |net gex| = 4,000 sits in every threshold below it. The columns are therefore not independent tests — a single threshold that jumps out of the row while its neighbours show nothing is noise, not a finding. What is read is the course across the row; the verdict falls on exactly one, chosen in dev and frozen for the forward val (★).

Lockout after a signalAnchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying daysBuckets with the sign
no lockout1085-4.31+4.93-9.24-1.62 … +7.89-1.895.8 %10851034 of 7
lockout 15 min647-3.95-0.97-2.98-7.57 … +12.80-0.695.2 %6471034 of 7
lockout 35 min ★ [Slot A]437+5.24+3.15+2.09-21.95 … +20.14+0.395.2 %4371034 of 7
lockout 60 min322-1.36+7.40-8.76-21.34 … +30.91-0.495.3 %3221032 of 7

The plateau rule picks the smallest threshold, not the largest number (thesis.md §2, rule 9): what is sought is the contiguous range in which Δ > 0, z ≥ 2 and the direct neighbours show the same sign — of that range the smallest threshold is taken, because it has the largest n and is thus the most conservative choice. A verdict is never passed by maximum or by z ranking. A “⟂ edge” behind a slot mark means: the choice sits at the edge of the grid, the edge could lie beyond it.

The same table per hour — Δ % per threshold
Hourno lockoutlockout 15 minlockout 35 minlockout 60 min
09:30–10:00-69.09 ●-82.98 ●-86.89-86.89
10–11+1.61-7.85+62.75+62.43
11–12+0.32+29.89+2.95-5.83
12–13-5.97+1.72-12.64-13.93
13–14+2.65+6.71+0.10-42.08
14–15-20.03 ●-48.67 ●-38.55-17.15
15–16+20.41 ●+43.36 ●+45.00 ●+66.88 ●
New York total-9.24-2.98+2.09-8.76

CL1b — the video's secondary claims: the same rule on the walls

Without a verdict of its own. The author says a touch of the call wall is not rejected but broken through — fading loses, following wins; on the put wall the sign points the same way but too weakly to trade. Both rows run alongside, the same crossing mechanics, only the level differs. Fading is the exact mirror image of following: a negative Δ in a row means “fading wins”, and a separate fade row would be the same number with the sign flipped, so it is not shown twice.

Adjacent thresholds share their signals (Learnings 10): an anchor with |net gex| = 4,000 sits in every threshold below it. The columns are therefore not independent tests — a single threshold that jumps out of the row while its neighbours show nothing is noise, not a finding. What is read is the course across the row; the verdict falls on exactly one, chosen in dev and frozen for the forward val (★).

Level that is crossedAnchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying daysBuckets with the sign
Zero gamma (main arm) ★437+5.24+3.15+2.09-21.95 … +20.14+0.395.2 %4371034 of 7
Call wall (major_pos_vol), follow the break172-10.60+0.83-11.42-21.60 … +22.49-0.682.0 %172683 of 7
Put wall (major_neg_vol), follow the break130-20.28+2.02-22.30-16.97 … +23.89-1.596.2 %130624 of 7
The same table per hour — Δ % per threshold
HourZero gamma (main arm)Call wall (major_pos_vol), follow the breakPut wall (major_neg_vol), follow the break
09:30–10:00-86.89-228.50 ●-169.83 ●
10–11+62.75-97.65-144.44
11–12+2.95+30.90+45.70
12–13-12.64-32.53+16.67
13–14+0.10+33.72-75.33
14–15-38.55+80.50 ●+21.33
15–16+45.00 ●-4.44+17.44
New York total+2.09-11.42-22.30

Matteo Conti — “I Tested Every Gamma Exposure Belief”

The source of the claims. His numbers: 820 sessions 2023-04 → 2026-07, NDX 0DTE, one value per minute, a fixed hold, no stop and no target, a baseline of “hold NQ in 15-minute slices” at ⌀ +$4.71. Crossing ⌀ +$33.22 over 3,400 trades, with a 35-minute lockout ⌀ +$62, with a 50-minute hold ⌀ +$99 gross. Open the video

CL1b × CL1 — does the crossing carry anything the side does not already say?

The video's central claim as a table: the author says the side is a coin flip and the crossing carries. After an up-crossing the spot sits above the level by construction — the agreement cells are the rule and the disagreement cells the exception. The size of that exception is exactly what is interesting: it shows how often a crossing had already run back inside a 5-minute window.

StateShare of anchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying days
up-crossing (long) · spot above zero gamma43.7 % (191)+18.75+15.32+3.43-80.81 … +137.20+0.094.8 %19182
up-crossing (long) · spot below zero gamma0.0 % (0)00
down-crossing (short) · spot above zero gamma0.0 % (0)00
down-crossing (short) · spot below zero gamma56.3 % (246)-5.25+70.11-75.36-23.19 … +135.23-0.895.5 %24698
The same table per hour — Δ % per cell

The breadth of a cross-table cell across the hours — needed when a cell is to be promoted under rule 10 (criterion 2).

Hourup-crossing (long) · spot above zero gammaup-crossing (long) · spot below zero gammadown-crossing (short) · spot above zero gammadown-crossing (short) · spot below zero gamma
09:30–10:00-65.23-210.01
10–11+151.44+45.06
11–12-36.67-55.06
12–13-51.75-8.31
13–14+12.13-68.04
14–15-59.15-100.00 ●
15–16+166.64+47.69
New York total+3.43-75.36

CL1b × PX1 — or is the crossing just a VWAP crossing?

Mandatory by-catch learned from CL1: there 87.7 % (NQ) and 93.3 % (ES) of all anchors sat in the agreement cells with the VWAP, and zero gamma was largely a VWAP proxy. Every level thesis therefore has to show what it can do in the disagreement cells.

StateShare of anchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying days
up-crossing (long) · price above the RTH VWAP18.5 % (81)+27.22+9.38+17.85-200.00 … +95.33+0.697.5 %8155
up-crossing (long) · price below the RTH VWAP25.2 % (110)+12.51+58.15-45.64-132.27 … +155.14-0.392.7 %11058
down-crossing (short) · price above the RTH VWAP22.2 % (97)+5.73+65.57-59.84-173.67 … +246.00-0.393.8 %9756
down-crossing (short) · price below the RTH VWAP34.1 % (149)-12.40+54.40-66.80-100.88 … +237.43-0.796.6 %14983
The same table per hour — Δ % per cell

The breadth of a cross-table cell across the hours — needed when a cell is to be promoted under rule 10 (criterion 2).

Hourup-crossing (long) · price above the RTH VWAPup-crossing (long) · price below the RTH VWAPdown-crossing (short) · price above the RTH VWAPdown-crossing (short) · price below the RTH VWAP
09:30–10:00+86.88-236.40 ●-27.06-350.63
10–11-42.19+367.45-230.62+67.01
11–12+67.40-109.34-29.38+137.94
12–13-41.38-60.06-38.07
13–14+591.67-26.95-220.00+12.31
14–15-445.50+39.42-44.78-125.93
15–16-43.09+195.22+119.47+21.00
New York total+17.85-45.64-59.84-66.80

Year by year: when did the effect live?

The same metric as above, only read by calendar year — reading cuts through the same 8 control arms, edge years labelled with their span; z is screening, not a verdict.

Yearsigned 15 min forward returnBaselineΔ (T)Control spanzresolvednSessions
2026 (13.03.–13.08.)+5.24+3.15+2.09-21.95 … +20.14+0.3437106
+2.38+18.7+1.71+13.5+1.04+8.2+0.38+3.0-0.29-2.3Δ Tz2026 (13.03.–13.08.) · Δ +2.09 T · z +0.33 · n 437z +0.332026 ** Teiljahr

Bars = Δ (T) per year against the baseline (left axis), ◆ = z against the control arms of the same year (right axis), filled from |z| ≥ 2. * marks a partial year.

Time probe: how many ticks were there to take? · the arbiter

The highlighted horizon is 15 min — the arbiter of this study.

Hour1 min5 min15 min30 min60 minnØ z
09:30–10:00-11.23-74.04-86.89-92.69-119.4774-1.5
10–11+14.14+11.63+62.75+80.06 ●+124.2883+1.9
11–12+2.81+8.05+2.95-21.97-15.3162+0.2
12–13+2.75+13.16-12.64+48.80+30.1655+0.8
13–14+9.36-1.83+0.10+0.00+72.8458+0.6
14–15+1.07-0.02-38.55+10.05-44.9844-0.0
15–16+26.38 ●+27.31+45.00 ●+62.98 ●+55.4361+2.4 ●
New York total+7.63-2.53+2.09+18.15+14.82437+1.0
All horizons per hour, with MFE and MAE
HourHorizonnØ FRBaselineΔControl spanShare positiveØ MFEØ MAE
09:30–10:001 min74-7.22+4.01-11.23-15.97 … +27.4747.3 %+73.27-88.53
09:30–10:005 min74-52.92+21.12-74.04-40.30 … +46.5544.6 %+146.82-193.39
09:30–10:0015 min74-74.31+12.58-86.89-63.46 … +73.5143.2 %+245.11-311.31
09:30–10:0030 min74-82.55+10.14-92.69-73.28 … +37.3240.5 %+317.92-420.05
09:30–10:0060 min74-119.07+0.41-119.47-157.05 … +73.9641.9 %+428.50-534.49
10–111 min83+10.45-3.70+14.14-12.66 … +16.6455.4 %+73.01-64.77
10–115 min83+2.33-9.30+11.63-23.96 … +21.7854.2 %+142.30-143.67
10–1115 min83+49.57-13.18+62.75-45.14 … +63.5455.4 %+270.83-218.12
10–1130 min83+66.22-13.84+80.06-48.48 … +21.75 ◆59.0 %+362.75-288.78
10–1160 min83+83.01-41.27+124.28-73.11 … +58.22 ◆48.2 %+466.24-366.14
11–121 min62+2.10-0.71+2.81-11.82 … +5.9550.0 %+47.84-49.48
11–125 min62+5.58-2.47+8.05-20.66 … +26.8558.1 %+108.71-101.21
11–1215 min62+16.35+13.40+2.95-31.03 … +23.8458.1 %+190.87-164.71
11–1230 min62-0.21+21.76-21.97-68.66 … +43.1551.6 %+250.00-212.15
11–1260 min62-17.97-2.66-15.31-100.32 … +51.7648.4 %+332.19-303.19
12–131 min55+3.05+0.31+2.75-12.78 … +6.6052.7 %+47.55-44.98
12–135 min55+10.95-2.22+13.16-27.07 … +9.45 ◆54.5 %+95.31-77.95
12–1315 min55-2.18+10.45-12.64-55.31 … +29.6050.9 %+141.27-136.35
12–1330 min55+10.67-38.13+48.80-77.55 … +30.9649.1 %+190.16-178.80
12–1360 min55-16.71-46.87+30.16-124.11 … +70.0543.6 %+267.93-294.71
13–141 min58+9.29-0.07+9.36-17.00 … +16.0943.1 %+50.26-32.81
13–145 min58-0.24+1.59-1.83-10.74 … +10.6943.1 %+79.95-76.69
13–1415 min58+3.60+3.50+0.10-32.33 … +41.8143.1 %+136.33-129.12
13–1430 min58+16.78+16.78+0.00-16.36 … +49.0351.7 %+191.86-168.90
13–1460 min58+71.50-1.34+72.84-32.60 … +62.07 ◆53.4 %+301.83-214.48
14–151 min44-0.45-1.52+1.07-12.80 … +4.0243.2 %+38.61-37.14
14–155 min44+1.34+1.36-0.02-21.20 … +9.2052.3 %+71.16-71.50
14–1515 min44-30.80+7.75-38.55-42.82 … +26.5952.3 %+107.77-139.52
14–1530 min44+0.09-9.95+10.05-61.98 … +30.2054.5 %+171.73-186.93
14–1560 min44-64.91-19.93-44.98-106.91 … +98.9845.5 %+238.45-289.41
15–161 min61+27.89+1.51+26.38-3.36 … +17.34 ◆67.2 %+65.38-28.54
15–165 min61+39.90+12.59+27.31-8.36 … +47.4463.9 %+112.66-71.20
15–1615 min61+64.38+19.38+45.00-6.75 … +33.75 ◆60.7 %+202.43-117.74
15–1630 min61+92.84+29.85+62.98-35.39 … +44.49 ◆67.2 %+283.89-173.80
15–1660 min61+101.34+45.92+55.43-98.72 … +87.56 ◆59.0 %+360.52-256.57
New York total1 min437+6.52-1.11+7.63-4.02 … +3.24 ◆51.7 %+58.73-52.05
New York total5 min437-0.68+1.85-2.53-13.23 … +10.7252.9 %+112.81-111.52
New York total15 min437+5.24+3.15+2.09-21.95 … +20.1451.9 %+195.01-182.29
New York total30 min437+15.11-3.04+18.15-37.49 … +16.5553.3 %+264.52-244.08
New York total60 min437+8.05-6.77+14.82-59.35 … +15.6848.5 %+356.36-333.58

Breadth (7 hours × 5 horizons): 62.9 %, control arms 20.0 % to 45.7 %.

Both halves of the window, separately
HalfBracketn resolvedP(+X before −X)BaselineΔ %
1 (2026-03-13 to 2026-05-28)±40 T20547.8 %50.4 %-2.61
1 (2026-03-13 to 2026-05-28)±80 T20549.3 %49.6 %-0.29
1 (2026-03-13 to 2026-05-28)±120 T19850.0 %50.7 %-0.68
1 (2026-03-13 to 2026-05-28)±160 T19148.7 %50.9 %-2.23
1 (2026-03-13 to 2026-05-28)±200 T17646.0 %50.5 %-4.51
1 (2026-03-13 to 2026-05-28)±280 T14746.9 %47.8 %-0.86
1 (2026-03-13 to 2026-05-28)±320 T13146.6 %50.9 %-4.30
1 (2026-03-13 to 2026-05-28)±400 T9643.8 %50.0 %-6.25
1 (2026-03-13 to 2026-05-28)±560 T5745.6 %51.2 %-5.61
2 (2026-05-29 to 2026-08-13)±40 T23252.6 %50.0 %+2.59
2 (2026-05-29 to 2026-08-13)±80 T23155.4 %45.7 %+9.72
2 (2026-05-29 to 2026-08-13)±120 T22955.0 %50.0 %+5.02
2 (2026-05-29 to 2026-08-13)±160 T22555.1 %48.6 %+6.46
2 (2026-05-29 to 2026-08-13)±200 T21254.2 %48.2 %+6.00
2 (2026-05-29 to 2026-08-13)±280 T19254.2 %48.7 %+5.47
2 (2026-05-29 to 2026-08-13)±320 T17953.6 %49.7 %+3.97
2 (2026-05-29 to 2026-08-13)±400 T14756.5 %50.7 %+5.73
2 (2026-05-29 to 2026-08-13)±560 T10559.0 %52.5 %+6.57
HalfHorizonnØ FRBaselineΔ (ticks)
1 (2026-03-13 to 2026-05-28)1 min205-3.69+1.37-5.07
1 (2026-03-13 to 2026-05-28)5 min205-6.69+5.32-12.01
1 (2026-03-13 to 2026-05-28)15 min205-1.49+4.71-6.20
1 (2026-03-13 to 2026-05-28)30 min205-29.74+0.40-30.13
1 (2026-03-13 to 2026-05-28)60 min205-32.62-15.61-17.01
2 (2026-05-29 to 2026-08-13)1 min232+15.55+1.25+14.30
2 (2026-05-29 to 2026-08-13)5 min232+4.63+1.64+3.00
2 (2026-05-29 to 2026-08-13)15 min232+11.19+6.98+4.21
2 (2026-05-29 to 2026-08-13)30 min232+54.73-2.98+57.71
2 (2026-05-29 to 2026-08-13)60 min232+43.99+4.95+39.05

NQ · SPX 0DTE (classic_gex_zero) — this repo's source, secondary variant

Secondary variant, no verdict — Does not judge. It is the bridge to CL1: only on this feed do “side” and “crossing” share the same data basis, and only then is the comparison between the two theses clean. An effect that shows up only here is an exploratory finding and must run as a thesis of its own (thesis.md §1).

Sign change of spot − zero_gamma between two 5-minute anchors from feed ES_SPX classic (0DTE), direction equal to the new sign, then locked out for 35 min — 108 trading days, 2341774 frames, 0.2 % of them warm-up (level 0, flat) · brackets 40 / 80 / 120 / 160 / 200 / 280 / 320 / 400 / 560 ticks · fill phase spread 1.85/1.62/1.14/1.50

NQ · Dev — full 0DTE coverage, digging is allowed here

Metric (no verdict) of this role: +20.94 T away from the baseline, predicted sign in 3 of 7 hour buckets.

106 sessions, 2026-03-13 to 2026-08-13 · 360 anchors: 159 long (44.2 %) / 201 short / 7908 flat · 0 without ticks · 0 horizons running past the session end · 8 control arms, shifts +92, +22, +97, +41, +75, +71, +89, +23

Hit rate probe: is the direction right?

HourP(+160 before −160)BaselineΔ %Control spanzresolvednDistribution of the daily hit ratesDays above baseline
09:30–10:0046.9 %50.0 %-3.1232.8 … 56.2 %-0.2100.0 %6430 of 64 (46.9 %)
10–1159.2 %51.3 %+7.8935.5 … 53.3 % ◆+1.8100.0 %7639 of 68 (57.4 %)
11–1261.0 %51.3 %+9.6942.5 … 65.0 %+1.397.6 %4121 of 36 (58.3 %)
12–1363.6 %53.1 %+10.5145.5 … 73.3 %+1.197.1 %3320 of 32 (62.5 %)
13–1459.0 %53.7 %+5.3245.5 … 60.5 %+1.288.6 %3919 of 35 (54.3 %)
14–1541.7 %47.8 %-6.1634.0 … 57.8 %-0.892.3 %4818 of 42 (42.9 %)
15–1647.7 %48.8 %-1.0537.5 … 61.0 %-0.191.7 %4420 of 40 (50.0 %)
New York total53.6 %50.7 %+2.8844.8 … 54.1 %+1.295.8 %34543 of 103 (41.7 %)
Other bracket widths
HourΔ ±40 TΔ ±80 TΔ ±120 TΔ ±200 TΔ ±280 TΔ ±320 TΔ ±400 TΔ ±560 T
09:30–10:00+10.94+3.12+9.38-4.69-10.42-8.44-7.69-3.84
10–11-10.53+1.32+9.21+4.63+9.28+4.42+4.39+10.35
11–12-4.76+4.76+4.76+5.00-6.16-1.85+0.00+8.33
12–13+8.82+5.88+23.53 ●+4.20+9.15+2.06+7.14+2.86
13–14+0.00-1.11+4.65+8.33+9.26+0.00+21.15+15.00
14–15-3.85+1.92-3.92-6.54-9.90-10.33-2.94-29.87
15–16+4.17+2.08-2.27+0.00-3.34-6.90-12.14+0.00
New York total-0.56+3.33+6.86 ●+0.83+0.93-3.06+0.27+5.30

Breadth (7 hours × 9 bracket widths): 54.0 %, control arms 14.3 % to 54.0 %.

Bracket up to the close (16:00 New York) — context

The same calculation as above, except the bracket does not run for 60 minutes but until 16:00 New York — the real arm and all 8 control arms under the same cap. Context, not a verdict: the arbiter stays the 60-min row above.

HourP(+160 before −160)BaselineΔ %Control spanzresolvedn Δ ±40 TΔ ±80 TΔ ±120 TΔ ±200 TΔ ±280 TΔ ±320 TΔ ±400 TΔ ±560 T
09:30–10:0046.9 %50.0 %-3.1232.8 … 56.2 %-0.2100.0 %64+10.94+3.12+9.38-4.69-9.38-6.25-8.73-5.74
10–1159.2 %51.3 %+7.8935.5 … 52.6 % ◆+1.8100.0 %76-10.53+1.32+9.21+5.26+6.58+2.63+4.83+10.77
11–1259.5 %52.4 %+7.1440.5 … 66.7 %+0.9100.0 %42-4.76+4.76+4.76+0.00-3.60-4.88-11.95-6.67
12–1364.7 %50.0 %+14.7144.1 … 70.6 %+1.5100.0 %34+8.82+5.88+23.53 ●+11.76+3.12+3.12+0.00+8.33
13–1458.1 %52.3 %+5.8747.7 … 59.1 %+1.697.7 %43+0.00-2.27+6.82+7.49+5.13+7.23+16.67 ●+24.30 ●
14–1544.0 %48.0 %-4.0036.0 … 55.3 %-0.696.2 %50-3.85+1.92-3.92-4.10-8.97-9.09-2.38-22.73
15–1652.8 %51.4 %+1.3531.4 … 60.6 %+0.575.0 %36+4.17+4.35-2.76+7.86+13.26+10.98+5.30-10.00
New York total54.5 %51.2 %+3.3444.5 … 53.8 % ◆+1.595.8 %345-0.56+3.63+6.84 ●+1.77+0.81-0.64-0.57+1.67

The resolved column is the interesting one here: it rises against 60 minutes because the slow path is given time. Only the last row runs the other way — the 15:55 anchor has 5 minutes left until the close, so the 15–16 bucket is capped shorter than above, not longer.

CL1b — lockout grid: how long must it stay quiet after a crossing?

The author claims only the first crossing of a cluster carries information and that a 35-minute lockout doubles the edge. Column 0 is the same crossing without any lockout — it is the control row for exactly that claim. Only the read cell of 35 min judges (slot A, frozen before the run); the remaining columns stand there in full but do not judge.

Adjacent thresholds share their signals (Learnings 10): an anchor with |net gex| = 4,000 sits in every threshold below it. The columns are therefore not independent tests — a single threshold that jumps out of the row while its neighbours show nothing is noise, not a finding. What is read is the course across the row; the verdict falls on exactly one, chosen in dev and frozen for the forward val (★).

Lockout after a signalAnchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying daysBuckets with the sign
no lockout769+1.56-0.89+2.45-7.91 … +14.73+0.194.4 %7691033 of 7
lockout 15 min507+13.54-0.32+13.86-14.68 … +21.51+1.194.9 %5071034 of 7
lockout 35 min ★360+19.61-1.33+20.94-12.95 … +30.59+1.195.8 %3601033 of 7
lockout 60 min285+15.16-1.12+16.28-21.95 … +35.97+0.895.1 %2851034 of 7
The same table per hour — Δ % per threshold
Hourno lockoutlockout 15 minlockout 35 minlockout 60 min
09:30–10:00-39.17-27.78-3.52-3.52
10–11+19.98+49.83 ●+69.88+108.90 ●
11–12-25.49+11.06-14.79-8.73
12–13+3.54+27.04+2.85+0.17
13–14+15.68+48.36 ●+53.09 ●+47.71 ●
14–15-13.82-24.61-40.88-54.05
15–16-4.35-22.06-13.83+2.38
New York total+2.45+13.86+20.94+16.28

CL1b — the video's secondary claims: the same rule on the walls

Without a verdict of its own. The author says a touch of the call wall is not rejected but broken through — fading loses, following wins; on the put wall the sign points the same way but too weakly to trade. Both rows run alongside, the same crossing mechanics, only the level differs. Fading is the exact mirror image of following: a negative Δ in a row means “fading wins”, and a separate fade row would be the same number with the sign flipped, so it is not shown twice.

Adjacent thresholds share their signals (Learnings 10): an anchor with |net gex| = 4,000 sits in every threshold below it. The columns are therefore not independent tests — a single threshold that jumps out of the row while its neighbours show nothing is noise, not a finding. What is read is the course across the row; the verdict falls on exactly one, chosen in dev and frozen for the forward val (★).

Level that is crossedAnchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying daysBuckets with the sign
Zero gamma (main arm) ★360+19.61-1.33+20.94-12.95 … +30.59+1.195.8 %3601033 of 7
Call wall (major_pos_vol), follow the break143-14.80+0.13-14.93-29.27 … +12.34-0.486.0 %143613 of 7
Put wall (major_neg_vol), follow the break150+2.37+0.00+2.37-20.92 … +19.00+0.596.7 %150604 of 7
The same table per hour — Δ % per threshold
HourZero gamma (main arm)Call wall (major_pos_vol), follow the breakPut wall (major_neg_vol), follow the break
09:30–10:00-3.52+189.00-240.40
10–11+69.88+28.00+6.07
11–12-14.79-12.50-20.00
12–13+2.85-56.44+25.28
13–14+53.09 ●+27.22+15.69
14–15-40.88-40.30-12.75
15–16-13.83-26.00+16.69
New York total+20.94-14.93+2.37

Matteo Conti — “I Tested Every Gamma Exposure Belief”

The source of the claims. His numbers: 820 sessions 2023-04 → 2026-07, NDX 0DTE, one value per minute, a fixed hold, no stop and no target, a baseline of “hold NQ in 15-minute slices” at ⌀ +$4.71. Crossing ⌀ +$33.22 over 3,400 trades, with a 35-minute lockout ⌀ +$62, with a 50-minute hold ⌀ +$99 gross. Open the video

CL1b × CL1 — does the crossing carry anything the side does not already say?

The video's central claim as a table: the author says the side is a coin flip and the crossing carries. After an up-crossing the spot sits above the level by construction — the agreement cells are the rule and the disagreement cells the exception. The size of that exception is exactly what is interesting: it shows how often a crossing had already run back inside a 5-minute window.

StateShare of anchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying days
up-crossing (long) · spot above zero gamma44.2 % (159)-0.71+69.85-70.56-47.31 … +129.50-0.795.0 %15984
up-crossing (long) · spot below zero gamma0.0 % (0)00
down-crossing (short) · spot above zero gamma0.0 % (0)00
down-crossing (short) · spot below zero gamma55.8 % (201)+35.69+16.89+18.80-69.21 … +105.79+0.496.5 %20197
The same table per hour — Δ % per cell

The breadth of a cross-table cell across the hours — needed when a cell is to be promoted under rule 10 (criterion 2).

Hourup-crossing (long) · spot above zero gammaup-crossing (long) · spot below zero gammadown-crossing (short) · spot above zero gammadown-crossing (short) · spot below zero gamma
09:30–10:00-131.99+10.05
10–11+145.76-20.54
11–12-49.45+33.67
12–13+50.00-155.62
13–14-21.68+5.60
14–15-72.26-128.97
15–16-54.98+20.13
New York total-70.56+18.80

CL1b × PX1 — or is the crossing just a VWAP crossing?

Mandatory by-catch learned from CL1: there 87.7 % (NQ) and 93.3 % (ES) of all anchors sat in the agreement cells with the VWAP, and zero gamma was largely a VWAP proxy. Every level thesis therefore has to show what it can do in the disagreement cells.

StateShare of anchorssigned 15 min forward returnBaselineΔ (T)Control spanzresolvedncarrying days
up-crossing (long) · price above the RTH VWAP28.3 % (102)-23.69+57.90-81.59-65.67 … +100.00-1.095.1 %10264
up-crossing (long) · price below the RTH VWAP15.8 % (57)+40.40+36.50+3.90-464.00 … +715.00+0.194.7 %5743
down-crossing (short) · price above the RTH VWAP27.2 % (98)+21.49+63.60-42.11-9.00 … +157.17-1.095.9 %9866
down-crossing (short) · price below the RTH VWAP28.6 % (103)+49.19-31.75+80.94-218.50 … +83.00+1.097.1 %10367
The same table per hour — Δ % per cell

The breadth of a cross-table cell across the hours — needed when a cell is to be promoted under rule 10 (criterion 2).

Hourup-crossing (long) · price above the RTH VWAPup-crossing (long) · price below the RTH VWAPdown-crossing (short) · price above the RTH VWAPdown-crossing (short) · price below the RTH VWAP
09:30–10:00-83.18-110.00-417.20+98.38
10–11-118.06+234.18-18.00-29.47
11–12-55.67-1.17-73.50+252.89
12–13+33.27-177.33
13–14-303.90-66.44-133.73+135.64
14–15-75.08-251.60-123.59 ●-20.29
15–16+333.00-49.00-28.46+71.25
New York total-81.59+3.90-42.11+80.94

Year by year: when did the effect live?

The same metric as above, only read by calendar year — reading cuts through the same 8 control arms, edge years labelled with their span; z is screening, not a verdict.

Yearsigned 15 min forward returnBaselineΔ (T)Control spanzresolvednSessions
2026 (13.03.–13.08.)+19.61-1.33+20.94-12.95 … +30.59+1.1360106
+23.88+18.7+17.17+13.5+10.47+8.2+3.77+3.0-2.93-2.3Δ Tz2026 (13.03.–13.08.) · Δ +20.94 T · z +1.09 · n 360z +1.092026 ** Teiljahr

Bars = Δ (T) per year against the baseline (left axis), ◆ = z against the control arms of the same year (right axis), filled from |z| ≥ 2. * marks a partial year.

Time probe: how many ticks were there to take?

The highlighted horizon is 15 min — the arbiter width, shown here as context.

Hour1 min5 min15 min30 min60 minnØ z
09:30–10:00-17.06-46.59-3.52+45.77+50.5564-0.2
10–11+13.61+15.66+69.88+53.92+36.7076+1.3
11–12+1.98-26.88-14.79+50.05+27.9842+0.2
12–13+11.79-22.03 ●+2.85+6.88+17.6534+0.2
13–14-0.45-13.20+53.09 ●+15.41+105.14 ●44+1.5
14–15-12.40-14.62-40.88-64.06 ●-87.6052-1.5
15–16+2.25+6.10-13.83-21.65-37.4048+0.0
New York total+2.69-6.01+20.94+28.78+24.90360+0.6
All horizons per hour, with MFE and MAE
HourHorizonnØ FRBaselineΔControl spanShare positiveØ MFEØ MAE
09:30–10:001 min64-12.25+4.81-17.06-37.14 … +22.3648.4 %+78.72-84.28
09:30–10:005 min64-43.08+3.52-46.59-43.31 … +23.1142.2 %+160.06-180.30
09:30–10:0015 min64-6.94-3.42-3.52-41.02 … +81.6645.3 %+260.34-290.62
09:30–10:0030 min64+39.45-6.31+45.77-106.02 … +99.8348.4 %+356.02-346.48
09:30–10:0060 min64+46.95-3.59+50.55-91.08 … +115.9546.9 %+484.14-444.53
10–111 min76+12.41-1.20+13.61-22.12 … +21.2652.6 %+74.97-62.01
10–115 min76+22.95+7.29+15.66-28.76 … +12.82 ◆50.0 %+153.34-125.92
10–1115 min76+70.24+0.36+69.88-124.50 … +50.99 ◆56.6 %+289.20-203.68
10–1130 min76+70.30+16.38+53.92-123.32 … +55.80 ◆56.6 %+380.68-251.55
10–1160 min76+49.45+12.75+36.70-234.93 … +76.0350.0 %+483.25-365.76
11–121 min42+2.86+0.88+1.98-19.79 … +27.4052.4 %+52.45-45.90
11–125 min42-19.14+7.74-26.88-37.29 … +34.6247.6 %+95.71-113.50
11–1215 min42+8.36+23.14-14.79-25.50 … +71.8152.4 %+186.24-175.52
11–1230 min42+57.31+7.26+50.05-45.12 … +84.1952.4 %+253.83-211.36
11–1260 min42+29.71+1.74+27.98-44.90 … +84.9352.4 %+328.57-287.05
12–131 min34+17.18+5.38+11.79-13.79 … +20.7661.8 %+50.50-32.32
12–135 min34-16.76+5.26-22.03-9.24 … +23.2644.1 %+91.06-94.29
12–1315 min34+22.15+19.29+2.85-31.85 … +43.3855.9 %+163.15-134.50
12–1330 min34+17.85+10.97+6.88-74.18 … +54.2450.0 %+230.65-180.41
12–1360 min34+11.03-6.62+17.65-111.32 … +24.1555.9 %+331.62-266.41
13–141 min44+1.55+2.00-0.45-12.91 … +5.0943.2 %+48.64-37.18
13–145 min44-3.34+9.86-13.20-23.59 … +18.7045.5 %+75.95-72.55
13–1415 min44+50.30-2.80+53.09-18.73 … +34.07 ◆59.1 %+142.77-107.45
13–1430 min44+27.84+12.43+15.41-35.77 … +22.32 ◆59.1 %+196.16-152.07
13–1460 min44+110.80+5.66+105.14-30.14 … +60.86 ◆61.4 %+311.77-194.61
14–151 min52-13.62-1.21-12.40-9.00 … +17.8142.3 %+33.88-43.94
14–155 min52-11.17+3.44-14.62-21.52 … +33.8759.6 %+73.37-82.50
14–1515 min52-25.50+15.38-40.88-39.19 … +32.7748.1 %+108.77-140.25
14–1530 min52-55.71+8.35-64.06-54.40 … +21.8144.2 %+136.98-204.23
14–1560 min52-88.00-0.40-87.60-84.96 … +72.1038.5 %+193.15-287.29
15–161 min48+4.15+1.90+2.25-6.29 … +18.5654.2 %+45.60-37.29
15–165 min48+18.48+12.38+6.10-15.21 … +26.7950.0 %+93.98-81.83
15–1615 min48+3.65+17.48-13.83-37.58 … +50.9254.2 %+142.67-136.81
15–1630 min48+16.04+37.69-21.65-36.46 … +75.6256.2 %+214.10-185.65
15–1660 min48-4.73+32.67-37.40-117.35 … +98.6554.2 %+277.88-280.58
New York total1 min360+1.17-1.52+2.69-7.10 … +10.5850.3 %+57.63-52.35
New York total5 min360-6.19-0.18-6.01-6.91 … +17.2648.6 %+113.01-112.48
New York total15 min360+19.61-1.33+20.94-12.95 … +30.5952.8 %+196.66-179.48
New York total30 min360+27.72-1.06+28.78-22.10 … +37.1252.5 %+267.36-229.24
New York total60 min360+23.49-1.40+24.90-44.74 … +21.11 ◆50.6 %+360.80-317.59

Breadth (7 hours × 5 horizons): 54.3 %, control arms 20.0 % to 71.4 %.

Both halves of the window, separately
HalfBracketn resolvedP(+X before −X)BaselineΔ %
1 (2026-03-13 to 2026-05-28)±40 T18647.8 %51.7 %-3.82
1 (2026-03-13 to 2026-05-28)±80 T18647.8 %49.2 %-1.37
1 (2026-03-13 to 2026-05-28)±120 T18355.7 %48.8 %+6.90
1 (2026-03-13 to 2026-05-28)±160 T17652.8 %50.9 %+1.93
1 (2026-03-13 to 2026-05-28)±200 T16749.1 %48.3 %+0.80
1 (2026-03-13 to 2026-05-28)±280 T13247.0 %49.6 %-2.62
1 (2026-03-13 to 2026-05-28)±320 T11242.9 %48.5 %-5.63
1 (2026-03-13 to 2026-05-28)±400 T8343.4 %47.4 %-4.06
1 (2026-03-13 to 2026-05-28)±560 T4946.9 %50.0 %-3.06
2 (2026-05-29 to 2026-08-13)±40 T17452.3 %49.2 %+3.13
2 (2026-05-29 to 2026-08-13)±80 T17456.3 %48.9 %+7.43
2 (2026-05-29 to 2026-08-13)±120 T17458.0 %51.4 %+6.62
2 (2026-05-29 to 2026-08-13)±160 T16954.4 %50.6 %+3.86
2 (2026-05-29 to 2026-08-13)±200 T15955.3 %49.7 %+5.66
2 (2026-05-29 to 2026-08-13)±280 T14353.1 %51.4 %+1.72
2 (2026-05-29 to 2026-08-13)±320 T13450.7 %50.8 %-0.02
2 (2026-05-29 to 2026-08-13)±400 T11054.5 %51.8 %+2.79
2 (2026-05-29 to 2026-08-13)±560 T8360.2 %52.4 %+7.86
HalfHorizonnØ FRBaselineΔ (ticks)
1 (2026-03-13 to 2026-05-28)1 min186-4.61+2.65-7.26
1 (2026-03-13 to 2026-05-28)5 min186-6.39+2.65-9.04
1 (2026-03-13 to 2026-05-28)15 min186+1.15+2.85-1.70
1 (2026-03-13 to 2026-05-28)30 min186-18.19-7.88-10.31
1 (2026-03-13 to 2026-05-28)60 min186-18.96-18.98+0.03
2 (2026-05-29 to 2026-08-13)1 min174+7.35-1.09+8.44
2 (2026-05-29 to 2026-08-13)5 min174-5.98+1.19-7.16
2 (2026-05-29 to 2026-08-13)15 min174+39.35+10.18+29.17
2 (2026-05-29 to 2026-08-13)30 min174+76.80+5.91+70.89
2 (2026-05-29 to 2026-08-13)60 min174+68.87+20.48+48.40

Sample days

10 sessions, drawn by seed (20260813), not hand-picked — illustration, not evidence (Learnings 11). They are the same days as in the other instrument's report, so the two can be laid side by side. Price NQ as a 1-minute path in points; there is no indicator line here — the condition lives in a different price space and does not fit on this axis, only the anchors are visible.
Every marker is an anchor: long, short; green = +160 T reached first, red = −160 T first, grey = neither side within 60 minutes.

2026-03-18

78 anchors · 5 long / 73 short · 7 resolved, 4 of them with +160 T first (57.1 %)

09:3010:0011:0012:0013:0014:0015:0016:002463024727248242492125018

2026-03-20

78 anchors · 3 long / 75 short · 6 resolved, 5 of them with +160 T first (83.3 %)

09:3010:0011:0012:0013:0014:0015:0016:002395824097242372437724517

2026-03-25

78 anchors · 1 long / 77 short · 6 resolved, 3 of them with +160 T first (50.0 %)

09:3010:0011:0012:0013:0014:0015:0016:002427724341244042446724531

2026-04-21

78 anchors · 4 long / 74 short · 8 resolved, 4 of them with +160 T first (50.0 %)

09:3010:0011:0012:0013:0014:0015:0016:002655526640267242680926893

2026-04-24

78 anchors · 2 long / 76 short · 2 resolved, 0 of them with +160 T first (0.0 %)

09:3010:0011:0012:0013:0014:0015:0016:002713627220273032738627470

2026-05-06

78 anchors · 0 long / 78 short · 1 resolved, 0 of them with +160 T first (0.0 %)

09:3010:0011:0012:0013:0014:0015:0016:002832428427285302863328736

2026-05-27

78 anchors · 3 long / 75 short · 4 resolved, 3 of them with +160 T first (75.0 %)

09:3010:0011:0012:0013:0014:0015:0016:002986729952300363012130206

2026-06-10

78 anchors · 1 long / 77 short · 2 resolved, 0 of them with +160 T first (0.0 %)

09:3010:0011:0012:0013:0014:0015:0016:002846328670288762908329289

2026-07-10

78 anchors · 1 long / 77 short · 3 resolved, 1 of them with +160 T first (33.3 %)

09:3010:0011:0012:0013:0014:0015:0016:002974229830299173000530092

2026-07-17

78 anchors · 2 long / 76 short · 6 resolved, 4 of them with +160 T first (66.7 %)

09:3010:0011:0012:0013:0014:0015:0016:002838328556287292890329076
How to read this report

Layout

This report belongs to one instrument (NQ) and judges nothing else. First the verdict, then per data role (dev, then val) the same set of sections, always in the same order: hit rate probe including the distribution across days (is the direction right?) · time probe (how many ticks were there to take — the arbiter) · both halves of the window separately. Which section carries the arbiter depends on the preregistration of this study; the order is fixed. Nothing collapsed is second-rate, only second-asked — the other bracket widths, the full MFE/MAE matrix and the halves.

Money is no longer reported here. The probe asks about direction; the tradability section (money per sizing model and the metrics beside it) was cut from this report without replacement on 2026-08-15. Whether a direction can be traded after costs is checked later by a test of its own — once a thesis holds up.

Two instruments, two verdicts. Every thesis is tested on NQ and on ES separately, each instrument with the signal from its own ticks and its own arbiter width (NQ ±160 T ≈ 40 points ≈ 0.17 % of price, ES ±40 T ≈ 10 points — the same relative move on the ES grid). One instrument alone does not make a thesis pass; the other's report sits in the same folder.

Arbiter

The arbiter is the one number declared the referee before the run: Signed 15-minute forward return in ticks minus baseline, New York total, gross, per instrument separately — two verdicts. The deviation from the default arbiter (hit rate P(+X before −X)) is deliberate and explained in advance: the author measures exactly this, a fixed hold with no stop and no target. The hit-rate and bracket tables run alongside as the robustness reading, because a mean over fat tails is wobbly — by his own number, 20 of 1,500 trades carry 90 % of the profit. His 50-minute refinement is read at the 60-minute grid point; the machine's horizon grid is not bent for a single study.. It decides alone, and it decides in exactly the metric shown in the verdict table. Everything else in this report is exploration — it is shown in full because what works and what does not should be visible, but it does not turn this verdict. Whatever stands out here is a new thesis and re-runs on untouched data.

The verdict box: six phrases, and no more

Since the protocol reform of 2026-08-15 (thesis.md §2, rules 8–12) the verdict box carries exactly one of six stages, and each names the configuration in the same sentence: confirmed on ⟨config⟩ (dev and forward val passed) · confirmed (weak) on ⟨config⟩ (the val sign is right, but the val Δ is smaller than 50 % of the dev Δ) · dev passed on ⟨config⟩ — forward val running, verdict on ⟨date⟩ · no evidence on ⟨config⟩ · strong, unconfirmed on ⟨config⟩ — frozen for forward val, verdict on ⟨date⟩ · artefact: ⟨what the control arm reproduces⟩.

“The metric has no edge” is never written here. A verdict applies to the triple of condition, configuration and time scope, not to a metric in general — which is why it reads no evidence on ⟨config⟩. A null finding across a whole metric would only be justified once not a single configuration of the grid named in advance shows a neighbour-consistent Δ > 0 with z ≥ 2. And a confirmed stands: every further forward window after it runs as a labelled replication and builds the series, it does not turn the verdict.

Slot A and Slot B

Per thesis and instrument at most 2 frozen configurations enter the forward val — there are no more, and that is the guard against multiplicity. Slot A is the primary config: the user's live setting or the selection rule named in advance. Slot B is optional and is drawn mechanically from the dev grid under the plateau rule: the smallest threshold of the contiguous range in which Δ carries the predicted sign, |z| ≥ 2 holds, and the direct neighbours show the same sign. Smallest threshold means largest n and therefore the most conservative choice — not the z maximum, or the choice would be a ranking again.

Both slots are frozen with a date and get a verdict of their own; they are never netted against each other and never played off against each other. If the choice lands on the edge threshold of the grid, the report says ⟂ edge — the edge may lie beyond the grid. A grid may be extended in dev (dev is the digging window, the freeze is the guard); the extension is declared beforehand and the selection rule is then recomputed over the full grid.

Promotion: when an exploratory finding moves on

A finding outside the preregistration may stand as strong, unconfirmed if it meets all four criteria: (1) neighbour consistency — no lone spike, the grid neighbours show the same sign; (2) breadth — the predicted sign in ≥ 4 of 7 hour buckets, or in one contiguous block of ≥ 3 hours, which is then registered as the scope; (3) z ≥ 2 New York total — an entry ticket, not a verdict; (4) ≥ 30 carrying days. If the finding is not a grid cell (a cross-table cell, say), criterion 1 does not apply and criterion 4 tightens to ≥ 40 days.

Whatever passes is registered the same day as a thesis of its own with a freeze date and is then validated on forward data only — price theses included, because the tick store grows daily; the PX holdout stays reserved for the originally registered PX theses. Whatever fails stays exploration with the note too thin for promotion, n days = X — no vague “must re-run”. The criteria appear in the report as a mechanically recomputed table, not as an assertion.

Scoped resubmission. If a thesis fails on breadth even though the total Δ sits above every control arm with z ≥ 2, one check follows: do the positive buckets form a contiguous block? If they do, the hour-scoped version (“⟨thesis⟩, only ⟨block⟩”) attempts the promotion. If they do not, that is stated just as plainly — scattered hours are not a scope.

Carrying days and the date behind “verdict on”

A carrying day is a trading day that contributes at least one resolved anchor at the arbiter width to exactly this configuration — resolved meaning one of the two barriers was reached. The count appears as its own column in the grid and cross tables. Why it matters: anchors of the same day are correlated — 78 anchors from 12 days are not 78 observations, and a large n from few days is a day effect, not an edge.

The date behind verdict on is an estimate: the forward val runs over 30 trading days, so roughly six trading weeks — computed as freeze + 42 calendar days, then rolled to the next weekday. This calculation knows nothing about holidays; the real verdict falls once the 30 trading days have actually accumulated, not on the calendar date.

Δ, baseline, control span and ◆

Δ is real minus baseline, and the baseline is the median over the 8 control arms — the same run with the same condition, but with the sign series shifted cyclically across the days. The control span runs from the worst to the best arm. Whatever the baseline also achieves is no edge — only the distance counts. A means: the real arm sits above every single control arm, not just above their median. A ◆ is a marker, not significance: if the signal carries no information, the rank of the real arm among the 9 is uniform — a ◆ falls purely by chance in 1 of 9 cases (11 %). Likewise the min…max control span of 8 arms is only a 8/9 interval (88.9 %), not a 95 % interval (Learnings 27). And the hour buckets are 09:30–10:00 plus the full hours after it; because the anchors overlap, n is not a count of independent observations — how uncertain a cell is is read off the control span, not off n.

z and Ø z — the screening number per hour

z is the distance of the real arm from the mean of the 8 control arms, measured in their standard deviation: z = (real − mean of the arms) / sd of the arms. z = +2.0 means two standard deviations above what the shifted arms achieve on the same anchors. The column appears in the hit rate table per hour row and in the total row, at the arbiter width; in the time probe matrix every cell carries its z in the tooltip, as do the cells under “other bracket widths” and in the halves table — there against the control arms of the respective width. A marks |z| ≥ 2. Without spread (sd = 0) or without resolved anchors the cell reads “—”.

The ● does not mark the largest number but the largest distance in units of noise. The spread of the control arms differs in width per horizon and per bracket width — which is why a +1.3 can be marked at 30 min and a +4.6 not at 60 min: the 60-min path simply scatters far more, and a large tick value is nothing special there. Raw tick values are not comparable across horizons; that is exactly what Ø z beside them is for.

Ø z on the right of the time probe matrix is the mean of the z values of an hour row across the five horizons — the single number answering whether this hour sits outside the noise across all horizons. The z are averaged, not the tick Δ: the horizons have different scales. Cells without sd or without n drop out of the mean.

Two warnings, both meant seriously. First: the sd comes from only 8 arms and is therefore itself roughly estimated — z is not a clean test statistic but an order of magnitude. Second: with 7 hours × many cells |z| ≥ 2 also falls purely by chance; look long enough and you will always find a cell. And the five horizons overlap (the 1-min path sits inside the 5-min path and so on) — a high Ø z is therefore not a fivefold independent confirmation. z and Ø z are screening markers like the ◆, not a verdict: the verdict is passed by the preregistered arbiter alone.

Anchors

An anchor is a fixed sampling point: every 5 minutes between 09:30 and 15:55 New York the condition is read and turned into long, short or flat — 78 anchors per session. It deliberately does not hang on an entry signal; the question is whether the condition carries direction at all.

Hit rate probe

P(+X before −X) is the share of anchors at which price reaches X ticks in the signal direction before it reaches X ticks against it, within 60 minutes — gross on the raw price, without spread and commission: the barriers are symmetric, costs hit both sides equally and cancel out in the question about direction. The resolved column is the share of anchors at which either side was reached at all within 60 minutes; only those enter the rate, and whatever stays open drops out identically in both arms. Δ % is the difference in percentage points: hit rate minus baseline. +2 means 2 points more hits than the control, not 2 % relative — 51.3 % against 49.9 % is +1.4.

The highlighted columns are ±160 T — the default arbiter from thesis 02 onward, context here; this study is registered on signed 15 min forward return. The same quantity as Δ for the remaining widths sits collapsed under other bracket widths. It is read against the baseline, never against 50 %: a symmetric barrier does not land at 50 % by itself, drift and the mix of long and short move the zero point.

The width means ticks of this instrument: ±160 T are points on 40. The arbiter width is chosen per instrument so that it measures the same relative move (NQ ±160 T ≈ 0.17 % of price, ES ±40 T likewise); the resolved column shows how much of that is decided within 60 minutes at all.

Bracket to the close

Strictly speaking the 60-min rate measures P(+X before −X), given that one side is reached within 60 minutes. What resolves are preferentially the fast, volatile moments; the slow trend day drops out as open, the more often the wider the bracket. If an effect lives exactly there, the 60-min measurement systematically underrates it. The collapsed table bracket to the close therefore computes the same widths and the same booking a second time, capped at the RTH close 16:00 New York — the user is flat there, and does not trade what happens afterwards.

It does not judge. Baseline and z come from the same 8 control arms, computed with the same close cap — the real arm gets no special path. The arbiter nevertheless stays the 60-min row (NQ ±160 T, ES ±40 T): it is preregistered and frozen. An effect that shows up only in the close variant is exploration and must run as a new thesis on untouched data.

The 15:55 anchor has only 5 minutes left. The anchors run to 15:55, the cap sits fixed at 16:00 — from 15:05 onward the window is therefore shorter than 60 minutes. The 15–16 bucket is thus the only row in this table that gets less time than above; its resolved column and its n stand visibly beside it so it is not confused with the other hours.

Year by year

The year by year section reads the same arbiter metric a second time, split by calendar year — the year of the anchor in New York time, and because the anchors sit between 09:30 and 15:55 that is simply the calendar day of the session. Why at all: the market has quirks on an hourly basis and macroeconomic cycles above that; one number over six years hides that something carries in some years and not at all in others. The same logic as “total is irrelevant” across the day, only across the years.

The years are read-off slices, not runs of their own. The cyclic shift of the 8 control arms still runs over the full day list of the role; only afterwards are real arm and arms split by year. The baseline of a year is therefore the median of the same arms on the same anchors, not a freshly shuffled run. Edge years are partial years and carry their span in the name (“2020 (from 29.05.)”), in the chart a * — their n is smaller, their control span wider, and a year with few sessions swings accordingly.

The chart below shows Δ per year as bars (left axis) and z as a diamond (right axis). z stays screening, here even more than usual: with seven years × two instruments × several studies |z| ≥ 2 also falls purely by chance. A striking year is a new thesis and must run again on untouched data — it does not overturn a preregistered verdict.

The threshold grid

The thresholds are named before the run and are all computed and reported — which one separates best is part of what should be visible here. The verdict is nevertheless passed on exactly one: it is chosen in the dev window, marked with ★ and frozen for the forward val; the choice and its reason are recorded in the measurement.

Seven columns are not seven tests (Learnings 10). Adjacent thresholds share their anchors — an anchor with large |net gex| sits in every threshold below it. The course across the row is therefore what is read: a smooth trend over several thresholds is a hint, a single spike between inconspicuous neighbours is noise.

Cross table of two conditions

Two conditions can mean the same state — then the new one measures nothing new. The cross table splits the same anchors into the four combinations of the two signs and computes the same arbiter metric in every cell, with baseline and z from the same control arms. The cell of an anchor always comes from the real arm; only the traded direction is shifted.

It is read in two steps. First the column share of anchors: if nearly all anchors sit in the two agreement cells (both above or both below), the conditions are largely the same state. Second the disagreement cells — where the two conditions disagree is where it shows which one carries the direction. Anchors at which either condition is flat drop out of the table.

Primary and secondary variant

The same thesis runs in two feed variants within the same run: 0DTE (nearest expiry) first and as the primary variant — that is where the verdict falls, because the user trades off that picture —, below it full across all expiries ≤ 90 days. Both compute the same days, the same anchors and the same control arms. An effect that shows up only in full is an exploratory finding and must run as a thesis of its own on untouched data (thesis.md §1).

Why only dev appears here

Since the addendum of 2026-08-15 options theses have a forward val: dev is the full coverage of the feed, and val is the first 30 trading days that accumulate after the freeze of the thesis — data that did not exist at freeze time and that therefore cannot have been looked at by construction. That window does not exist yet today; the verdict box therefore stands at the stage dev passed on ⟨config⟩ — forward val running, verdict on ⟨date⟩, provided the dev criterion is met (predicted sign in at least half of the hour buckets), otherwise at no evidence on ⟨config⟩. Only the one val run says confirmed.

The hours are all there is here. Options theses are New-York-only by construction — the feed covers RTH 09:30–16:00 alone. A split by Asia and London is therefore absent not out of convenience but because there is no data there; the session breakdown from the learnings is the hour breakdown here.

Distribution across the days

One hit rate per session, turned into a histogram. The question is not whether the rate is right but whether it is carried by many days or by few. The bars are the ten deciles from 0 % to 100 %, the height is the share of days in that decile; days without a resolved anchor in that hour do not count. The tooltip above the histogram names the median day, the band from 10 % to 90 % and the number of days, the tooltip per bar the days in that decile.

The hour rows hold only about a dozen anchors per day — the daily rate is coarsely stepped there. The New York total row is the robust one: there every day has all 78 anchors.

Time probe

The signed forward return (FR) is the price path in ticks, turned into signal direction: signal short and price falls 10 ticks means +10. Bracket-free — no stop, no target, nothing that truncates the result — and gross, because costs move every cell equally and cancel out in the difference to the baseline. What is shown is Δ to the baseline; green means above. This is the second question — direction is answered by the hit rate probe.

MFE / MAEmaximum favorable / adverse excursion: how far price ran at most for and against the signal within the horizon. A good MFE with a poor forward return means: the move was there, it just did not hold to the horizon.

Both halves

A setting that carries in only one half is not a setting but a period (Learnings 26). First the hit rate, then the time probe — both as Δ to the baseline.

Breadth

Breadth is the share of cells above the baseline — 7 hours × bracket widths or × horizons; beside it stands what the best and the worst control arm achieve on the same computation. For the hit rate a control arm sits at around 50 % by construction. The verdict is never passed on the best cell.

Run
Instrument of this reportNQ
SignalSign change of spot − zero_gamma between two 5-minute anchors from feed NQ_NDX classic (0DTE), direction equal to the new sign, then locked out for 35 min — 108 trading days, 2364428 frames, 0.2 % of them warm-up (level 0, flat)
Sessions read106
Anchors per session78 (09:30–15:55, every 5 min)
Horizons1 / 5 / 15 / 30 / 60 min, bracket horizon 60 min; second bracket run capped at the RTH close 16:00 (context)
Bracket widths40 / 80 / 120 / 160 / 200 / 280 / 320 / 400 / 560 ticks
Arbitersigned 15 min forward return
Control arms8, seed 20260813, cyclic shift of the sign series across the days
Half-spread at entry, measured1.31 ticks
Reading ticks2.7 s
Run total24.7 s
Commitf1a70e3c099644522bfadfea043aa7c2b6d7cefb