Skip to content

KB/signal

Industrials breadth (XLI)

Last verified

Auto-generated. This article is rebuilt from app/signals/config/signal_definitions.json by scripts/build_signals_kb.py. Edit the registry entry and re-run the script β€” do not edit this file directly.

Industrials breadth (XLI)

What it is

Industrials breadth (XLI) β€” registry key sector_breadth_xli.

Per-sector breadth substrate β€” Industrials sector % above 50d SMA. Promoted from the sector_breadth JSON blob to a dedicated REAL column so rotation history accumulates. Not scored/aligned; raw substrate for sector-rotation analysis.

Data-pyramid tier

T0 β€” Raw input. This metric sits at the raw input layer of the platform’s six-tier data pyramid (T0 raw inputs β†’ T5 actionable read). The tier reflects how far the value is from a raw measurement β€” not how strongly it is validated. Abstraction and validation are separate axes: a higher tier is not a claim of stronger evidence.

Horizon & validation

No validated skill horizon is on file for this metric β€” read it as context / a data carrier, not a validated edge. Stamps are added only when a gated research verdict lands.

Source

Source module: breadth
Data source: back_fillable

Fetched directly from app/sources/breadth.py; see source code for the upstream API call and any provider-specific handling.

How it’s computed

Percent of S&P 500 Industrials-sector constituents (from app/data/sp500_sectors.json) whose latest close is above their 50-day SMA. Same value as sector_breadth['Industrials']['pct_above_50d'] in the JSON blob. See app/sources/breadth.py:_calculate_breadth.

Where it surfaces

Health-score / alignment role

Data carrier β€” no implication, no health-score contribution.

Persisted for downstream consumers (sparklines, base-rate matcher, calibration substrate) but does not classify into BULLISH / NEUTRAL / BEARISH and does not contribute to the 0-100 health score.

Release cadence

See also