The full version of how Aurum builds a signal.
The homepage compresses this into six gates. This page is the long form, with the exact numbers, data sources, and decision rules.
1. Data
Bar data comes from Databento, sourced directly from CME Globex (GLBX.MDP3 dataset). The strategy operates on 5-minute OHLCV bars for GC (gold) and SI (silver) front-month continuous contracts.
The same source feeds both the backtester and the live signal pipeline. No transformation, sampling, or interpolation is applied between backtest and live. This is intentional: a strategy that works on a backtest fed by one vendor and live-traded against another vendor is two strategies, not one.
2. Feature pipeline
From the raw bars, four features are derived per symbol per session:
- ATR(14): 14-period Average True Range. Sets the stop distance and gates the regime filter.
- VWAP: Session volume-weighted average price.
- Prior-day H/L/C: Yesterday's session high, low, close.
- Opening range: High and low of the first 15 minutes of the session (08:30 to 08:45 ET).
3. Setup
A signal qualifies when the close of a 5-minute bar after the opening range either exceeds the opening-range high (long) or falls below the opening-range low (short). The stop is set at the opposite side of the opening range, or 1 ATR(14) from entry, whichever is tighter. The target is 3 times the risk distance from entry.
One signal per symbol per day. The first qualifying breakout takes the trade; subsequent breakouts on the same symbol are ignored.
4. Regime filter
Before publishing, the ATR is compared against historical bounds for the symbol. For GC, the accepted range is roughly 0.25 to 4.49 (the 5th to 95th percentile of 33,500 observations over 3 years). For SI, 0.008 to 0.149.
If the current ATR is outside this band (panic regime or illiquid session), the signal is rejected. The backtested edge was measured under normal-volatility conditions; outside that range, behavior is uncalibrated.
5. Risk gate
Every candidate signal passes a non-AI deterministic check:
- Symbol must be in the allowlist (GC, SI only).
- R:R must be at least 2.5 (target 3.0, floor 2.5).
- Stop distance must be at least 1 tick from entry.
- Entry price must be within 2 percent of the last close.
- Side must be consistent with stop direction.
A signal that fails any of these is rejected and logged with the reason. The gate is rule-based, audit-friendly, and cannot be overridden.
6. Publishing
Surviving signals are written to an append-only JSON-lines ledger before any subscriber is notified. Each entry includes a SHA-256 hash of the prior entry, producing a tamper-evident chain. The ledger is the source of truth for the public stats page.
Email and webhook delivery fire after the ledger write completes. If delivery fails, the signal still exists on the ledger; it does not get quietly removed.
7. Scoring
A scheduled job runs every hour. For each open signal, it pulls the bars covering the trade window. The first bar to touch the stop or target settles the signal as a loss or win. If neither is hit by the end of the trading day, the signal is recorded as a timeout and counted at the day's closing R-multiple.
Scored signals roll into the rolling stats on the track record page.
8. Circuit breaker
The publisher reads the rolling stats before each signal generation window. If the win rate over the most recent 20 closed signals falls below 35 percent, signal output pauses. Manual reset only. No silent recovery, no auto-tuning, no parameter sweep to find a working variant.
The breaker exists for one reason: backtests overfit, and the live edge can fail. When it does, the right move is to stop trading, not to keep publishing.
What this is not
This methodology page describes a rule-based strategy with a measured historical edge. It is not a guarantee, a recommendation, or a substitute for your own judgment. Futures trading is risky and not suitable for everyone. Read the risk disclosure before subscribing.