CoolFace
Datasetpublic

tekkick/xauusd-hourly-spread-volatility

XAUUSD Hourly Spread and Volatility, 2025–2026 One year of gold (XAUUSD) bid-ask spread and volatility aggregated by hour of the broker trading day, built from 70,546 five-minute MetaTrader 5 bars across 312 sessions, 1 August 2025 to 31 July 2026. MetaTrader records the spread on every bar. Almost nobody publishes it, so most advice about when spreads widen on gold is folklore. This is the measurement. DOI: 10.5281/zenodo.21973215 · Write-up: techkick.me/research… See the full description on the dataset page: https://huggingface.co/datasets/tekkick/xauusd-hourly-spread-volatility.

sourceHugging Facecc-by-4.0updated 1mo agoView on Hugging Face
0likes39downloads
Dataset Card

XAUUSD Hourly Spread and Volatility, 2025–2026

One year of gold (XAUUSD) bid-ask spread and volatility aggregated by hour of the broker trading day, built from 70,546 five-minute MetaTrader 5 bars across 312 sessions, 1 August 2025 to 31 July 2026.

MetaTrader records the spread on every bar. Almost nobody publishes it, so most advice about when spreads widen on gold is folklore. This is the measurement.

DOI: 10.5281/zenodo.21973215 · Write-up: techkick.me/research

[image]

Columns

ColumnMeaning
hourHour of the broker server day. Not UTC.
barsM5 bars observed in that hour across the period
coverage_pctBars as a share of the busiest hour
spread_median_usdMedian bid-ask spread, US dollars
spread_p90_usd90th percentile spread
range_median_usdMedian high-minus-low of the M5 bar
volume_medianMedian tick volume
spread_pct_of_rangeSpread as a percentage of typical movement

The last column is the one worth reading. Spread is constant; what changes across the day is the size of the move it is charged against.

Findings

  • Median spread is $0.16 and identical in all 24 hours. It exceeded $1.00 in 3 bars out of 70,546.
  • Median daily range is $76.12 (10th percentile $25.84, 90th percentile $162.62).
  • Median five-minute range runs from $2.86 to $6.97 across the day — roughly 2.4×.
  • Median weekend gap is $7.60 across 52 breaks; 48% exceeded $10.

The practical consequence: the cost of trading as a share of the move is driven almost entirely by the denominator.

Limitations

Read these before using the numbers.

  • One broker, one account type, one year. Every spread figure belongs to a single raw-spread account. A standard account folding cost into the quote looks completely different, and that comparison is not in this data.
  • Hours are broker server time, not UTC, and not yours. The daily maintenance break leaves two hours with reduced coverage; they are not comparable like-for-like with the rest and coverage_pct identifies them.
  • Gold ran from roughly $3,288 to $4,044 over the period. Ranges are in dollars, so they are not directly comparable to a period at a very different price level.
  • One year characterises a regime, not an instrument.

Reproducing it

build.py is the exact script that produced the CSV, verified to reproduce it byte for byte. It expects the gzipped pickled MT5 bar frames it was written against, so it will not run as-is without that archive — it is published so the arithmetic is auditable, not as a turnkey tool.

make_chart.py regenerates the chart from the CSV.

Licence

Data: CC BY 4.0 — use it, cite it. Script: MIT.

Tech Kick (2026). "XAUUSD hourly spread and volatility, 2025-2026."
Dataset: 70,546 M5 bars, 312 sessions, 2025-08-01 to 2026-07-31.
DOI: 10.5281/zenodo.21973215

Corrections

If you find an error, open a discussion. Two claims were corrected as a direct result of running this, and both are documented rather than quietly edited:

  1. 1."Gold has a $10–$30 daily range" — repeated from memory, never checked. The measured median is $76.
  2. 2."A $1.00 spread filter removes a meaningful share of entries" — on a raw account it is reached in 3 bars out of 70,546, so it does not.