These are the underlying numbers, not a summary of them. Each file below is generated directly from the published research table, so a download and the page it came from can never disagree. Files are regenerated whenever the price archive updates.
datasets
files
measured data
in the archive
How to use this data
The CSV files mirror the published tables exactly, one file per table. The JSON file for each study bundles every table together with the study's metadata — source URL, licence, measurement window and last-updated date — which makes it the easier one to load programmatically. A machine-readable index of everything on this page lives at /research/data/index.json.
Licence and attribution
All datasets are published under CC BY 4.0. You may republish, chart, or build on them — including in commercial work — provided you credit FxBacktest with a link to the study the data came from. If you are quoting a single figure, the study page carries a ready-made citation line you can copy.
The datasets
Average Daily Range
EUR/USD moves 91 pips a day; ETH/USD moves 6.50% of its price. Average daily range for 25 markets on one comparable scale, from Dukascopy daily bars.
- average-daily-range-ranked-by-percentage.csvAverage daily range, ranked by percentage of price — all 25 instruments · 25 rows
- average-daily-range-by-asset-class.csvAverage daily range by asset class · 6 rows
- average-daily-range-by-calendar-year.csvAverage daily range by calendar year (% of price) — 2026 is year-to-date · 7 rows
- average-daily-range.jsonAll tables plus metadata, one file
How Wrong Is a 30-Trade Backtest? Sampling Error Measured
Your backtest says 55%. How far from the truth could that be? We measured it: at 30 trades the answer is off by more than 10 percentage points 28.4% of the time, and 90% of results land in a band 30 points wide. Here is the error bar for every sample size.
- what-each-sample-size-actually-buys.csvWhat each sample size actually buys you · 8 rows
- backtest-sampling-error.jsonAll tables plus metadata, one file
Do Candlestick Patterns Work? 420,317 Signals Tested
We tested 12 candlestick patterns across 28 instruments and 698,580 bars against a matched-risk random control, with real measured spreads applied. The best pattern beats random by 6.5 points on daily charts. On 4-hour charts, none of the 12 is profitable after costs.
- daily-charts-1-1-target.csvDaily charts: 1:1 target · 12 rows
- daily-charts-1-2-target.csvDaily charts: 1:2 target · 12 rows
- four-hour-charts-the-edges-survive.csvFour-hour charts: the edges survive, the profits do not · 12 rows
- four-hour-charts-the-edges-survive-2.csvFour-hour charts: the edges survive, the profits do not · 12 rows
- candlestick-pattern-win-rates.jsonAll tables plus metadata, one file
What US Economic Releases Actually Do to Price
The Fed decision hour runs 5.21x a normal EUR/USD hour and NFP 2.69x — but the size of the NFP surprise does not predict the size of the move. 3,963 releases measured against bid-side bars.
- eurusd-range-in-the-hour-containing.csvEUR/USD range in the hour containing the release, versus a normal bar at the same hour · 13 rows
- release-hour-range-as-a-multiple.csvRelease-hour range as a multiple of each instrument's own non-event baseline · 8 rows
- nfp-surprise-size-against-eurusd-release.csvNFP surprise size against EUR/USD release-hour range (n=180) · 3 rows
- the-first-four-hours-after-a.csvThe first four hours after a release, EUR/USD M15 bars · 6 rows
- economic-release-volatility.jsonAll tables plus metadata, one file
What Spreads Really Cost
EUR/USD averages 0.45 pips - but the spread eats 1.2% of the hourly range at 13:00 UTC and 26.7% at 21:00 UTC. Measured spread cost across 25 instruments.
- average-spread-by-instrument-cheapest-first.csvAverage spread by instrument, cheapest first (as a share of the average daily range) · 25 rows
- spread-as-a-percentage-of-that.csvSpread as a percentage of that hour's average range, by UTC hour — lower is cheaper · 10 rows
- annual-spread-bill-at-5-round.csvAnnual spread bill at 5 round-turn trades a week (260 a year) · 7 rows
- forex-spread-cost.jsonAll tables plus metadata, one file
Forex Volatility by Hour of Day
The busiest hour in forex averages 3.4x the range of the quietest. Average hourly volatility for 10 instruments by UTC hour, measured from 922,937 Dukascopy bars.
- average-hourly-high-low-range-by.csvAverage hourly high-low range, by UTC hour — 2010-07-14 to 2026-07-27 · 10 rows
- average-hourly-range-by-trading-session.csvAverage hourly range by trading session (pips / index points) · 10 rows
- busiest-and-quietest-hour-per-instrument.csvBusiest and quietest hour per instrument · 10 rows
- forex-volatility-by-hour.jsonAll tables plus metadata, one file
Index Overnight Gaps
The median overnight gap on US500, US100, US30 and GER40 is 7.4-8.0% of a normal day's range and 89.2-90.7% fill within 24 hours — but 5.5% of nights gap more than half a daily range. Measured across 9,722 session breaks.
- overnight-gap-size-across-the-daily.csvOvernight gap size across the daily session break · 4 rows
- how-often-an-overnight-gap-is.csvHow often an overnight gap is filled · 4 rows
- overnight-break-versus-weekend-break.csvOvernight break versus weekend break · 4 rows
- distribution-of-overnight-gap-size-as.csvDistribution of overnight gap size, as a share of the daily range · 4 rows
- overnight-gap-by-the-session-it.csvOvernight gap by the session it opens (Monday opens on the weekend break) · 4 rows
- the-reopen-print-understates-the-gap.csvThe reopen print understates the gap · 4 rows
- us100-overnight-gaps-have-not-been.csvUS100 overnight gaps have not been a constant, in points or in context · 12 rows
- index-overnight-gaps.jsonAll tables plus metadata, one file
Do Trading Indicators Work? 232,772 Signals Tested
We tested RSI, MACD, moving average crosses, Bollinger Bands and Stochastic across 28 instruments and 232,772 signals against a matched-risk random entry, with real spreads applied. The golden cross has a negative edge. On 4-hour charts almost nothing clears breakeven.
- daily-charts-1-1-target.csvDaily charts: 1:1 target · 14 rows
- daily-charts-1-2-target.csvDaily charts: 1:2 target · 14 rows
- four-hour-charts.csvFour-hour charts · 14 rows
- four-hour-charts-2.csvFour-hour charts · 14 rows
- indicator-signal-win-rates.jsonAll tables plus metadata, one file
The Benchmark They Fined $10bn For Rigging Still Moves the Market — Legally
On the last business day of the month the 16:00 London fix moves price 1.8x a normal day and gives back 2.71bp within the hour, in 12 of 17 months. On the other 350 days the same test returns zero.
- mean-absolute-move-across-the-fixing.csvMean absolute move across the fixing window versus three control hours, basis points · 11 rows
- mean-absolute-move-at-the-fix.csvMean absolute move at the fix by business-day offset from month end, pooled across nine major pairs · 8 rows
- month-end-versus-normal-days-at.csvMonth-end versus normal days at each anchor hour, with permutation tests · 5 rows
- month-end-fix-by-pair-five.csvMonth-end fix by pair, five-minute panel, 17 month-ends · 9 rows
- the-hour-after-the-month-end.csvThe hour after the month-end fix, one observation per month-end · 20 rows
- london-fix-month-end.jsonAll tables plus metadata, one file
Does the London Open Range Break Hold? 93,843 Breaks Measured
The London opening range breakout is one of the most traded retail setups and one of the least measured. Across 93,843 breaks on 26 instruments and 16 years, a break extended a further one range height before failing 50.3% of the time. That is a coin flip before costs, and a loss after them.
- the-result.csvThe result · 25 rows
- london-opening-range-break.jsonAll tables plus metadata, one file
Nasdaq Volatility by Hour
The Nasdaq 100 makes 20.6% of its daily movement in the two hours after the US open and 54.9% inside the cash session. Hour-by-hour ranges, where the day's high and low form, and why UTC buckets get this wrong.
- us100-nasdaq-100-every-hour-of.csvUS100 (Nasdaq 100): every hour of the trading day, US Eastern time · 24 rows
- where-each-indexs-busiest-hour-falls.csvWhere each index's busiest hour falls · 4 rows
- how-much-of-the-day-the.csvHow much of the day the US cash session accounts for · 4 rows
- us100-by-session-block.csvUS100 by session block · 4 rows
- nasdaq-volatility-by-hour.jsonAll tables plus metadata, one file
Risk of Ruin Table
The probability of a 50% drawdown for 20 strategy profiles at 6 position sizes, from 20,000 Monte Carlo runs per cell. A break-even strategy ruins 94.08% of the time at 10% risk.
- probability-of-a-50-account-drawdown.csvProbability (%) of a 50% account drawdown within 500 trades · 20 rows
- risk-of-ruin-table.jsonAll tables plus metadata, one file
Where Stops Actually Get Hit
We raced a stop against a target on 92,585 trades across 29 markets and 16 years. At every ratio tested - from a half-ATR stop to a triple-ATR target - the measured win rate landed within 0.4 points of its own breakeven rate. The stop-to-target ratio carries no edge at all.
- the-result-every-ratio-is-its.csvThe result: every ratio is its own breakeven · 6 rows
- per-instrument-results.csvPer-instrument results · 24 rows
- stop-target-hit-rates.jsonAll tables plus metadata, one file
Weekend Gap Statistics
88.4% of EUR/USD weekend gaps close within 24 hours and the median gap is 6.5 pips. But the Sunday open print is depressed by the reopen spread — here is how much, and what the gap looks like measured properly.
- weekend-gap-size-friday-close-to.csvWeekend gap size: Friday close to the reopen · 23 rows
- how-often-the-gap-is-closed.csvHow often the gap is closed, under both definitions · 16 rows
- the-reopen-quote-fingerprint-every-fx.csvThe reopen-quote fingerprint: every FX pair shows it, no other asset class does · 14 rows
- session-to-session-overnight-gaps-previous.csvSession-to-session (overnight) gaps: previous close to next open · 25 rows
- weekend-gap-statistics.jsonAll tables plus metadata, one file
When the Daily High and Low Actually Form
47.9% of EUR/USD's daily range exists by 08:00 UTC, and at least one side of the Asian range is taken out on 99.0% of days. Measured across 4,162 trading days and 22 instruments.
- share-of-the-eventual-daily-range.csvShare of the eventual daily range already traded, by UTC hour · 4 rows
- hour-by-which-half-and-four.csvHour by which half and four-fifths of the daily range is typically complete · 22 rows
- how-often-the-00-00-07.csvHow often the 00:00-07:00 UTC range is taken out later the same day · 22 rows
- when-daily-high-low-forms.jsonAll tables plus metadata, one file
Citing this collection
If you are referencing the archive as a whole rather than one study, use the line below.