Trading with the data

Economic Surprises: When the Print Actually Matters

Whether a release moved markets depends on how it landed against forecast, not the actual number. Surprise scoring tells you when a print was unusual enough to trade.

N Written by Nick, founder of Markets Mastered · Trading professionally since 1989

Last updated 23 May 2026

"CPI came in at 3.2%" is meaningless without context. Was it expected? How does it compare to the surprises of the last twelve months? The economic-surprises section of the dashboard answers both questions in one row per release.

The simple version

For every high-impact economic release on the calendar - CPI, NFP, unemployment, retail sales, central bank decisions - we capture:

  • The forecast (from ForexFactory, the day before).
  • The actual (the moment it publishes).
  • The surprise (actual minus forecast).
  • The surprise z-score (the surprise normalised against the standard deviation of past surprises for this same indicator).

The dashboard's "Recent releases" panel (under the 48-hour calendar) shows the most recent indicators that have published. Each row carries the currency, the indicator name, the surprise, and a colour cue.

The colour cue

Each release is tagged with a direction - higher-hawkish (more = stronger currency, typical for CPI / NFP / retail sales / rate decisions) or higher-dovish (more = weaker currency, typical for unemployment).

The row's colour is the surprise's currency impact, not its sign:

  • Green: the surprise was currency-positive given the indicator's direction. CPI hot for USD = currency-positive = green. Unemployment hot for USD = currency-negative = red.
  • Red: surprise was currency-negative.
  • Grey: surprise small enough not to be meaningful.

So you can scan the panel after a release and instantly see which currency the print favoured, without doing the "is hot CPI good or bad for the dollar?" mental check yourself.

Why z-score matters more than absolute surprise

A CPI print of 0.4% vs a forecast of 0.3% is a 0.1% surprise. Whether that matters depends entirely on how big past CPI surprises have been:

  • If past surprises have all been within +/- 0.05%, a 0.1% surprise is a two-sigma event (z = 2.0). Markets will respond.
  • If past surprises have routinely ranged +/- 0.3%, a 0.1% surprise is unremarkable (z = 0.3). Markets ignore it.

The z-score collapses this into one read. |z| >= 1.5 = meaningful, |z| >= 2.5 = unusual, |z| >= 3 = the kind of print that lingers in narrative for weeks.

We compute the z-score against historical surprises for each specific indicator separately, so US CPI volatility is compared to its own history, not pooled with NFP surprises.

"Most retail traders read economic releases as 'beat' or 'miss'. That framing throws away the most important information - by how much, and is that 'how much' actually unusual for this series. The z-score is the difference between trading the print and trading the noise."

— Nick, founder of Markets Mastered

How to use it in practice

As an immediate post-release read

The moment a release publishes, the panel updates within the hour. Z-score 1.8 positive on a CPI release = the dollar should be bid, momentum trades into the close are favoured. Z-score 0.3 = the print was as expected, no setup change.

As a sanity check on price reaction

Sometimes price moves on a release that, by z-score, was unremarkable. That tells you flows are positioning-driven, not data-driven. Different setup logic applies - lean on CoT and news tone, not on the release itself.

As a multi-day narrative

After several releases in a week, the pattern matters. Three USD releases in a row print z-scores above 1.5 positive: that is a sustained surprise pattern that markets will be reflecting on for the next two weeks. The briefings will reference these patterns in macro commentary.

As pair-selection input

A meaningful USD surprise (z 2+ positive) doesn't tell you which dollar pair to trade. Cross-reference currency strength to find the weakest counter-currency, and CoT to confirm specs aren't already loaded on the long-USD side.

What we don't yet have

The z-score baseline requires historical surprise data per indicator. The platform pre-loads FRED actuals to give every indicator a fast-stabilising release-extremity z-score from day one, but the true "surprise z-score" (actual vs forecast) accumulates as live releases publish over time. Indicators that have been live in the platform for less than ~6 surprises will show the surprise number but the z-score field will be blank.

This is intentional - we'd rather show "we don't have enough data yet" than fake a z-score from too few observations.

A note on coverage

The catalog starts with the indicators retail traders watch most: USD CPI (m/m and y/y), Core CPI, NFP, unemployment, retail sales; EUR HICP; GBP CPI; JPY CPI; CAD CPI. We will widen as new indicators prove worth tracking. ISM PMIs are deliberately not in v1 because their headline isn't published under a free, stable data feed; we'll add them when there is a clean source.

Keep reading

This article is general market education, not financial advice. See our risk disclaimer.

Start today

Ready to trade smarter?

Join traders who've stopped watching charts and started making better decisions.

We use cookies to analyze site traffic and improve your experience. Privacy Policy