CAT researchOverviewEURUSDGBPUSDXAUUSDGBPCADEURCADAUDJPYGBPJPYResearch notes

GBPUSD clears every falsifier on 5 years — and EURUSD does not

2026-08-27. Recorded, not acted on. Not a pre-registered screen: these renders were produced to display the dashboard, and the result fell out of them. That matters for how much it is worth — see "What this is not" at the end.

The runs

ZMS defaults (H1+H4 bias, T1 50%, R:R 1.0, max 3 entries, conservative fills), Tickstory M1 resampled to 5m, H4 grid offset 3600s, pyakao.zms.run_zms.

EURUSD XAUUSD GBPUSD
bars 373,657 354,293 373,185
trades 597 607 587
PF 1.129 1.586 1.945
ex-outlier PF 1.104 1.464 1.896
net +1,274 p +29,477 (0.1) +9,364 p
max drawdown 1,305 11,618 970
median month −19.8 −26.4 +131.9
months profitable 46.7% 49.2% 63.3%
net ex-top-3 months −595 +114 +5,745
best month 2023-03, 57.9% 2026-03, 70.2% 2025-04, 15.2%
halves 1.089 / 1.171 1.033 / 1.863 1.759 / 2.159
long / short 1.275 / 1.003 2.649 / 0.789 2.237 / 1.651
verdict FAIL FAIL PASS (8/8)

Dashboards: research/dashboards/zms_{eurusd,xauusd,gbpusd}_5y.html.

XAUUSD is the familiar shape and needs no further comment: one month is 70% of the net, and the direction split (long 2.65 / short 0.79) is the bull market described in strategy language, exactly as the 2026-08-26 direction split found on the 15m config.

What was checked before believing the GBPUSD number

Data integrity. GBPUSD's only 5m bars above 200 pips of range are 2022-09-26 00:55 and 01:00 — the real mini-budget crash to 1.0388. Median 5m range 4.0 pips vs EURUSD's 3.0; p99 19.2 vs 15.4. Closes span 1.0400–1.4246. Nothing anomalous, and GBP being 1.33× EURUSD's volatility does not explain an 8× difference in average trade P&L.

Trade distribution. Structurally the same object on both pairs: exit-reason mix (GBP T1 241 / SL 209 / T2 137 vs EUR SL 260 / T1 227 / T2 110), median hold ~9 hours, p90 ~122 hours, max loss −149 p vs −152 p. The difference is entirely win rate (64.4% vs 56.3%) and average win (51.0 p vs 33.2 p).

The 41-day hold. GBPUSD's longest position runs 991.7 hours, well past the 48-H4-bar bias timeout. This is faithful, not a port bug: in mtf_zstructure_strategy.pine a bias death cancels the pending order (strategy.cancel) but there is no strategy.close on timeout, so an open position exits only via SL/T1/T2 or the EOD flat. The Python port reproduces that, which is why no trade carries a TIMEOUT reason.

H4 grid offset. This was the live suspicion — the boundary alone had swung EURUSD between 1.136 and 1.459 earlier, so a result resting on it would be worthless.

H4 offset GBPUSD EURUSD
0s 1.753 / exPF 1.707 / ex-top3 +3,874 / PASS 1.109 / 1.087 / −837 / FAIL
3,600s 1.945 / 1.896 / +5,745 / PASS 1.129 / 1.104 / −595 / FAIL
7,200s 2.148 / 2.095 / +6,117 / PASS 1.214 / 1.178 / −387 / FAIL
10,800s 2.146 / 2.072 / +6,106 / PASS 1.110 / 1.089 / −787 / FAIL

The split survives the nuisance parameter completely. GBPUSD passes at every offset, EURUSD fails at every offset, and neither ever crosses. Whatever separates them is not the H4 boundary. (Individual metrics are still offset-sensitive — GBPUSD's median month runs 24.3 to 131.9 — so quote the pass, not the magnitude.)

The argument against it, from inside the same run

EURUSD and GBPUSD are ~0.9 correlated. By this project's own standing rule they are one test, not two. A config that passes on one and fails on the other over the same five years has produced a split verdict on what is close to a single instrument. That is not a confirmation and a disconfirmation; it is one measurement disagreeing with itself.

Two readings, and nothing here distinguishes them:

  1. The strategy has no edge and GBPUSD is the favourable tail of a family of runs. Against this: the pass is not marginal (exPF 1.90, ex-top-3 +5,745, DD 970 vs 9,364 net) and it is stable across the offset sweep.
  2. Something real about GBP's behaviour suits this design and EUR's does not. Against this: no mechanism has been proposed, and "cell roles invert per instrument" was already shown on 2026-08-26 to be a symptom of trend differences rather than of structure.

What this is not

Not a pre-registered result. These runs were made to exercise the dashboard; the criteria were applied afterwards, and the H4 offset sweep was chosen after seeing the pass. Selection across this project is also real — roughly 40 instrument × config cells have been examined, and GBPUSD-defaults has been looked at before.

The closure of ZMS from 2026-08-26 therefore stands. This is logged as the strongest counter-evidence to it so far, and as a defined test rather than a reopening.

The test that would settle it

The GBP leg is the only thing GBPUSD has that EURUSD does not, and the USD leg is shared. So:

  1. A GBP cross with no USD legGBPJPY, GBPCAD (both 5y in the Tickstory set). If the pass follows GBP, it survives. If it follows USD pairs, it does not.
  2. A non-GBP, non-USD controlEURCAD or AUDJPY (both 5y available).
  3. EURGBP remains the cleanest control and remains a broken 14 KB stub. Acquiring it is still the single highest-value data task.

Criteria to commit before running: the same eight, passing on both GBP crosses with the same sub-cell carrying it, and the non-GBP control not passing. Anything less is the post-hoc rescue the pre-registration discipline exists to prevent.