QuanterLab produced this study: it wasn’t written up afterwards. Registered hypothesis and search record in Appendix A2.

A note on AI. QuanterLab is a quantitative finance research platform, and every number in this study comes from a run on the platform. The hypothesis, the parameter choices, the validation design and the conclusions belong to the author. Runs execute on point-in-time data with walk-forward validation, and each study ships with its methodology and logs, so a reader can reconstruct the result instead of trusting it. I use AI to edit and structure the prose; it does not generate results, produce numbers, or decide what a study concludes.

As seen on Quantocracy
All research
QuanterLab · Research

Steering Wheel, Not Brake - nineteen years of regime investing

Universe · S&P 500 sector SPDRs (nine funds, fixed) (fixed list, nothing to reconstruct)
Method · Comparative: Hold all nine vs The regime turn
Manipulated variable · The regime mapping, and nothing else. Arm A owns the whole menu: all nine original Select Sector SPDRs, equal weight, rebalanced quarterly, always fully invested. Arm B owns the same nine funds but never all at once: they are split into the three books every business-cycle chart on the street already agrees on, a risk-on book of technology, consumer discretionary and financials, a cyclical book of industrials, materials and energy, and a defensive book of staples, utilities and health care, three funds each, equal weight inside the active book.
Step size · 1 year per forward window
In-sample · 2 years before each anchor
Out-of-sample span · 2006-01-03 → 2024-12-31
Compiled · August 21, 2026
Search record · none (size unknown, see §2.3)
Abstract

Regime calls are a steering wheel, not a brake.

We walked two strategies through the same registered one-year windows on the nine original Select Sector SPDRs. One holds all nine, equal weight, quarterly rebalance, always fully invested. The other holds three at a time, routed between a risk-on book of technology, discretionary and financials, a cyclical book of industrials, materials and energy, and a defensive book of staples, utilities and health care, by a committee of all ten QuanterLab regime classifiers voting at shipped defaults. Neither strategy ever holds cash.

The rotation compounded 11.0 percent a year against 9.8 over nineteen paired windows, pooled Sharpe 0.675 against 0.591, ahead in twelve, and on those same nineteen paired windows it cleared SPY's total-return 10.4, fully deployed on every bar. The edge concentrates where regime information lives: 12.8 points in 2008 in the defensive book and 12.7 in 2021, with quiet rent paid in whipsaw years between. Section 5 breaks the pattern down window by window.

Two registered companion studies set the stage. The committee earned the caller's chair by beating the best single classifier, the VIX at bands 16 and 25, by 7.3 to 5.9 percent a year on an identical gated book. And a registered five-ladder grid priced the conventional use of regime calls, stepping exposure down into cash: return tracked exposure almost monotonically, every de-risking setting taxed the result, and none beat staying deployed.

The strategies differ across twenty-six recorded settings, concentration among them, and are compared as complete designs; the itemized register sits in Appendix A2. The nearest reference for concentration alone, a momentum-picked three of the same nine funds without regime routing, compounded 9.3 percent under the dial grid's twenty-window protocol.

Every component here ships in QuanterLab today: the ten classifiers, the voting ensemble, the Strategy Router, the named sector books, and the walk-forward machinery that registered and scored all of it. This paper is that machinery, demonstrated.

1  Methodology

Both strategies walk the same nineteen one-year out-of-sample windows anchored each January from 2006, each window's hypothesis registered and hashed before it is scored. The control holds all nine Select Sector SPDRs at equal weight, rebalanced quarterly. The rotation runs three fixed lanes, one per book, behind QuanterLab's Strategy Router: each day the committee's label picks the active book, acted one bar after the close that produced it, with the router's shipped hysteresis and position-aware switch costs. The committee is the platform's regime ensemble node seating all ten classifiers at shipped defaults, majority vote; the four fitted members refit monthly on expanding windows that end at each refit date. Books are a fixed named preset, three funds each, equal weight inside the active book.

Returns are total returns with distributions credited on ex-dates, against SPY rebuilt to total return; every trade pays ten basis points per one-way traded dollar. Prices come from the platform's market-data layer, clipped at each window's anchor so nothing later than the anchor reaches any estimate. The paired comparison, window statistics, bootstrap and figures are produced by the platform's compiler from the frozen per-window records; Appendix A2 prints the registration audit, one row per window with registration and run timestamps. The two companion results quoted in Sections 6 and 7 come from their own frozen records under the same discipline: the committee walk pairs twenty windows, and the dial grid compounds twenty windows per ladder under its registered protocol.

2  Results

2.1  Headline

Hold all nine, pooled Sharpe
0.59
4763 OOS bars
The regime turn, pooled Sharpe
0.68
4763 OOS bars
P(Hold all nine beats The regime turn)
28.4%
4762 paired bars · CAGR gap (Hold all nine − The regime turn) -1.3 pp
Out-of-sample equity: normalised growth (1.00x = break even)0.01x3.99x7.97x2006200920122015201820212024
Figure 1. Both arms stitched through the identical windows,  Hold all nine (+463.4%),  The regime turn (+614.0%), benchmark grey (+517.7%, total return, its own dividends reinvested, pooled Sharpe 0.594). Dotted verticals mark the step boundaries; the dashed horizontal is break-even. These figures compound each arm's own stitched daily series; the pooled statistics in the text inner-join both arms' trading days, one session apart, both are printed from the frozen record.
The same walk, measured five ways0.06x3.46x6.85x
Figure 2. The measurement ladder: Hold all nine's whole walk, chained five ways.  price only (+282.5%),  with dividends (+475.5%),  net of costs (+463.4%), against the benchmark measured both ways:  price only (+331.1%),  total return (+517.7%). The distance between the two green pairs is the dividends collected; the sliver between the last two greens is the cost bill; the distance between the two greys is what a price-only chart hides about the index. Every other figure on this page uses the deepest rung on each side, net of costs against the total-return benchmark.
Out-of-sample equity: normalised growth (1.00x = break even)0.70x2.22x3.73x201620172018201920202021202220232024
Figure 3. The same walk, re-based to 1.00x at the first window starting in 2016, 9 of the 19 windows above.  Hold all nine (+192.7%),  The regime turn (+239.1%), benchmark grey (+237.8%, total return). This is a subset of Figure 1, not a correction to it. The era boundary here is pinned by the author at 2016, a break this study's own record shows, not a chart-scaling choice, and the era rows below put a number on the two periods it separates. The full record is what the study claims.

2.2  Per-step results

Table 1. One row per step, raw out-of-sample results.
#Out-of-sample window Hold all nine SR The regime turn SR
1 2006-01-03 → 2006-12-29 1.37 1.22
2 2007-01-03 → 2007-12-31 0.69 0.31
3 2008-01-02 → 2008-12-31 -0.93 -0.73
4 2009-01-02 → 2009-12-31 0.93 0.86
5 2010-01-04 → 2010-12-31 0.83 0.97
6 2011-01-03 → 2011-12-30 0.22 -0.04
7 2012-01-03 → 2012-12-31 1.09 0.93
8 2013-01-02 → 2013-12-31 2.33 2.36
9 2014-01-02 → 2014-12-31 1.30 1.21
10 2015-01-02 → 2015-12-31 -0.02 -0.11
11 2016-01-04 → 2016-12-30 1.22 1.20
12 2017-01-03 → 2017-12-29 2.75 2.73
13 2018-01-02 → 2018-12-31 -0.39 0.12
14 2019-01-02 → 2019-12-31 2.18 1.66
15 2020-01-02 → 2020-12-31 0.47 0.13
16 2021-01-04 → 2021-12-31 2.21 2.49
17 2022-01-03 → 2022-12-30 -0.17 -0.20
18 2023-01-03 → 2023-12-29 1.20 0.92
19 2024-01-02 → 2024-12-31 1.46 1.47
Out-of-sample equity: normalised growth (1.00x = break even)0.50x0.93x1.37xbars into the window →
Figure 4. Hold all nine: every step's out-of-sample curve overlaid, each rebased to 1× at its own start. Read alongside Table 1: consistent shape across steps is the walk-forward's evidence; a single lucky leg is not.
Out-of-sample equity: normalised growth (1.00x = break even)0.63x1.06x1.49xbars into the window →
Figure 5. The regime turn: the same windows, the other arm. Compare shape-for-shape with the previous figure: the two arms trade the identical out-of-sample legs.

2.3  Search accounting

No search record exists for this design. It was not promoted from a recorded evolving search, so the number of alternatives tried before it, on paper, in another tool, or in the author's head, is unknown. Unknown is a different fact from one: a study with no lineage is not a strategy with one trial, it is a strategy with an unrecorded number of them. Accordingly no count of alternatives tried is claimed, and nothing in this paper is corrected for a search that was never recorded; the number that stands is the raw out-of-sample result plus this disclosure. The registered per-step record below (§4) still guarantees each window's hypothesis was hashed and registered before that window was scored.

2.4  The comparison

Both arms trade the same registered windows, so their returns can be PAIRED: inside each window the two return series are inner-joined date by date and the difference rHold all nine − rThe regime turn is the object under test. Because this is ONE pre-declared contrast, frozen at registration before any window was scored, the paired statistic needs no multiple-testing deflation, and the per-arm pooled numbers above are likewise uncorrected, this design has no recorded search to correct against (§2.3). The paired contrast is the one statistic here that a missing search record does not weaken: it was declared in advance, and it is scored on the difference rather than on either arm's level.

In the table: Arm A = Hold all nine · Arm B = The regime turn.

Table 2. Window-by-window paired comparison. Δ is the growth gap (Arm A − Arm B) over the window's paired dates.
#WindowPaired bars Arm AArm B ΔLeader
1 2006-01-04 → 2006-12-29 250 +14.0% +16.2% -2.2 pp Arm B
2 2007-01-04 → 2007-12-31 250 +9.8% +3.4% +6.5 pp Arm A
3 2008-01-03 → 2008-12-31 252 -34.2% -21.4% -12.8 pp Arm B
4 2009-01-05 → 2009-12-31 251 +23.7% +15.7% +8.0 pp Arm A
5 2010-01-05 → 2010-12-31 251 +14.1% +20.4% -6.3 pp Arm B
6 2011-01-04 → 2011-12-30 251 +2.4% -3.5% +5.9 pp Arm A
7 2012-01-04 → 2012-12-31 249 +13.2% +13.6% -0.4 pp Arm B
8 2013-01-03 → 2013-12-31 251 +27.7% +31.0% -3.3 pp Arm B
9 2014-01-03 → 2014-12-31 251 +14.5% +14.8% -0.3 pp Arm B
10 2015-01-05 → 2015-12-31 251 -1.4% -3.0% +1.5 pp Arm A
11 2016-01-05 → 2016-12-30 251 +15.7% +15.9% -0.2 pp Arm B
12 2017-01-04 → 2017-12-29 250 +18.3% +25.2% -6.9 pp Arm B
13 2018-01-03 → 2018-12-31 250 -6.8% +0.6% -7.4 pp Arm B
14 2019-01-03 → 2019-12-31 251 +27.6% +23.1% +4.5 pp Arm A
15 2020-01-03 → 2020-12-31 252 +10.7% -1.0% +11.7 pp Arm A
16 2021-01-05 → 2021-12-31 251 +30.7% +43.4% -12.7 pp Arm B
17 2022-01-04 → 2022-12-30 250 -5.5% -5.3% -0.2 pp Arm B
18 2023-01-04 → 2023-12-29 249 +14.8% +13.8% +0.9 pp Arm A
19 2024-01-03 → 2024-12-31 251 +15.7% +23.3% -7.6 pp Arm B

Paired Sharpe of the difference track: -0.12 · block bootstrap (2000 paths, block 10, seed 1234): P(Hold all nine beats The regime turn) = 28.4%.

Window win-rate. Hold all nine led 7 of 19 windows (36.8%), The regime turn led 12 , and the mean window gap of -1.12 pp points the same way. Widest single window: 2008 at -12.8 pp.

Table 3. The same comparison split at 2016. Pooling the whole walk into one row hides which side of the split the difference came from.
PeriodWindows Hold all nineThe regime turn Mean gapHold all nine led
All windows 19 +10.79% +11.91% -1.12 pp 7/19
Before 2016 10 +8.38% +8.72% -0.34 pp 4/10
2016 onward 9 +13.47% +15.44% -1.98 pp 3/9
All windowsn=19 · Hold all nine led 7+10.8%+11.9%-1.12 ppBefore 2016n=10 · Hold all nine led 4+8.4%+8.7%-0.34 pp2016 onwardn=9 · Hold all nine led 3+13.5%+15.4%-1.98 ppgap
Figure A1, mean window return per period. Hold all nine above, The regime turn below, with the gap at right. The pooled bar and the post-2016 bar are the same comparison over different periods.

3  The circuit

The strategy is a circuit of platform primitives, frozen when the study is registered. Below is the circuit as wired on the canvas, the objective it encodes and how the search runs through it, followed by the mathematics each primitive actually computes, the same formulas the execution engine runs. The complete parameterisation is preserved in the study ledger (Appendix A).

The hypothesis under test

A COMPARATIVE study: Hold all nine vs The regime turn, walked on the same registered out-of-sample windows. Hold all nine: Sector_spdrs, selected by statistical / factor criteria, rebalanced quarterly across the selected basket, and run out-of-sample from the anchor: whatever the design estimates from history is re-estimated at each anchor from pre-anchor data only, and the walk advances through registered out-of-sample windows; its disposition is the realized forward path versus the benchmark. The regime turn: A regime-routed strategy-of-strategies allocating one book across 3 lanes, (A) sector_spdrs · a re-selected ranked basket; (B) sector_spdrs · a re-selected ranked basket; (C) sector_spdrs · a re-selected ranked basket, routed by the wired regime classifiers, forward-tested out-of-sample from the anchor. The arms differ in: 26 places: Top-N #1, n: 9 → 3; Universe #1, sector_book: all → risk_on; HMM (returns), added in The regime turn; SPY DMA Regime, added in The regime turn; Universe, added in The regime turn; Universe, added in The regime turn; HMM (vol), added in The regime turn; Breadth Regime, added in The regime turn; Price Loader, added in The regime turn; Price Loader, added in The regime turn; Correlation Regime, added in The regime turn; GMM Regime, added in The regime turn; Momentum 12-1, added in The regime turn; Momentum 12-1, added in The regime turn; Transaction Cost, added in The regime turn; Transaction Cost, added in The regime turn; GARCH Vol Regime, added in The regime turn; Turbulence Regime, added in The regime turn; Top-N, added in The regime turn; Top-N, added in The regime turn; Macro / Rates Regime, added in The regime turn; VIX Regime, added in The regime turn; Portfolio Forward Test, added in The regime turn; Portfolio Forward Test, added in The regime turn; Regime Ensemble, added in The regime turn; Strategy Router, added in The regime turn. NOTE: with more than one difference, an out-of-sample gap cannot be attributed to any single change. The contrast under test: whether Hold all nine generates better risk-adjusted returns than The regime turn over the identical out-of-sample windows.

The frozen circuit, data flows left to rightuniverse: click for detailsuniverseprice loader: click for detailsprice loaderfilter mom 12 1: click for detailsfilter mom 12 1top n: click for detailstop nportfolio backtest: click for detailsportfolio backtesttransaction cost: click for detailstransaction costportfolio forward autopsy: click for detailsportfolio forward autopsyuniverse: click for detailsuniverseprice loader: click for detailsprice loaderfilter mom 12 1: click for detailsfilter mom 12 1top n: click for detailstop nportfolio backtest: click for detailsportfolio backtesttransaction cost: click for detailstransaction costuniverse: click for detailsuniverseprice loader: click for detailsprice loaderfilter mom 12 1: click for detailsfilter mom 12 1top n: click for detailstop nportfolio backtest: click for detailsportfolio backtesttransaction cost: click for detailstransaction costuniverse: click for detailsuniverseprice loader: click for detailsprice loaderfilter mom 12 1: click for detailsfilter mom 12 1top n: click for detailstop nportfolio backtest: click for detailsportfolio backtesttransaction cost: click for detailstransaction coststrategy router: click for detailsstrategy routerportfolio forward autopsy: click for detailsportfolio forward autopsyregime ensemble: click for detailsregime ensemblehmm returns: click for detailshmm returnshmm vol: click for detailshmm volregime gmm: click for detailsregime gmmgarch regime: click for detailsgarch regimevix regime: click for detailsvix regimespy dma regime: click for detailsspy dma regimeregime breadth: click for detailsregime breadthregime correlation: click for detailsregime correlationregime turbulence: click for detailsregime turbulenceregime macro: click for detailsregime macroHold all nineThe regime turnshared
Figure 6. The frozen circuit, every node a primitive, every wire a typed data-flow; the two arms are colour-coded (Hold all nine green, The regime turn blue, shared feeds neutral). Each box is one step of the strategy; data flows along the wires left to right, and no box can see data dated later than the box feeding it. The whole diagram was frozen when the hypothesis was registered. Click any node to open what that step ran with and what it produced.

Envelopes show counts, ratios, dates, and the parameters the author chose. Full price and per-name data series are not republished: the underlying market data is licensed to QuanterLab. Point figures quoted in the prose, a named holding's return over a stated span, are summary facts derived from public market prices, not redistributed series.

What each part does
Universe, The starting set of tickers, a fixed list of nine sector funds unchanged since December 1998; no membership reconstruction applies.
Hmm Returns, Hidden Markov model on returns, let the data find the regimes.
Spy Dma Regime, Price vs the 200-day average, the classic bull/bear line.
Hmm Vol, Hidden Markov model on volatility, regimes defined by turbulence.
Regime Breadth, Market breadth, how many names are actually participating?
Price Loader, Bulk OHLCV fetch for the whole universe, point-in-time, no future bars.
Regime Gmm, Gaussian mixture, cluster days into regimes, count chosen by BIC.
Regime Correlation, Average pairwise correlation, diversification breaks in crises.
Filter Mom 12 1, Classic 12–1 momentum, last year's return, skipping the most recent month.
Transaction Cost, Charge for trading, slippage + commission on every turn.
Garch Regime, GARCH(1,1), model volatility clustering, classify by its level.
Regime Turbulence, Financial turbulence, today's returns vs their normal shape.
Top N, Keep the best N, rank, then cut.
Vix Regime, VIX thresholds, the simplest fear gauge.
Regime Macro, The macro backdrop, credit and rates, not equity vol.
Portfolio Backtest, Replay the portfolio forward, rebalanced, point-in-time, with costs.
Portfolio Forward Autopsy, The post-mortem, where the forward test’s return actually came from.
Regime Ensemble, Combine several classifiers into one majority verdict.

The objective and the search

Hold all nine

Universesector_spdrs index constituents.
Selectionmetric across Momentum (12-1) → highest 9 kept by Momentum (12-1).
Validation & out-of-sampleportfolio forward test (buy-and-hold book) (1y horizon from the anchor, quarterly rebalance); overlays: Transaction Cost.

The regime turn

Universe3 strategy lanes over sector_spdrs (see Strategy lanes).
Selectionmetric across Momentum (12-1), Momentum (12-1), Momentum (12-1) → highest 3 kept by Momentum (12-1).
Validation & out-of-sampleportfolio forward test (buy-and-hold book) (1y horizon from the anchor, quarterly rebalance); regime-routed allocation across the wired strategies; overlays: Transaction Cost.
Regime layermacro regime detected via GARCH(1,1) conditional vol percentile, HMM on multi-window returns, HMM on realized vol, % of names above their 200-DMA, average cross-sectional correlation, Gaussian-mixture vol/return detector, macro credit + rates backdrop, Kritzman financial turbulence, SPY 200-DMA trend, live VIX threshold; combined via majority vote.
Router lanes(A) sector_spdrs · a re-selected ranked basket; (B) sector_spdrs · a re-selected ranked basket; (C) sector_spdrs · a re-selected ranked basket.

What differs between the arms, 26 differences; more than one thing changes at once:

  • paramTop-N #1, n: 9 → 3
  • paramUniverse #1, sector_book: all → risk_on
  • addedHMM (returns), added in The regime turn
  • and 23 more; the complete itemized list is preserved verbatim in the registration record, Appendix A2.

Reader's note. With 26 simultaneous differences, an out-of-sample gap between the arms cannot be attributed to any single change, the arms are compared as whole packages, and any causal reading of one ingredient is unsupported by this design.

Cost elements are wired into the circuit, the realised drag is reported per step in Appendix B.

Show the mathematics, 18 primitives, formulas and parity notes

3.1  Universe

The starting set of tickers, resolved point-in-time from the index change-log, so names delisted or removed later still compete on the dates they traded.

Before any math, you need a list of stocks. An index preset (S&P 500, Nasdaq-100, Dow 30) is reconstructed as it stood ON your anchor date by replaying the historical add/drop change-log backwards, so a 2018 backtest sees the 2018 membership, not today's winners.

Point-in-time membership

Start from today's constituents and un-apply every membership change after the anchor t:

\mathcal{U}(t) = \mathcal{U}_{\text{now}} \;\ominus\; \{\text{adds after } t\} \;\oplus\; \{\text{drops after } t\}
Constituents resolved from the index change-log; the same point-in-time set the factor + screening modules use.

3.2  Price Loader

Bulk OHLCV fetch for the whole universe, point-in-time, no future bars.

Momentum, volatility, trend, every price-based metric needs history. This loads open/high/low/close/volume for all names in parallel, clipped so nothing after the anchor can leak in. The lookback window is derived automatically from the deepest metric you wired.

The window is derived, not guessed

It loads exactly enough history for the hungriest downstream metric plus a warm-up buffer:

W = \max_k(\text{lookback}_k) + \text{buffer}, \qquad \text{bars} \le \text{anchor } t

3.3  Filter Mom 12 1

Classic 12–1 momentum, last year's return, skipping the most recent month.

The workhorse of cross-sectional momentum. Measure the return from 12 months ago to 1 month ago; the 1-month skip avoids the well-known short-term reversal effect that would otherwise contaminate the signal.

Return with a one-month gap
m_{12\text{–}1} = \frac{P_{t-21}}{P_{t-252}} - 1
252 ≈ one trading year, 21 ≈ one trading month.

3.4  Top N

Keep the best N, rank, then cut.

Sort the survivors by the Composite Σ (or, if none is wired, the last metric in the chain) and keep the top (or bottom) N. The final narrowing from a scored list to a committed basket.

Order statistic cut
\text{Top-}N = \{\, i : \operatorname{rank}(\text{score}_i) \le N \,\}
"Keep highest" for momentum; "keep lowest" for e.g. Hurst (mean reversion).

3.5  Portfolio Backtest

Replay the portfolio forward, rebalanced, point-in-time, with costs.

Holds the basket and rebalances on schedule, re-selecting and re-optimizing point-in-time at each rebalance (so it only ever uses information available then), and reports the equity curve, Sharpe, drawdown and trade stats, optionally net of cost and risk overlays.

Compounded equity
E_t = E_{t-1}\big(1 + \mathbf w_{t}^{\top}\mathbf r_t - \text{costs}_t\big)
Drawdown
\text{DD}_t = \frac{E_t}{\max_{\tau\le t}E_\tau} - 1, \qquad \text{MaxDD} = \min_t \text{DD}_t
Financing a levered book
\text{charge}_t \;=\; \text{loan}_t \cdot \frac{\text{spread}}{252}, \qquad \text{loan}_t = \begin{cases}\max(0,\,-\text{cash}_t) & \text{institutional (netted)}\\ \max(0,\,\text{long MV}_t - E_t) & \text{retail (no netting)}\end{cases}
A levered long/short book (the β-neutral Long/Short Select) borrows its excess notional. WHO you are decides the loan: a prime broker nets short-sale proceeds against the margin loan, a fully-netted BAB book carries almost none, while a retail margin account cannot net, so the same book borrows the long leg’s excess over equity. Profiles: institutional = 50 bps spread + 25 bps GC short borrow; retail = 350 bps + 150 bps (the BEST retail tier, so any verdict is conservative); custom = your own knobs, spread on negative cash. Charged daily, reported as financing_drag_pct, never silent.

3.6  Transaction Cost

Charge for trading, slippage + commission on every turn.

Real trading isn't free. This deducts a cost proportional to how much you trade (turnover), in basis points, so the backtest reflects net, not gross, performance.

Cost per rebalance
\text{cost}_t = \frac{\text{bps}}{10{,}000}\;\times\;\text{turnover}_t, \qquad \text{turnover}_t = \tfrac12\sum_i \lvert w_{i,t}-w_{i,t^-}\rvert

3.7  Portfolio Forward Autopsy

The post-mortem, where the forward test’s return actually came from.

Runs after the Portfolio Forward Test and dissects its realized path: per-rebalance contributions, winners and losers, exposure and cash periods, and how the realized route compares to what the risk cones projected. It computes nothing new about the future, it explains the past the book just lived.

Reading it

Depth I–IV: headline attribution, per-segment breakdown, per-name contributions, and the calibration ledger (projected cone vs realized, segment by segment). In a study, this is the node that fills the appendices.

3.8  Regime Ensemble

Combine several classifiers into one majority verdict.

Blends multiple regime classifiers into a single per-bar label by majority (equal vote) or explicit weights. Equal votes stay equal, a 3-way tie resolves to the middle severity, never to whichever was wired first.

Weighted severity vote
\text{regime}_t = \operatorname{round}\!\Big(\frac{\sum_m \omega_m\,\text{sev}(c_{m,t})}{\sum_m \omega_m}\Big)
sev maps calm/choppy/stressed → 0/1/2.

3.9  Hmm Returns

Hidden Markov model on returns, let the data find the regimes.

A 3-state Gaussian HMM treats the regime as a hidden state that emits returns, learning the states and the transitions between them from multi-horizon returns. States are then labelled calm / choppy / stressed by their mean-vs-volatility profile.

Gaussian emissions + Markov transitions
r_t \mid (z_t=k) \sim \mathcal N(\mu_k,\,\sigma_k^2), \qquad P(z_t=j\mid z_{t-1}=i)=A_{ij}
Diagonal covariance, sticky transitions, 3 restarts. Label by z(μ)−z(σ).
Real hmmlearn fit; graceful stub if the library is absent.

3.10  Hmm Vol

Hidden Markov model on volatility, regimes defined by turbulence.

Same HMM machinery, but the observed features are realized volatilities (short, long) and the VIX term-structure ratio. States are sorted by volatility: lowest = calm, highest = stressed.

Vol-feature emissions
\mathbf v_t = \big(\sigma_t^{\text{short}},\,\sigma_t^{\text{long}},\,\tfrac{\text{VIX}}{\text{VIX3M}}\big), \quad \mathbf v_t\mid(z_t=k)\sim\mathcal N(\boldsymbol\mu_k,\boldsymbol\Sigma_k)
States vol-sorted: lowest σ = calm.
Real hmmlearn fit; graceful stub if absent.

3.11  Regime Gmm

Gaussian mixture, cluster days into regimes, count chosen by BIC.

Treats each day as a point in (return, volatility) space and fits a Gaussian mixture; the Bayesian Information Criterion picks how many regimes the data actually support. States are vol-sorted and short runs de-noised. The rigorous detector the Per-Regime and Regression optimizers were designed around.

Mixture density + model selection
p(\mathbf x) = \sum_{k=1}^{K}\pi_k\,\mathcal N(\mathbf x\mid\boldsymbol\mu_k,\boldsymbol\Sigma_k), \qquad K^* = \arg\min_K \text{BIC}(K)
Features x = (log-return, realized-vol). K ∈ {2,3,4} or auto.

3.12  Garch Regime

GARCH(1,1), model volatility clustering, classify by its level.

Volatility comes in bursts. A GARCH(1,1) model captures that clustering and produces a conditional volatility each day; the regime is set by where today's conditional vol sits in its own history, adaptive per asset (crypto's "calm" is noisier than the S&P's).

GARCH(1,1) conditional variance
\sigma_t^2 = \omega + \alpha\,\varepsilon_{t-1}^2 + \beta\,\sigma_{t-1}^2
Classify σ_t against its historical percentile band.
Real statsmodels fit; graceful stub if absent.

3.13  Vix Regime

VIX thresholds, the simplest fear gauge.

Reads the VIX (or a wired series) and classifies by two cut-offs: low VIX is calm, high VIX is stressed, in between is choppy. Confidence scales with how far past the boundary you are.

Threshold rule
\text{regime} = \begin{cases}\text{calm} & \text{VIX} < c\\[2pt]\text{stressed} & \text{VIX} \ge s\\[2pt]\text{choppy} & \text{otherwise}\end{cases}
Defaults c = 16, s = 25.

3.14  Spy Dma Regime

Price vs the 200-day average, the classic bull/bear line.

Looks at the benchmark relative to its 200-day moving average and the slope of that average. Above and rising is calm (bull); below and falling is stressed (bear); mixed is choppy.

Trend rule
P > \text{SMA}_{200}\ \wedge\ \tfrac{d}{dt}\text{SMA}_{200} > 0 \;\Rightarrow\; \text{calm}
Slope measured over the last ~20 bars of the SMA.

3.15  Regime Breadth

Market breadth, how many names are actually participating?

The fraction of stocks above their own moving average. Broad participation is healthy (calm); a rally carried by a handful of names with most below their average is fragile (stressed).

Fraction above the moving average
\text{breadth}_t = \frac{1}{N}\sum_{i=1}^{N}\mathbf 1\!\big[P_{i,t} > \text{MA}_i\big]
Low breadth → stressed.

3.16  Regime Correlation

Average pairwise correlation, diversification breaks in crises.

When markets panic, everything moves together. The mean pairwise correlation across the universe spikes in stress and relaxes in calm, a direct read on whether diversification is currently working.

Mean pairwise correlation
\bar\rho_t = \frac{2}{N(N-1)}\sum_{i<j}\rho_{ij}(t)
High ρ̄ → stressed (correlations converge).

3.17  Regime Turbulence

Financial turbulence, today's returns vs their normal shape.

Kritzman–Li turbulence: the Mahalanobis distance of today's cross-section of returns from its historical mean, accounting for the normal correlation structure. Unusual magnitudes AND unusual correlations both light it up.

Mahalanobis distance
d_t = \sqrt{(\mathbf r_t - \boldsymbol\mu)^{\top}\,\boldsymbol\Sigma^{-1}\,(\mathbf r_t - \boldsymbol\mu)}
High d_t → turbulent / stressed.

3.18  Regime Macro

The macro backdrop, credit and rates, not equity vol.

A different lens: credit stress (high-yield vs investment-grade) and the rates curve (long vs short Treasuries). Widening credit and a flattening curve signal a risk-off macro regime, blended into a stress percentile.

Credit + rates stress blend
\text{stress} = z\!\Big(\tfrac{\text{HYG}}{\text{LQD}}\Big)_{\downarrow} \;+\; z\big(\text{IEF}-\text{SHY slope}\big)_{\downarrow}
ETF proxies, anchor-clipped (no FRED key in-container). Percentile → calm/choppy/stressed.

4  Projection calibration, pooled across the walk

Every rebalance carried a Monte Carlo cone and a 95% VaR estimated before the segment it is scored against. Two questions, pooled over the whole study: did realized outcomes land inside the band as often as the band claims, and were VaR breaches as frequent as 5%?

This section is produced by the forward tester itself: every portfolio backtest fits the cone and the VaR estimate at each rebalance and scores them against the segment that followed. It does not require, and this circuit does not contain, a Monte Carlo primitive; that primitive is a separate, standalone analysis.

Arm A69 of 76 inside the 90% band-33%+1%+35%in band2006200720082009201020112012201320142015201620172018201920202021202220232024
Figure A2, projected range versus what occurred, at each of 76 scored rebalance segments. The final rebalance of each step has no following segment to score, the ledger marks those rows “no segment follows this rebalance”, which is why this count sits below the raw rebalance totals in the table beneath. Each vertical bar is that rebalance's P5–P95 Monte Carlo cone with the median ticked; the dot is the realized return of the segment that followed. Filled green = the outcome landed inside its own cone; red = it did not. The strip beneath repeats that as one mark per rebalance, so a run of misses in one period is visible as a run. Every cone was fitted only on data prior to the segment it is scored against.
Arm Steps Rebalances In band Coverage Expected VaR days Breach rate Expected
Hold all nine 19 90 69 / 76 90.8% ±3.32 90.0% 4705 5.61% ±0.336 5.0%

± values are binomial standard errors on the estimate. A coverage figure below the expected band means the projection was over-confident; a breach rate above 5% means the same of the risk model. Both forecasts used only data prior to the segment scored.

5  Discussion

5.1  Findings

Rotation beat holding, and beat the index, at full deployment: 11.0 percent a year against 9.8 over the paired windows, pooled Sharpe 0.675 against 0.591, against SPY's 10.4 with dividends on the same nineteen windows, without a single bar out of the market.

The edge has a signature: it concentrates at turning points. Hold-all posts the higher Sharpe in thirteen of nineteen individual windows, while the rotation takes the compounded race on the strength of a few decisive years, 12.8 points in 2008, 12.7 in 2021, 7.4 in 2018, 7.6 in 2024, against 11.7 returned in the 2020 whipsaw. That profile, quietly close most years and decisively ahead when the market changes character, is what regime information buys, and it is why compounding rewards it.

The committee earned its chair in a registered companion walk: 7.3 against 5.9 percent a year over the best single classifier on an identical gated book, ahead in fourteen of twenty windows, with a 4.1 percent bootstrap probability for the single voice. Ten disagreeing opinions beat the best one opinion.

The dial grid closed the alternative: five exposure ladders, registered up front, and compounded return tracked mean exposure almost monotonically, 5.6 percent a year at 0.62 average exposure up to 9.3 ungated. The all-out ladder produced the record's sharpest single exhibit, a 2008 of exactly zero while the market lost 36, and still lost the twenty-year race to staying deployed.

One sentence carries the record: regime labels price risk and direction, not future return, so the winning use is re-aiming a fully deployed book. Steering cleared the index. Braking never did.

5.2  Interpretation

The arc behind this paper is four registered studies long, all on the record. The published Regime Atlas measured all ten classifiers over twenty years: their labels forecast volatility and drawdown, and their disagreements cluster exactly at turning points. The committee walk then settled who calls the regime, ten voices over the best single voice, because a lone gauge sits permanently half-worried while a majority stays deployed in ordinary weather and turns faster in genuine trouble. The dial grid priced the instinctive use of such calls, de-risking into cash, and found a tax at every setting. What remained was the design this paper registers: keep the deployment, spend the information on direction. The mechanism favors it structurally. A de-risked book must be right twice, on the exit and on the re-entry, and re-entry is what volatility-shaped signals systematically miss. A rotated book is never out, so it needs only the direction of its tilt to be right more often than not, and across nineteen windows of sector prints it was.

Everything above runs on shipped QuanterLab machinery. The ten regime classifiers, from hidden Markov models and GARCH to breadth, correlation and turbulence, are canvas nodes at the same defaults measured here. The voting ensemble seats all ten. The Strategy Router allocates across the three books per bar with position-aware switch costs and hysteresis. The sector books are a fixed, named preset, the street's business-cycle convention as it stands. And the registered walk-forward pipeline, hypotheses registered before each window is scored, twenty-six differences itemized at registration, is the platform's standard workflow, the same one a user gets for their own designs. Wire the same canvas, walk your own windows, and the paper you are reading is the workflow you would be using.

No search record exists for this study: the design was not promoted from a recorded evolving search, so the number of alternatives tried before it is UNKNOWN, which is a different fact from one. No count of alternatives tried is claimed, and nothing is corrected for a search that was never recorded; the number that stands is the raw out-of-sample result plus this disclosure. The out-of-sample windows are historical.

6  The committee earned its chair first

2006200820102012201420162018202020222024
 Best single: VIX bands ·  Committee of ten, per one-year window, percent. Paired stats over 20 windows: 7.3% against 5.9% a year, Sharpe 0.610 against 0.523, Committee of ten ahead in 14. Rendered from the companion study's frozen record.

7  The dial, priced at five settings

Five ladders, one machine. The committee-gated rotation with only the calm/choppy/stressed exposures varying, per the registered grid (registration ada7819c; five ladders, all published, none withheld). The rows below the rule are the ungated momentum rotation and SPY total return on the same windows. Numbers here compound twenty grid windows under the grid's own collection protocol, which is why the house ladder prints 7.13 in this table and 7.3 in Section 6 (twenty paired walk windows), and why Sharpe here is a mean of per-window Sharpes while Section 6 quotes pooled daily Sharpe.
SettingCAGRWorst window Worst drawdownMean Sharpe Mean exposureWindows > house
100/70/40 house 7.13 -12.5 -18.9 0.705 0.775 0
100/100/0 halt 6.96 -10.3 -19.8 0.658 0.725 8
100/50/0 aggressive 5.56 -10.0 -15.6 0.588 0.625 5
100/85/60 gentle 7.93 -18.4 -26.9 0.755 0.86 13
90/70/50 never-full 6.93 -15.5 -22.8 0.738 0.75 9
Ungated momentum rotation 9.32 -29.5
SPY total return 10.45 -36.2

5.3  Limitations

Scope is sector-level: nine funds, one machine, one committee, and the conclusions claim nothing about stock-level books, other universes, or other decades. The two strategies differ across twenty-six recorded settings, itemized in Appendix A2, with concentration, nine names against three, the largest; no arm isolating a single ingredient was run. The rotation's edge is a 72 percent bootstrap lean. A twentieth window, 2025, sits outside the paired statistics under the compiler's daily-alignment rule and ran against the rotation; with it, the twenty-cell compounding reads 10.4 against 9.8. The projection-calibration section covers the hold-all arm only, as the router emits no per-rebalance cones. The committee runs all ten members at shipped defaults, including the macro classifier the Atlas measured weakest, since the seated committee is fixed at registration. Costs are ten basis points per one-way traded dollar; router switch costs and hysteresis are shipped defaults. A third chartered experiment, regime-triggered discretionary entries, was not run. Results are simulated, and nothing here is investment advice.

References

QuanterLab reference architecture
  1. Gelman, A., & Loken, E. (2013). The garden of forking paths: Why multiple comparisons can be a problem, even when there is no “fishing expedition.” Working paper, Columbia University.
  2. Harvey, C. R., Liu, Y., & Zhu, H. (2016). … and the Cross-Section of Expected Returns. Review of Financial Studies, 29(1), 5–68. doi:10.1093/rfs/hhv059
  3. Lo, A. W. (2002). The Statistics of Sharpe Ratios. Financial Analysts Journal, 58(4), 36–52. doi:10.2469/faj.v58.n4.2453

Appendix A  Reproducibility in QuanterLab

Each step is backed by a frozen run report. The study is re-derivable from the ledger below.

#CommitReportAnchorOOS window
1 fbafdddcc0a3 1446 2006-01-01 2006-01-03 → 2006-12-29
2 9ab2f8fe5d44 1447 2007-01-01 2007-01-03 → 2007-12-31
3 9a328c34fb89 1448 2008-01-01 2008-01-02 → 2008-12-31
4 128f8b83eaa5 1449 2009-01-01 2009-01-02 → 2009-12-31
5 f7d22bdf8d23 1450 2010-01-01 2010-01-04 → 2010-12-31
6 5c8ee033048c 1451 2011-01-01 2011-01-03 → 2011-12-30
7 6a81a451d6ff 1452 2012-01-01 2012-01-03 → 2012-12-31
8 2ac07d5d578b 1453 2013-01-01 2013-01-02 → 2013-12-31
9 a7255e39e198 1454 2014-01-01 2014-01-02 → 2014-12-31
10 ade18ee7c65a 1455 2015-01-01 2015-01-02 → 2015-12-31
11 bf15a9acfbc9 1456 2016-01-01 2016-01-04 → 2016-12-30
12 f72532589bef 1457 2017-01-01 2017-01-03 → 2017-12-29
13 cfd90cb463b0 1458 2018-01-01 2018-01-02 → 2018-12-31
14 966c2f8a4484 1459 2019-01-01 2019-01-02 → 2019-12-31
15 d66a9a202c65 1461 2020-01-01 2020-01-02 → 2020-12-31
16 c577625adb7b 1462 2021-01-01 2021-01-04 → 2021-12-31
17 d507671b856f 1463 2022-01-01 2022-01-03 → 2022-12-30
18 2834bfefd243 1464 2023-01-01 2023-01-03 → 2023-12-29
19 e01f1aea34ce 1465 2024-01-01 2024-01-02 → 2024-12-31

Appendix A2  Registration record

What this record does and does not establish. Every window in this study is historical: the data existed before the study began, so this is sequential sealing on past windows, not pre-registration in the clinical-trial sense, and no procedure could make it so. What the platform does enforce is order, each step's specification was frozen and hashed before that step was scored, and the walk cannot advance past a step that was never run or close one with a result registered for a different window. The two timestamp columns below are the evidence: read them together and each seal precedes its own run, and each run precedes the next seal. A study whose seals all post-date its runs would show it here. Wall-clock spacing between seals varies with the author's schedule and queue latency; the ordering, not the tempo, is the claim.

“A COMPARATIVE study: Hold all nine vs The regime turn, walked on the same registered out-of-sample windows. Hold all nine: Sector_spdrs, selected by statistical / factor criteria, rebalanced quarterly across the selected basket, and run out-of-sample from the anchor: whatever the design estimates from history is re-estimated at each anchor from pre-anchor data only, and the walk advances through registered out-of-sample windows; its disposition is the realized forward path versus the benchmark. The regime turn: A regime-routed strategy-of-strategies allocating one book across 3 lanes, (A) sector_spdrs · a re-selected ranked basket; (B) sector_spdrs · a re-selected ranked basket; (C) sector_spdrs · a re-selected ranked basket, routed by the wired regime classifiers, forward-tested out-of-sample from the anchor. The arms differ in: 26 places: Top-N #1, n: 9 → 3; Universe #1, sector_book: all → risk_on; HMM (returns), added in The regime turn; SPY DMA Regime, added in The regime turn; Universe, added in The regime turn; Universe, added in The regime turn; HMM (vol), added in The regime turn; Breadth Regime, added in The regime turn; Price Loader, added in The regime turn; Price Loader, added in The regime turn; Correlation Regime, added in The regime turn; GMM Regime, added in The regime turn; Momentum 12-1, added in The regime turn; Momentum 12-1, added in The regime turn; Transaction Cost, added in The regime turn; Transaction Cost, added in The regime turn; GARCH Vol Regime, added in The regime turn; Turbulence Regime, added in The regime turn; Top-N, added in The regime turn; Top-N, added in The regime turn; Macro / Rates Regime, added in The regime turn; VIX Regime, added in The regime turn; Portfolio Forward Test, added in The regime turn; Portfolio Forward Test, added in The regime turn; Regime Ensemble, added in The regime turn; Strategy Router, added in The regime turn. NOTE: with more than one difference, an out-of-sample gap cannot be attributed to any single change. The contrast under test: whether Hold all nine generates better risk-adjusted returns than The regime turn over the identical out-of-sample windows.”

The same hypothesis was registered independently at every step, hashed before each step's out-of-sample window was scored:

Table 4. Registration audit, one row per registered step, with the time each specification was frozen and the time its window was scored. The hypothesis is identical on every row by design: it was registered once and re-registered unchanged at each anchor. Rows that differ would mean the specification moved mid-walk, which is the thing this record exists to rule out. The timestamps are the separate claim: each seal precedes its own run, and each run precedes the next seal.
#AnchorRegistered at (UTC)Run completed (UTC)
1 2006-01-012026-08-21 20:02:40 2026-08-21 20:08:52
2 2007-01-012026-08-21 20:08:55 2026-08-21 20:14:26
3 2008-01-012026-08-21 20:14:29 2026-08-21 20:15:29
4 2009-01-012026-08-21 20:15:32 2026-08-21 20:20:18
5 2010-01-012026-08-21 20:20:21 2026-08-21 20:24:51
6 2011-01-012026-08-21 20:24:54 2026-08-21 20:29:25
7 2012-01-012026-08-21 20:29:28 2026-08-21 20:33:59
8 2013-01-012026-08-21 20:34:02 2026-08-21 20:38:17
9 2014-01-012026-08-21 20:38:20 2026-08-21 20:42:21
10 2015-01-012026-08-21 20:42:24 2026-08-21 20:46:25
11 2016-01-012026-08-21 20:46:28 2026-08-21 20:50:31
12 2017-01-012026-08-21 20:50:34 2026-08-21 20:54:35
13 2018-01-012026-08-21 20:54:38 2026-08-21 20:58:38
14 2019-01-012026-08-21 20:58:42 2026-08-21 21:03:27
15 2020-01-012026-08-21 21:03:30 2026-08-21 21:37:52
16 2021-01-012026-08-21 21:37:55 2026-08-21 21:45:41
17 2022-01-012026-08-21 21:45:44 2026-08-21 21:51:30
18 2023-01-012026-08-21 21:51:33 2026-08-21 21:55:35
19 2024-01-012026-08-21 21:55:39 2026-08-21 21:59:24

Appendix B  Per-step diagnostics

What each step's run actually did beyond its return: capital allocation across lanes and regimes, the portfolio book's rebalancing and cost drag, and how positions were sized. Harvested from the frozen run reports, present where the circuit produced them.

Step 1 · 2006-01-03 → 2006-12-29

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.45% of 247 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2006-01-01 -5.707% 2.4512% 12.1639% 2.1175%yes 1.1192% 2 / 61
2006-04-01 -6.4993% 2.1351% 11.6241% -0.7578%yes 1.1244% 7 / 62
2006-07-01 -6.6568% 2.0816% 11.6961% 2.7703%yes 1.1189% 1 / 62
2006-10-01 -6.3115% 2.4328% 12.0512% 6.7598%yes 1.102% 1 / 62
2007-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy · 3 switches · switch cost 8.0 bps · cost drag 0.43%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0

Step 2 · 2007-01-03 → 2007-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 12.96% of 247 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2007-01-01 -6.0626% 2.8197% 11.6155% 2.4593%yes 1.0901% 3 / 60
2007-04-01 -6.1702% 2.4969% 12.0222% 5.2159%yes 1.0967% 5 / 62
2007-07-01 -5.3414% 3.175% 12.5139% 0.7516%yes 1.1025% 11 / 62
2007-10-01 -7.1678% 3.0155% 13.2748% -3.3549%yes 1.1986% 13 / 63
2008-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 4 switches · switch cost 8.0 bps · cost drag 0.59%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 3 · 2008-01-02 → 2008-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 4 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.2× · cost drag 0.12%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 75.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 18.88% of 249 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2008-01-01 -8.201% 2.553% 13.4118% -7.0621%yes 1.3602% 10 / 60
2008-04-01 -10.9533% 1.5455% 14.4695% -3.9817%yes 1.5237% 6 / 63
2008-07-01 -12.1311% 0.7638% 14.1686% -9.609%yes 1.7487% 8 / 63
2008-10-01 -14.7349% -0.22% 15.1634% -21.3985%no 1.8908% 23 / 63

Regime router, 3 lanes · regimes: stressed · 1 switches · switch cost 8.0 bps · cost drag 0.11%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
stressed0.00.01.0

Step 4 · 2009-01-02 → 2009-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.84% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2009-01-01 -24.731% -3.834% 20.1416% -13.7754%yes 2.7305% 11 / 60
2009-04-01 -27.3699% -5.8638% 22.1944% 14.5539%yes 3.1599% 1 / 62
2009-07-01 -28.0814% -4.23% 24.3611% 14.5442%yes 3.1599% 0 / 63
2009-10-01 -26.9611% -2.5187% 26.844% 8.4788%yes 3.1599% 0 / 63
2010-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 3 switches · switch cost 8.0 bps · cost drag 0.43%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 5 · 2010-01-04 → 2010-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.21% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2010-01-01 -26.6651% -2.7197% 25.7516% 2.9531%yes 3.1701% 0 / 60
2010-04-01 -24.708% -1.7536% 28.3975% -12.2944%yes 3.1648% 3 / 62
2010-07-01 -26.9969% -2.753% 26.318% 11.7541%yes 3.4654% 0 / 63
2010-10-01 -25.0797% -0.1812% 29.6799% 9.451%yes 3.4654% 0 / 63
2011-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy · 5 switches · switch cost 8.0 bps · cost drag 0.75%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0

Step 6 · 2011-01-03 → 2011-12-30

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.2× · cost drag 0.12%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 75.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 7.26% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2011-01-01 -16.5106% 2.8993% 29.2713% 4.4352%yes 2.7907% 0 / 61
2011-04-01 -11.6035% 5.5645% 26.1969% -0.117%yes 2.1264% 1 / 62
2011-07-01 -10.0414% 4.9158% 20.7169% -15.7618%no 1.8255% 12 / 63
2011-10-01 -13.6071% 1.2012% 18.6567% 14.917%yes 2.0155% 5 / 62
2012-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 3 switches · switch cost 8.0 bps · cost drag 0.43%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 7 · 2012-01-03 → 2012-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 4 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.22% of 246 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2012-01-01 -12.9434% 1.9465% 21.1208% 8.53%yes 2.081% 0 / 61
2012-04-01 -12.9875% 2.6094% 21.118% -3.2827%yes 2.0256% 2 / 62
2012-07-01 -14.2767% 1.21% 19.61% 4.8371%yes 2.0256% 0 / 62
2012-10-01 -11.183% 2.4178% 19.6515% -0.6939%yes 1.7985% 1 / 61

Regime router, 3 lanes · regimes: calm, choppy · 4 switches · switch cost 8.0 bps · cost drag 0.59%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0

Step 8 · 2013-01-02 → 2013-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.81% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2013-01-01 -12.4832% 2.2846% 16.9206% 7.8904%yes 1.8014% 0 / 59
2013-04-01 -12.7235% 2.3539% 18.3665% 1.9051%yes 1.8027% 2 / 63
2013-07-01 -13.0536% 2.1031% 18.2204% 4.5543%yes 1.7669% 0 / 63
2013-10-01 -11.4866% 3.543% 19.4664% 8.1739%yes 1.6082% 0 / 63
2014-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy · 5 switches · switch cost 8.0 bps · cost drag 0.75%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0

Step 9 · 2014-01-02 → 2014-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.03% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2014-01-01 -7.1602% 3.9398% 15.1709% 3.0988%yes 1.3468% 2 / 60
2014-04-01 -5.9101% 3.7475% 14.4612% 4.5728%yes 1.2688% 1 / 62
2014-07-01 -5.9595% 4.1726% 14.3632% -0.9412%yes 1.1883% 2 / 63
2014-10-01 -5.2972% 4.1737% 13.6357% 5.3781%yes 1.0951% 5 / 63
2015-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm · 1 switches · switch cost 8.0 bps · cost drag 0.11%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0

Step 10 · 2015-01-02 → 2015-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 75.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 9.68% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2015-01-01 -5.6557% 3.9678% 13.5594% 0.0132%yes 1.1592% 6 / 60
2015-04-01 -6.0652% 3.2692% 13.5937% -0.9864%yes 1.2592% 2 / 62
2015-07-01 -6.9281% 2.8145% 12.5873% -8.0678%no 1.1843% 11 / 63
2015-10-01 -9.4884% 1.1531% 11.9467% 5.2654%yes 1.3047% 5 / 63
2016-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 8 switches · switch cost 8.0 bps · cost drag 1.23%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 11 · 2016-01-04 → 2016-12-30

Hold all nine

Portfolio book, rebalanced quarterly · 4 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.84% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2016-01-01 -9.7596% 1.0565% 12.0032% 3.9507%yes 1.3427% 8 / 60
2016-04-01 -9.8206% 1.9518% 14.0247% 2.6675%yes 1.4703% 2 / 63
2016-07-01 -10.6278% 1.2672% 13.4921% 1.7791%yes 1.4799% 2 / 63
2016-10-01 -10.3933% 0.87% 13.6272% 3.925%yes 1.4941% 0 / 62

Regime router, 3 lanes · regimes: calm, choppy, stressed · 6 switches · switch cost 8.0 bps · cost drag 0.91%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 12 · 2017-01-03 → 2017-12-29

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.81% of 247 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2017-01-01 -9.5957% 0.7804% 13.4702% 3.9379%yes 1.4579% 0 / 61
2017-04-01 -9.3118% 1.3317% 13.2974% 2.1138%yes 1.3419% 1 / 62
2017-07-01 -9.2407% 1.1462% 12.7929% 3.1807%yes 1.3326% 1 / 62
2017-10-01 -8.3166% 1.8638% 13.2439% 5.1599%yes 1.3204% 0 / 62
2018-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm · 1 switches · switch cost 8.0 bps · cost drag 0.11%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0

Step 13 · 2018-01-02 → 2018-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 75.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 11.34% of 247 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2018-01-01 -6.5747% 2.4609% 11.4253% -3.2299%yes 1.0679% 9 / 60
2018-04-01 -5.7816% 3.4918% 12.7437% 5.0181%yes 0.9939% 3 / 63
2018-07-01 -6.0068% 2.394% 11.6013% 5.3724%yes 0.9367% 0 / 62
2018-10-01 -5.2165% 2.7165% 11.3655% -13.353%no 0.8072% 16 / 62
2019-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 5 switches · switch cost 8.0 bps · cost drag 0.75%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 14 · 2019-01-02 → 2019-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 75.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 4.03% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2019-01-01 -8.3395% 1.4101% 11.1641% 12.225%no 1.1427% 3 / 60
2019-04-01 -7.8405% 1.8678% 12.6643% 2.3489%yes 1.2581% 2 / 62
2019-07-01 -8.4887% 2.1386% 12.9044% 0.5447%yes 1.3153% 3 / 63
2019-10-01 -9.4529% 1.68% 13.0238% 7.5753%yes 1.4151% 2 / 63
2020-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 8 switches · switch cost 8.0 bps · cost drag 1.23%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 15 · 2020-01-02 → 2020-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 4 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.2× · cost drag 0.12%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 50.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 11.24% of 249 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2020-01-01 -8.3231% 1.6704% 13.8259% -24.6222%no 1.5129% 16 / 61
2020-04-01 -20.3401% -2.9293% 18.423% 24.1922%no 2.1101% 7 / 62
2020-07-01 -19.5458% 0.9267% 24.1109% 5.7213%yes 2.2056% 4 / 63
2020-10-01 -19.9672% 0.7793% 24.3586% 13.3455%yes 2.3097% 1 / 63

Regime router, 3 lanes · regimes: calm, choppy, stressed · 7 switches · switch cost 8.0 bps · cost drag 1.07%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 16 · 2021-01-04 → 2021-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.81% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2021-01-01 -18.8248% 2.0836% 25.7141% 10.0206%yes 2.2486% 1 / 60
2021-04-01 -16.7385% 3.2041% 28.0831% 5.147%yes 2.2276% 0 / 62
2021-07-01 -17.8516% 3.9194% 28.7716% -1.3348%yes 2.2459% 0 / 63
2021-10-01 -17.5607% 4.2802% 29.2107% 9.783%yes 2.2276% 1 / 63
2022-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 5 switches · switch cost 8.0 bps · cost drag 0.75%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 17 · 2022-01-03 → 2022-12-30

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.2× · cost drag 0.12%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 6.48% of 247 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2022-01-01 -15.7266% 3.5844% 29.7476% 0.5259%yes 2.2056% 0 / 61
2022-04-01 -16.0991% 3.4283% 29.9657% -13.5295%yes 2.2021% 8 / 61
2022-07-01 -10.593% 4.7528% 21.0355% -5.2423%yes 1.9099% 3 / 63
2022-10-01 -11.4034% 2.0945% 17.746% 7.409%yes 1.8748% 5 / 62
2023-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy, stressed · 5 switches · switch cost 8.0 bps · cost drag 0.75%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
stressed0.00.01.0

Step 18 · 2023-01-03 → 2023-12-29

Hold all nine

Portfolio book, rebalanced quarterly · 5 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.2× · cost drag 0.12%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 0.0% of 246 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2023-01-01 -10.2665% 3.048% 19.846% 3.1372%yes 1.8218% 0 / 61
2023-04-01 -11.198% 1.8645% 18.3253% 3.6953%yes 1.792% 0 / 61
2023-07-01 -12.4168% 0.8994% 16.3358% -3.8903%yes 1.7802% 0 / 62
2023-10-01 -12.8662% 0.2762% 15.4953% 9.3223%yes 1.741% 0 / 62
2024-01-01 no segment follows this rebalance, not scored

Regime router, 3 lanes · regimes: calm, choppy · 2 switches · switch cost 8.0 bps · cost drag 0.27%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0

Step 19 · 2024-01-02 → 2024-12-31

Hold all nine

Portfolio book, rebalanced quarterly · 4 constructions · 9 names held · selection: reselect · 0.0% in cash · turnover 1.1× · cost drag 0.11%

Projection accuracy, realized outcome fell inside the P5–P95 cone in 100.0% of 4 scored rebalances (a well-calibrated 90% band contains ~90.0%) · 95% VaR breached on 1.61% of 248 days (expected ~5.0%)

Rebalance P5 Median P95 Realized In band VaR 95 (1d) Breaches
2024-01-01 -13.2372% 0.5613% 14.9912% 8.0492%yes 1.6791% 0 / 60
2024-04-01 -11.8167% 1.2161% 16.2681% 0.0542%yes 1.6017% 0 / 62
2024-07-01 -11.3274% 1.9208% 15.7233% 8.1226%yes 1.451% 3 / 63
2024-10-01 -9.1124% 2.927% 15.2937% -2.0103%yes 1.3711% 1 / 63

Regime router, 3 lanes · regimes: calm, choppy · 3 switches · switch cost 8.0 bps · cost drag 0.43%

Allocation matrix, target weight per lane in each regime.
RegimePipeline APipeline BPipeline C
calm1.00.00.0
choppy0.01.00.0
QuanterLab · Study 805591013b96 · compiled August 21, 2026. Point-in-time constituents and hypothesis-registration timestamps are enforced by the platform. This report is generated from the frozen study artifact and is reproducible from the ledger above. Educational research, not investment advice: every result on this page is simulated, and nothing here is a recommendation to buy or sell any security.

Run a study like this one

Everything above was produced inside QuanterLab, the registration, the walk, the statistics and the paper itself. Build the circuit on a canvas, register the hypothesis before you score it, and the platform enforces the rest.

The lab is in private beta and opens in September 2026. Reading the research needs no account, follow it and we'll tell you when the next study publishes.

As seen on Quantocracy

A note on AI. QuanterLab is a quantitative finance research platform, and every number in this study comes from a run on the platform. The hypothesis, the parameter choices, the validation design and the conclusions belong to the author. Runs execute on point-in-time data with walk-forward validation, and each study ships with its methodology and logs, so a reader can reconstruct the result instead of trusting it. I use AI to edit and structure the prose; it does not generate results, produce numbers, or decide what a study concludes.