The Fundamental Core

How the macro read is built.

Nine steps from public data to a published read, and an honest list of what it cannot do. We describe the logic, not the weights.

Where the data comes from

Official providers only, all free and public.

United States
FRED (St. Louis Fed), BLS, BEA, New York Fed (SOFR), EIA
Daily to monthly, as each office publishes
Euro area and UK
ECB, Eurostat, Bank of England, ONS
Daily rates, monthly and quarterly releases
Japan, Canada, Switzerland, Australia
Bank of Japan, Ministry of Finance Japan, Bank of Canada, Statistics Canada, Swiss National Bank, Reserve Bank of Australia
Daily yields and policy rates, monthly releases
Cross-country
IMF, OECD, World Bank, BIS
Monthly to annual
Risk and positioning
Cboe (VIX term structure), CFTC (Commitments of Traders), LBMA (gold fixings)
Daily closes; positioning weekly
01 / 09

Data inputs

Public, free sources, mostly official.

Inputs come from public, free sources, mostly official: central banks, statistics offices and international bodies, plus a few market-data publishers such as Cboe, CFTC, LBMA, EIA and the New York Fed. There are no paid feeds. The calendar's consensus figures come from a public aggregator.

The engine refreshes twice a day. Most inputs move far less often than that, and some move once a quarter, so a refresh is not the same as new information. The freshness card below says what we do about that.

02 / 09

Normalisation

Every driver is ranked against its own history.

Raw readings are not comparable: an inflation rate, a rate differential and an employment change live on different scales. Each driver is turned into a percentile rank against its own past, then mapped onto a common scorecard from -10 to +10, where positive leans long on the currency.

Two views of each series are compared, a full-history window and one with shock periods removed. When they disagree by a wide margin, the driver is flagged unreliable and scored on the shock-removed view instead of the full-history one. It keeps its usual weight, and the flag is shown in the scorecard notes.

Drivers that tend to move together, such as inflation and money supply, are merged into one composite so the same signal is not counted twice.

03 / 09

Regime rule and multiplier

The risk backdrop is read first.

Volatility, credit spreads, equity momentum and how tightly different asset classes are moving together (cross-asset correlation dispersion) are combined into a single risk reading, which places the market in one of three states: risk-on, transition, or risk-off.

Outside risk-on, the engine reduces its conviction multiplier on every new read. In risk-off it also leans toward the safe-haven currencies (US dollar, Japanese yen, Swiss franc) whatever their standalone fundamentals say. The fundamentals are only trusted at full size in a stable regime.

04 / 09

Structural and tactical legs

One scorecard, run twice.

The structural leg (about three months) leans on slower, lagging measures such as employment and money supply. The tactical leg (about one month) leans on leading measures such as growth surveys and rate momentum.

The two legs are built from nearly the same drivers with slightly different emphasis, so they usually agree, and the gap between them is small. We show both, and we do not present them as independent opinions.

05 / 09

Endogenous and exogenous drivers

Home economy and the other side of the pair.

Endogenous drivers describe a currency's own economy: inflation, growth and employment.

Exogenous drivers describe how that economy stands against the other side of the pair and against the wider market: the interest-rate differential, relative employment and equity conditions. The two pools are blended explicitly into one score.

Commodity currencies (AUD, NZD, CAD) get a documented exception: equity conditions carry almost no weight for them. Funding currencies (JPY, CHF) are handled through the risk regime instead: in risk-off the engine leans toward them, as described in the regime step.

06 / 09

Currency convergence

A view has to show up across the pairs.

The engine scores the whole G10 matrix, then asks, for each currency, whether its pairs agree. A currency whose pairs mostly point the same way has convergence behind the read.

A currency that scores strong against some pairs and weak against others is marked divergent. A divergent read is a reason for caution, not a headline.

07 / 09

Invalidation: what would change our mind

A fundamental stop, not a price stop.

Each read carries the condition that breaks it. If a heavily weighted driver turns sharply against the thesis within a single data cycle, the thesis is treated as invalidated.

The test compares the latest observation's percentile with the observation before it, using only data already available at the time. It is deterministic: the same inputs always give the same answer.

08 / 09

Data freshness and the Stale rule

How old is the information under a number?

Each driver has an age. A monthly series that is a few weeks old is not stale, it is monthly, so it keeps full credit through a grace period that depends on how often the series publishes. Beyond that, credit fades gradually toward none.

Rows show the age of the stalest driver and the age averaged by weight, because the two say different things. The published confidence is lowered when the information underneath is old.

Separately, if the engine has not published a new version within its allowed window, the whole workspace shows a Stale banner stating how old the research is, and it should be treated as out of date.

09 / 09

The sealed, timestamped record

Every published read is recorded with its time.

Reads are appended to a ledger in which each entry carries the hash of the one before it. Batches are opened, filled and sealed, and every entry is timestamped when recorded.

Entries cannot be edited in place without breaking the chain, and a verifier checks the chain end to end, including that no scheduled slot is missing. The point is simple: the record shows what we said and when we said it.

Known limits

  • Free public data is slow. Some inputs arrive monthly or quarterly, and a few are weeks old by the time they publish.
  • The engine stores the current, revised version of each series. When a past figure was later revised, the invalidation test sees the revised number, not the one first printed.
  • Cut-offs and freshness constants are chosen, not fitted to history. We treat them as judgment calls open to review.
  • Structural and tactical legs are close cousins, as described above. Agreement between them is weak confirmation at best.
  • Positioning data is weekly and published with a delay, so it describes the crowd as it was, not as it is.
  • A score describes macro conditions. It says nothing about entries, exits, position size or your own risk.

Research and education, not financial advice. Trading carries substantial risk. Read the Risk Disclosure, or go back to the Fundamental Core.