Systematic intraday strategy · XAUUSD / GC

Gold Asian-Range Breakout

Quiet Asia builds a range. When London / early-US liquidity arrives, a clean break of that range often runs directionally. This strategy places resting buy/sell stops at the range edges the moment the window closes, rides the first fill to a fixed time exit, and uses the full range width as its stop.

15m chart · NY time · 17:00 day boundary Range 21:00 → 01:00 Exit 11:00 StopFrac 1.0 OCO · 1 trade / day No take-profit

How it works

A faithful reproduction of the provided EasyLanguage spec, run bar-by-bar with realistic fills on two independent 15m gold datasets.

1 · Build range
21:00 → 01:00 NY
highest high / lowest low of the Asian window
2 · Arm OCO
At 01:00 close
buy-stop at high, sell-stop at low — first to fill wins, other cancels
3 · Manage
Stop = 1.0 × range
full-range protective stop, no profit target
4 · Exit
11:00 NY flat
time-based exit at market, next-bar fill

Why the setup avoids the classic breakout flaw

Orders are placed the moment the range closes — there is no gap between defining the level and arming the order, so price cannot run through the level before the order exists. (This is what kills naive previous-day breakouts.)

Headline results

StopFrac 1.0, gross (before spread/slippage). Two datasets: the Bybit XAUUSDT perp (primary, 176 full days) and real CME GC=F futures (independent cross-check, ~51 days).

Full metric table

Direction & exit breakdown

Charts

Every series below is computed from the actual engine trade log — no simulated curves.

Equity curve — cumulative R

Per-trade R (net ÷ Asian range width). Losers cluster at −1R; winners ride to +1…+2.4R.

Equity curve — cumulative net ($/oz)

Cumulative net P&L per oz across the trade sequence.

Monthly P&L

Net $/oz by calendar month.

R-multiple distribution

Histogram of per-trade R multiples (0.25R bins).

Monte Carlo simulation

10,000 bootstrap resamples of the actual trade returns (with replacement, same trade count). This answers: how likely is the strategy to stay profitable if the trade sequence is re-shuffled many times?

Read the Monte Carlo honestly

Bootstrap reshuffles the observed trade returns — it measures sequence risk, not regime risk. It cannot tell you whether a different gold regime (e.g. a choppy, mean-reverting tape) would generate the same trade distribution. The sample is a single ~6-month window in a strong downtrend; treat the probabilities as conditional on that distribution.

Robustness

Walk-forward split, parameter sensitivity and cost sensitivity on the primary dataset.

Walk-forward · 1st half
PF · win · R
Walk-forward · 2nd half
PF · win · R
Best StopFrac (net)
0.75–1.5 all positive; 1.0 default near-optimal
Cost stress $0.50/oz RT
PF after pessimistic round-trip cost

StopFrac sensitivity

Total net and PF across stop distances.

Cost sensitivity

PF / Sharpe degradation as round-trip cost ($/oz) rises.

Methodology & data

How the backtest was built, verified, and where the numbers come from.

Engine fidelity

  • Faithful reproduction: the engine mirrors the EasyLanguage spec exactly — 17:00 NY chart-day boundary, midnight-wrapping range window, OCO stops placed next bar after the window closes, protective stop = StopFrac × range, time exit at 11:00 filled at next-bar open.
  • Realistic fills: stop orders fill at the stop price or the bar open when gapped through; a bar spanning the whole range resolves to the level closer to the open; stop checked before time exit in the same bar (conservative).
  • Verified by hand: fills were traced bar-by-bar against raw GC=F data (e.g. the 2026-07-06 short: range 46.3 wide, fill 4163.70, exit 4151.60 — matches the engine exactly).
  • Weekend-aware: Bybit perp trades 24/7, but real gold futures do not — Sat/Sun bars are excluded so the primary sample matches actual futures sessions.

Sample caveat — read before trading

  • Short window: Bybit XAUUSDT perp only lists since Mar 2026 (176 days); Yahoo GC=F 15m is capped at ~60 days; Dukascopy's free feed was unreachable from this host. This is the maximum verifiable free history available.
  • Regime-specific: gold fell ≈17% across Mar→Aug 2026 — a persistent trend that flatters breakout follow-through. A mean-reverting tape is likely to reproduce the file's claimed ~34% win / PF ≈ 1.2 character instead of the 58% / 1.79 observed here.
  • No costs in headline numbers: headline stats are gross. Even at a pessimistic $0.50/oz round trip the strategy stays positive (PF ≈ 1.74), but add your real broker spread + slippage before going live.
DatasetSourceWindowBarsTrades

Reproduce it yourself

# needs python3 + pandas + numpy (a venv is recommended)
python3 backtest/generate_site_data.py   # recompute site data from the engine
python3 backtest/asian_breakout.py --data data/XAUUSDT_15m_bybit.csv --mc 10000
python3 backtest/asian_analysis.py       # full metric suite + sensitivities