Backtested research example
🗓 Backtest period: 2018-01-01..2023-01-01
Spec ID: spec-sector-momentum-rotation-etf-top50-1767027941 · Generated: 2026-06-25 09:23 UTC
Cluster: Momentum · Sub Cluster: Sector Etf Relative Strength Rotation
Monthly rotation strategy that ranks liquid U.S. sector ETFs by 3-, 6-, and 12-month relative strength versus SPY. It holds the top 3 names equal-weighted, subject to position caps and liquidity/history requirements.
Sector leadership tends to persist over intermediate horizons due to slow-moving macro themes, institutional allocation flows, earnings revisions, and risk-premium repricing. Comparing each sector ETF to SPY focuses the signal on cross-sectional leadership rather than broad equity beta, while combining 3/6/12-month windows reduces dependence on any single momentum horizon.
The trade is structural rather than purely statistical: asset allocators often rotate exposure across sectors gradually, and ETF vehicles make those flows observable and tradable. Monthly rebalancing is intended to capture persistent leadership while limiting turnover and implementation costs.
[code omitted from public view]
| Param | Value | Notes |
|---|---|---|
| Rule type | SECTOR_MOMENTUM | Sector ETF rotation based on relative strength |
| Lookbacks | 63, 126, 252 trading days | Approx. 3/6/12 months |
| Relative strength | ETF total return / SPY total return | Computed separately per lookback |
| Composite score | Mean z-score across lookbacks | Cross-sectional normalization by horizon |
| Selection count | 3 | Hold top-ranked ETFs |
| Position sizing | Equal weight | Gross leverage 1.0 |
| Max weight per position | 40% | Risk cap; relevant when fewer holdings or rounding constraints occur |
| Rebalance frequency | Monthly | First trading day of month |
| Execution | Next open, 1-day signal lag | Reduces same-close look-ahead risk |
| Universe | Top 50 U.S. ETFs by capitalization, sector ETF filtered | Provider metadata/name matching for sector funds |
| Liquidity filter | 63-day ADV >= 250,000 shares | Share-volume filter |
| History requirement | 252 trading days | Drop if missing any lookback |
| Benchmark | SPY | Used for relative-strength denominator |
| Backtest window | 2018-01-01 to 2023-01-01 | Daily bars |
| Costs | 10 bps transaction cost + proportional-to-spread slippage proxy | Spread proxy uses 20 days |
| # | Concern | Status |
|---|---|---|
| 1 | Signal uses future prices from rebalance date | Mitigated: signal lag of 1 trading day and execution at next open |
| 2 | ETF universe survivorship bias | Needs review: universe is top 50 ETFs and sector-filtered; confirm point-in-time membership/metadata availability |
| 3 | Benchmark return alignment | Mitigated if SPY and ETF lookback windows use identical timestamps and adjusted total-return prices |
| 4 | Missing data creates implicit selection bias | Partly mitigated: require 252 days of history and drop missing lookbacks, but this can favor established funds |
| 5 | Transaction cost realism | Partly mitigated: includes 10 bps cost and spread-linked slippage proxy; ETF open liquidity should still be validated |
Over 2018-01-01 to 2023-01-01, the strategy produced a positive total return of 55.69% with a Sharpe of 0.72 and volatility of 15.51%. The max drawdown was -26.00%, indicating that the rotation improved return over the test but still carried substantial equity-market downside. Trade count was modest at 24, consistent with monthly rebalancing and relatively persistent sector leadership; however, the short sample and concentrated top-3 construction make robustness checks important.
| Metric | Value |
|---|---|
| Total Return | 55.69% |
| Sharpe | 0.72 |
| Sortino | 0.86 |
| Calmar | 0.36 |
| Max Drawdown | -26.00% |
| Volatility | 15.51% |
| Win Rate | 76.92% |
| Profit Factor | 12.71 |
| Total Trades | 24 |
| Symbols | 50 (AGG, BIL, BIV, BND, BNDX, BSV, DIA, EFA, GLD, IEFA, +40 more) |
Backtests are historical simulations for research purposes only. They are not investment advice and do not guarantee future performance.