Defensive Bucket Comparison: Cash vs Gold vs TLT vs Combinations
Defensive Bucket Comparison: Cash vs Gold vs TLT vs Combinations
Question
Many trend-filter strategies (LRS family, traditional 60/40, classic risk-parity) use long Treasuries (TLT, ZROZ) as the "off" allocation when equity is below its trend filter. The premise: bonds move opposite to equity, so they defend during equity drawdowns.
But 2022 broke that premise. Bonds AND equity fell together during the rate shock.
Question: across a long enough window covering both regimes, what is the actually-best defensive bucket?
Methodology
- Base strategy: Pure SMA200 on SPY → 100% synthetic 3x SPY (UPRO-equivalent) when SPY > SMA200, defensive bucket otherwise
- Window: 2003-01-02 → 2026-05-18 (23.3 years, covers GFC, 2020 COVID, 2022 rate shock)
- Underlying: SPY for the trend signal AND the leveraged sleeve
- Synthetic 3x SPY: (1 + 3 × daily SPY return − 0.91%/252).cumprod()
- Defensive bucket variants tested: combinations of cash, gold (GLD daily returns), and TLT daily returns
- Cost: 1bp per side on position changes
Results
Sorted by Sharpe, best first:
| Defensive bucket | CAGR | MDD | Vol | Sharpe | Calmar |
|---|---|---|---|---|---|
| 100% gold | 24.79% | -58.22% | 36.01% | 0.797 | 0.426 |
| 50% gold + 50% cash | 23.62% | -51.67% | 34.78% | 0.786 | 0.457 |
| 50% gold + 50% TLT | 23.73% | -56.20% | 35.14% | 0.784 | 0.422 |
| 33% gold + 33% TLT + 33% cash | 23.26% | -54.20% | 34.71% | 0.778 | 0.429 |
| 25% gold + 75% cash (LRS default) | 22.91% | -51.56% | 34.47% | 0.773 | 0.444 |
| 25% TLT + 75% cash | 22.21% | -53.07% | 34.43% | 0.757 | 0.419 |
| 50% TLT + 50% cash | 22.25% | -55.88% | 34.64% | 0.755 | 0.398 |
| 100% cash | 22.11% | -52.82% | 34.36% | 0.755 | 0.419 |
| 100% TLT (long Treasuries, ZROZ-proxy) | 22.17% | -61.27% | 35.46% | 0.744 | 0.362 |
Interpretation
Two findings, both robust across regimes:
1. Gold genuinely helps as a defensive bucket
100% gold defensive gives Sharpe 0.797 vs 0.755 for 100% cash. A +0.042 Sharpe improvement, modest but durable across the 23-year window (which includes GFC, COVID, rate shock, and multiple smaller corrections).
The mechanism: gold has a slight positive expected return (~5-7% CAGR over this window) AND a negative-to-zero correlation with equity in stress regimes. Cash earns zero. Adding gold to the defensive bucket gives you the same drawdown protection (or slightly better) AND some return during the "off" periods.
Best allocation: there's no big gain from going past 50% gold. The 50% gold + 50% cash (Sharpe 0.786) is essentially as good as 100% gold (0.797) with slightly lower max drawdown (-52% vs -58%) and better Calmar. The marginal Sharpe improvement from more gold flattens fast.
2. Long Treasuries do NOT work as a defensive bucket
100% TLT defensive: Sharpe 0.744 — worse than 100% cash (0.755) AND worse than any other tested variant. AND it has the worst max drawdown (-61.27%, worse than cash's -52.82%).
This is the smoking-gun finding. Pre-2022 portfolio theory ASSUMED long bonds defend during equity drawdowns because of negative stock-bond correlation. That correlation flipped in 2022 when both rates rose AND equities fell. Long-duration bonds at 27y duration (ZROZ) or 17y duration (TLT) are essentially levered duration plays — they amplify the rate-shock loss when it coincides with equity weakness.
For our purposes: any strategy using TLT or ZROZ as its defensive allocation is taking on a hidden rate-shock exposure that may not show up until it bites hard. The 2022 example is recent enough to be salient; older windows (1994 bond crash, etc.) would tell similar stories.
Combinations
50% gold + 50% TLT (Sharpe 0.784) is essentially as good as 100% gold (0.797). The gold portion does the heavy lifting — TLT contribution to the combination is roughly neutral.
33% gold + 33% TLT + 33% cash (Sharpe 0.778) is slightly worse than 50% gold + 50% cash (0.786). Three-asset combinations don't beat the simpler two-asset ones.
Practical implications
For LRS-style strategies: the "25% gold + 75% cash" default that testfol.io uses on their LRS variants is a reasonable choice. Adding more gold (up to 50%) marginally improves Sharpe without hurting drawdown. Going past 50% gold has diminishing returns and increases drawdown risk somewhat.
For Implication for heavy-leveraged portfolios with ZROZ: the 25% ZROZ allocation is the strategy's weakest link by this analysis. ZROZ is essentially TLT with even longer duration. The data here suggests reallocating some or all of that 25% to gold would have improved historical Sharpe AND drawdown.
Why this matters for sma200.trade content: the conventional "bonds defend equity" advice that's still common in retail portfolio content (60/40, classic risk parity) was a multi-decade artifact that broke in 2022. Future /learn articles on portfolio construction should reflect this. "Gold is the new bond" oversimplifies but isn't far off for the trend-filter defensive-bucket use case.
Caveats
-
Gold's defensive value is partly regime-specific. Gold had a massive bull run 2001-2011 (covered ~half of this window) and a second one 2019-present. A window without those gold bulls would show less defensive benefit. The 1980s gold bear, for example, would have made gold a poor defensive choice.
-
TLT/ZROZ may still defend in true deflationary recession. 2022 was an inflation-driven rate-shock recession (bonds AND equities fell). A 2008-style deflationary recession (bonds rallied as the Fed cut to zero) would show TLT defending. The window we tested includes BOTH regimes, and on net TLT loses; but there are specific regimes where it would win.
-
The 23-year window covers two bond bull markets (2000-2009, then post-2020 brief one) and one big bond bear (2022). A different historical sample could shift the conclusion.
-
Synthetic gold (via GLD post-2004, no data pre-2004 in this test). Pre-GLD periods are excluded. A full pre-2004 backtest would require synthesizing gold from spot data.
Source
Saved log: /tmp/defensive_and_rebal.log.
Inline runner:
import pandas as pd, numpy as np
import sys; sys.path.insert(0, '/Volumes/Mac External/Claudes/trader/src')
from trader.data.yfinance_src import fetch_daily
spy = fetch_daily("SPY", start="2002-08-01")["close"]
gold = fetch_daily("GC=F", start="2002-08-01")["close"]
tlt = fetch_daily("TLT", start="2002-08-01")["close"]
syn3x_spy = (1.0 + 3.0*spy.pct_change().fillna(0) - 0.0091/252).cumprod()
sma200 = (spy > spy.rolling(200).mean()).astype(float).shift(1).fillna(0)
# For each defensive bucket variant, combine: sma200 * ret_3x + (1-sma200) * defensive_ret
# Compute Sharpe, MDD, etc.
Related studies
- LRS family replication + walk-forward — the LRS replication that uses 25% gold + 75% cash default
- a sample heavy-leveraged portfolio (internal-only study) — why ZROZ allocation in the portfolio is the weak link
This is research output, not investment advice. Backtest results do not predict future returns. Specific portfolio compositions discussed here are illustrative test cases, not allocation recommendations. Do your own research and consult a licensed advisor for personalized advice. Full disclaimer →