Aurum-1D: Gold next-day forecasting
TL;DR: Aurum-1D is the Gold member of a SOTA-era research model family for one-day-ahead commodity forecasting. It is benchmarked against Chronos-2 and TimesFM 2.5 under the same walk-forward dates, horizon and costs. The estimator predicts the next-day Gold log return.
Research and education only. This model is not financial advice, is not a trading recommendation and has no performance guarantee.
Quick facts
| Field | Value |
|---|---|
| Asset | Gold futures (GC=F) |
| Horizon | Next trading day (J+1) |
| Task | Regression on log return |
| Model family | Aurum-1D / Argent-1D |
| Selected estimator | ExtraTrees |
| Input representation | 144 causal engineered features |
| Selection | Five expanding walk-forward folds, gap=1 |
| Locked test | Final 20% of common Gold/Silver dates |
| Backtest cost | 10 bps per unit of turnover |
Model details
The model is fitted on information available at date t and targets the next-day log return. Features include lagged returns, volatility, momentum, moving-average gaps, drawdown, volume, Gold/Silver cross-asset statistics and market covariates. No feature is allowed to use a future timestamp.
Gold outputs a return estimate.
Model weights and files
model.joblib: the fitted ExtraTrees model weights.estimator.joblib: compatibility alias for the fitted weights.feature_schema.json: exact input column order and target definition.config.json: data, feature, split and transaction-cost configuration.metrics.json: validation, locked-test, foundation-model and robustness results.
The payload contains no raw Yahoo Finance/FRED data, Hugging Face token or intermediate checkpoint. The estimator was fitted with code revision d5f5f5f.
Evaluation under the repository protocol
| Metric | Value |
|---|---|
| Validation net Sharpe | 0.618 |
| Locked-test net Sharpe | 1.187 |
| Locked-test cumulative return | 125.0% |
| Locked-test maximum drawdown | -22.6% |
| Turnover per observation | 0.331 |
| Information coefficient | 0.148 |
| Locked-test observations | 970 |
The final 20% of common Gold/Silver dates is a locked test and was not used to select the model. The backtest maps the signal to -1, 0 or +1, applies it to the next realized return and charges 10 basis points per unit of turnover.
External foundation-model audit
These external models were evaluated on the same dates, one-day horizon and costs. Their information representation differs: the local model receives engineered causal features, while the foundation tracks receive only their stated univariate or past-only covariate context.
| Model | Validation Sharpe | Locked-test Sharpe | Max drawdown |
|---|---|---|---|
| Chronos-2 (univariate) | -0.935 | 0.916 | -0.270 |
| Chronos-2 (past-only covariates) | -0.121 | 0.159 | -0.349 |
| TimesFM 2.5 (univariate) | -0.630 | 0.551 | -0.275 |
| TimesFM 2.5 (causal covariates) | -0.950 | 0.279 | -0.362 |
The repository-level claim is best local model found under the stated candidate set. Aurum-1D and Argent-1D are positioned as SOTA-era, foundation-model-benchmarked research artifacts, not as universal SOTA claims. The external comparison is a reproducible audit, not a claim that this small experiment covers every published model, training recipe or market period.
For Gold, the local winner has lower squared error than every foundation track, but none of the four differences survives Holm correction.
Paired statistical comparison with the local winner
DM compares forecast loss on the same locked dates; Holm p corrects the four foundation comparisons. A “yes” means the local winner has lower squared error in that paired test.
| Foundation model | Local-minus-foundation Sharpe | Holm p | Local lower MSE |
|---|---|---|---|
| Chronos-2 (univariate) | 0.270 | 0.565 | yes |
| Chronos-2 (past-only covariates) | 1.028 | 0.565 | yes |
| TimesFM 2.5 (univariate) | 0.635 | 0.418 | yes |
| TimesFM 2.5 (causal covariates) | 0.907 | 0.738 | yes |
The candidate-aware White Reality Check for the full local-plus-foundation universe is 0.106 for Gold. This is a conditional bootstrap p-value, not a probability that the model will be profitable.
Reproduce inference
The payload intentionally does not include raw market data. Construct the latest causal feature row with the source repository, preserve the schema order, then load the estimator:
import json
from pathlib import Path
import joblib
ARTIFACT_DIR = Path(".")
estimator = joblib.load(ARTIFACT_DIR / "model.joblib")
schema = json.loads((ARTIFACT_DIR / "feature_schema.json").read_text())
# Build this one-row DataFrame with the causal feature builder in the source
# repository. It must contain exactly the columns listed in schema.
X_next = build_causal_feature_row(raw_history)[schema["feature_columns"]]
next_day_log_return = float(estimator.predict(X_next)[0])
print(next_day_log_return)
Data and reproducibility
- Source snapshot: Yahoo Finance tickers in
data/raw/manifest.json. - Snapshot dates:
1927-12-30T00:00:00to2026-08-12T00:00:00. - Target:
log(close[t+1] / close[t]). - Feature rule: information available at or before
tonly. - Python: 3.11; see the source repository for installation and inference code.
Intended use and limitations
Intended for local research, reproducible benchmarking and educational experiments on daily Gold/Silver futures. It is not intended for automated execution, portfolio allocation, risk management or live financial decisions. Results are historical, regime-dependent and sensitive to data revisions, slippage, liquidity, feature availability and model-selection bias. The card's “best” language is limited to this repository's tested candidate set and protocol; it is not a universal SOTA claim.
Citation and source code
Source repository: https://github.com/Aurelien7877/gold-silver-forecasting
Please cite the repository and the upstream data/model documentation when reusing this artifact. The exact code revision is recorded in metrics.json.
- Downloads last month
- -
