Appearance
Sector constituents
The for_sector selector resolves a SEC SIC division name to its constituent ticker universe and drives the same per-symbol subscribe the symbol-first accessor argument ships. Operators no longer maintain a sector-to-ticker table — the resolution happens inside the engine behind one builder call.
Supported sectors
| Slug | SEC division | SIC range | Aliases |
|---|---|---|---|
agriculture_forestry_fishing | A — Agriculture, Forestry, Fishing | 0100–0999 | Agriculture |
mining | B — Mining | 1000–1499 | (none) |
construction | C — Construction | 1500–1799 | (none) |
manufacturing | D — Manufacturing | 2000–3999 | Manufacturing, Mfg, Industrials |
transportation_communications_utilities | E — Transportation, Communications, Utilities | 4000–4999 | Transportation, Utilities |
wholesale_trade | F — Wholesale Trade | 5000–5199 | Wholesale |
retail_trade | G — Retail Trade | 5200–5999 | Retail |
finance_insurance_real_estate | H — Finance, Insurance, Real Estate | 6000–6799 | Financials, Finance |
services | I — Services | 7000–8999 | Services, Tech, Technology |
public_administration | J — Public Administration | 9100–9729 | Public |
CUSTOM | Caller-supplied basket | n | (verbatim ticker list) |
The bare-string accept-shape canonicalises case and slug — "manufacturing", "Manufacturing", and "MANUFACTURING" resolve identically — and accepts the Display-formatted division names ("FinanceInsuranceRealEstate") plus common short aliases ("Tech" → Services, "Financials" → Finance/Insurance/Real Estate, "Industrials" → Manufacturing). Unrecognised names fall through to an empty custom payload; the subscribe-side materialiser surfaces a structured invalid-spec rejection citing the offending input.
A crate-bundled embedded snapshot covers a curated subset of large-cap US tickers so the resolver is offline-functional with no network egress. Deployments that need the full upstream snapshot pre-install it at boot.
sector_rotation_strength auto-wire
The Sector rotation strength analytic additionally auto-populates its per-symbol (symbol, sector tag) mapping off the constituent cache. Consumers no longer thread their own sector mapping — the SEC-published per-registrant SIC codes flow into the analytic's sector-cohort classifier automatically.
Explicit overrides still win: a consumer that supplies its own (symbol, sector) mapping keeps it, because the auto-wire only fires when no mapping was supplied. This preserves the desk-supplied GICS / ICB taxonomy escape hatch.
Hydration semantics
Hydration is lazy and per-engine-session. The first for_sector("Manufacturing").subscribe(...) decodes the bundled offline snapshot — no network egress required. Subsequent subscribes against any sector reuse the session-level cached symbol map. The cache is session-level — every analytic builder on a single client shares one constituent map.
Tier-cap interaction
Sector resolution happens before the cap-aware subscribe gate, and the gate is symbol-list-count agnostic — for_sector("Manufacturing") and a verbatim Manufacturing-constituent accessor argument produce identical gate paths once the universe is materialised. A broad sector union can exceed a narrower tier's quote / trade cap. See tier quotas for the envelope.
Methodology and data sourcing
SIC — Standard Industrial Classification — was established in 1937 by the US Department of Labor. The SEC has published the SIC code of every registrant on the cover page of 10-K filings since 1939 and exposes the live value on its JSON submissions endpoint. SIC codes group into ten top-level divisions (A–J) per the boundaries the SEC publishes.
Why SIC and not GICS / ICB
GICS (S&P / MSCI) and ICB (FTSE) are the institutional standards but are licensed and cannot be redistributed. SIC sits in the public domain, published by a US government agency, and remains the authoritative taxonomy the SEC uses for filer metadata. It is coarser than GICS but is sufficient for breadth, rotation, and McClellan-style aggregates. Desks that require GICS / ICB granularity supply their own taxonomy via a custom ticker basket on the analytic accessor argument or via the analytic's explicit sector-tag override.
See also
- Universe selection — the
for_sectorbuilder surface. - Index constituents — the peer
for_indexsurface over published indices. - Analytics catalogue — the full analytic surface.