Macro Terminal is a macro research terminal built on three connected analytical layers plus a separate interpretation surface. The first layer scores how tight or loose US dollar liquidity is. The second layer combines that liquidity read with three other macro pillars to classify the prevailing macro regime. The third layer translates the regime into cross-asset directional research stances, each carried with an explicit evidence-quality grade. Alongside these sits the Core Theme board — a display-only interpretation layer that reorganizes the same indicator universe into themed buy-side checklists without touching any score. This document describes the full methodology: what each layer reads, how it computes, which thresholds govern its output, and where the design deliberately chooses transparency over apparent precision.
1. Overview — The Terminal as Connected Layers
| Layer | Question answered | Output |
|---|---|---|
| Layer 1 — Dollar Liquidity Index (DLI) | "How tight or loose is US dollar liquidity right now?" | Composite DLI score, regime band, tier sub-scores, key drivers |
| Layer 2 — Macro Regime | "What macro environment does the liquidity and macro backdrop indicate?" | Regime label, state vector, watch tags, conviction |
| Layer 3 — Asset Mapping | "What cross-asset directional bias and evidence quality does the current regime imply?" | 16-card bias/conviction grid, evidence quality, pending evidence gaps |
| Interpretation layer — Core Theme board | "How should a buy-side analyst check each theme systematically?" | Themed buy-side checklists with per-indicator usage notes |
The three layers flow in sequence. The DLI produces a scored liquidity read; that read, combined with other macro pillars, produces a regime; the regime drives cross-asset mapping. The Core Theme board reorganizes the existing indicator series into thematic checklists and sits outside the scoring pipeline — it adds interpretation without changing any score or regime output.
This separation is the central architectural decision. Scoring and interpretation are kept apart so that adding new ways to read the data can never silently change what the data says.
2. Layer 1 — Dollar Liquidity Index (DLI)
2.1 What it reads
The DLI aggregates indicators across four domains:
- Liquidity / Reserves (Policy) — the size and composition of the Fed balance sheet and reserve facilities
- Funding / Plumbing — short-end funding market stress (SOFR–IORB spread, Standing Repo Facility usage)
- Credit / Intermediation — bank lending standards and credit spread conditions
- Market Price / Risk — cross-asset market risk signals (VIX, broad dollar index, real yields)
2.2 Indicator tiers and weights
The scoring universe contains 10 active scoring indicators, organized into four tiers. Context-only indicators are tracked and displayed but carry no weight.
| Tier | Label | Scoring indicators | Tier weight |
|---|---|---|---|
| A | Policy / Reserves | Fed Balance Sheet (WALCL), TGA, ON RRP | ~65% |
| B | Funding / Plumbing | SOFR–IORB spread, SRF usage | ~10% |
| C | Credit / Intermediation | Bank Cash Buffer, HY OAS spread | ~5% |
| D | Risk / Price | VIX, Broad Dollar Index, 10Y Real Yield (TIPS) | ~20% |
Within Tier A, the 65% tier weight is distributed roughly evenly across the three indicators — approximately 0.217 each.
The weighting expresses a deliberate view: dollar liquidity is primarily a policy and reserves phenomenon. Funding stress, credit conditions, and market risk pricing matter, but they are treated as confirming or amplifying channels rather than as the primary driver. Tier D carries a meaningful 20% because market-price signals react fastest and provide the earliest read on stress; Tier C is deliberately small because credit-standard data arrives infrequently and lags.
Context indicators (not scored): Net Liquidity (= Fed Balance Sheet − TGA − ON RRP) and M2 Money Supply are tracked and displayed but carry zero weight in the composite. They are shown because analysts expect to see them and because they help explain the composite's movement, but they are excluded from scoring to avoid double-counting components that are already scored individually.
2.3 Scoring mechanics
Step 1 — Robust z-score. For each indicator, the terminal computes
z = (value − median) / (MAD × 1.4826)
over a rolling 10-year window, winsorized to the range [−4, +4]. MAD is the median absolute deviation; the 1.4826 factor rescales MAD to be consistent with a standard deviation under normality.
The median/MAD approach is used in place of mean/standard deviation because macro series contain structural breaks — quantitative easing programs, facility launches, crisis-period spikes. A mean-and-standard-deviation z-score lets a single 2020-scale episode permanently distort the scale of every subsequent reading. Robust statistics keep the reference frame anchored to the typical regime rather than to the tails. Winsorization at ±4 is a second guardrail: extreme readings still register as extreme, but a single indicator cannot dominate the composite through an unbounded value.
Step 2 — Direction normalization. Indicators where rising means tighter (TGA, ON RRP, VIX, HY spread, and similar) use the raw z-score. Indicators where falling means tighter (Fed Balance Sheet, Bank Cash Buffer) have their z-score negated. After normalization, a positive z always means "tighter" for every indicator, so the composite has a single unambiguous sign convention.
Step 3 — Composite.
composite = Σ (z_i × weight_i)
summed across all 10 scoring indicators, renormalized on days when data is missing. Renormalization means a stale or absent series reduces the effective indicator count rather than being silently treated as zero — a zero would falsely read as "neutral" when the correct statement is "unknown."
Step 4 — Regime classification. The current composite is ranked within the rolling 5-year history of composite values and assigned one of four bands:
| Percentile of composite | Band |
|---|---|
| ≤ P20 | Loose |
| P20 – P50 | Mildly Loose |
| P50 – P80 | Mildly Tight |
| ≥ P80 | Tight |
Ranking against a rolling history rather than against fixed absolute thresholds is intentional. The absolute level of reserves, balance sheet size, and facility usage has changed by orders of magnitude across the past two decades; a fixed cut-off would be obsolete within a few years. A percentile band answers the question actually being asked — "tight or loose relative to recent experience."
Step 5 — Momentum. Momentum is composite_today − composite_7d_ago. Above +0.15 reads as deteriorating; below −0.15 reads as improving; in between reads as stable. The dead band exists so that ordinary day-to-day noise does not generate a directional call.
Step 6 — Concentration. Concentration is the share of the top-3 absolute contributions in total absolute contributions. High concentration means the signal is being driven by only a few indicators. This is published alongside the score rather than folded into it, so the reader can distinguish a broad-based tightening from a single-facility artifact.
3. Layer 2 — Macro Regime
3.1 The four-pillar state vector
The Macro Regime layer evaluates a four-pillar state vector. Each pillar aggregates a defined set of indicators and receives a direction signal.
| Pillar | Label | Indicators included |
|---|---|---|
rates_liquidity | Rates & Liquidity | 2Y yield, 10Y–2Y curve, term premium, bank reserves, T-bills average rate |
credit_stress | Credit Stress | NFCI, HY spread, SLOOS tightening, C&I loans YoY, OFR funding |
inflation_energy | Inflation & Energy | Services CPI YoY, median CPI annualized, trimmed PCE YoY, 5y5y breakeven, crude inventory |
growth_labor | Growth & Labor | GDPNow, initial claims, unemployment rate, housing starts, building permits |
3.2 Pillar signal thresholds
A pillar is classified as pressure (tightening / negative signal) when its net indicator z-score passes pressureZ = 0.75, and as support (loosening / positive signal) when it passes supportZ = −0.75. At the pillar-score level, the corresponding thresholds are pressureNet = 2 and supportNet = −2.
The 0.75 threshold and the ±2 net-score requirement together create a wide neutral zone. A pillar has to move meaningfully, and enough of its member indicators have to agree, before it declares a direction. This trades responsiveness for stability: the regime label is designed not to flip on a single data release.
3.3 Freshness rules
A pillar needs at least 3 fresh indicators to count as eligible. Staleness thresholds vary by native release frequency:
| Native frequency | Considered stale after |
|---|---|
| Daily | 14 days |
| Weekly | 14 days |
| Monthly | 45 days |
| Quarterly | 135 days |
Freshness is an eligibility gate, not a cosmetic label. A pillar that falls below three fresh indicators stops contributing to regime determination rather than contributing a stale reading. The alternative — carrying old values forward — would produce a confident-looking regime built on data that no longer describes the present.
3.4 Regime set
The regime is determined by matching the four pillar signals against the regime definitions. Regimes are evaluated in priority order, and the first match wins.
| Regime | Label | Required pillars | Exclusion (invalidation) condition |
|---|---|---|---|
stagflation_risk | Stagflation Risk | inflation_energy = pressure AND growth_labor = pressure | — |
growth_scare | Growth Scare | growth_labor = pressure AND credit_stress = pressure | unless inflation_energy = pressure |
goldilocks | Goldilocks | inflation_energy = support AND growth_labor = support | unless credit_stress = pressure |
reflation_watch | Reflation Watch | inflation_energy = pressure | unless growth_labor = pressure |
disinflation | Disinflation | inflation_energy = support | unless growth_labor = pressure |
neutral | Neutral | fallback when no other regime matches | — |
Two design points are worth drawing out. First, the ordering is not arbitrary: the two-pillar regimes are tested before the single-pillar regimes, so a state that satisfies both Stagflation Risk and Reflation Watch resolves to the more specific — and more consequential — label. Second, each single-pillar regime carries an explicit invalidation condition. Reflation Watch is invalidated when growth is under pressure, because rising inflation with deteriorating growth is stagflationary rather than reflationary. Encoding invalidation conditions in the definition, rather than leaving them to the reader, keeps the labels internally consistent.
neutral is a genuine outcome, not an error state. Macro data frequently does not point anywhere in particular, and the framework says so rather than manufacturing a call.
3.5 Conviction
Conviction is a separate axis from the regime label. It answers "how much of the evidence base is actually supporting this classification?"
| Level | Min eligible pillars | Min clear pillars | Min freshness ratio | Max counters |
|---|---|---|---|---|
high | 3 | 3 | 0.75 | 1 (and excludes neutral) |
medium | 2 | 2 | 0.60 | — |
| (low / unconfirmed) | below the medium thresholds |
high conviction requires three eligible and three clear pillars, a freshness ratio of at least 0.75, and no more than one countering pillar; the neutral regime is explicitly excluded from high conviction. Separating conviction from the label means the terminal can report a regime and simultaneously report that the evidence for it is thin — a combination that a single confidence-blended score cannot express.
3.6 Watch tags
Beyond the primary regime label, the macro-regime output emits watch tags. The soft_patch_watch tag is issued when leading indicators suggest a moderation in growth that does not yet qualify as a full regime change to Growth Scare.
Soft Patch Watch is a watch tag, not a primary regime. It co-exists with the current primary regime label rather than replacing it. This is the mechanism by which the framework registers an emerging deterioration without prematurely reclassifying the environment — the alternative would be either an over-eager regime flip or a silent early warning that never surfaces.
4. Layer 3 — Asset Mapping
4.1 The 16-card framework
Asset Mapping translates the current macro regime into directional research views across 16 asset cards, grouped by asset class:
| Group | Cards |
|---|---|
| Rates | front-end rates, duration, curve steepener |
| Equity | S&P 500, growth / NDX, small-cap cyclical |
| Commodity | gold, industrial copper, crude oil, agriculture, softs |
| FX | USD, EUR, JPY, EM / China |
| Credit | HY credit |
Each card specifies:
- Basis type —
price_macro,market_priced,macro_only, orunconfirmed; this indicates how reliably the regime translates into a directional view for that asset - Confirming indicators — live evidence series that support the bias
- Pending indicators — gaps where evidence has been identified as methodologically desirable but is not yet connected to production data
The basis type is the honesty control on the mapping. An asset whose behavior is well-explained by macro conditions and price dynamics (price_macro) is not treated the same as one where the macro linkage is theoretical only (macro_only) or unestablished (unconfirmed).
4.2 Bias and conviction output
For each regime × asset card intersection, the mapping matrix defines a bias (positive / negative / neutral) and a conviction (high / medium / low).
The live conviction output is additionally capped by the evidence quality and freshness rules inherited from Layer 2. Weak evidence prevents a high-conviction claim even when the matrix entry would otherwise allow it. The cap is one-directional: evidence can only reduce conviction, never inflate it.
Each asset card exposes:
matrixview — the base regime × asset bias entryeffectiveview — the final displayed view after applying evidence-quality caps, neutralizing overrides, and pending-gap metadatacapReasons— explanations for why conviction was capped below the matrix entryevidenceQuality.level—strong,adequate,thin, orpending
Publishing both the matrix and effective views is deliberate: the reader can see what the framework would have said and what the current data actually permits it to say, along with the reason for the gap.
4.3 Evidence quality and pending gaps
Evidence quality reflects how many of a card's confirming indicators are live and fresh, versus pending or stale. Asset cards additionally track pending gaps — indicators known to be methodologically desirable but not yet connected to production data.
These gaps are surfaced in the interface as structured metadata rather than silently omitted. A card that lacks an important confirming series should look incomplete, not look complete-but-quiet. Making the absence visible is what allows a reader to discount the card appropriately.
Coverage expands over time as new evidence series are connected — for example, credit-impulse series, real-effective-exchange-rate splits across major currencies, positioning data for metals, and emerging-market FX baskets. Each addition raises evidence quality on the cards it feeds rather than changing the mapping logic.
4.4 Research stance — not portfolio or trade guidance
Asset Mapping language describes research stance and evidence confidence. It does not provide portfolio, trade, or allocation guidance.
The terms "positive", "negative", and directional bias are research-stance labels describing how the current macro regime has historically related to an asset class. They do not constitute investment recommendations, trading signals, position sizing, or specific investment advice. See Section 6 for the full scope statement.
5. Interpretation Layer — The Core Theme Board
5.1 Role and positioning
The Core Theme board is a display-only interpretation layer that sits outside the three scoring layers. Where the three layers answer "what is the current state, and what does it imply for assets?", the Core Theme board answers a different question: how should a buy-side analyst systematically check each theme?
It reorganizes the existing indicator series into 10 themed buy-side checklists, each containing:
- A module title and a buy-side note explaining how to use the theme
- Per-indicator usage notes contextualizing each series within its theme
- A three-state slot status for every indicator
The Core Theme board does not affect scoring, does not modify the macro-regime output, and does not enter any pillar or conviction calculation. It is a purely additive surface. This constraint is the reason the board can be extended freely: a new checklist, a reworded usage note, or a re-grouped theme carries zero risk of moving a published score.
5.2 The themes
Seven themes are live:
| Theme | Title | Scope |
|---|---|---|
| 1 | Front-End & Liquidity Check | Policy corridor (EFFR / SOFR / IORB), short-end stress, T-bills rate, public debt, Fed balance sheet, reserves / RRP / TGA, rate-cut expectations |
| 2 | Duration & Curve Check | 2Y and 10Y yields, 10Y–2Y spread, 10Y–3M spread, term premium |
| 3 | Equity Risk Check | Housing starts, building permits, new orders, NFCI, SLOOS versus HY OAS, bank credit, HY–IG spread comparison |
| 4 | Growth Quality Check | GDPNow, PCE price, CPI versus payrolls, average hourly earnings, initial and continuing claims |
| 5 | FX & Non-US Check | Broad Dollar Index, EUR/USD, real effective exchange rates, external-sector revisions |
| 6 | Inflation & Gold Check | Headline and core CPI, services CPI, core PCE, trimmed PCE, median CPI, gold co-resonance indicators |
| 10 | Systemic Stress Check | OFR Financial Stress Index total and sub-components (credit / funding / volatility / safe-haven), VIX, speculative positioning and crowding overview |
Three commodity themes — Energy (7), Metals (8), and Agriculture / Softs / Livestock (9) — complete the ten-theme design and are not yet live. They depend on multi-dimensional positioning data that would let each theme carry a proper crowding read rather than a single headline series; the same dependency governs the positioning slots inside Themes 2 and 10.
5.3 Three-state slot semantics
Every indicator slot in a Core Theme module carries exactly one of three states:
| State | Meaning |
|---|---|
| live | The series is in the indicator registry and has persisted data; it is charted in real time |
| awaiting data | The series is registered but no data has landed yet; displayed as an "Awaiting data" placeholder |
| pending | The indicator is not yet connected to the production pipeline; displayed as "Pending data" with a status badge |
The distinction between "awaiting data" and "pending" is not cosmetic. "Awaiting data" means the plumbing exists and the series will populate; "pending" means the connection itself has not been built. Collapsing the two would hide which gaps are near-term and which are structural.
The Core Theme board consumes only existing series endpoints. It creates no new data pipelines and writes no series data of its own. Pending slots reuse the same status taxonomy already used for Asset Mapping evidence — pending_source, external_dataset_pending, scaffold, and similar — so that a gap means the same thing wherever it appears in the terminal.
5.4 Localization
The Core Theme board is fully bilingual. Buy-side notes and per-indicator usage notes are populated in both English and Chinese, with no placeholder fallbacks in either locale, and the layout is verified on both desktop and mobile widths in both languages.
6. Scope and Disclaimer
6.1 Display and research purposes only
This terminal and all its outputs — the DLI composite score, regime classification, asset bias indicators, evidence quality assessments, and Core Theme board themed checklists — are provided for display and research purposes only.
- The DLI score and regime labels are quantitative summaries of publicly available macro data. They are not forecasts.
- Asset Mapping bias and conviction outputs describe research stances derived from historical regime patterns. They do not constitute investment recommendations, trading signals, portfolio advice, or solicitations to buy or sell any security or asset.
- Core Theme board buy-side notes and usage guidance describe how to interpret indicator behavior within a thematic framework. They are educational and analytical in nature, not actionable investment advice.
6.2 Data sources and refresh cadence
All underlying data is sourced from public or third-party providers, including FRED / St. Louis Fed, the US Treasury Fiscal Data API, the NY Fed Markets API, Yahoo Finance, USDA WASDE, PBOC aggregate financing statistics, and similar public sources. Data is refreshed every six hours via an automated pipeline. Individual series have different native update frequencies — daily, weekly, monthly, or quarterly — and may lag their official release dates.
6.3 Accuracy and reliability
Past relationships between macro regimes and asset returns do not predict future outcomes. The terminal's evidence-freshness tracking and pending-gap indicators reflect known data limitations transparently rather than suppressing them. Evidence quality levels (strong, adequate, thin, pending) are internal assessments based on data availability, not guarantees of predictive accuracy.
Use at your own risk.