Edge does NOT survive out-of-sample Session breakout / time-of-day Gold (XAUUSD · GC · PAXG) 15m · 2020–2026

GoldAsia — Gold
Asian-Range Breakout

Quiet Asia builds a range, London/early-US liquidity breaks it: buy-stop above the Asian high or sell-stop below the Asian low at 01:00 NY, ride to an 11:00 NY time exit with a full-range protective stop. The 2026 window looked great; the 6-year test says otherwise.

As specified, NOT profitable over multi-year data
0.90
Multi-year profit factor
1,543 PAXG trades (2020–2026) · −220R total
5/7
Calendar years lose money
2020 −21R · 2021 −64R · 2022 −12R · 2023 −102R · 2024 −70R
9.8%
P(total net > 0) bootstrap
vs 99.5% in the flattering 2026 window
1.79
2026 Bybit window PF
+38.5R, 58.2% WR — a flattering regime, exactly as the original report warned

Verdict

The original 2026 Bybit window looked exceptional (PF 1.79, +38.5R, 99.5% MC P(profit)) — and the strategy's own report warned it was regime-sensitive. A 6-year out-of-sample test on PAXGUSDT (tokenized gold, which reproduces the Bybit window almost exactly: 124 vs 122 trades, PF 1.80 vs 1.79) settles it: PF 0.90, −220R over 1,543 trades, 5 of 7 calendar years lose money, P(total net > 0) = 9.8%.

As specified, this strategy is not profitable over multi-year data. Any live use would need a genuine edge change (regime filter, different entry/exit mechanics), not just better data. This is one of the cleanest lessons in the library: a short backtest window in a trending regime can look amazing and still be worthless.

The rules

Instrument / chart

XAUUSD / GC (gold), 15-minute chart, America/New_York timezone, 17:00 chart-day boundary.

Asian range

21:00 → 01:00 NY — highest high / lowest low of the quiet Asia session.

Entry

Buy-stop at range HIGH + sell-stop at range LOW (OCO) at 01:00, first to fill. One trade per day, either direction.

Stop / exit

Stop = StopFrac × range width (default 1.0 = full range). No take profit — ride to the 11:00 NY time exit, next-bar market order.

The window vs the truth

Metric2026 Bybit windowMulti-year PAXG (2020–2026)
Trades1221,543
Win rate58.2%35.3%
Profit factor1.790.90
Total R+38.5R−220R
Sharpe (daily, ann.)2.94−0.44
P(total net > 0) bootstrap99.5%9.8%
PAXG fidelity check: 124 vs 122 trades, PF 1.80 vs 1.79, +39.5R vs +38.5R on the same window — PAXG is a faithful proxy for XAUUSD, so the multi-year result is trustworthy.

How it was tested

Engine

Faithful EasyLanguage-derived engine (fills, OCO, stops, time exit) with per-trade fill verification against raw bars (verify_fills.py).

Data

XAUUSDT 15m Bybit (Mar–Aug 2026), GC=F 15m Yahoo (Jul–Sep 2026), PAXGUSDT 15m Binance (Aug 2020 → Sep 2026, 211k bars), GC=F daily 2016–2026 for regime labels.

Validation

Metric suite + Monte Carlo + sensitivities on the original window; multi-year yearly/regime analysis on PAXG; fill verification; hand-traced sample days.

Honesty

The multi-year update is published prominently in the README and site — the negative result is the headline, not a footnote.

Run it yourself

python backtest/asian_breakout.py   # faithful engine
python backtest/asian_analysis.py   # metrics + MC + sensitivities
python backtest/multiyear_analysis.py  # 6-year PAXG test
python backtest/verify_fills.py     # verify every fill vs raw bars
python backtest/generate_site_data.py  # site/data/site_data.json