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.

// Regime Classification Tree — SPY · Daily
SPY EMA9 vs EMA50 daily close · pre-market EMA9 > EMA50 EMA9 < EMA50 ADX Strength threshold ≥ 25 ADX Strength threshold ≥ 20 ADX ≥ 25 ADX < 25 ADX ≥ 20 ADX < 20 ATTACK full scope all strategies active NEUTRAL selective scope growth candidates limited HEDGE contracted scope new growth suppressed ICE_POINT minimum scope existing names only

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.

ATTACK
EMA9 > EMA50 · ADX ≥ 25
Strong bull trend confirmed
Full candidate scope. All six strategies are evaluated. Growth candidates, breakout setups, and pairs candidates are all eligible. The engine publishes the highest-conviction names from across the entire universe. Expect 1–3 candidates on active ATTACK days.
NEUTRAL
EMA9 > EMA50 · ADX < 25
Uptrend present, momentum weak
Selective scope. Trend direction is positive but conviction is insufficient for full growth exposure. High-quality momentum setups may still appear; speculative growth candidates are held back. Pairs and intraday setups are evaluated normally. Expect 0–2 candidates, skewed toward higher-certainty names.
HEDGE
EMA9 < EMA50 · ADX ≥ 20
Downtrend with confirmed momentum
Contracted scope. New growth candidates are automatically suppressed — only existing high-conviction names already on the watchlist are carried forward with updated risk context. Short setups and inverse ETF candidates become eligible. The watchlist narrows significantly. A HEDGE publication often contains fewer names than an ATTACK day, but every name that appears has cleared a tighter filter.
ICE_POINT
EMA9 < EMA50 · ADX < 20
Downtrend, low directional clarity
Minimum scope. The market is trending down but without the momentum clarity to confidently identify short setups. This is the hardest environment to publish in — both directions lack conviction. New candidates are largely suppressed. The publication may be a single risk-context update or a zero-candidate watchlist with a regime note explaining the pause.

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.

ATTACK
Full
all strategies open
NEUTRAL
Selective
growth limited
HEDGE
Contracted
new growth suppressed
ICE_POINT
Minimum
both directions weak

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.