{
  "datasets": [
    {
      "slug": "average-daily-range",
      "title": "Average Daily Range: 25 Markets Compared (Forex, Gold, Indices, Crypto)",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "average-daily-range-ranked-by-percentage.csv",
          "label": "Average daily range, ranked by percentage of price — all 25 instruments",
          "rows": 25
        },
        {
          "file": "average-daily-range-by-asset-class.csv",
          "label": "Average daily range by asset class",
          "rows": 6
        },
        {
          "file": "average-daily-range-by-calendar-year.csv",
          "label": "Average daily range by calendar year (% of price) — 2026 is year-to-date",
          "rows": 7
        }
      ],
      "jsonFile": "average-daily-range.json",
      "rows": 38
    },
    {
      "slug": "backtest-sampling-error",
      "title": "How Wrong Is a 30-Trade Backtest? Sampling Error Measured",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "what-each-sample-size-actually-buys.csv",
          "label": "What each sample size actually buys you",
          "rows": 8
        }
      ],
      "jsonFile": "backtest-sampling-error.json",
      "rows": 8
    },
    {
      "slug": "candlestick-pattern-win-rates",
      "title": "Do Candlestick Patterns Work? 420,317 Signals Tested",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "daily-charts-1-1-target.csv",
          "label": "Daily charts: 1:1 target",
          "rows": 12
        },
        {
          "file": "daily-charts-1-2-target.csv",
          "label": "Daily charts: 1:2 target",
          "rows": 12
        },
        {
          "file": "four-hour-charts-the-edges-survive.csv",
          "label": "Four-hour charts: the edges survive, the profits do not",
          "rows": 12
        },
        {
          "file": "four-hour-charts-the-edges-survive-2.csv",
          "label": "Four-hour charts: the edges survive, the profits do not",
          "rows": 12
        }
      ],
      "jsonFile": "candlestick-pattern-win-rates.json",
      "rows": 48
    },
    {
      "slug": "economic-release-volatility",
      "title": "What US Economic Releases Actually Do to Price",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "eurusd-range-in-the-hour-containing.csv",
          "label": "EUR/USD range in the hour containing the release, versus a normal bar at the same hour",
          "rows": 13
        },
        {
          "file": "release-hour-range-as-a-multiple.csv",
          "label": "Release-hour range as a multiple of each instrument's own non-event baseline",
          "rows": 8
        },
        {
          "file": "nfp-surprise-size-against-eurusd-release.csv",
          "label": "NFP surprise size against EUR/USD release-hour range (n=180)",
          "rows": 3
        },
        {
          "file": "the-first-four-hours-after-a.csv",
          "label": "The first four hours after a release, EUR/USD M15 bars",
          "rows": 6
        }
      ],
      "jsonFile": "economic-release-volatility.json",
      "rows": 30
    },
    {
      "slug": "forex-spread-cost",
      "title": "What Spreads Really Cost: 25 Instruments Measured",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "average-spread-by-instrument-cheapest-first.csv",
          "label": "Average spread by instrument, cheapest first (as a share of the average daily range)",
          "rows": 25
        },
        {
          "file": "spread-as-a-percentage-of-that.csv",
          "label": "Spread as a percentage of that hour's average range, by UTC hour — lower is cheaper",
          "rows": 10
        },
        {
          "file": "annual-spread-bill-at-5-round.csv",
          "label": "Annual spread bill at 5 round-turn trades a week (260 a year)",
          "rows": 7
        }
      ],
      "jsonFile": "forex-spread-cost.json",
      "rows": 42
    },
    {
      "slug": "forex-volatility-by-hour",
      "title": "Forex Volatility by Hour of Day: 16 Years of Data (2010–2026)",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "average-hourly-high-low-range-by.csv",
          "label": "Average hourly high-low range, by UTC hour — 2010-07-14 to 2026-07-27",
          "rows": 10
        },
        {
          "file": "average-hourly-range-by-trading-session.csv",
          "label": "Average hourly range by trading session (pips / index points)",
          "rows": 10
        },
        {
          "file": "busiest-and-quietest-hour-per-instrument.csv",
          "label": "Busiest and quietest hour per instrument",
          "rows": 10
        }
      ],
      "jsonFile": "forex-volatility-by-hour.json",
      "rows": 30
    },
    {
      "slug": "index-overnight-gaps",
      "title": "Index Overnight Gaps: 9,722 Session Breaks Measured",
      "description": "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.",
      "dateModified": "2026-09-16",
      "files": [
        {
          "file": "overnight-gap-size-across-the-daily.csv",
          "label": "Overnight gap size across the daily session break",
          "rows": 4
        },
        {
          "file": "how-often-an-overnight-gap-is.csv",
          "label": "How often an overnight gap is filled",
          "rows": 4
        },
        {
          "file": "overnight-break-versus-weekend-break.csv",
          "label": "Overnight break versus weekend break",
          "rows": 4
        },
        {
          "file": "distribution-of-overnight-gap-size-as.csv",
          "label": "Distribution of overnight gap size, as a share of the daily range",
          "rows": 4
        },
        {
          "file": "overnight-gap-by-the-session-it.csv",
          "label": "Overnight gap by the session it opens (Monday opens on the weekend break)",
          "rows": 4
        },
        {
          "file": "the-reopen-print-understates-the-gap.csv",
          "label": "The reopen print understates the gap",
          "rows": 4
        },
        {
          "file": "us100-overnight-gaps-have-not-been.csv",
          "label": "US100 overnight gaps have not been a constant, in points or in context",
          "rows": 12
        }
      ],
      "jsonFile": "index-overnight-gaps.json",
      "rows": 36
    },
    {
      "slug": "indicator-signal-win-rates",
      "title": "Do Trading Indicators Work? 232,772 Signals Tested",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "daily-charts-1-1-target.csv",
          "label": "Daily charts: 1:1 target",
          "rows": 14
        },
        {
          "file": "daily-charts-1-2-target.csv",
          "label": "Daily charts: 1:2 target",
          "rows": 14
        },
        {
          "file": "four-hour-charts.csv",
          "label": "Four-hour charts",
          "rows": 14
        },
        {
          "file": "four-hour-charts-2.csv",
          "label": "Four-hour charts",
          "rows": 14
        }
      ],
      "jsonFile": "indicator-signal-win-rates.json",
      "rows": 56
    },
    {
      "slug": "london-fix-month-end",
      "title": "The Benchmark They Fined $10bn For Rigging Still Moves the Market — Legally",
      "description": "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.",
      "dateModified": "2026-09-18",
      "files": [
        {
          "file": "mean-absolute-move-across-the-fixing.csv",
          "label": "Mean absolute move across the fixing window versus three control hours, basis points",
          "rows": 11
        },
        {
          "file": "mean-absolute-move-at-the-fix.csv",
          "label": "Mean absolute move at the fix by business-day offset from month end, pooled across nine major pairs",
          "rows": 8
        },
        {
          "file": "month-end-versus-normal-days-at.csv",
          "label": "Month-end versus normal days at each anchor hour, with permutation tests",
          "rows": 5
        },
        {
          "file": "month-end-fix-by-pair-five.csv",
          "label": "Month-end fix by pair, five-minute panel, 17 month-ends",
          "rows": 9
        },
        {
          "file": "the-hour-after-the-month-end.csv",
          "label": "The hour after the month-end fix, one observation per month-end",
          "rows": 20
        }
      ],
      "jsonFile": "london-fix-month-end.json",
      "rows": 53
    },
    {
      "slug": "london-opening-range-break",
      "title": "Does the London Open Range Break Hold? 93,843 Breaks Measured",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "the-result.csv",
          "label": "The result",
          "rows": 25
        }
      ],
      "jsonFile": "london-opening-range-break.json",
      "rows": 25
    },
    {
      "slug": "nasdaq-volatility-by-hour",
      "title": "Nasdaq Volatility by Hour: 3,378 Sessions in Eastern Time",
      "description": "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.",
      "dateModified": "2026-09-16",
      "files": [
        {
          "file": "us100-nasdaq-100-every-hour-of.csv",
          "label": "US100 (Nasdaq 100): every hour of the trading day, US Eastern time",
          "rows": 24
        },
        {
          "file": "where-each-indexs-busiest-hour-falls.csv",
          "label": "Where each index's busiest hour falls",
          "rows": 4
        },
        {
          "file": "how-much-of-the-day-the.csv",
          "label": "How much of the day the US cash session accounts for",
          "rows": 4
        },
        {
          "file": "us100-by-session-block.csv",
          "label": "US100 by session block",
          "rows": 4
        }
      ],
      "jsonFile": "nasdaq-volatility-by-hour.json",
      "rows": 36
    },
    {
      "slug": "risk-of-ruin-table",
      "title": "Risk of Ruin Table: Win Rate × Risk:Reward × Position Size",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "probability-of-a-50-account-drawdown.csv",
          "label": "Probability (%) of a 50% account drawdown within 500 trades",
          "rows": 20
        }
      ],
      "jsonFile": "risk-of-ruin-table.json",
      "rows": 20
    },
    {
      "slug": "stop-target-hit-rates",
      "title": "Where Stops Actually Get Hit: 92,585 Trades Measured",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "the-result-every-ratio-is-its.csv",
          "label": "The result: every ratio is its own breakeven",
          "rows": 6
        },
        {
          "file": "per-instrument-results.csv",
          "label": "Per-instrument results",
          "rows": 24
        }
      ],
      "jsonFile": "stop-target-hit-rates.json",
      "rows": 30
    },
    {
      "slug": "weekend-gap-statistics",
      "title": "Weekend Gap Statistics: 835 Weekends, 20 Instruments",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "weekend-gap-size-friday-close-to.csv",
          "label": "Weekend gap size: Friday close to the reopen",
          "rows": 23
        },
        {
          "file": "how-often-the-gap-is-closed.csv",
          "label": "How often the gap is closed, under both definitions",
          "rows": 16
        },
        {
          "file": "the-reopen-quote-fingerprint-every-fx.csv",
          "label": "The reopen-quote fingerprint: every FX pair shows it, no other asset class does",
          "rows": 14
        },
        {
          "file": "session-to-session-overnight-gaps-previous.csv",
          "label": "Session-to-session (overnight) gaps: previous close to next open",
          "rows": 25
        }
      ],
      "jsonFile": "weekend-gap-statistics.json",
      "rows": 78
    },
    {
      "slug": "when-daily-high-low-forms",
      "title": "When the Daily High and Low Actually Form: 16 Years of Data",
      "description": "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.",
      "dateModified": "2026-09-08",
      "files": [
        {
          "file": "share-of-the-eventual-daily-range.csv",
          "label": "Share of the eventual daily range already traded, by UTC hour",
          "rows": 4
        },
        {
          "file": "hour-by-which-half-and-four.csv",
          "label": "Hour by which half and four-fifths of the daily range is typically complete",
          "rows": 22
        },
        {
          "file": "how-often-the-00-00-07.csv",
          "label": "How often the 00:00-07:00 UTC range is taken out later the same day",
          "rows": 22
        }
      ],
      "jsonFile": "when-daily-high-low-forms.json",
      "rows": 48
    }
  ]
}
