The complete protocol behind the multi-asset rule engine: data inputs, signal construction, the 14,400-strategy grid search that picked the allocations, the seven walk-forward folds that validated them out-of-sample, the 17 rebalance rules tested for sensitivity, and the crisis decomposition.
Rule-Based, Not Machine-Learned
There's no training loop, no feature selection, no calibrator, no model artifact, no random seed. The strategy is a small set of hand-picked rules that take six daily inputs and produce a daily 3-asset allocation. That makes it trivial to audit, easy to reproduce, and impossible to overfit going forward.
The price of that simplicity is that we can't squeeze the last basis point of in-sample performance — but we showed (via walk-forward refutation) that doing so would have actively hurt out-of-sample results.
Six inputs from two free public sources: SPY, LQD, GLD, and the DXY dollar index from yfinance (adjusted close, total return); T10Y2Y and THREEFYTP10 from FRED. No paid feeds, no proprietary data.
Six independent stress signals (price momentum, yield-curve inversion, realised vol, dollar momentum, gold momentum, term-premium Z-score) are computed point-in-time and OR'd into a single composite stress flag.
Composite OFF → 50% SPY / 30% LQD / 20% Gold (with a +40 ppts SPY dip overlay when SPY is 5-10% off its 21-day high). Composite ON → 10% SPY / 60% LQD / 30% Gold. Weights are capped to [10%, 80%] and renormalised.
Each fold trains its “view” on 5 years of data and tests on the next 3 — then steps forward by 3 years. The seven folds cover 2007-07 to 2026-05, all of it out-of-sample. We tested three variants:
The allocation chosen up-front and applied identically in every fold. Best out-of-sample performer.
The in-sample winner. Marginally higher Sharpe, but worse drawdown and worse on every secondary metric — classic overfit.
Re-runs the grid search at each fold boundary. Loses ~0.16 Sharpe — re-fitting is worse than committing to a robust fixed allocation.
We enumerated 120 normal-regime allocations × 120 defensive-regime allocations in 5%-step grids (subject to summing to 100% and each leg in [10%, 80%]). The production pair sits comfortably inside the top-Sharpe basin and the top-Sortino basin — not at any sharp peak.
Among all 14,400 grid points.
Better tail risk than ~98% of variants.
Return per unit of max drawdown.
We tested daily, weekly, monthly, quarterly, semi-annual, and annual calendar rebalances, drift-only thresholds at 2%, 5%, 10%, 15%, and 20%, plus combined rules. Net of 5 bps trading costs:
| Episode | Strategy | SPY buy & hold | Note |
|---|---|---|---|
| 2008 GFC | +2.7% | −41.8% | 189d-mom + yield-curve signals fired early. |
| 2020 COVID | −0.3% | −20.0% | Realised vol & DXY signals fired in days. |
| 2022 bear | −12.0% | −19.4% | Hardest scenario: stocks & bonds fell together; gold floor helped. |
| 2023–25 rally | +67.5% | +59.3% | Captured most of the upside in the calm regime. |
The live allocation is updated every weekday at 04:30 UTC. The full backtest is on the backtest page.