Skip to content
Research
PrimerWorkspaceResearchLedgerReferencesAbout
riskmodels.appSign in
Updates
Next filing · Form N-PORT · Q1 2026 · 3 days
Next filing · Form N-PORT · Q1 2026 · 3 daysFactor Research · Part 2 published: risk structure in 13F filings across five allocator stylesAPI Update · AOM portfolio chains — single snapshot call for multi-step analyze flowsAPI Update · POST /api/snapshot — canonical JSON portfolio snapshotPart 1 · One Position, Four BetsPart 2 · Risk Structure in 13F FilingsNext filing · Form N-PORT · Q1 2026 · 3 daysFactor Research · Part 2 published: risk structure in 13F filings across five allocator stylesAPI Update · AOM portfolio chains — single snapshot call for multi-step analyze flowsAPI Update · POST /api/snapshot — canonical JSON portfolio snapshotPart 1 · One Position, Four BetsPart 2 · Risk Structure in 13F Filings
Ledger
← Research
Working paperMarketing explainer · companion to the industry-panel endpoint

The industry beneath the index.

Every sector ETF tells a flat story. XLE is energy. XLF is financials. XLK is technology. One ticker, one number, one beta to SPY.

But the industry beneath the ETF — the 4-digit slice the cap-weighted aggregate flattens — is rarely flat. Inside XLK there are semiconductors and software and IT services, each with its own typical β to the market and its own internal dispersion. Some periods, every industry inside XLK moves with the same β. Other periods, semiconductors detach. Software shrugs. The aggregate looks calm; the slices have rotated underneath.

That rotation is the signal sector ETFs paper over.


The data product

For each EODHD 4-digit industry, on each trading day, at each cascade level (market / sector / subsector), RiskModels publishes four numbers:

FieldWhat it tells you
beta_meanLog-mcap-weighted typical β of the industry's members at that level.
beta_varianceCross-sectional spread of β inside the industry — high values mean the label is hiding real structure.
n_companiesSample size at that teo (and the universe gate it cleared).
total_log_mcap_weightCap-weighting denominator — the Vasicek peer mean's anchor.

The mean is what most allocators ask for: "what's the typical chip-stock β?" The variance is what most allocators should ask for: "how unified is the chip cohort right now?"


Three things you couldn't see before

1. Quiet sector rotation

A sector ETF can be flat while its industries rotate underneath. Track month-over-month change in beta_mean at level='subsector' across the 72 EODHD industries. When semiconductors' typical β jumps while the rest of tech holds steady, the aggregate XLK barely moves but the regime has rotated.

2. Dispersion as alpha signal

High beta_variance inside an industry flags structural variation hiding behind a single label. Some chip companies look like memory; some look like analog; some look like services. When the within-industry variance widens, single-name stock-picking is more rewarded than industry-level allocation. When it narrows, the cohort is moving together — index instruments do more of the work.

3. Hedge-sizing sanity checks

For an allocator hedging a sector exposure with the sector ETF, the cap-weighted industry beta_mean is the right notional to assume per dollar of sector exposure. Off the cuff most desks assume β=1.0 across the sector. The actual β by industry in XLK varies. The industry panel lets you size the macro overlay correctly.


How it works

The peer-β statistics come from the Vasicek shrinkage prior the ERM3 engine uses internally to stabilize per-stock β estimates. The model already has to compute industry peer means and variances to shrink each stock's raw β; the industry-panel endpoint exposes those intermediate aggregates as a data product instead of consuming them internally.

What used to be "what's the typical β for this industry?" — a question that required holding the whole universe in pandas — is now a single HTTP call returning ~72 industries × 3 levels × 4 metrics. Under 2 KB on the wire.

from riskmodels import RiskModelsClient
client = RiskModelsClient.from_env()

# Industries by subsector dispersion, today
df = client.get_industry_panel(level="subsector", min_peers=20, as_dataframe=True)
df.nlargest(10, "beta_variance")[["fs_industry_code", "beta_mean", "beta_variance", "n_companies"]]

Where it matters

  • Macro PMs sizing sector overlays with the right per-dollar β per industry.
  • Sector rotators tracking month-over-month change in beta_mean to surface quiet rotations the aggregate ETF flattens.
  • Single-name long/short books using beta_variance as a dispersion-regime indicator — high within-industry variance is when stock-picking gets paid.
  • AI agents answering "what's the typical β for this slice?" without looping get_metrics over 30 names and reconstructing the aggregate by hand.

The principle

Sector ETFs are summaries. Industries beneath them are structure. RiskModels publishes the structure as a first-class data product, not a derivation.

Try the industry panel on the API → · Full endpoint docs →

Download PDFPublication-quality, formatted for offline reading.
Cite this· 2026

BibTeX for reference managers. Markdown for notes, blogs, or internal memos.

Working paper — not peer-reviewed. Replication or comments: conrad@bwmacro.com

Empirical census data as of 2026-05-27 (month-end evaluation grid).

Subscribe to the Quarterly Attribution Review.

Built around the SEC disclosure cycle — see the SEC Filing Calendar for upcoming 13F / 10-K / N-PORT deadlines.

By registering, you agree to receive technical factor research and API deployment logs. RM-Registry-2026. Privacy Policy.

RiskModels ecosystem

Research here. Reproduce through the API. Operate in the web app.

RiskModels.org stays the credibility layer: methodology, proof, and exhibits. Product links are kept contextual so the research remains the primary object.

Research

RiskModels.org

Methodology, article series, and public exhibits for institutional review.

Read the research

API

riskmodels.app

REST API, SDKs, CLI, and MCP-ready endpoints for reproducible decomposition calls.

Open API docs

Dashboard

riskmodels.net

Web application surface for portfolio workflows, dashboards, and authenticated product use.

Open web app
Technical one-pagerDownload PDF

RiskModels.org

A research surface for hierarchical orthogonal decomposition, variance attribution, and allocator-grade risk measurement. Operational APIs and developer workflows live at riskmodels.app.

Subscribe to the Quarterly Attribution Review.

Built around the SEC disclosure cycle — see the SEC Filing Calendar for upcoming 13F / 10-K / N-PORT deadlines.

By registering, you agree to receive technical factor research and API deployment logs. RM-Registry-2026. Privacy Policy.

Sign inHomePrimerWorkspaceResearchLedgerReferencesAboutMethodology noteOne-pagerAPI docsWeb appContactStatusRSS
RiskModelsResearch/Workspace/API