# Does a quiet Asian session set up a big London move?

**Written and committed before the data was touched.** 2026-09-10, session 38.
Nothing in this file may be edited after the first run except to link the
results; the verdict below is what the numbers are held against.

## The claim

It is one of the oldest things said about intraday gold and FX: the Asian hours
are quiet and *coil*, and the coiling is what makes the London open worth
trading. Stated as a prediction it says the two are **inversely** related — the
narrower the Asian range, the bigger the move once London is in.

The rival explanation, which is not folklore but the ordinary behaviour of
financial volatility, says the opposite: volatility clusters, so a quiet night
is followed by a quiet day and a wild night by a wild day. Both are repeated,
often by the same people, and they cannot both be right about the same market.

## The data

`~/data/bars/XAUUSD_mt5_m1.csv` — 232,215 one-minute bars of XAUUSD, bid and
ask, 2026-01-01 23:00 UTC to 2026-08-27 20:59 UTC, built by
`research/dukascopy/bars_mt5.py` from an MT5 tick export the human ran on his
own machine. Timestamps are UTC. Ranges are taken from the **bid** high and low.

**A trading day** starts at 23:00 UTC, which is where this broker's day starts
and where the file itself begins. So a session day `D` runs 23:00 UTC on `D-1`
to 22:59 UTC on `D`.

- **Asian window:** 23:00–06:59 UTC (480 minutes).
- **London/NY window:** 07:00–15:59 UTC (540 minutes).

**Range** is `max(bid_high) − min(bid_low)` inside the window, expressed in
basis points of the window's opening bid (`range / open × 10,000`) so that eight
months of drifting price level cannot decide the answer. The same table in raw
USD is reported beside it as a check.

## The rule, fixed now

Statistic: **Spearman rank correlation ρ** between the Asian range and the
London/NY range of the same session day, over every day that clears the data
floor. Significance from a **permutation null**: 10,000 shuffles of the Asian
column against the London column.

- **Supported** — the folklore is right — if **ρ ≤ −0.15** with permutation
  p < 0.01.
- **Refuted** if **ρ ≥ +0.15** with p < 0.01. That is the clustering answer, and
  it is the opposite sign, not a weaker version of the same thing.
- **Undecided** in every other case, including a significant correlation smaller
  than 0.15 in either direction: too small to be the thing anybody means by
  "sets up a big move", and it will be printed as a number with its sign, not as
  a verdict.

**Data floor.** A session day counts only if its Asian window holds at least 360
of 480 minutes and its London window at least 405 of 540 (75 % of each). If
fewer than **120** days survive, no per-day figure is published at all and the
run says so.

**Positive control, run in the same script and published whatever the verdict**
([[a-negative-result-needs-a-positive-control]]): a rank correlation of known
size is injected into this sample's own Asian ranks — target ρ from 0.05 to
0.40 — 500 draws at each level, and the report states the smallest effect this
test certifies at ≥ 95 %, together with the false-positive rate at ρ = 0, which
must come out at or under 5 %. A null result without that floor is not a result.

## What is out of scope

The tradeable version — break the Asian range in the London hours, pay the real
spread — is a different experiment with its own kill rule, and it is not run
here. This is a question about whether the relationship exists at all, which is
the thing the folklore actually asserts.

**Not advice, and not a recommendation.** It is a test record.

## Files

- `analyse.py` — the whole run: windows, ranges, ρ, permutation null,
  quintiles, the injected-effect floor. Deterministic (`--seed`, default 20260910).
- `RESULTS.md`, `results.json` — written by the script.
- `sessions.csv` — one row per session day: the two ranges, in USD and bps,
  with the minute counts that let a reader apply the floor themselves.
