Methodology & About

The Macro Sentinel is a substrate-driven global macro engine. It reads the world economy through a panel of ~ macro variables ("substrates") across + economies, classifies each one under a pre-registered rule, rolls those classifications into country-level regime reads, and turns the regime reads into a two-layer flagship portfolio: a Strategic Core (broad-ETF book sized by composite regime reads) plus Strata (thematic portfolios sized by sub-thesis conviction). Combined, they produce the Sentindex — published live as a tracked NAV. This page covers what we make and how we make it.

The product

Free

The thesis

The 1991–2020 generic-access global regime — single-pole credit, free trade as default, marginal gold, compute as a global commodity — has been replaced. We're now in a multi-polar, specific-access regime along structural axes that interact in non-stationary ways. No single composite captures it. A panel of substrates, read literally, does.

The methodology is what we sell. The current substrate set is the worked example. When the regime rotates, the substrates rotate with it — pre-registered retirement criteria, all logged publicly.

The substrate model in one sentence

A substrate is a single observable macroeconomic variable with a pre-registered classification rule. Each substrate, every refresh, produces one of a small set of states (e.g. EXPANDING, RISING, TIGHTENING, CRISIS). Those states roll up into country-level regime reads. Those regime reads drive a global trade book. The trade book drives the Sentinel Index NAV.

substrate observation
    ↓  percentile + slope + level computation
substrate state (per pre-registered rule)
    ↓  consensus across substrates in the same country × dimension
country regime read (cycle, inflation, monetary, political)
    ↓  composite engine (BCI, CCMI, Recession Ensemble, Energy, Dollar, Global BCI, GPR)
two-layer portfolio
    ├─ Strategic Core — slot-based ETF sizing from composites
    └─ Strata — thematic portfolios sized basket × conviction
    ↓  regime-dynamic Core/Strata weight blend
Sentindex — flagship tracked NAV

The whole pipeline is deterministic. Same data in, same output. No weights are estimated from in-sample performance. No look-ahead. Every substrate, every rule, every classifier threshold is documented in the Substrate Browser.

Part 1 — Substrates

Definition

A substrate has four required components:

  1. A data source — FRED series, IMF cache, yfinance ticker, Caldara-Iacoviello GPR, defined provider, traceable URL.
  2. A pre-registered rule — how raw values map to a small discrete state vocabulary.
  3. An asset implication — which retail-tradeable instrument the substrate informs, in what direction, on what horizon.
  4. A frequency and release calendar — so we know when its state can change.

A substrate is not a model. It's not a composite. It's not a latent factor. It's one published macro variable, read literally, with a published rule on top.

State vocabularies

Each substrate emits a state from a small, dimension-specific vocabulary:

Vocabularies are intentionally small. The point is to read the regime, not curve-fit it.

Computation per substrate

For each observation, three numbers feed the classifier:

  1. Current value — the latest observation.
  2. 3-month slope — direction of change.
  3. Long-window percentile — where the current level sits relative to its own history. 5-year percentile default; some long-history substrates use 30-year.

Each substrate's pre-registered rule consumes some subset of those three numbers and emits a state. The rule lives in the substrate's JSON file — no buried hyperparameters, no estimated weights.

Part 2 — Country regime reads

Each of 16 countries gets four dimensional reads: Cycle / Inflation / Monetary / Political. The country regime is computed two ways depending on substrate density:

The regime map renders the 16 × 4 grid live. Cells with no registered substrate render as a dash; we don't bluff coverage.

Part 3 — The active trade book

The trade book is generated by four rule families, each reading from substrate state directly:

  1. Substrate firing — a single substrate flips into a stressed state (RISING / SURGE / CRISIS / etc.) and its asset implication fires directly. Most of the book.
  2. Country composite — two or more dimensions of the same country fire stressed states together. Triggers a country-level long or short.
  3. Cross-country pair — two countries diverge meaningfully (e.g. India ACCELERATING vs Mexico CONTRACTING with paired inflation states). Triggers a long-short pair.
  4. Risk-off composite — N countries fire simultaneously on inflation SURGE or political CRISIS. Triggers a market-wide short or vol position.

Each thesis is tagged with: trigger substrate(s), conviction (HIGH / MEDIUM / LOW), direction (long / short / pair / watch), horizon (days), and the mechanism — why the thesis should work. The full active book is paid.

Part 4 — The two-layer portfolio

The Sentindex is constructed from two independent layers that combine under a regime-dynamic weight rule.

Layer A — Strategic Core

A broad-ETF book sized by the composite engine outputs. Each composite drives one or two slots:

Slot Driver Range
US equity (SPY) BCI phase × score 15% (RECESSION) – 60% (EARLY) + 20% QQQ overlay in EXPANSION
Duration (TLT) Recession Ensemble probability ladder 2% – 20%
Hard money (GLD) Dollar Hegemony + GPR Global percentile additives 5% – 12%
Real assets (DBC) Energy Regime phase 0% – 8%
Non-US equity (VEU) Global BCI phase × z-score 5% – 25%
IG credit (LQD) Recession probability ladder 3% – 8%
REITs (VNQ) Recession × BCI joint 0% – 5%
HY credit short (HYG) CCMI flag count 0% to −4%
Sector tilt (XLE / XLI) Energy / Cycle phase 0% – 3%

Slot ceilings sum > 100% then scale proportionally to a 100% gross cap. Monthly rebalance. Walk-forward backtested 2014-01 → 2026-04 (147 months): annual +11.24%, Sharpe 1.35, max drawdown −11.0%, alpha +229 bp/yr vs 60/40.

Layer B — Strata (Living Engine thematic portfolios)

Each Strata portfolio is its own micro-product:

A portfolio's included_in_sentindex flag determines whether it contributes. Conviction → 0 kills a sub-thesis without deleting the spec; conviction → 0 across all sub-theses kills the portfolio. Kill criteria are pre-registered in each portfolio's spec.

Combination — regime-dynamic Core/Strata split

The Core/Strata weight split shifts by BCI phase:

BCI phase Core weight Strata weight
EARLY CYCLE 50% 50%
EXPANSION (score ≥ 0) 55% 45%
EXPANSION (score < 0) 60% 40%
LATE CYCLE 70% 30%
RECESSION 80% 20%

Within the Strata bucket, portfolios are weighted by their average sub-thesis conviction. The Sentindex daily return = core_weight × core_return + strata_weight × Σ(portfolio_share × portfolio_return).

Part 5 — The Sentindex NAV

The Sentindex is a tracked NAV computed daily from the two-layer portfolio.

The Sentindex NAV is the product. The substrate engine + the two-layer architecture is the methodology.

Part 6 — What this is not

Cadence

Job Frequency
Substrate matrix refresh (data pulls + state computation) Nightly
Country regime classifier Nightly
Trade book regeneration Nightly
Strategic Core sizing + NAV Nightly
Strata portfolio NAVs (Living Engine) Nightly
Sentindex combiner (Core + Strata blend) Nightly
Hit-rate scoreboard Nightly
Regime Letter (publication) Bi-weekly
Substack archive sync Every 30 min via cache
Strata conviction updates On signal change

How it's different from most macro writing

Contact

Reply to any Regime Letter you receive. That's the channel.

Every claim on this page can be checked against the underlying data. If you find an inconsistency between this page and the substrate browser, the substrate browser is canonical.
Informational and educational only — you use this site at your own risk. Nothing on The Macro Sentinel is investment, financial, tax, or legal advice. The author is not a registered investment adviser, broker-dealer, or fiduciary, and is not liable for any losses or consequences arising from your use of, reliance on, or actions taken in response to anything on this site. See the Terms for the full disclaimer.