Most quantitative systems treat market regime as a secondary consideration — something to check after signal generation. QuantKernel treats it as the first gate. The regime classification runs before momentum scoring, before ML inference, before any per-ticker evaluation. If the macro environment doesn't support a given strategy type, candidates from that strategy don't reach the publication regardless of how strong the individual setup looks.
// The Classification Logic
Two inputs. One output. The engine evaluates SPY on two dimensions every morning before the watchlist compiles: trend direction (EMA9 vs EMA50 alignment) and trend strength (ADX). The combination of these two signals produces the regime state.
The Four States — What Each One Means
Each state maps directly to what subscribers see in the morning publication. The regime isn't a background annotation — it actively shapes which candidates appear and which are suppressed.
Strong bull trend confirmed
Uptrend present, momentum weak
Downtrend with confirmed momentum
Downtrend, low directional clarity
Reading the Regime in Your Watchlist
Every morning publication is labeled with the current regime state. This label is not decoration. It tells you the context the engine was operating in when it compiled the list — and it tells you what the engine chose not to include.
A short HEDGE watchlist is not a broken engine. It is the engine working correctly. When the macro environment doesn't support a strategy, the right output is suppression — not a forced candidate that looks directionally ambiguous. Fewer names on a HEDGE day means the filter is doing its job.
The regime label also tells you something about the candidates that did make the list. In a HEDGE state, any name that clears the filter has passed a materially tighter screen than an ATTACK-day candidate. The bar is higher. When the macro environment is difficult and a name still appears, that is a higher-conviction signal than the same name appearing on a routine ATTACK day.
// Transition Signals
Regime state changes are noted explicitly in the publication. A transition from NEUTRAL to HEDGE is not a surprise — the engine publishes a regime update note when the state shifts. Subscribers who read the regime label on Monday morning know what context to expect on Tuesday.
The Honest Cost
The regime filter suppresses candidates. Some of those candidates would have performed well. This is not a design flaw — it is a deliberate trade-off that was documented in an earlier research post (The Honest Mirror). The short version: Group B net expectancy on real data tells you exactly what the filter is costing in absolute return.
The four-state system is built for asymmetry. In ATTACK, the engine casts a wide net. In ICE_POINT, it tightens to near-zero. The goal is not to publish every day — it is to publish the right things on the right days. A zero-candidate publication on an ICE_POINT day is a correct output.
This is the design philosophy behind all six guardrails on the website: none of them are trying to improve returns by adding complexity. They are trying to prevent the engine from publishing when it should stay quiet. The regime filter is the first and broadest of those guardrails.