Date registered: 2026-07-21 (before any test execution)
Source of rules: mentor journals in course/resources/mentor-files/:
- Micro-impulse Scalping (Feb 5 2026) — Type A trades, "catch the first pullback of the real move", one-micro-pullback filter
- NINJA Turtle Style Trading (Feb 5 2026) — asymmetric R:R, volatility-expansion focus, tight structural stops
- Meta Adaptation (Feb 23 2026) — compression precedes expansion; strategy valid only in its regime
- Timeframe Displacement (Mar 23 2026) — displacement events, directional vs non-directional chaos (body/range filter), entry on retracement after displacement is evident
- Tsujiri call notes — H4 bias alignment, ~3 trades/day cap, pre-set entries, tight pre-placed stops
Status framing: This is a Stage-0-style HARNESS dry run of a formalized mentor concept. It is NOT a Phase 2 formalization (Phase 0 gates still open) and its outcome authorizes no capital.
The mentor's documents are written around BTC and Gold ("high intraday volatility, frequent volatility expansion phases"). Our on-disk data is EURUSD + GBPUSD M1 (2024-01-01 → 2026-07-14). FX majors have materially fewer and smaller expansion events and tighter compression. A FAIL here therefore does NOT falsify the mentor's technique on his instruments; a PASS would be evidence the mechanics generalize. Fetching XAUUSD/BTCUSD Dukascopy data for a follow-up run is a separate, separately-pre-registered test.
All structure prices are MID; all fills are on the correct side of the book per the engine honesty contract (long entries at ASK, long exits at BID; slippage on stop-type fills; pessimistic stop-before-target inside one M1 bar).
range = high − low, body = |close − open|.range ≥ disp_mult × baseline AND body ≥ 0.6 × range, with the compression
precondition true. Direction = sign(close − open).h4_align ∈ {0, 1}.C with range D:C on M1 mid extremes);C in the event direction;tgt_mult × stop-distance
from entry (asymmetry ≥ 1.5). Time exit: hold_max minutes after entry.| param | values |
|---|---|
| disp_mult | 3, 4, 5 |
| tgt_mult | 1.5, 2.5 |
| hold_max (min) | 15, 45 |
| h4_align | 0, 1 |
24 combos. Walk-forward: 12-month IS / 3-month OOS, rolling 3 months (harness default). IS selection = best net expectancy with ≥ 20 IS trades.
Same displacement events, coin-flip direction (seeded per day+event), no pullback wait: enter at the first M1 bar after the event, stop distance = 0.5 × D, target = tgt_mult × stop distance, same hold_max and daily cap. Tests whether the directional + pullback logic adds anything beyond "volatility just happened".
Primary: GBPUSD. Secondary: EURUSD. Each pair is scored independently; the registered headline result is GBPUSD (more expansion-prone of the two).
FAIL, most likely on criterion 1. M1/M5 scalping on FX majors pays the spread on a stop distance of a few pips; the two prior dry runs showed cost drag of ~0.04–0.07R killing thin gross edges, and this spec's stops are tighter than London Breakout's. The informative outcomes are (a) whether gross expectancy is positive (mechanics have signal before costs), and (b) whether it beats the coin-flip baseline (direction/pullback logic contains information).
3 runs per data segment, counted by the harness watermark. This registration covers run 1. Any rule or grid change after seeing results = new pre-registration.
GBPUSD: FAIL — OOS 61 trades, gross +0.9761R, net −2.4968R, WFE 1.187. Failed: net expectancy, beats-baseline, sample size. Passed: drawdown-vs-baseline. EURUSD: FAIL — OOS 37 trades, gross +0.2964R, net −0.9177R, WFE 0.703. Failed: net expectancy, sample size. Passed: beats-baseline (−0.92 vs −1.62), drawdown.
Reports: reports/dryrun-2026-07-21-expansion_pullback.md, …_eur.md.
MLflow runs: 1d6d2344…, a3154fe9….
As pre-registered: FAIL on criterion 1 was the stated prior; cost drag is the killer. Informative findings: (a) gross positivity is mostly geometry, not direction — the coin-flip baseline grosses nearly the same (+0.93R GBPUSD); (b) EURUSD's pullback logic beat the coin flip net and halved drawdown — weak signal the confirmation filter helps; (c) two spec defects identified: rollover-window events (8-pip spread vs sub-pip stops produced −7R/−13R single trades) and no stop-distance floor relative to spread.
Iteration budget: run 1 of 3 consumed on the 2024–2026 segments. A pre-run smoke (2024-H1 GBPUSD, IS-period only, no OOS exposure) preceded the registered run and is disclosed here. The rollover-exclusion + stop-floor variant and any XAUUSD run require a NEW pre-registration. No re-runs of this spec.
The decision-log work surfaced a third defect, alongside the rollover-window and stop-floor issues already recorded:
Zero-baseline degeneracy. The event test is range ≥ disp_mult × baseline
where baseline is the 24h rolling median M5 range. On dead sessions (holidays,
thin Sunday opens) that median can be exactly zero, which makes the test
trivially true — any bar with a one-sided body qualifies as a "displacement".
Some recorded events are therefore not displacements at all.
Left unfixed on purpose: the guard changes the frozen rule, and this
pre-registration's result is already recorded. The fix (require baseline > 0,
and likely a floor of a few pips) belongs to the cost-aware v2 spec together
with the rollover exclusion and the stop-distance floor — one new
pre-registration, all three defects, one re-run. The review page flags affected
trades inline so the contamination is visible rather than silent.