Written and committed BEFORE the multi-instrument run. Results are appended below, never edited above.
Not from a hypothesis. It came out of a post-hoc scan of six configurations on 5 years of EURUSD 5m (2021-03-12 → 2026-03-11, 373,657 bars) that was run to exercise the new Python harness:
| variant | n | PF | ex-outlier PF | net pips |
|---|---|---|---|---|
| defaults | 621 | 1.109 | 1.087 | +1,153 |
| H1 only | 427 | 1.203 | 1.163 | +1,170 |
| H4 only | 295 | 1.429 | 1.395 | +2,864 |
| divergence only | 676 | 1.233 | 1.194 | +2,618 |
| no R:R gate | 783 | 1.200 | 1.185 | +2,815 |
| basis exit only | 381 | 1.194 | 1.170 | +760 |
Picking the best of six is exactly the behaviour that produced every false positive in the 2026-08-26 program. The prior here is that this is noise, and the screen exists to falsify it cheaply.
Two facts already argue against it:
What it does have: PF 1.429 and ex-outlier PF 1.395 on n=295 across 5 years, best month only 34.5% of net, and both time-split halves positive (1.490 / 1.378) — the criterion that killed the GBPUSD candidate.
Is this a real effect, or the best of six variants on one instrument in one 5-year window?
And, across the instrument set as a whole:
From D:/tickstory/History data, all 5m resampled from M1, each with its own cost model from SymbolSpec:
| symbol | driver | why it is in the set |
|---|---|---|
| EURUSD | USD | the discovery instrument |
| GBPUSD | USD | correlated neighbour of EURUSD (~0.9) |
| USDJPY | USD | least correlated USD pair |
| EURGBP | none | the control — no dollar leg, so a USD move cannot appear here |
| XAUUSD | metal | non-FX driver, and the instrument ZMS previously failed hardest on |
Not permitted: changing the instrument set after seeing results, dropping an instrument for "too few trades" below the stated n>=30 rule, promoting a sub-cell, or re-running with different parameters to rescue a failure.
H4-only, all other inputs at default, each instrument with its own cost model, 5m resampled from Tickstory M1.
| symbol | driver | n | win% | PF | exPF | net pips | best month % | half 1 | half 2 | long/short PF |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | USD | 295 | 55.3 | 1.429 | 1.395 | +2,864 | 34.5 | 1.490 | 1.378 | 1.73 / 1.18 |
| GBPUSD | USD | 280 | 56.8 | 1.943 | 1.881 | +6,662 | 23.5 | 1.600 | 2.344 | 1.72 / 2.27 |
| USDJPY | USD | 114 | 58.8 | 1.872 | 1.751 | +4,169 | 33.9 | 0.685 | 6.213 | 0.84 / 4.66 |
| EURGBP | none | 0 | — | — | — | — | — | — | — | NO DATA |
| XAUUSD | metal | 332 | 47.6 | 1.570 | 1.437 | +26,506 | 83.3 | 2.033 | 1.419 | 2.51 / 1.08 |
| symbol | verdict | failing criterion |
|---|---|---|
| EURUSD | PASS | — |
| GBPUSD | PASS | — |
| USDJPY | FAIL | time split (0.685 / 6.213) and one-sided (long 0.84, short 4.66) |
| EURGBP | UNTESTABLE | 48 bars of data |
| XAUUSD | FAIL | best month = 83.3% of net |
OVERALL: FAIL. Per the decision rule fixed in advance, the candidate is dead and the ZMS closure stands.
XAUUSD — +26,506 pips looks enormous until it is decomposed: the best month is 2026-03 at +22,092 pips, 83% of the entire five-year result, and 2026-03 is the last, partial month in the file (data ends 2026-03-11). Excluding the top month leaves +4,414; excluding the top three leaves −4,320. Profitable months 24/46. This is the same single-month shape that killed every earlier candidate.
USDJPY — first half PF 0.685, second half 6.213. It also carries the direction signature: long 0.84, short 4.66. Note the sample is only 2 years (2024-03 → 2026-03) against 5 for the others, so it is not a like-for-like comparison; but a config that is a losing strategy in one half and a 6x winner in the other is not stable regardless of window length.
EURGBP_mt5_bars.csv is 14 KB and contains 48 five-minute bars covering a single day (2021-03-25). It is
an aborted export, not a data set.
The harness caught this correctly rather than reporting a misleading zero:
EURGBP warmup: {'1h': {'htf_bars': 4, ...}, '4h': {'htf_bars': 1, 'sufficient': False}}
WARN: 4h leg has 1 bars but needs 101 for sigma_len=100:
this leg produces NO bias for the whole run.
Without that warm-up guard, "EURGBP: 0 trades" would have read as the control shows nothing — which is the exact opposite of the truth (the control was never run). Criterion 6, driver independence, is therefore untested, and it is the criterion that exposed the March-2026 dollar artifact on 2026-08-26.
This is the first time in the project that any configuration cleared PF, ex-outlier PF, month concentration AND a time split on two instruments, each with ~290 trades over five years:
Every earlier positive in this project collapsed on one of those four. These did not. That is not a claim of edge — it is a claim that the usual falsifiers did not fire on the two instruments where the data was adequate.
Set against it: the candidate came from picking the best of six variants on one instrument; the same configuration read PF 0.40 on TradingView's 6.7-month EURUSD window against 1.43 here; and it failed outright on the two instruments that were not USD majors.
Candidate dead. ZMS closure stands. No holdout spent — XAGUSD remains untouched.
Get real EURGBP data (and a full 5 years of USDJPY). The criteria above are already locked and unedited, so a re-run is a genuine test rather than a second bite: if EURGBP — a cross with no dollar leg — also passes all five, then two USD majors plus a non-USD control passing the full battery over five years would be the first result in this project that has earned forward observation. If EURGBP fails, the "USD phenomenon" reading is confirmed and H4-only is finished for good.
That is a data-acquisition task, not an analysis task. Until it is done, this screen is incomplete by design, and failed on the instruments that could be measured.