Case study · Backtest
🗓 Backtest period: 2018-01-01..2023-01-01
Spec ID: spec-macro-gated-time-series-momentum-us-stocks-1783195630 · Generated: 2026-09-25 10:12 UTC
Cluster: Momentum · Sub Cluster: Low-Rate Gated Stock Momentum
Buys up to 20 liquid US stocks with strong absolute momentum when FEDFUNDS is at or below 1%. Exits positions when momentum weakens, price breaks its long-term trend, or the rate gate closes.
Price trends may persist as investors incorporate information gradually. Low policy rates may support risk-taking and equity trends; the FEDFUNDS gate tests whether restricting exposure to that environment improves this momentum strategy. Volatility-adjusted ranking favors stronger returns relative to recent price variability.
[code omitted from public view]
| Param | Value | Notes |
|---|---|---|
| Universe | 100 specified US stock symbols | Large-cap-oriented list; specification selects by capitalization. |
| Backtest window | 2018-01-01..2023-01-01 | Daily bars; rebalance at close. |
| Rate gate | FEDFUNDS <= 1.0 | Latest observation with observation_date <= signal_date; skip new entries if unavailable. |
| Momentum score | 0.4 × return_63d + 0.4 × return_126d + 0.2 × return_252d | Divide by 20-day realized volatility. |
| Trend and entry filters | Close > SMA_200; SMA_50 > SMA_200; positive 63- and 126-day returns | Minimum 252 days of price history. |
| Liquidity | 20-day average dollar volume >= $25,000,000 | Applied to eligible stocks. |
| Holdings and sizing | At most 20; equal weight; 10% position cap | Configured maximum leverage: 4.0; this does not establish that leverage was used. |
| Exits | Negative 63-day return, close < SMA_200, or FEDFUNDS > 1.0 | Existing positions also rebalance by rank. |
| Commissions | $0.0040 per share, minimum $1.00 per order, capped at 1.00% of trade value | Charged per fill by the results module; all metrics are net of them |
| Slippage | 0 bps — not applied | Not an omission — MOC (market-on-close) fills at the auction print the backtest uses |
| Costs not modelled | short borrow fees / rebate, margin financing on leverage, market impact, exchange/regulatory/clearing pass-through fees, taxes | Excluded deliberately, not unknown |
| # | Concern | Status |
|---|---|---|
| 1 | Price lookbacks and moving averages use only information available by the signal close | ✓ Required by the specified rolling rules; confirm in the full implementation. |
| 2 | FEDFUNDS point-in-time selection | ⚠ Observation date is constrained to signal date or earlier; publication-time availability still requires verification. |
| 3 | Same-day signal and execution | ✓ Signals and MOC execution are at the close, not at that day's open. |
| 4 | Historical universe membership | ⚠ Verify capitalization selection and symbol eligibility as of each date to exclude survivorship bias. |
| 5 | Transaction costs | ✓ commissions $0.0040/share (min $1.00/order); slippage 0 bps — not applied |
The commission-net backtest returned 56.53%, with a 0.88 Sharpe ratio and −15.12% maximum drawdown. Win rate was 79.20% and profit factor was 1.75 across 10,661 trades. These aggregate figures do not establish that the FEDFUNDS gate outperformed an ungated momentum variant.
Recomputed here from the run's stored daily returns, because every annualized figure in the table above is derived from the LENGTH of that array (years = n / 252). Only total return and max drawdown do not depend on the row count, so when the recomputed and stored values differ by a common factor, those two are the numbers to trust.
| Check | From the run's own returns | Note |
|---|---|---|
| Daily-return rows | 1,259 | 1.00x the 1,260 trading days in 2018-01-01..2023-01-01 |
| Distinct dates | 1,259 | one row per date |
| Date span | 2018-01-02 .. 2022-12-30 | |
| Sum of daily returns | 56.53% | matches the reported total return |
| Sharpe from these rows | 0.88 | stored 0.88 |
| Volatility from these rows | 12.81% | stored 12.81% |
| Max drawdown from these rows | -15.12% | stored -15.12% |
| Lowest the book stood | -0.20% | low-water mark, in units of starting capital |
| CAGR from these rows | 9.38% | stored 9.38% |
| Metric | Value |
|---|---|
| Total Return | 56.53% |
| Sharpe | 0.88 |
| Sortino | 0.82 |
| Calmar | 0.62 |
| Max Drawdown | -15.12% |
| Volatility | 12.81% |
| Beta vs SPY | 0.27 |
| Win Rate | 79.20% |
| Profit Factor | 1.75 |
| Total Trades | 10661 |
| Symbols | 100 (AAPL, ABBV, ABT, ACN, ACON, ADBE, ADP, AMD, AMGN, AMT, +90 more) |