factor · Sector

Sector factor — explained

Sector momentum bets that stocks in industries that have been rallying keep rallying for the next 1-3 months. Most of the equity-momentum premium decomposes into sector trends: Energy moves together when oil rallies, Tech moves together when growth comes back into favour. The factor rides the wave at the industry layer rather than the single-stock layer.

Where this comes from

Academic anchor

Moskowitz-Grinblatt 1999 — Do Industries Explain Momentum?
Decomposes Jegadeesh-Titman 1993 single-stock momentum into a within-industry component and an industry-level component, finding that industry momentum accounts for ~half the total momentum return. A long-top-decile-industries / short-bottom-decile-industries portfolio earned ~9% annually over 1963-1995 with lower turnover than single-stock momentum. Subsequent literature (Asness-Porter-Stevens 2000, Asness-Frazzini-Pedersen 2014) confirmed the result holds across sub-periods and internationally. The intuition: capital reallocation between industries is sticky; sector ETFs and sector-rotation strategies move slowly enough that an industry trend persists for months.
Plain English

What it actually measures

In 2023, every semiconductor stock — NVDA, AMD, AVGO, MU — moved up roughly together as AI capex took off. The within-industry dispersion mattered (NVDA outperformed) but the across-industry dispersion mattered more (semis beat utilities by 50%). Sector momentum captures the industry-level wave: which sectors are aggregating the most positive Framler scores right now, and which are aggregating the most negative. A high-quality stock in a falling sector still tends to fall; a mediocre stock in a leading sector still tends to rise. The factor reflects this gravitational pull explicitly.

No calibration constants

Math sketch

inputs   · per-sector aggregate Framler score (engine's own view)
         · sector index momentum on a recent lookback
         · sector breadth — fraction of names rallying
ideas    · three anchors blended into a sector-level signal
         · same sector score assigned to every ticker in the sector
         · within-sector dispersion belongs to the other factors in the composite
output   · cross-sectional standardised score

Three anchors so the factor doesn't reduce to a single number. Blend weights and the exact momentum lookback are calibrated and proprietary. Public: the three anchors, the design decision to broadcast a single sector score to all members of the sector, and the academic structure (Moskowitz-Grinblatt 1999 plus a breadth correction motivated by Lo-MacKinlay 1990).

Pipeline

How Framler implements it

Sector membership comes from the universe table — thirteen buckets, close to the GICS sectors (Technology, Financial Services, Industrials, Healthcare, Consumer Cyclical, Consumer Defensive, Consumer, Basic Materials, Energy, Real Estate, Communication Services, Utilities) but with Semiconductors broken out from Technology as its own group, because its members trade together closely enough to deserve a separate benchmark. Sector-aggregate Framler scores are computed during the daily universe sweep using the prior day's per-ticker scores, so no temporal leakage. Sector-index momentum uses an equal-weight composite within the GICS sector to avoid contamination from the megacap tail. Breadth is the fraction of within-sector tickers carrying a bullish Framler verdict that day.

One coherent posterior

How it composes with Framler

Sector is the slowest-moving factor in the composite — it's measured at the industry layer, so it changes weekly rather than daily. It pairs with Spillover (Cohen-Frazzini 2008): in the live confluence library the two meet in the bearish SECTOR BREAKDOWN pattern — a ticker still elevated while its sector and spillover both roll over is a mean-reversion candidate. Sector also amplifies single-stock momentum — a high-momentum stock in a high-momentum sector is doubly bullish, and we capture this in the regime-conditional weights rather than as a separate confluence pattern. In risk-off regimes, sector amplifier is reduced — sector rotation reverses unpredictably during macro shocks.

Honest limitations

When it fails

Two limitations. (1) Bucket coarseness. Even with Semiconductors split out, Technology still holds both CRM (enterprise software) and AAPL (hardware), which trade differently most quarters, and our single 'Consumer' bucket mixes defensive staples with cyclical names. The sector taxonomy is coarser than ideal for fine sector rotation. We could refine further, but the trade-off is sample size — 50-stock sub-sectors give noisy aggregates. (2) Macro shocks reset sectors abruptly. The energy sector's 2020 collapse and 2022 rebound were both regime-driven, and sector momentum mis-fired at both turns. The regime amplifier mitigates by halving sector's weight in risk-off, but sectors that abruptly become regime-driven (energy after a war, healthcare in a pandemic) remain a known noise source.

Pro depth

Engineering integration

How Sector flows through the production engine
Sign convention
Bullish-when-high. Universal across all 13 factor families — a high Sector score reads as a bullish lean, low as bearish, 50 as neutral. The composite inherits the convention unchanged.
Standardisation
Cross-sectional z-score per scoring day across the 1,000+-ticker universe, then mapped to 0-100. Tickers without sufficient input data surface as null and the composite skip-and-renormalise path takes over (Asness-Frazzini-Pedersen 2014).
Refresh cadence
Recomputed daily via the universe-scoring cron (production runs 06:00 UTC on weekdays via Vercel + GitHub Actions). Factor-specific upstream data refresh is described in the implementation section above.
Composite entry
Enters the Bayesian composite with a regime-conditional weight calibrated weekly by the calibrate-weights cron against accumulated forward-return data. Per-regime weight vectors are proprietary; the architecture is in the math sketch above.
Diagnostic surface
Live structural invariants on /coherence exercise the math stack on every request (factor correlation matrix, BOCPD posterior, Mondrian bin coverage). Coverage and IC accumulate weekly via the accuracy-check cron; the sector-honesty panel on /track-record publishes per-cohort calibration tiers.
Hidden by design
The exact factor weight, regime-conditional multipliers, and any constant inside the math sketch marked «calibrated and proprietary» stay private — that's the engineering moat. Everything above architecture-level is published; everything below stays in the engine.
Read next

Related factors

MomentumSpilloverValue

See Sector score on a real ticker

Every ticker page shows the per-factor decomposition. The Sector score is one of thirteen composing the 0–100 the composite score.

Try NVDA →Full methodologyMath coherence live
Sector factor explained | Framler