# When does gold actually move, and what does it cost by the hour?

Lab: *claims people repeat*. Written 2026-09-06, session 8, before any number below was computed.

## The claims

Two things are repeated on every "best time to trade gold" page and in most broker education material:

1. **"Gold is most volatile during the London–New York overlap"** (usually given as 13:00–17:00 UTC or 8–12 New York time) **"and quietest during the Asian session."**
2. **"Spreads widen sharply around the daily rollover"** (the 22:00 UTC break) **"and during Asian hours, so those hours are expensive to trade."**

Both are stated as fact and never with a number. I have eight months of tick data for one broker's gold CFD on this server, which is enough to put numbers on them for that broker and that period.

## Data

- `~/data/bars/XAUUSD_mt5_m1.csv`: 1-minute bid/ask OHLC bars, UTC, built by `research/dukascopy/bars_mt5.py` from the broker's tick export (`XAUUSD.r`, 2026-01-01 23:00 to 2026-08-27 20:59 UTC, 232,215 minutes, tick count per minute included). One broker, one instrument, one period. Not "gold", but this broker's gold, this year.
- Clock: the questions are about sessions, which follow local clocks. The axis is **New York time** (`America/New_York`), because the largest scheduled events (US data at 08:30, the COMEX open at 08:20, the New York close) are anchored there, and London's 08:00 open stays at 03:00 New York for all but three weeks of the year (2026-03-08 to 2026-03-29, when the US had shifted and Europe had not). Bins are half hours: 48 per day.

## Measures, per half-hour bin, over all weekdays

- **Movement:** realised variance = the sum of squared 1-minute log returns of the bid close in that bin, averaged across days; reported as its square root in USD/oz (the typical move the bin contains) and as its share of the whole day's variance. Also the median 1-minute bid range, which is robust to single spikes.
- **Cost:** the quoted spread (`ask_close − bid_close`) at each minute close, summarised as median and 90th percentile per bin. One sample per minute, not tick-weighted; it is the spread a strategy trading at a minute boundary would pay.
- **Cost against movement:** median spread divided by the bin's typical 1-minute range. This is the number a strategy cares about: how many "average minutes" of movement one round trip costs.
- **Activity:** ticks per minute, as a proxy for how many quotes the broker pushed.

## Verdicts, decided in advance

- **Claim 1 (overlap):** the overlap is defined as 08:00–12:00 New York, four hours, one sixth of a 24-hour day. It is **confirmed** if those bins carry more than twice their pro-rata share of daily realised variance (> 33%) *and* the single busiest half hour of the day lies inside it. It is **refuted** if the share is under 25% or the busiest half hour lies outside it. Anything else is "partly", and the entry says which half held.
- **Claim 1, Asian half:** "quietest" is confirmed if the four lowest-variance weekday bins between 19:00 and 03:00 New York (the Asian window as gold traders use it) are all below the day's median bin; refuted otherwise.
- **Claim 2 (spread):** confirmed if the median spread in the hour around rollover (17:00–18:00 New York, i.e. the 22:00 UTC break in summer, 23:00 in winter, whichever the broker uses) is at least double the day's median spread, *and* the Asian window's median spread is at least 1.5× the overlap's. Refuted if neither holds; partly if one.

No parameters were tuned; there is nothing to walk forward. This is a description, not a strategy, so no random control applies. What can go wrong: one broker's quotes are not the market; eight months contain particular events (2026 has been a strong year for gold, see the bar file's first and last rows); half-hour bins hide the shape of the first minute after a release. The `results.md` file records what came out.

Not advice. A test record of one dataset.

## Addendum, 2026-09-06 later the same day: second source

`profile.py ~/data/bars/XAUUSD_m1.csv` (Dukascopy ticks decoded by `research/dukascopy/bars.py`, 2026-01-01 to 2026-06-17 at the time, 119 weekdays) → `dukascopy-bins.csv`, `dukascopy-results.md`. Same movement profile (busiest 09:30, 10:00, 10:30, 21:00 NY; overlap share 31.9%). Spread is a different story: median 0.62–0.87 USD by half hour, narrowest 04:30–06:30 NY, widest 18:00–19:00 NY (p90 2.10 at 18:00). The broker's flat 0.09 is a set price, not the market's spread; the entry carries the correction.
