CAT researchOverviewEURUSDGBPUSDXAUUSDGBPCADEURCADAUDJPYGBPJPYResearch notes

PRE-REGISTRATION — H4-only on 5 years of Tickstory data

Written and committed BEFORE the multi-instrument run. Results are appended below, never edited above.

Where this candidate came from — stated plainly

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:

  • On TradingView's 6.7-month EURUSD window the same H4-only configuration read PF 0.40. It is 1.43 here. A configuration that swings that far between windows of the same instrument is unstable by definition.
  • Its payoff profile is fat-tailed, not steady: 20/50 profitable months (40%), median month −36.8 pips, and removing the best 6 months of 50 turns +2,864 into −1,063. Three of six calendar years are negative (2021 −312, 2024 −173, 2026 −147).

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.

The question

Is this a real effect, or the best of six variants on one instrument in one 5-year window?

Pass criteria — ALL must hold, on EVERY instrument with n >= 30

  1. PF > 1.0
  2. Ex-outlier PF > 1.0 (largest single winner removed)
  3. Best month <= 60% of net
  4. Both time-split halves PF > 1.0
  5. No one-sided direction — it must not be the case that one of long/short is below 1.0 while the other is above it. A one-sided result whose winning side matches the instrument's trend is beta.

And, across the instrument set as a whole:

  1. Driver independence — the set must contain at least one instrument that CANNOT express a US-dollar move (EURGBP) and one non-FX driver (XAUUSD). If only the USD pairs pass, the result is a dollar phenomenon, not a strategy.

Instrument set, fixed in advance

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

Decision rule, fixed in advance

  • All six hold → H4-only is promoted to a real candidate: pre-register a forward-observation window and re-open the question of whether ZMS is genuinely closed. Spend XAGUSD as the final holdout only after that.
  • Any failure → the candidate is dead, the ZMS closure stands unchanged, and this is logged as one more confirmation that variant scanning on a single instrument produces survivors that do not generalise.

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.


RESULTS (appended after the run; nothing above this line was edited)

The screen

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.

Two failures, examined

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.

The control could not be run — and that is the important limitation

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.

What is genuinely new here, stated accurately

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:

  • EURUSD PF 1.429 / exPF 1.395, halves 1.490 and 1.378
  • GBPUSD PF 1.943 / exPF 1.881, halves 1.600 and 2.344

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.

Decision

Candidate dead. ZMS closure stands. No holdout spent — XAGUSD remains untouched.

The one action that would change this

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.