THE MACRO SENTINEL Free Global Macro Dashboard · regime-aware research

Methodology

The dashboard is free for everyone. This page is two things: a reader's guide for the common investor (how to read each pillar, what the bands mean, what a phase change implies) and the discipline behind it (walk-forward, pre-registration, public ledger, what we don't do). Snapshot as of .

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

Cycle (overlay, not a pillar)

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

Pillar 1

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.

Pillar 2

Reserves

Geopolitical Alpha Index — central-bank gold bid, GPR, real-yield residual. Tracks the post-2022 sovereign reserve diversification away from confiscatable USD claims.

Pillar 3

Dollar System

Three sub-indices: DHI (hegemonic strength), FDI (fiscal dominance), EDP (eurodollar plumbing). Plus the live TIC sovereign-vs-private holder split.

Pillar 4

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.

Pillar 5

Money

Shadow Dollar — stablecoin supply growth, EM penetration (USDT-on-Tron), offshore preference. The non-sovereign Eurodollar in real time.

Pillar 6

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).

Pillar 7

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.

Composite indices

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:

  1. 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.
  2. 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.
  3. 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:

0–30%
BENIGN
below long-run norm — pillar is calm
30–70%
NORMAL
around long-run norm — typical
70–90%
ELEVATED
above long-run norm — pillar is firing
≥ 90%
STRESS
extreme — top decile of history

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:

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:

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

What we do log

Caveats


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.

This methodology page is itself a living document. As pillars get refined, models get killed, and new data substrates come online, this page updates to reflect the current discipline. The git history is the audit trail.