Trading research datasets — measured, not modelled
Every dataset below was produced by running something: ticks through a strategy, a stop through a spread, a configuration through a grid. Each one is downloadable as CSV, with the method that produced it, and each one includes the numbers that make it look worse.
If a dataset has a sample size too small to support the number next to it, the sample size is in the table. We would rather publish a weak result with its caveats than a strong one without them.
Which timeframe can each instrument actually trade?
Before testing a strategy, check whether the instrument can carry its costs on that timeframe. With stops expressed in multiples of ATR, cost stops being a property of the strategy and becomes a property of the market: round-trip cost ≈ 1 spread, risk per trade = stop ATR × ATR, and cost per R = spread ÷ (stop ATR × ATR). Measured on about 350,000 one-minute bars per instrument with each bar’s real spread (VT Markets, 2025-2026). Your broker’s spreads will differ — rerun the numbers with your own before trusting the last column.
| Instrument | Spread | ATR/spread M5 | M15 | H1 | Lowest usable TF |
|---|---|---|---|---|---|
| XAUUSD | 0.17 | 22.3 | 28.2 | 54.0 | M5 |
| NAS100 | 0.80 | 17.5 | 30.9 | 63.8 | M15 |
| DJ30 | 1.10 | 16.8 | 32.3 | 65.5 | M15 |
| SP500 | 0.46 | 6.0 | 11.4 | 23.9 | H1 (M15 tight) |
| BTCUSD | 15.95 | 8.8 | 14.2 | 31.1 | H1 |
| EURUSD | 0.00011 | 2.5 | 5.6 | 11.5 | H1 tight / H4 |
| GBPUSD | 0.00011 | 3.2 | 6.5 | 13.5 | H1 tight / H4 |
| USOIL | 0.023 | 2.7 | 5.7 | 12.2 | H1 tight / H4 |
On EURUSD the five-minute candle averages 2,7 pips and the spread is 1,1 — cost is 41 % of a typical candle’s range. There is no scalping in EURUSD, GBPUSD or oil at retail spreads. Gold is the friendliest instrument here, with ATR/spread of 22 even on M5.
| Pair | Spread | ATR M5 | ATR M15 | ATR H1 | Cost vs M5 candle |
|---|---|---|---|---|---|
| EURUSD | 1.10 pips | 2.7 pips | 6.2 pips | 12.7 pips | 40.7 % |
| GBPUSD | 1.10 pips | 3.5 pips | 7.1 pips | 14.8 pips | 31.4 % |
How much did trading gold cost in each year?
The median bid/ask spread of XAUUSD, year by year, measured from tick data rather than quoted by a broker: every one-minute bar carries the spread it actually traded at. The series covers 2003 to October 2026 over about 7.9 million bars. It is not a smooth curve — the spread widened through the financial crisis, compressed through the 2010s and then jumped 53 % in a single year, from 0,38 $ in 2024 to 0,58 $ in 2025. At 0,68 $ in 2026 it is nearly three times the 0,24 $ floor of 2018. Anything that traded gold on the old spread is not trading the same market it was validated on.
| Year | M1 bars | Median spread | P90 spread |
|---|---|---|---|
| 2003 | 104,058 | 0,41 $ | 55.4 |
| 2004 | 211,464 | 0,41 $ | 55.4 |
| 2005 | 278,588 | 0,46 $ | 55.4 |
| 2006 | 333,198 | 0,46 $ | 55.6 |
| 2007 | 346,941 | 0,46 $ | 55.6 |
| 2008 | 363,465 | 0,48 $ | 55.6 |
| 2009 | 363,585 | 0,49 $ | 55.6 |
| 2010 | 365,764 | 0,51 $ | 66.2 |
| 2011 | 363,595 | 0,41 $ | 62.2 |
| 2012 | 352,975 | 0,36 $ | 46.5 |
| 2013 | 352,317 | 0,35 $ | 48.1 |
| 2014 | 351,794 | 0,28 $ | 35.5 |
| 2015 | 353,772 | 0,31 $ | 37.2 |
| 2016 | 354,246 | 0,30 $ | 38.0 |
| 2017 | 352,785 | 0,24 $ | 28.3 |
| 2018 | 353,925 | 0,24 $ | 29.7 |
| 2019 | 353,320 | 0,29 $ | 33.4 |
| 2020 | 355,432 | 0,40 $ | 79.0 |
| 2021 | 354,347 | 0,35 $ | 43.0 |
| 2022 | 354,629 | 0,37 $ | 45.8 |
| 2023 | 352,887 | 0,33 $ | 37.7 |
| 2024 | 355,893 | 0,38 $ | 44.7 |
| 2025 | 354,435 | 0,58 $ | 77.7 |
| 2026 | 281,904 | 0,68 $ | 89.0 |
Which of 392 strategy configurations survived their own costs?
392 configurations of strategy, stop type, stop distance and risk-reward ratio, each run on XAUUSD one-minute ticks with the broker’s costs already inside the numbers: 5 basis points of spread, 2 of slippage, 5 of commission — 9.5 in total. The table below is the top 20 ranked by Sharpe among the configurations with at least 100 trades. Ranking all 392 by Sharpe would put a different set on top, and not because those strategies are better. The CSV carries both rankings so the difference is visible.
| # | Strategy | TF | RR | Sharpe | CAGR | Max DD | PF | Trades |
|---|---|---|---|---|---|---|---|---|
| 1 | EMA-12/26 | H1 | 3.0 | 2.96 | 115.1% | -7.8% | 1.51 | 234 |
| 2 | EMA-12/26 | H1 | 3.0 | 2.77 | 544.9% | -14.1% | 1.48 | 453 |
| 3 | EMA-12/26 | H1 | 2.5 | 2.53 | 1359.1% | -18.1% | 1.41 | 760 |
| 4 | EMA-12/26 | H1 | 3.0 | 2.52 | 1114.6% | -20.9% | 1.43 | 658 |
| 5 | RSI 30/70 | H1 | 3.0 | 2.33 | 106.3% | -7.1% | 1.38 | 264 |
| 6 | EMA-12/26 | H1 | 2.5 | 2.32 | 465.0% | -15.4% | 1.37 | 526 |
| 7 | EMA-12/26 | H1 | 3.0 | 2.23 | 5136.6% | -20.1% | 1.37 | 1155 |
| 8 | BB-20 (2σ) | H1 | 3.0 | 2.16 | 100.9% | -8.4% | 1.35 | 268 |
| 9 | EMA-12/26 | H1 | 2.5 | 2.15 | 108.8% | -8.4% | 1.33 | 303 |
| 10 | Donchian-20 | H1 | 3.0 | 2.11 | 652.4% | -16.8% | 1.35 | 615 |
| 11 | RSI 30/70 | H1 | 2.5 | 2.09 | 119.8% | -7.2% | 1.32 | 330 |
| 12 | BB-20 (2σ) | H1 | 2.5 | 2.05 | 115.6% | -7.8% | 1.32 | 326 |
| 13 | BB-20 (2σ) | H1 | 3.0 | 1.99 | 805.3% | -17.6% | 1.32 | 703 |
| 14 | Donchian-20 | H1 | 3.0 | 1.98 | 1828.3% | -18.6% | 1.32 | 947 |
| 15 | EMA-12/26 | H1 | 2.5 | 1.97 | 4560.6% | -19.1% | 1.31 | 1322 |
| 16 | EMA-12/26 | H1 | 2.0 | 1.95 | 430.8% | -13.3% | 1.29 | 627 |
| 17 | Donchian-20 | H1 | 3.0 | 1.95 | 114.0% | -7.8% | 1.31 | 314 |
| 20 | EMA-12/26 | H1 | 3.0 | 1.91 | 54390.5% | -29.9% | 1.31 | 2074 |
| 20 | EMA-12/26 | H1 | 3.0 | 1.91 | 54390.5% | -29.9% | 1.31 | 2074 |
| 20 | EMA-12/26 | H1 | 3.0 | 1.91 | 54390.5% | -29.9% | 1.31 | 2074 |
What happens when you walk-forward a strategy with ten trades per window?
This is the least flattering table on the site. Eleven walk-forward windows over XAUUSD one-minute data, 2016-2026. The in-sample column ranks each configuration on the whole series — the number you get when you already know the future. The out-of-sample column is what the same configuration actually did on the following year. Nine of the eleven windows contain fewer than 15 trades, and a Sharpe over eight or ten trades is arithmetic, not performance: window 10 shows 708.12 with 10 trades and a profit factor of infinity. Two windows carry enough trades to mean something, and one of them lost money. We publish the table anyway, because the gap between the two columns is the lesson — and because a research shop that only publishes the pretty half is not a research shop.
| Window | Test period | IS Sharpe | OOS Sharpe | OOS CAGR | OOS Max DD | PF | Trades |
|---|---|---|---|---|---|---|---|
| 0 | 2020-01-03 → 2021-01-03 | 4.01 | 2.74† | 7.3% | -11.9% | 1.47 | 11 |
| 1 | 2020-07-03 → 2021-07-03 | 1.83 | 0.23 | -0.2% | -15.8% | 1.03 | 15 |
| 2 | 2021-01-03 → 2022-01-03 | 3.35 | -4.44† | -11.1% | -16.7% | 0.53 | 11 |
| 3 | 2021-07-03 → 2022-07-03 | 2.63 | 0.05† | -0.8% | -10.4% | 1.01 | 10 |
| 4 | 2022-01-03 → 2023-01-03 | 2.18 | 1.46† | 2.9% | -16.8% | 1.23 | 10 |
| 5 | 2022-07-03 → 2023-07-03 | 2.73 | 3.83† | 7.4% | -11.5% | 1.73 | 8 |
| 6 | 2023-01-03 → 2024-01-03 | 2.21 | 4.16† | 8.2% | -9.0% | 1.82 | 8 |
| 7 | 2023-07-03 → 2024-07-03 | 2.24 | 6.49† | 19.4% | -6.6% | 2.49 | 11 |
| 8 | 2024-01-03 → 2025-01-03 | 1.99 | 4.67 | 18.2% | -9.3% | 1.94 | 15 |
| 9 | 2024-07-03 → 2025-07-03 | 2.45 | 9.29† | 28.5% | -11.3% | 3.53 | 11 |
| 10 | 2025-01-03 → 2026-01-03 | 2.19 | 708.12† | 82.5% | -5.5% | ∞ | 10 |
† fewer than 15 trades — the Sharpe on that row is not a performance claim. 9 of 11 rows carry it; 2 do not.
walkforward-11-windows.csv · 11 windows with the sample-size flagWhich strategies were verified, and which were discarded?
Thirteen strategies, each with the number that decided it. Three survive, four remain promising and six do not survive. In most of the failures the reason is not that the idea was wrong: it is that the costs ate it. A strategy with a good Sharpe on EURUSD at a 0,8 pip spread is a good strategy and a bad trade, and the register keeps the cost next to the metric for exactly that reason. The published metric column is not always a Sharpe — where the source paper published something else, it is kept verbatim.
| # | Strategy | Verdict | Published metric | The number that decided it |
|---|---|---|---|---|
| 1 | Sesión/fixings FX en EUR/USD | SOBREVIVE | 1,3 / 0,9 neto (BR); 2,41 (HKS); 0,61 (BoC); 0,70 (QR) | Break-even 4 pips; all-in de EUR/USD 0,1–0,2 pips en cuenta raw; sin rollover |
| 2 | VRP en opciones (strangle, no iron condor) | SOBREVIVE CON MATIZ | 0,64–0,78 | Iron condor 0,05; índice PUT 0,46; captura del carry 36% |
| 3 | Trend lento en cripto | SOBREVIVE CON MATIZ | 1,68 → 1,25 con 0,5% de costes | Señal de 12 semanas gana a la rápida (Kang-Ryu) |
| 4 | Gap de fin de semana en FX | PROMETEDOR | >10% anual OOS, neto | NZD/USD 10,4% anual; break-even 0,08% RT |
| 5 | Evento IPC en futuros de índice | PROMETEDOR | t = 4,13 | NQ +$133/evento tras costes estresados; ES p = 0,0027 |
| 6 | Portfolio multi-estrategia | PROMETEDOR | 1,91 neto, 23,6% CAGR | 14,5 años; 11 bet declaradas; sin N por estrategia |
| 7 | VPIN / SVPIN (toxicidad de flujo) | PROMETEDOR | BHAR 11,45–17,34% | Predice vol inducida por toxicidad, no retorno |
| 8 | Overnight vs intradía (acciones) | NO SOBREVIVE | 3,47%/mes, t = 16,83 | Replicación: −10%/mes tras costes (break-even 2 bps vs 27 bps reales) |
| 9 | Carteras gestionadas por volatilidad | NO SOBREVIVE | Sharpe "muy alto" (Moreira-Muir 2017) | Falla OOS (Cederburg, 104 estrategias) y tras costes (Barroso-Detzel) |
| 10 | PEAD (deriva post-resultados) | NO SOBREVIVE | ~35% anualizado (1989-90) | Desaparecido en no-microcaps desde 2006; t = 1,43 sin microcaps (2025) |
| 11 | Turn of the Month | NO SOBREVIVE | 31 de 35 países (1926-2005) | Desaparece por completo después de 2001 |
| 12 | Pares / stat-arb intradía | NO SOBREVIVE | Bruto positivo en 9 de 9 | Sharpe neto negativo en 9 de 9; edge a 1–3 bps |
| 13 | Momentum intradía en cripto | NO SOBREVIVE | Break-even 3–10 bps vs comisión de 25 bps |
How was this measured?
Price and cost
Bid/ask spreads are measured from Dukascopy tick data, not quoted by a broker: each one-minute bar carries the spread it actually traded at. Broker-cost assumptions in the grid (5 bps spread, 2 bps slippage, 5 bps commission) are stated next to every result. The cost-per-R table uses VT Markets spreads, the only retail broker whose spreads are in the public dataset we can verify.
Sample size and selection
Every table carries its trade count. Where a number is not supported by the sample behind it, it is flagged rather than dropped — the walk-forward table is the clearest case. For the grid we publish a second ranking restricted to configurations with at least 100 trades, because a Sharpe computed on fifteen trades is not a ranking.
What we do not publish
We do not publish a headline Sharpe for a configuration without its trade count, and we do not publish a strategy as validated on the strength of one walk-forward window. The full strategy register — what survived and what did not, with the cost that killed it — is published separately on request and in the Trader Vault.
Files
Every CSV is plain text, no signup, no email. If a number here disagrees with the file you downloaded, the file is right and this page is wrong — tell us and we will fix the page.
The Trader Vault
The full library: 29 TradingView indicators, 5 strategy files and the research behind them — the cost per R of every instrument and the Master of Liquidity validation on GBPUSD H1. Lifetime access, no subscription.
- 29 indicators + 5 strategies
- Research: cost per R by instrument
- Lifetime access · no subscription
$49.99
See the Vault⚠️ Educational use only. No accuracy guarantee. Use at your own risk. Nothing here is investment advice, and past measured behaviour does not predict future results.
The Trader Vault · $49.99
29 indicators + 5 strategies + the research · lifetime access
