Statistics

Models over XAUUSD spot and GC futures minute bars from thirdeye's database. Trained on the past, validated on a later period, tested on a period the model never saw.
1 · Data
The market graph 10 nodes, 57 directed edges plus self-loops; edges thicken once a model is trained
xau1 → xau5xau1 → xau15xau1 → xau60xau5 → xau1xau5 → xau15xau5 → xau60xau15 → xau1xau15 → xau5xau15 → xau60xau60 → xau1xau60 → xau5xau60 → xau15gc1 → gc5gc1 → gc15gc1 → gc60gc5 → gc1gc5 → gc15gc5 → gc60gc15 → gc1gc15 → gc5gc15 → gc60gc60 → gc1gc60 → gc5gc60 → gc15xau1 → gc1gc1 → xau1xau5 → gc5gc5 → xau5xau15 → gc15gc15 → xau15xau60 → gc60gc60 → xau60basis → xau1xau1 → basisbasis → xau5xau5 → basisbasis → xau15xau15 → basisbasis → xau60xau60 → basisbasis → gc1gc1 → basisbasis → gc5gc5 → basisbasis → gc15gc15 → basisbasis → gc60gc60 → basistime → xau1time → xau5time → xau15time → xau60time → gc1time → gc5time → gc15time → gc60time → basisXAUUSD1mXAUUSD5mXAUUSD15mXAUUSD60mGC1mGC5mGC15mGC60mBasisGC − XAUClock
2 · Choose the window, then 3 · Train
Presets:
Everything
Last 12 months
Last 6 months
Last 3 months (quick)
1028 days · fit 2023-12-28 → 2025-12-14 · validation 2025-12-16 → 2026-05-18 · test 2026-05-20 → 2026-10-20 (chronological 70 / 15 / 15 with a one-day gap between the parts; decisions whose horizon crosses a boundary are dropped, so nothing from a later part leaks into an earlier one)
30
5
The trade simulation in the results uses the Config costs plus 2 ticks of assumed spread, enters when the predicted move is at least 5 ticks, and holds for the horizon. Both are in Advanced settings.
Saved models click "show" to load one into the results above
No saved models yet.
What this model is and how it is evaluated
The graph

A graph neural network passes messages between nodes along edges and learns how much each neighbour matters (attention). Here the nodes are views of the market at one decision time: XAUUSD and GC at four scales (rolling windows of 1, 5, 15 and 60 one-minute bars: the last six returns in ATR units, the range of the last six windows, the position inside the last twenty, the distance from their mean; GC nodes also carry a volume z-score and a signed-volume share), a basis node (change of GC − XAUUSD over 5 to 240 minutes and its z-score) and a clock node (New York time of day, weekday, session). Edges connect the scales of one instrument, XAUUSD to GC at the same scale, the basis to every instrument node, and the clock to everything. Two rounds of multi-head attention update every node; the GC 1-minute node and the mean of all nodes feed the output: the predicted change of GC over the horizon, in units of GC's 1-minute ATR.

Protocol

Every feature is computed from bars up to the decision only; the target is GC's close change from that bar to the bar one horizon later. Decisions on either side of a contract roll, or whose windows would span one, are dropped, and so is any training decision whose horizon reaches into the validation period (and validation into test). Features are standardised with training-period statistics. Training minimises a Huber loss with Adam; the validation period picks the best epoch and stops training early; the test period is scored once, after the fact. The same seed gives the same weights, and yarn gnn:check proves the causality, the roll handling, the purging and that the network learns a synthetic lead–lag structure but not shuffled targets.

How to read the results

IC is the rank correlation between predictions and outcomes: 0 is no information, 0.05 is respectable for minute data, 0.2 would be remarkable. The decile table shows whether higher predictions really came with higher outcomes. The trade simulation enters at the decision's bar open (the last completed close), holds for the horizon and charges the Config fees and slippage plus an assumed spread, because bars have no order book; latency is not modelled, so treat it as an upper bound. A test period of a few months is a small sample: a positive IC in every month matters more than the total. XAUUSD here is IBKR's spot quote, GC the stitched continuous future; the databases update when thirdeye fetches, so the last day is the last day fetched.