The Edge That Wasn't
All 81 experiments › #74

#74 — London-fix fade (16:00 pre-fix drift reversion)

2026-07-07
Verdict: negative · ⛔ gross real reversion, net dead at spread
Fading |D|>=5p pre-fix drift at the DST-aware London 16:00 fix: fade net -1.63p vs coin -1.89p (beats coin, not >0), gross +0.20p real and monotonic, only 2/4 IS gates pass -- closes the corpus's own flagged lead as a clean negative.

Hypothesis — what it tests

Whether fading the pre-London-fix (16:00 Europe/London, DST-aware) directional drift on 12 FX pairs produces a net-of-spread edge, versus coin-flip and continuation controls.

Description

H1 (pre-registered, locked 2026-07-07): fade the pre-fix drift D = mid(16:00 London) - mid(15:00 London) when |D|>=5 pips, entering at the first M5 open after the fix bar closes and exiting 60 minutes later at close (no TP/SL, single threshold, single horizon, no sweeps), against coin-flip (seed=20260708) and with-drift continuation control arms on identical timestamps (R10). Full IS battery run on Hetzner: 12 pairs, real per-trade M5 BA spread, DST-aware Europe/London fix time verified never ambiguous/nonexistent across 2021-2024 transitions, IS = first 70% of 2020-11-11->2026-05-21 (hard boundary 2024-09-22T21:35:00 UTC), 8,780 fade-arm signal trades out of 16,944 candidate fix-days, 30 TDD tests all passing. Result: gross reversion is real and monotonic across arms (fade +0.20p > coin -0.06p > continuation -0.20p) and breadth is broad (8/12 pairs gross-positive), but net collapses to approximately minus the spread (-1.63p) and fails both the net-positive and the 3-thirds walk-forward gates (0/3), landing at 2/4 gates passed -- exactly the pre-registration's own stated prior. A pre-declared (not searched) month-end split shows stronger reversion on the last trading day (gross +1.72p/net -0.13p, n=452) versus the rest of the month (gross +0.12p/net -1.71p, n=8328), consistent with the WM/R rebalancing-flow framing, but still net-negative either way. Worst single-trade adverse excursion was -380.6p on USD_JPY, 2022-10-21 (the BOJ intervention day; no SL, correctly captured by the 60-minute cap, not a data artifact). This formally closes the corpus's own flagged-untested lead (the indicator-screen memory's 'FX-fix session-fade'); OOS was never opened (IS gate failure stops the run per the pre-registration's decision rule).

Key result

8,780 fade-arm trades (16,944 candidate fix-days scanned, 12 pairs); portfolio fade: gross +0.20p / net -1.63p, WR 45%; coin: gross -0.06p / net -1.89p; continuation: gross -0.20p / net -2.03p; gates 1-2-3-4 = PASS/FAIL/FAIL/PASS (2/4); WF thirds net = -0.91p/-2.68p/-1.16p (0/3 positive); breadth 8/12 pairs gross-positive; RW self-test PASS (fade_gross=+0.13p se=0.254, coin_gross=-0.34p se=0.254, n=360 each); day-block bootstrap P(net<=0)=1.0000, 95% CI=[-2.39p,-0.89p]; month-end last-trading-day gross +1.72p/net -0.13p (n=452) vs rest gross +0.12p/net -1.71p (n=8328); worst MAE -380.6p (USD_JPY 2022-10-21 BOJ intervention day, D=-125.1p); mean MAE 10.77p, mean MFE 11.06p; IS window 2020-11-11 -> 2024-09-22T21:35:00 UTC (first 70% of 2020-11-11->2026-05-21); 30 TDD tests pass.

Indicators

pre-fix drift D (mid(16:00 London) - mid(15:00 London))DST-aware Europe/London fix-time bar index (zoneinfo)M5 bid/ask spread cost

Algorithms

fade-the-drift entry rule (|D|>=5p, 60-min fixed-horizon exit, no TP/SL)coin-flip control arm (seed=20260708)with-drift continuation control armR10 identical-timestamp null designRW (random-walk) self-testday-block bootstrap (2000 resamples)walk-forward thirds splitpre-declared month-end (last-trading-day) split

Code

Interactive version (search, filters, figures): the experiment explorer.

← #73 SMA-scratch tail-bounding test + restart-censoring discovery#75 FX factor suite (carry / value / momentum / composite) at OANDA-retail cost →
This page is one experiment from the audited record behind the book The Edge That Wasn'tget the book · about the project.