Methodology
Part 1 — How to read this dashboard
The thesis in one sentence
The 1991–2020 regime — generic-access, single-pole credit, free trade as default, gold marginal, compute as a global commodity — is being replaced by a specific-access regime along seven structural axes. Energy, Reserves, Dollar System, Security, Money, Food, and AI / Compute each measure one axis independently. When two or more read elevated together, the regime thesis is live. The Cycle (BCI) sits alongside as the precondition that tells you whether a generic expansion is still running underneath — it's an overlay, not a pillar.
Cycle — the overlay
Business Cycle Index
A 61-indicator dynamic factor model of the US business cycle. Produces a single composite score and a phase label (EARLY CYCLE / EXPANSION / LATE CYCLE / RECESSION). The precondition behind every Repricing read — every pillar score has to be read against the cycle state it's printed in.
The seven Repricing pillars
Energy
Three-component composite via the Kilian (2009) decomposition: oil-supply shocks, copper/gold ratio (demand), OVX (precautionary). The "specific-access" lens on global energy prices.
Reserves
Geopolitical Alpha Index — central-bank gold bid, GPR, real-yield residual. Tracks the post-2022 sovereign reserve diversification away from confiscatable USD claims.
Dollar System
Three sub-indices: DHI (hegemonic strength), FDI (fiscal dominance), EDP (eurodollar plumbing). Plus the live TIC sovereign-vs-private holder split.
Security
Defense vs net-interest as % of GDP — the fiscal room left for the security state. Defense ETF (ITA) vs SPX as the market's read of defense demand.
Money
Shadow Dollar — stablecoin supply growth, EM penetration (USDT-on-Tron), offshore preference. The non-sovereign Eurodollar in real time.
Food
Eight-component ag/input pulse — wheat, maize, soy, barley, palm/sunflower/rapeseed oils, fertilizer headline. 3-month forward food-CPI nowcast (corr +0.68).
AI / Compute
Six-axis pulse — capex, concentration, power, research, data-center real estate, labor. The 2024+ AI build-out is the opposite of the 1991–2020 generic-access internet: capex concentrating into a handful of hyperscalers, fabs, grids, and an export-controlled tiering.
Recession Ensemble · Global BCI
Cross-pillar reads. Recession Ensemble combines Sahm + Estrella-Mishkin + INDPRO classifiers. Global BCI extends Cycle to non-US economies.
How indices are scored
Every index on the dashboard goes through the same three-step transform:
- Pull each component series at its native cadence (daily prices, monthly macro, quarterly TIC, etc.) — from FRED, ALFRED, BLS, BEA, Treasury, IMF, WGC, USDA, and others. All sources are free public data.
- Standardize via expanding-window z-score. For each component at each date, compute
(value − running mean) / running std, where the running statistics are computed only on history up to that date. Min 24-36 observations before a z-score is published. This is the walk-forward discipline — no point in the chart was scored using future information. - Composite = equal-weight average of component z-scores. No curve-fit weights. (Where it makes pillar sense, components are sign-flipped so positive z always means "more of what the pillar is measuring.")
The composite is then percentile-ranked against its own expanding history to produce the 0–100 score you see in the percentile band.
Percentile bands — what they mean
Each pillar publishes a percentile (0–100) of its current composite z-score against its full historical distribution. The bands are uniform across pillars:
A pillar at the 70th percentile means the current composite is higher than 70% of all historical readings going back to the pillar's start date. Higher = more locality fracture. Note: each pillar uses its OWN history, not a cross-pillar normalization. So Reserves at 90th percentile and Dollar System at 90th percentile are equally "stretched within their own context" — but they're measuring different things.
Reading a regime change
A pillar moving between bands is the signal. Three patterns to watch:
- BENIGN → NORMAL → ELEVATED in 6 months: a pillar is regime-shifting. Don't react on the first crossing; wait for hysteresis (2 consecutive readings above the threshold).
- Two pillars above 70 simultaneously: cross-pillar firing. The locality thesis is live across multiple axes — historically this is when the regime read carries the most weight.
- STRESS while Cycle is RECESSION: pillar elevation during a recession is a different read than during expansion. Cycle is the precondition; same pillar score means different things in different cycles.
The dashboard publishes the live phase label on every pillar page. Phase changes are also recorded on the Regime Alerts page when they happen.
The Calibration Ledger
We publish point-forecasts on a public ledger and score them against actuals as the actuals arrive. Every Inflation, Wage, and INDPRO nowcast is logged with its as-of date, target date, prediction, and (when settled) the actual. The track record is the product. See Calibration Ledger →.
If the ledger ever stops being good, you'll see it in the residuals on the page itself — we don't hide failures.
Part 2 — The discipline
Walk-forward, always
Every chart on this site is computed using only history available at each point in time. Specifically:
- Composite z-scores use expanding-window mean and standard deviation.
- Macro series are pulled from ALFRED first-release vintages where available — the value as it was reported, not as it was later revised.
- Phase classifications, regime labels, and percentile bands are all walk-forward.
This isn't decorative; backtests using point-in-time data tell you what an investor would actually have seen. Backtests using revised data tell you what a clairvoyant would have seen.
Pre-registration
Every model — pillar composites, nowcasts, regime classifiers — is declared in writing before the model touches data. Acceptance gates are fixed ex ante. Rejected proposals are kept in a public log. The discipline rule is: we don't reverse-engineer the rules to make a failing run pass.
The pre-reg lives in docs/*_pre_reg.md files alongside the code. Anyone can read them.
No curve-fit weights
Composites are equal-weight averages of standardized components, not regression-tuned blends. The composite_v7 line of work was killed precisely because IC-fitted weights had a +0.42 in-sample bias. The food pillar uses equal weights; the Reserves pillar uses equal weights; every pillar uses equal weights, by design.
Where a forecast does need fitted coefficients (the food-CPI nowcast OLS, the inflation-regime classifier), the coefficients are trained on a locked train window (e.g., 2003–2017 for food) and applied to all dates including OOS. The OOS residuals are visible to you on the page itself, not concealed by re-fitting.
Published code, open data
Every fetcher, every transform, every chart on this site is from public free data. No proprietary feeds. No Bloomberg terminal. The backend is bci_compute/; the data scripts are site/src/data/*.json.py. Same code, same numbers, every time.
What we don't do
- No discretionary overrides of the model output. A pillar reading is what the math returns.
- No curve-fit weights in pillar composites.
- No private data dependencies — if a chart can't be reproduced from free public sources, it doesn't ship.
- No quiet revisions. Methodology changes are dated and published. Killed model versions are kept in a public log alongside successful ones.
What we do log
- Every model version we tried, including the kills (CCI v1 / v2 / v3, Composite v1–v9, etc.). Rejected work is in
docs/*_kill_log.md. - Every nowcast prediction on the Calibration Ledger.
- Every regime alert when a phase changes.
Caveats
- Free-data only. Some structural lenses (granular options vol surfaces, Bloomberg revenue-by-geography, real-time supply-chain mapping) sit behind paid data. We note where free data is the binding constraint.
- Anonymity during build phase. The author is pseudonymous while audience scales. Acquisition or reveal is a future decision; for now, the work speaks.
- Not investment advice. The dashboard is research output. Sizing and instrument selection on any reader's real book is the reader's responsibility.
Sources
| Pillar / index | Primary data sources |
|---|---|
| BCI · Cycle | FRED ALFRED (61 indicators), Conference Board CFNAI for cross-validation |
| Energy | EIA (Brent/WTI/Henry Hub), Yahoo Finance (^OVX), FRED (HG/GC/copper) |
| Reserves | Caldara-Iacoviello GPR (matteoiacoviello.com), FRED (DFII10), WGC quarterly Gold Demand Trends, IMF COFER |
| Security | FRED (FDEFX, A091RC1Q027SBEA), Yahoo (ITA, ^GSPC), SIPRI Military Expenditure, USASpending.gov |
| Dollar System | FRED (DTWEXBGS, RBUSBIS, GFDEBTN, real-yield series, SOFR/EFFR/HY OAS), Treasury TIC Major Foreign Holders |
| Money | DefiLlama (stablecoin supply by chain/issuer), Treasury TIC, Tether/Circle attestations |
| Food | FRED (8 IMF/BLS commodity series + fertilizer + protein PPI), USDA PS&D, World Bank reserves, IFPRI restrictions |
| Recession Ensemble | FRED (UNRATE, T10Y3M), Sahm + Estrella-Mishkin + INDPRO classifiers |
| Sanctions Watch | US Trade.gov Consolidated Screening List, Treasury OFAC SDN |
| CBDC Tracker | Atlantic Council CBDC Tracker via Airtable |
| Uncertainty | Baker-Bloom-Davis EPU (FRED), Caldara-Iacoviello TPU + GPR (matteoiacoviello.com), WUI (worlduncertaintyindex.com) |
All data is refreshed nightly. The full pipeline is in scripts/refresh_all.py and scripts/alt_data/run_all_alt_data.py.