MN HOLD-SIDE
When RTH opens 60–200 pts away from the NY midnight open AND the 4H trend agrees, price holds that side all day. 409 sessions, +28 pts/trade at target 250; PRIME tier (10:00 ext≥60) gets +55/tr.
updated 2026-04-29The setup
New York midnight (00:00 ET) is a liquidity pivot. On most sessions price eventually crosses it during RTH — but on ~33% of days it never does. Those are hold days: price opens on one side of the midnight open and runs away from it all session long.
The problem has always been identifying in advance which days will hold. Our T3 filter does it cleanly:
| Condition | Requirement |
|---|---|
| Distance | |RTH_open − MN| ∈ [60, 200] pts |
| Trend | 4H SMC trend aligns with the open side (above MN + 4H bullish → BULL; below MN + 4H bearish → BEAR) |
When both conditions fire at 09:30, the model publishes MN HOLD BULL / MN HOLD BEAR to the chart HUD. Stop = the midnight-open price. Target = entry ± 250 pts. Flat by 15:55.
If by 10:00 the market has extended ≥60 pts away from MN (confirming the hold thesis), the line upgrades to MN HOLD PRIME — base probability lifts from 57 → 64%, and the setup becomes the single highest-expectancy trade in the stack.
Entry rules
- Trigger time: 09:30 (standard tier), or 10:00 (PRIME tier, confirmation gate).
- Side: set at 09:30 from sign of
RTH_open − MN. - Stop:
mn_hold_stop(= the midnight open price). - Target: entry ± 250 pts (configurable in the strategy).
- Scratch: flat at 15:55 regardless.
- Risk: bounded by the distance cap — worst-case stop is 200 pts.
- Shown on HUD as
MN HOLD BULL/MN HOLD BEAR, upgraded toMN HOLD PRIME <side>once PRIME locks.
Two deployable modes
The backtest surfaced two clean configurations, both shipped:
| Mode | Entry | Gate | n | Win% @ 250 | Exp/tr | Total pts |
|---|---|---|---|---|---|---|
| A — ImmediateOpen930 | 09:30 open | none | 341 | 16.7% | +28.25 | +12,694 |
| B — ConfirmAt1000 | 10:00 open | ext ≥ 60 in first 30 min | 148 | 16.2% | +55.13 | +8,160 |
Mode A trades more frequently with a simpler rule. Mode B filters to trend days that have already proven themselves by 10:00 and doubles per-trade expectancy in exchange for a deeper stop (Q50 risk 182 vs 101).
Probability calibration
Base probability = 57% (realized hit rate at 150-pt target on the qualifying pool).
| Condition | Adjustment |
|---|---|
| PRIME tier (ext ≥ 60 by 10:00) | +7 → 64% |
| Thursday | −5 |
| Tuesday / Friday | +3 |
| Monday + PRIME | −5 |
Why Tier 1
This is a rare setup that earned Tier 1 on two independent grounds:
1. Standalone expectancy. +28.25 pts/trade across 341 trades, all five weekdays positive, zero negative targets in the target-sweep curve. The PRIME variant approaches +55/trade. By itself it is the best-expectancy trend-day filter in the stack.
2. Confluence amplifier. When MN HOLD is active, 16 other models in our suite show measurably different hit rates based on direction agreement. PDH TOUCH / PDL TOUCH swing 60 percentage points between aligned and opposed. 1H CRT lifts from 81.7 → 94.5% when aligned. Full bonus/penalty table below. In the 34k-prediction meta-validation, applying the confluence layer:
- Expanded the 95%+ confidence bucket 5.7× (119 → 681 lines), still hitting 97.5%.
- Killed 795 lines that were opposed by the signal (60–70% were real losers).
- Lifted overall hit rate +0.82 pp with a cleaner population.
Confluence rules (applied to other lines when MN HOLD is active)
Aligned = same direction as mn_hold_side. Kill floor 40.
| Line | Aligned bonus | Opposed penalty | PRIME extra |
|---|---|---|---|
| PDH TOUCH / PDL TOUCH | +25 | −20 | +3 |
| PO XTND BEAR | +15 | 0 | +3 |
| 1H CRT | +12 | −15 | +3 |
| ASIA [Med] LOW | +12 | −8 | +3 |
| PO XTND BULL | +10 | −10 | +3 |
| 0809 MID | +10 | −12 | +2 |
| AMD BEAR | +8 | −15 | +2 |
| 0809 SEQ LOW | +8 | −5 | +5 |
| ASIA [Med] HIGH | +8 | −8 | +3 |
| PO RNG MID | +8 | 0 | +8 |
| PO RNG BEAR | +8 | −8 | +2 |
| PWH/L RETEST | +8 | 0 | +5 |
| LON SWEEP L | +8 | 0 | +8 |
| AMD BULL | +5 | 0 | +2 |
| 0809 SEQ HIGH | +5 | −5 | +5 |
| LON SWEEP H | +4 | 0 | +8 |
| OR30 BREAK (direct 09:30 breakout) | +20 | −18 | +12 |
| OB STRETCH B | +3 | 0 | +5 |
| PO RNG BULL / OB BULL | +1 to +2 | −3 to −4 | +2 to +3 |
| OB MID | −5 | −20 | 0 |
| OB MID MAGNET | −5 | −18 | 0 |
| MN OPEN FILL / INSIDE GAP FILL | 0 | −25 | 0 |
| FILL 07-08 L | 0 | −14 | 0 |
| FILL 06-07 H / GAP FILL → PDH | 0 | −13 | 0 |
| FILL series (other) | 0 | −10 to −12 | 0 |
| HRR 08:00-09:00 SHORT | 0 | −15 | 0 |
The mean-reversion lines (MN OPEN FILL, INSIDE GAP FILL, FILL series, OB MID, OB MID MAGNET) get killed on opposed hold days — the backtest showed their edge evaporates when the market is in trend mode. OB MID signals get a small aligned penalty as well, because the replay backtest (1,370 sessions) found MN-active sessions are −6.6 pts/trade regardless of direction when trading 10:30 OB midpoint reversion — the trend-day regime dominates over direction agreement.
DOW breakdown (Mode A, target 250)
| DOW | n | Win% | Exp/tr | Total |
|---|---|---|---|---|
| Mon | 61 | 11.5% | +40.06 | +2,444 |
| Tue | 71 | 16.9% | +50.77 | +3,605 |
| Wed | 65 | 23.1% | +46.84 | +3,044 |
| Thu | 81 | 9.9% | +8.92 | +723 |
| Fri | 63 | 23.8% | +45.69 | +2,878 |
| All | 341 | 16.7% | +37.23 | +12,694 |
Thursday is the outlier drag but still net positive. Skipping it lifts remaining exp to +46/tr × 260 trades.
PDC overlay (2026-04-29)
We hypothesized that midnight’s position relative to the prior-day range would refine the signal — a midnight parked on top of yesterday’s close is doing something different from one stretched far above PDH. Backtest on the T3 pool (n=265, dist 60-200 + 4H aligned, target 250):
MN offset from PDC
| Bucket | n | Exp/tr |
|---|---|---|
| MN << PDC (≥50pt below) | 38 | +37 |
| MN < PDC (15–50 below) | 51 | +44 |
| MN ≈ PDC (±15) — dead zone | 59 | +2 |
| MN > PDC (15–50 above) | 53 | +38 |
| MN >> PDC (≥50 above) | 64 | +30 |
The middle bucket — when midnight prints within 15pt of yesterday’s RTH close — collapses the edge. 22% of T3 trades are in this dead zone and they barely net positive. Skip them.
Opposite-half pattern
Splitting BULL vs BEAR by which side of PDC midnight sits on:
| Direction | MN side of PDC | n | Exp/tr |
|---|---|---|---|
| BEAR | MN > PDC (above) | 78 | +58 |
| BEAR | MN < PDC (below) | 41 | +12 |
| BULL | MN < PDC (below) | 48 | +71 |
| BULL | MN > PDC (above) | 39 | +18 |
BEAR trades work best when midnight is above prior close (price has room to fall back through it); BULL trades work best when midnight is below prior close (room to rally back). Same-side setups are weak.
What ships
isDead = abs(MN − PDC) < 15 → SKIP entirely
isOppHalf = (BEAR and MN > PDC) or (BULL and MN < PDC) → +10pp
Wired into smc_analysis.py (emits mn_pdc_offset, mn_pdc_dead, mn_opposite_half, mn_rpos), track_predictions.py:model_mn_hold_side, and PredictionModel.cs Model 16. Backtest script: backtest_mn_hold_pdhlc_overlay.py.
Implementation
- Signal producer: our analysis engine (session-levels stage). Emits
mn_hold_active,mn_hold_side,mn_hold_tier,mn_hold_dist,mn_hold_ext_30m,mn_hold_target_bull,mn_hold_target_bear,mn_hold_stop,mn_pdc_offset,mn_pdc_dead,mn_opposite_half,mn_rposto the HUD feed. PDC dead-zone forcesmn_hold_active=False. - Chart lines:
PredictionModel.cs/PredictionModelWeb.cs. Draws the MN HOLD line at 09:30, upgrades to PRIME at 10:00. - Confluence layer:
PredictionModel.csapplies the bonus/penalty table above to every other active line after the AMD block, before REBOUND REGIME. - NT8 strategy:
MnHoldSide.cs— Mode parameter switches between A and B. - Consumer strategies:
OrbRetest.cs(MnHoldGateparameter) andMidpointReversion.cs(MnHoldSkipActiveparameter) both read the HUD keys and filter entries by MN HOLD state.
Research links
- Full research writeup: MN HOLD-SIDE — the midnight-open hold day
- Related concept: The HUD
History
- 2026-04-24 — Shipped. Mode A + Mode B both live via
MnHoldSide.csstrategy parameter; confluence layer live in both chart indicators; all HUD keys emitted by the analysis engine. Meta-validation over 34k historical predictions confirmed +0.82pp overall lift and 5.7× expansion of the 95%+ bucket at 97.5% realized hit rate. - 2026-04-24 — ORB × MN HOLD follow-up (1,370 sessions): direct 09:30 breakouts gated by PRIME-aligned MN HOLD produced +24.66 pts/trade at target 55 (n=134, 65.7% win) vs baseline +1.48; opposed breakouts were structurally negative (−2.59/tr). Confluence table updated:
OR30 BREAKaligned bonus bumped 3 → 20, opposed penalty 0 → −18, PRIME extra 5 → 12.OrbRetest.csgained aMnHoldGateparameter (None/SkipOpposed/RequireAligned/RequirePrimeAligned) — Mode B (direct) withRequirePrimeAlignedis the high-conviction configuration; Mode A (retest) showed no lift and stays ungated. - 2026-04-29 — PDC overlay added. Backtest
backtest_mn_hold_pdhlc_overlay.py(n=265 T3 trades) revealed two clean refinements: dead-zone (|MN−PDC|<15) collapses edge to +2/tr in 22% of trades — now a hard skip; opposite-half pattern (BEAR & MN>PDC, or BULL & MN<PDC) lifts to +58–71/tr — now +10pp prob boost. Wired intosmc_analysis.py(kill gate + 4 new HUD keys),track_predictions.py:model_mn_hold_side, andPredictionModel.csModel 16. - 2026-04-24 — OB MID × MN HOLD follow-up (1,370 sessions, faithful replay of the
MidpointReversion.csFSM): MN-active sessions kill mean-reversion regardless of direction (MN_ALIGNED −6.63/tr, MN_OPPOSED +2.40/tr, MN_INACTIVE +2.50/tr). Confluence table updated:OB MIDandOB MID MAGNETget a light aligned penalty (−5) plus heavy opposed penalty (−20 / −18). V3 parameter sweep produced two high-conviction cohorts — MidLong + MN_INACTIVE + TOWARD_VWAP + straddle + OB-stop + cutoff 11:30 → +19.98/tr (n=86, 51.2% win) and FlipShort + MN_INACTIVE + straddle + OB-stop + cutoff 11:30 → +18.53/tr (n=68, 54.4% win).MidpointReversion.csupgraded with V3 defaults:MnHoldSkipActive,EntryCutoffHHMM=1130,UseStraddleEntry,InvertMidLongVwap(long now requires Close<VWAP — opposite of legacy), and per-signal enable toggles (MidShort + FlipLong default OFF as both are structurally negative OOS).