The Macro Engine's sector rotation read splits the market into cyclical and defensive buckets, six sectors against three, and measures which side is actually leading. On 2026-09-30 the 21-day spread read barely positive, 0.009053, a NEUTRAL state even though both baskets were falling that day.
Sector rotation is one of the Macro Engine's modules: eleven sector ETFs sorted into four buckets, and the spread between the cyclical basket and the defensive basket is the read. Six sectors sit in the cyclical bucket: Consumer Discretionary, Technology, Financials, Industrials, Materials and Energy. Three sit in the defensive bucket: Utilities, Consumer Staples and Health Care. The remaining two, Real Estate and Communication Services, sit in their own yield and hybrid buckets and do not feed the cyclical-versus-defensive spread at all.
The calculation is a weighted cyclical basket return minus a weighted defensive basket return, measured over three separate windows: 1-day, 5-day and 21-day. That spread is then z-scored against its own trailing history, a minimum of 30 observations, so the same raw spread reads differently depending on how unusual it is relative to where it has recently sat. Position is that z-score clipped to a range of -1 to 1, and the state label, RISK_ON, RISK_OFF or NEUTRAL, comes from where the z-score sits against a neutral band. A window can also read UNAVAILABLE if its underlying price input is frozen or its trailing history is not yet long enough.
On 2026-09-30, the 21-day window read a spread of 0.009053, cyclical basket return minus defensive basket return, a z-score of 0.0913 and a position of 0.0457, both reading NEUTRAL. The weighted cyclical return itself was -0.034924 and the weighted defensive return was -0.043977: both baskets fell, the defensive basket by more, which produced a barely positive spread even on a down day for both sides.
On 2026-09-30 the 21-day window read a spread of 0.009053, a z-score of 0.0913 and a position of 0.0457, all reading NEUTRAL. The weighted cyclical return was -0.034924 against a weighted defensive return of -0.043977.
A positive spread with both baskets in negative territory means cyclical sectors were losing less than defensive sectors that day, not that either side was actually gaining. The Overheat phase read by the Cycle Clock that same day favors Energy and Materials, both in the cyclical bucket, a separate, phase-driven overlay rather than something this rotation read computes on its own.
The rotation read does not size a position by itself; it says which basket, cyclical or defensive, is relatively stronger over a given window. It measures baskets, not individual names: sizing an actual position once a side is favored is a separate question the Stop Risk Score answers, and how long a lookback window to trust is its own question this piece does not answer either.
This read has no single fixed number to cross the way a bounded score does. The state comes from where the z-score sits against a neutral band around zero, not a fixed threshold. A z-score close to that band, the 21-day reading's 0.0913 among them, is closer to flipping between NEUTRAL and RISK_ON or RISK_OFF than one sitting far from it.
The three windows can also disagree with each other, and did on 2026-09-30: the 1-day window read RISK_OFF while the 5-day and 21-day both read NEUTRAL on the same date. Which window to trust for a given decision is a separate question this piece does not resolve.
This read describes the cyclical-versus-defensive basket spread, not any single stock or sector's actual price level. A positive spread does not mean the cyclical basket is rising, only that it is doing relatively better than the defensive basket over that window, exactly what happened on 2026-09-30 when both fell.
Real Estate and Communication Services sit outside both baskets entirely, in their own yield and hybrid buckets, so this read says nothing about either of them. A favorable rotation read also does not by itself rank which of the six cyclical sectors, or which stock inside one, is actually leading.
Cyclical: Consumer Discretionary, Technology, Financials, Industrials, Materials and Energy, six sectors. Defensive: Utilities, Consumer Staples and Health Care, three sectors. Real Estate and Communication Services sit in their own yield and hybrid buckets and are not counted on either side.
A weighted cyclical basket return minus a weighted defensive basket return, over 1-day, 5-day and 21-day windows, is z-scored against its own trailing history, a minimum of 30 observations. Position is that z-score clipped to a range of -1 to 1.
The z-score is sitting inside a neutral band around zero, not clearly favoring either the cyclical or defensive basket. On 2026-09-30 both the 5-day and 21-day windows read NEUTRAL, while the 1-day window read RISK_OFF on the same date.
Yes. On 2026-09-30 the 21-day weighted cyclical return was -0.034924 and the weighted defensive return was -0.043977: both baskets fell, but the defensive basket fell by more, which produced a barely positive spread, 0.009053, even on a losing day for both sides.
Neither is counted in the cyclical or defensive basket. Real Estate sits in its own yield bucket and Communication Services in its own hybrid bucket, so this spread says nothing about either sector's own performance.
This spread measures relative basket performance, not the direction of the market as a whole. A positive read can happen while every sector in both baskets is losing money, exactly what the 21-day window showed on 2026-09-30.