Backtesting on Index Prices
When the chart exchange isn't the fill exchange
720d · 15m merge · validate coverage
July 6, 2026 · 6 min read
Backtesting on GMX index candles answers a specific question: how does the strategy behave on the prices the chain oracle sees? It is not the same series as a CEX perpetual — and pretending otherwise is worse than having no GMX data at all.
The retention wall
GMX serves native history on fine timeframes for weeks, not years. Long lookbacks need a merge: recent native bars plus older backfill from a CEX feed, stitched without duplicate timestamps, validated for coverage gaps.
Cache like everything else
- Same parquet layout as ccxt caches — one provider interface, two upstreams.
- Meta JSON records how many bars came from where — auditable blend, not a black box.
- Validation rejects lookbacks with internal gaps or short history — backtest fails loud.
Live vs backtest source
Use GMX candles when researching index execution quality. Use Bybit (or your data venue) when running live signals that were tuned on CEX prices. The terminal can show both; your job is to not confuse them on the same deploy.