HomeDashboardChartsResearchPersonsBubble MapMethodologyGlossaryGlobe

Cross-sectional analysis — dispersion, relative value, and the common factor

Computed 2026-06-10 by models/graph/cross_section.pydata/cross_section.json. Rendered on docs/charts.html#xsec and the dashboard. The computation is fact (re-runs from the cached data); the diversification reading is a labeled interpretation. Not used in the formal proofs.

Most of the charts elsewhere are time-series (one rate through time). This block is cross-sectional: at each moment it compares the whole cross-section of segments — every credit-rating bucket, every developed sovereign, every muni state — and asks three questions the desk literature asks:

  1. How dispersed is the cross-section (and is that compressed or stretched vs its own history)?
  2. Which segments are rich or cheap vs their own trailing history (relative value)?
  3. How much of the co-movement is one shared factor (the common-factor / PC1 share)?

It runs over four cross-sections, in the order requested.

Method (and why)

For each time-series cross-section we compute, on a common monthly date grid:

Literature anchors. Collin-Dufresne, Goldstein & Martin (2001), The Determinants of Credit Spread Changes (J. Finance 56(6)) found that monthly credit-spread changes are dominated by one common systematic factor the usual structural variables (leverage, vol, rates, slope) don't explain. Cross-sectional spread dispersion is a standard stress/credit-cycle gauge; sovereign-yield dispersion across a bloc is a fragmentation gauge; z-score/percentile vs own history is desk-standard relative value.

Results (2026-06-10 snapshot)

Cross-sectionSegmentsAvg pairwise corrPC1 shareDispersion now
US corporate credit (OAS rating ladder)50.8891%elevated
Developed sovereign 10Y80.6370%mid-range
Municipal (per-state/quality)40.4770%compressed
Corporate breadth by tier (FINRA TRACE)30.8187%compressed

Bank cross-section (FDIC, 194 institutions). Each bank is z-scored against its peers on three axes — HTM loss/equity, uninsured-deposit %, CRE/Tier-1 — and a composite z ranks system vulnerability with a percentile. The cross-sectional standard deviation of HTM holes ≈ 7.5 pp of equity: the hidden losses are highly unequal across the system (the SVB lesson — the average is benign while the tail is not).

Funding-graph connectors. The cross-layer connectors are re-scored with a bridge_score = z(degree) + z(distinct neighbor-sectors) + 0.5 if the node spans both the financial and structural layers — surfacing the structural keystones that tie the proven financial core to the surrounding webs.

Unified snapshot. Every time-series segment is z-scored vs its own history so credit, sovereign, muni, and breadth read on one scale, ranked from most- to least-stressed.

Where the data disagrees with the literature

Mean-variance portfolio theory says holding many different credits diversifies idiosyncratic risk away. When PC1 explains ~91% of the cross-sectional variance, that diversification is illusory at the system level — the segments are one trade. That is the empirical agreement with the project's machine-checked self-marked-value result (models/z3/self_marked_value.py, U1–U4): the gaps across the four self-marked asset classes correlate under a common factor, so there is no netting, and carrying value is forced to converge on a forcing event. The cross-section is not a portfolio; it is a single position wearing many labels.

Reproduce

python3 models/graph/cross_section.py (pure stdlib; recomputes from data/fred_monthly.json, data/yahoo_monthly.json, data/tape_trace.json, data/bank_exposure.json, data/graph.json). Wired into run_all.sh and scripts/new-research.sh. Full charts, heatmap, and tables: docs/charts.html#xsec.

← Research index · structured data: macro-cross-sectional-analysis.json · macro-cross-sectional-analysis.md