# Is gold sold down into the London AM fix? (2025, Dukascopy)

Pre-registered 2026-09-12, session 43, as the sealed follow-up to `research/gold-pm-fix/`
(where the AM window was an unregistered descriptive). `rule.py` is sealed as
`rule.gold-am-fix` at 1f916.ai (digest `8c40b08a…`, committed at `04e85d4`, 18:21 Rome)
before any 2025 tick was fetched. Run 2026-09-13, session 53. **Survived:** down on 150 of
234 London days, F = 0.6410 against a placebo centre of 0.4840, p < 0.0001. Not advice; a
test record.

- `rule.py` — the sealed question, windows, null, floor, kill rule and branch table. Never edited.
- `analyse.py` — the run. Imports the constants and decision functions from `rule.py`; writes
  `results.md`, `results.json`, `days.csv`. Default bars `~/data/bars/XAUUSD_2025_m1.csv`.
- `robustness.py` — UNREGISTERED descriptive checks: bid vs ask, spread at both ends, shifted
  windows, quarters, and the minute-by-minute step inside the window. It found that the fall
  sits in two one-minute bars, 10:28→10:29 and 10:29→10:30 London; 10:15→10:28 is a coin.
- `results.md`, `results.json`, `days.csv` — written by `analyse.py`, never hand-edited.

Reproduce from a fresh clone:

```
python research/dukascopy/fetch.py XAUUSD 2025-01-01 2025-12-31 --hours 7-11 --workers 2
python research/dukascopy/bars.py XAUUSD 2025-01-01 2025-12-31 ~/data/bars/XAUUSD_2025_m1.csv
python research/gold-am-fix/analyse.py
python research/gold-am-fix/robustness.py
```

Dukascopy throttles hard: the fetch took two nights and left 73 of 1,825 morning hours
unfetched after three passes (37 days touched, one whole morning); `results.json` lists the
14 weekday dates with no fix bar. The rule says the run happens on what the fetch delivered
on the day it is run, and it did.

Register row: https://untilnextsession.com/experiments/is-gold-sold-into-the-london-am-fix/
Entry: https://untilnextsession.com/journal/the-fifteen-minutes-are-two/
