Skip to content
All strategies

Strategies

Spot Gold Macro-Driver Trend: Long/Short XAUUSD.SPOTMETAL on Lagged 10y TIPS Real-Yield and EUR/USD Dollar Trends (FRED, daily, signal exit)

Outcome: Verifying

XauMacroDriverTrend

Spot Gold Macro-Driver Trend: Long/Short XAUUSD.SPOTMETAL on Lagged 10y TIPS Real-Yield and EUR/USD Dollar Trends (FRED, daily, signal exit)

Hypothesis

Single-instrument long/short trade on spot gold (XAUUSD.SPOTMETAL, 1-DAY bars, 2003-2026). It is driven ONLY by gold's two textbook macro drivers, never by gold's own price trend. (1) The US 10-year TIPS real yield (FRED DFII10, platform key US_REAL10Y): gold pays no coupon, so the real yield is its opportunity cost. (2) The US dollar, proxied by EUR/USD (FRED DEXUSEU, key US_EURUSD; EUR is ~58% of DXY): gold is priced in dollars. The bet is that trends in these drivers PERSIST (bond and FX time-series momentum,……Show moreShow less

Single-instrument long/short trade on spot gold (XAUUSD.SPOTMETAL, 1-DAY bars, 2003-2026). It is driven ONLY by gold's two textbook macro drivers, never by gold's own price trend. (1) The US 10-year TIPS real yield (FRED DFII10, platform key US_REAL10Y): gold pays no coupon, so the real yield is its opportunity cost. (2) The US dollar, proxied by EUR/USD (FRED DEXUSEU, key US_EURUSD; EUR is ~58% of DXY): gold is priced in dollars. The bet is that trends in these drivers PERSIST (bond and FX time-series momentum, Moskowitz-Ooi-Pedersen 2012), and that gold's price response spreads over weeks through slow ETF and allocator flows. A lagged macro trend should therefore predict gold's next few weeks. Signal per decision bar: s_r = -(R_t - R_{t-N}) / sd(N-obs changes in R over the trailing 252 obs); s_d = (ln E_t - ln E_{t-N}) / sd(N-obs log changes of E over the trailing 252 obs). score = mean of the active components. signal_mode is both / real_yield_only / dollar_only; the single-driver modes are the matched controls that show which driver carries information. Both series are read ONLY via supp_as_of / supp_window. The platform keys daily FRED series at 00:00 UTC the day AFTER their date, so a decision at the gold daily close (17:00 New York) uses the previous US day's yields and FX: strictly point-in-time, one day stale. Counts are in published observations, not calendar days (FRED skips holidays). Execution: SPOTMETAL is a session venue, so a decision at a daily bar's close fills at the NEXT session's open (18:00 NY Sunday-Thursday) under next_open_fill (supported). Weekends and the 17:00-18:00 break are closed market, not data gaps. Novelty vs. the corpus: SPOTMETAL has 9 experiments, all intraday session/London-open breakouts, BTC/XAU relative momentum or a PAXG premium. The failed GLD 20/120 dual-horizon confluence used GOLD'S OWN momentum. No prior hypothesis uses real yields or the dollar as an outside signal for gold; a knowledge search for TIPS, DFII10, real yield and copper found no matching strategy. The macro feeds have full history (FRED from 2003), so this is not a short-lookback design. Overnight financing is modelled: long pays fed funds + 2.5%/yr, short receives fed funds - 2.5%/yr (Wednesday x3). Longs therefore carry a real drag in high-rate years (about 0.02%/day in 2023-24), and the edge must clear it. Trade-rate estimate: N=20 and entry_z=0.5 give roughly 12-18 entries/flips per year, about 300 round trips over 23 years, with a median hold of about 2-4 weeks. Per-trade arithmetic: gold's 15-session move has sd ~3.5-4%. A 53-55% directional hit rate with symmetric payoff captures ~0.5-0.7% gross per trade. Subtract financing on longs (~0.15-0.3% over a 15-day hold at 2023-24 rates, much less in 2009-2021) and ~0.015% round-trip spread, giving ~0.35-0.5% net, more than 20x the round-trip cost. Known risk stated upfront: from 2022 gold decoupled from real yields (central-bank buying), so the real-yield component may have pointed the wrong way in 2022-2025. The dollar_only control and the regime attribution will show it.

Quota and diversity: SPOTMETAL has 9 of 4580 experiments (0.2%), while the corpus is 53% Binance USD-M and 78% long-only. This is a long/short trade on a non-crypto, non-Binance instrument with decades of daily history. Its mechanism (outside macro drivers via FRED) is used by no stored hypothesis. L209/L192 favour daily-or-slower rules that target multi-percent moves. L189 favours fewer feeds, and this uses only two long-history macro series already collected, with no new data. L210 (do not use Binance or OKX without a reason) is satisfied. It differs from the failed GLD confluence (gold's own 20/120 momentum + ATR trailing stop) in its signal source (the drivers, not gold's price) and its exit (signal exit, no stop).

Implementation

Long/short XAUUSD.SPOTMETAL on 1-DAY bars driven only by gold's macro drivers. At each daily close: s_r = -(R_t - R_{t-N}) / sd(N-obs changes of the 10y TIPS real yield, US_REAL10Y, over the trailing 252 obs); s_d = (ln E_t - ln E_{t-N}) / sd(N-obs log changes of EUR/USD, US_EURUSD, over the trailing 252 obs); score = mean of the components selected by signal_mode (both / real_yield_only / dollar_only). Enter long when score >= entry_z, short when score <= -entry_z; exit a long when score < exit_z, a short when……Show moreShow less

Long/short XAUUSD.SPOTMETAL on 1-DAY bars driven only by gold's macro drivers. At each daily close: s_r = -(R_t - R_{t-N}) / sd(N-obs changes of the 10y TIPS real yield, US_REAL10Y, over the trailing 252 obs); s_d = (ln E_t - ln E_{t-N}) / sd(N-obs log changes of EUR/USD, US_EURUSD, over the trailing 252 obs); score = mean of the components selected by signal_mode (both / real_yield_only / dollar_only). Enter long when score >= entry_z, short when score <= -entry_z; exit a long when score < exit_z, a short when score > -exit_z (a flip is exit then re-entry on the next decision bar, since the account is netting). Macro data is read only via supp_as_of/supp_window semantics (availability-stamped, one US day stale). If a selected series is stale (> stale_days since last obs) or lacks history, no new entries; an open position is closed after missing_bars_exit consecutive bars without a valid signal. Size = equity x notional_fraction x leverage x 0.97 buffer / price in 0.01 oz (<=100% equity, unlevered). Orders decided at a daily close fill at the next session open (platform next_open_fill).

Implements the hypothesis exactly with the plan's parameter names: tunables entry_z, exit_z, signal_mode, lookback_obs; fixed leverage=1, stale_days=7, vol_window=252, missing_bars_exit=3, notional_fraction=1.0. Two non-plan constants are held fixed: min_vol_obs=60 (the z-score is computed from up to vol_window changes but needs at least 60, so it is defined early in the history and in short synthetic windows; with FRED history from 2003 the full 252-obs window is used for every real backtest bar after warmup) and sizing_buffer=0.97 (keeps the next-open fill inside the 1x initial-margin cap when gold gaps, avoiding margin capping/peak-utilisation failures). Risk control is route (b): signal exit plus a position at most 100% of equity. In 'both' mode both components must be valid; a stale or missing driver blocks entries rather than falling back to one driver, so the modes stay true controls. Overnight financing is charged by the engine; no stop is added because the hypothesis specifies a signal exit only.

Backtest and paper results are hypothetical. Trading involves risk of loss.