Finemark / Strategy Lab
The Strategy Lab Free & read-only - no login
Seven ways to trade gold, ranked honestly. Three of them lose money.
This is the full, public Strategy Lab. Every approach below was run over the same 22-year backtest of XAUUSD (2004 to 2026) and ranked by Sharpe ratio where a precise figure exists. The ones we could not rank with a clean decimal are placed by their qualitative verdict and marked approximate. No account needed. All data is on this page.
How to read this
- Sharpe ratio is return per unit of risk. Higher is better. Around 0.7 to 0.9 over a full 22-year cycle is solid for a single-asset trend follower; a number above 1.5 on a short window usually means the window was a one-way bull run, not a robust edge.
- The leaderboard is ranked by 22-year Sharpe for the strategies where we have a documented figure. For the qualitative ones (decent / weak / candidate) we did not compute a clean full-cycle decimal, so we place them by verdict and mark the ordinal as approximate. We would rather show an honest gap than fabricate a tidy column.
- The losers stay in. Mean-reversion on gold is dead, and we keep it on the board with a red verdict because that negative result is evidence, not an embarrassment.
- Expand any row for the plain-English explainer, the edge thesis, the honest gold verdict, the exact formula, the entry / exit / stop / sizing rules, the parameter glossary, and the known risks.
- Backtest is not the future. Every figure here is from a 22-year backtest (2004 to 2026); past results are not future results. The one strategy we run live has roughly one week of demo-account history, a sample far too small to mean anything.
The recency-bias trap
Same strategy. Two windows. Two very different numbers.
This is the single most important thing to understand before you read a leaderboard anywhere, including ours. Our live strategy, Supertrend 10/3 long-only, scores about Sharpe 1.7 on a one-year intraday (M15) window and about 0.89 on the honest 22-year H4 window. Both are the same rules on the same asset. The only thing that changed is the slice of history you measure.
Showing the 1-year number instead of the 22-year number is not an accident, it is a selection. A strategy that only looks good on the most recent bull run has not been tested through a drawdown. We publish the lower number on purpose. Both figures are from backtests; past results are not future results.
1 Supertrend 10/3 LO Trend The live pick. ATR-band trend follower, long-only, on H4. Live 0.8922yr Sharpe
A trend-following strategy. It takes the midpoint of each bar, builds a band above and below it at three times the recent volatility (ATR over 10 bars), and locks that band in the trend direction so it only loosens, never tightens. That locked band is the trailing stop. When price closes above it, the trend reads up and the strategy goes long; when price breaks the band, it exits to cash. Long-only, so the worst case is sitting flat, never short.
Same trend-persistence premise as a breakout system, but the stop trails on volatility (ATR) rather than on a fixed-bar low. That adapts the stop distance to the current regime: tighter in calm markets, wider in volatile ones.
Winner of the 2026-05-25 robustness gauntlet on H4: +798% cumulative return, Sharpe 0.89, max drawdown -20% over 22 years. It beats Donchian (+483% / 0.75 / -23%) on every axis. The Sharpe plateau is broad (0.75 to 0.97 across period 7 to 20 and multiplier 2.0 to 3.5) and tight, with no isolated hotspots, which is the signature of a real edge rather than a curve-fit. It generalizes across XAUUSD, XAUEUR and XAUAUD. Promoted live 2026-05-26. All figures from a 22-year backtest (2004-2026); past results are not future results.
HL2 = (high + low) / 2 ATR = Wilder's ATR(period=10) upper = HL2 + 3 * ATR lower = HL2 - 3 * ATR # Final bands lock in the trend direction: fu[t] = min(upper[t], fu[t-1]) if close[t-1] <= fu[t-1] else upper[t] fl[t] = max(lower[t], fl[t-1]) if close[t-1] >= fl[t-1] else lower[t] # Direction flip on close vs prior locked band: if close[t] > fu[t-1]: direction = +1 if close[t] < fl[t-1]: direction = -1 Supertrend line = fl when direction = +1, fu when direction = -1
- A short-window M15 Sharpe looks high (about 1.7 gross, lower after realistic cost) but is bull-window-flattered. The trustworthy full-cycle figure is the H4 22-year 0.89, not the M15 demo number.
- The recursive band lock means the line can sit very far from price in long calm trends, so stop distance can become uncomfortably wide.
- ATR over 10 bars on a fast timeframe reacts quickly to news spikes and can flip out near a real CPI or NFP print.
2 Donchian 20/15 LO Trend The validated fallback. Turtle-style channel breakout, long-only. Fallback 0.7522yr Sharpe
The classic Turtle-style channel breakout, long-only. Enter when price closes above the highest high of the last 20 closed bars; exit when it closes below the lowest low of the last 15 bars. The exit channel is the stop, so there is no separate stop-loss.
Trend persistence: a new 20-bar high is statistically more likely to be followed by another up-move than by mean reversion, especially in commodities with positive drift. The payoff is asymmetric, many small stop-outs and a few large winners that ride the channel up.
Real edge on H4: Sharpe 0.75, +483% return, max drawdown -23% versus buy-and-hold -45%. The parameter plateau is broad (Sharpe 0.7 to 0.9 across the full cycle), which means it is not curve-fit, and it generalizes across XAUUSD, XAUEUR and XAUAUD. Pick the plateau middle (around 20/15), never the in-sample optimum. It was the original live strategy, then demoted on 2026-05-26 when Supertrend won the head-to-head; kept as the validated fallback. All figures from a 22-year backtest (2004-2026); past results are not future results.
upper_entry = max(high[t-20 : t]) # excludes current bar (no look-ahead)
lower_exit = min(low[t-15 : t])
if flat and close[t] > upper_entry: -> LONG
if long and close[t] < lower_exit: -> FLAT
- Whipsaw periods (range-bound months) bleed via repeated false breakouts.
- Bull-flatter bias: the 22-year window is mostly up, so absolute return looks great, but the strategy cannot profit in a sustained bear, it just sits flat.
- Donchian channel exits give back open profit before flipping flat. This is intentional, but it feels worse than a trailing stop.
3 Buy & Hold XAUUSD Baseline The benchmark every strategy must beat. Always long, never trades. Baseline 0.7422yr Sharpe
The benchmark every gold strategy must beat. Always long, never trades. The Sharpe and max-drawdown numbers come from the gross spot price curve with no leverage and zero turnover cost.
Not a strategy. It is the bar to clear: if a long-only trend follower cannot deliver a comparable return at materially less drawdown, the strategy is not earning its complexity.
Returns the largest absolute gain over 2004 to 2026, +1090% cumulative as gold quintupled in real terms, with Sharpe 0.74. But it pays for that with a -45% max drawdown through the 2011 to 2015 bear. Any acceptable long-only trend follower must roughly halve that drawdown. All figures from a 22-year backtest (2004-2026); past results are not future results.
position[t] = +1 for all t return[t] = close[t]/close[t-1] - 1
No parameters. Buy-and-hold has nothing to tune.
- Full exposure to gold's structural drawdowns (the 2011 to 2015 cycle was -45%).
- No regime filter, so you stay long right through the macro top.
- Carry cost is zero in a backtest but nonzero with a real broker (swap fees on a long XAUUSD CFD).
~4 MA 20/50 LO Trend Classic fast/slow moving-average crossover, long-only. Candidate Decent baselineverdict, not a precise 22yr Sharpe
Classic fast/slow Simple Moving Average crossover. Go long on a golden cross (the fast average crossing up over the slow one). The short side, a death-cross short, is not enabled here.
The oldest documented trend filter. SMA crossovers are slower than EMA or MACD but also less noisy, good in slow-moving regimes and bad in fast ones.
A decent baseline trend filter on H4. Not the best, but a useful sanity check: if a fancy strategy cannot beat a 20/50 SMA cross, it is not earning its complexity. We have a qualitative read on this, not a clean full-cycle Sharpe, so its rank here is approximate. Any rank claim is from a 22-year backtest (2004-2026); past results are not future results.
fast = SMA(close, 20) slow = SMA(close, 50) golden cross: fast crosses up over slow -> LONG death cross : fast crosses down under slow -> FLAT (in LO mode)
- Lag: SMAs weight every bar in the window equally, so the cross fires well after the trend has started.
- Whipsaw in ranges, with repeated crosses and no follow-through.
5 RSI reversion L/S Mean-reversion Buy oversold, short overbought, exit at the midpoint. Long and short. Dead on gold Negativeloses almost every year
Classic Wilder RSI(14) mean-reversion. Buy when RSI drops below 30 (oversold), short when RSI rises above 70 (overbought), and exit when RSI returns to 50.
Markets overshoot in both directions; extreme oscillator readings are supposed to precede a reversion to the mean. It is the textbook strategy in most retail trading books, which is part of why we keep it on the board as a control.
Confirmed dead on gold (2026-05-25, stress_rsi.py + stress_trend.py + the 22-year bake-off). Shorting overbought RSI gets steamrolled by the structural uptrend; buying oversold RSI underperforms a flat position because the oversold bar is often the start of a real downtrend, not the bottom. Long-only is less bad but still loses 20% to 50% against buy-and-hold over the same window. It is red almost every year on the Sharpe-by-year heatmap. Do not deploy. This is a documented negative result from a 22-year backtest (2004-2026); past results are not future results, including the bad ones.
delta = close.diff() gain = max(delta, 0) loss = -min(delta, 0) avg_gain = Wilder-EMA(gain, 14) avg_loss = Wilder-EMA(loss, 14) RS = avg_gain / avg_loss RSI = 100 - 100 / (1 + RS) if flat and RSI < 30: -> LONG if flat and RSI > 70: -> SHORT if long and RSI >= 50: -> EXIT if short and RSI <= 50: -> EXIT
- Trends in gold can keep RSI overbought (above 70) for weeks at a time, so you stay short and bleed.
- Mean reversion as a thesis assumes a stationary regime; gold is not stationary.
6 Bollinger reversion Mean-reversion Buy the lower band, short the upper band, exit at the mean. Long and short. Dead on gold Negativered across most years
Bollinger mean reversion. Buy when close drops below the lower band (2 sigma below the mean), short when close rises above the upper band, and exit at the middle band. Same indicator as Bollinger breakout, with the opposite trade direction.
Standard-deviation bands measure how unusual a move is. The reversion thesis says unusual moves snap back; the breakout thesis says they continue. Both cannot be right on the same asset.
Same verdict as RSI: dead on gold. The snap back fails because gold's moves persist longer than 2 sigma would suggest. The 22-year heatmap is red across most years. This is a documented negative result from a 22-year backtest (2004-2026); past results are not future results, including the bad ones.
mid = SMA(close, 20) stdev = STDEV(close, 20) upper = mid + 2.0 * stdev lower = mid - 2.0 * stdev if flat and close < lower: -> LONG if flat and close > upper: -> SHORT if long and close >= mid: -> EXIT if short and close <= mid: -> EXIT
- Same trend-versus-reversion mismatch as RSI on gold.
7 Z-score reversion LO Mean-reversion Buy when price is 2 sigma below its mean, exit back at the mean. Long-only. Dead on gold Negativeloses to a flat position
Z-score reversion, long-only. When close is 2 standard deviations or more below its 20-bar mean, go long; exit when the z-score returns to 0. Mathematically equivalent to a Bollinger lower-band reversion, exposed through a different parameterization.
Same as Bollinger reversion: statistically extreme positions revert to the mean. Long-only avoids the catastrophic short side that kills long-and-short reversion on gold.
Long-only restraint helps it survive against RSI long-and-short, but it still loses to a flat position and badly to a trend follower. The snap-back premise fails on gold regardless of which side you trade. This is a documented negative result from a 22-year backtest (2004-2026); past results are not future results, including the bad ones.
mu = SMA(close, 20) sigma = STDEV(close, 20) z = (close - mu) / sigma if flat and z < -2.0: -> LONG if long and z >= 0: -> EXIT
- Same as Bollinger reversion: the snap back does not snap on gold.
Founding members
The Lab is free forever. The live dashboard is what you join for.
The Strategy Lab you just read stays public and free, no login. What founding members get is the live side: the demo dashboard that compares the live result to the 22-year backtest in real time, says behind when it is behind, and shows every fill as it happens.
Founding members who join the Analyst tier now get the rate locked for 12 months from first payment. We are not running a countdown timer. We would rather have a small group who understand what they are looking at.
No profit guarantee. No lock-in. Cancel any time. The subscription is a fixed-price software licence; it is not an investment deposit and gives you no claim to any profit. Today Finemark has one user: its builder.