Live data vs modeled assumptions
How Scoring Works
Last updated: September 9, 2026
MacroZak does not predict prices. Here is what is live, what is a model, and what we are not claiming — so you can judge the numbers honestly.
Overview
MacroZak does not predict prices, and it is not a black box. This page explains what is live market data versus what is a structured assumption.
Impact scores and stress scenarios are tools for education and risk context — not investment advice, trading signals, or a track record.
What's live
Your portfolio — holdings, weights, and position values priced from live market quotes when our market-data connection is working.
Macro inputs — the 10-year yield, the dollar, CPI, fed funds, and the Fear & Greed Index, when those feeds are available.
News — real headlines used for geopolitics, the daily pulse, the news feed, and the morning brief’s supporting article.
Where you see “Today” on a geo exposure row, that is an actual price move — not a projection. If we cannot get a quote, Today shows Unavailable. We never fill that slot with a modeled number.
What's a model
Most impact scores and stress scenarios start from assumptions we wrote down — not a machine-learning forecast.
We keep a catalog of “if this kind of event hits, how hard might these kinds of assets move?” We apply that catalog to your book using each holding’s sector, and for broad funds we look through to the sectors inside the fund.
Think of it as the stress test a risk desk sketches by hand — deliberate and transparent — not a model that looks precise just because the number has a decimal.
Some predefined stress scenarios in the Portfolio Stress Simulator can instead replay how your holdings moved around one real past episode: Tech Selloff (DeepSeek, January 2025); US–China Tensions (chip export controls, April 2025); Recession (COVID crash, March 2020); Oil Supply Crisis (Russia invasion, March 2022); Fed Rate Shock (FOMC, June 2022); High Inflation (hot CPI, September 2022); Energy Spike (OPEC+ cut, October 2022). Custom scenarios and the Sector Drilldown Mini Stress Simulator always use catalog assumptions — even when the main simulator replays history for the same scenario name.
Scenarios that still use catalog assumptions only: Middle East Escalation (oil shock, June 2022).
Stress Simulator
The Portfolio Stress Simulator runs your live weights through each scenario. The badge tells you which method was used:
Historical replay — one past episode. We look at how your holdings actually moved from shortly before that episode through the days after. Names we cannot price in that window are left out of the replay; we do not pretend they were covered. The badge says whether the replay covers your full book, only part of it, or too little to run.
Hypothetical scenario — our curated catalog assumptions, used when a scenario is not set up for historical replay, or when a replay cannot honestly run. If replay cannot load (Tiingo down, a request error, or no proof), the simulator keeps this badge and shows: Historical replay unavailable for this book — showing catalog assumptions instead.
Rule-based assumption — Conviction custom shock builder. You set factor shocks and optional per-holding overrides; each holding is estimated using the selected factor shock multiplied by its historical sensitivity to the sector ETF. This is a modeled estimate, not a forecast or historical replay. Saved on this device.
When historical replay is active, we show Replay proof: the episode date, Episode source citation for why that date was chosen, and the window of trading days used. Partial replay leaves excluded holdings out of the math — we do not renormalize weights to pretend full coverage. You can expand Show math if you want the arithmetic — the main view stays focused on the result. Provider names (including Tiingo) stay in Data and methodology, not on every holding row.
After the book result we show scenario contribution (share of modeled loss or gain), historical frequency for replay (n=1 — not a probability), and Ways to reduce this exposure. Those adjustments are illustrative alternative allocations, not recommendations or personalized instructions. Overlay sleeves that add a class you do not hold use catalog assumptions, labeled as such. Confirmation and invalidation signals are what to watch — this page does not poll live Crossfire status.
“Portfolio fit” ranks scenarios by how they relate to your holdings — not by how reliable the data path is. Recommended cards show a one-line reason from geo exposure or book composition. Always check the badge for whether you are looking at replay or assumptions.
Historical replay is a single past episode — one look at history, not a likelihood estimate and not a forecast.
The result is always a what-if on your current book — not a forecast of what will happen next.
Scenario severity is a 1–10 read of this one what-if — not the portfolio risk score on Holdings, and not a probability that the scenario occurs. 5/10 is not a 50% chance. It combines the stressed book move (|change| ÷ 3), how concentrated the shock is in one name (top risk contribution ÷ 15), and a small bump from the scenario’s set severity (high +1, extreme +2). If historical replay coverage is too thin to publish a book %, we do not show a severity number.
Sector Mini Stress (drill-down)
The Mini Stress Simulator inside Sector Drilldown is a separate surface from the Portfolio Stress Simulator.
It always uses catalog assumptions on a sector slice only, and it is labeled as a hypothetical scenario. It shows slice-average catalog shocks and class-level assumptions — not identical per-name forecast chips. When your book holds names in this sector, it can show Σ (weight × catalog shock) for that sleeve.
Ticker Deep Dive → Stress Scenarios is a portfolio-level catalog sketch on your full book. Open the Portfolio Stress Simulator for a dated historical episode when one exists.
Geo Exposure
We list holdings that thematically match a geopolitical event (direct listing, sector, or broad ETF). That list is not a price forecast.
A shock percentage appears only when we have a verified historical analog: US–China Trade Friction uses the April 2025 chip-export episode; OPEC+ Production Decisions uses the October 2022 production cut. Those percentages are Tiingo end-of-day window returns for your holding over that episode — not a catalog assumption and not a prediction of what happens if the story intensifies from here.
Middle East Tensions, Election Volatility, EU Tech Import Review, and Asia Manufacturing PMI have no verified matching episode, so we show no shock percentage. The Portfolio Stress Simulator may still open a different analog or a hypothetical catalog run — the button says which.
Macro Synthesis
We combine live rates, dollar strength, inflation, and sentiment with fixed rules into a simple bias — bullish, neutral, or bearish — and a strength band — weak, moderate, or strong.
Portfolio Impact shows how that backdrop relates to a holding’s weight and concentration. It is not a stock-specific percentage move.
Middle East Escalation — growth-conditioned variants (pilot)
Middle East Escalation is catalog-only (Hypothetical) — it does not use historical replay. When a live Middle East Tensions geo flag is active with corroborating headlines, the simulator selects one of two discrete shock variants based on a growth axis — not a continuous grid.
Growth axis (primary): FRED GDPNow nowcast. At or above 1.5% annualized → Expanding; below → Contracting. When GDPNow is unavailable, we fall back to Macro Synthesis regime bias on SPY — that fallback is an equity-sentiment proxy, not a literal GDP measure, and we label it as such in the UI.
Conflict axis: Active when the live geopolitical feed flags Middle East Tensions with strict or relaxed headline corroboration — the same system behind Geo Exposure rows. Inactive → single baseline catalog table (hypothetical run with nothing live backing it).
Variant A (Expanding + Active conflict): wartime-boom case — defense, energy, and industrials bid; broad risk dampened versus stagflation. Variant B (Contracting + Active conflict): stagflation box — defense and energy still bid (same modeled shock scale as Variant A on those sectors), industrials flat-to-down, broader risk assets more negative. Key Driving Factors name, as educational context, that desks often watch shortened duration, the dollar, and agricultural commodities in Variant B — not a recommendation. Dollar/agriculture shocks apply only when your book holds matching tickers (e.g. UUP, DBA, SGOV).
Holdings with no named defense, energy, industrial, or Box-4 ticker match take a near-flat default shock (about ±0.5% scale) — not a broad market-beta haircut. Named sector overlays (e.g. industrials in Variant A, consumer discretionary pressure in Variant B) apply only when your holding maps to that sector.
Fit reflects your holdings, not data reliability — check the badge on each card for replay status.
Crossfire — CPI, NFP, and FOMC (macro surprise)
Crossfire’s geo path fires when a headline lines up with a holding move. A separate macro path fires on CPI, NFP, FOMC, and consumer-sentiment release days once the print time has passed — same-day, or within one prior US trading day if you missed the live window (labeled honestly as lookback recovery, not a real-time capture).
The 6 AM ET morning email is the geo brief plus overnight Crossfire (geo, rates, energy) and a Watch today preview. CPI (8:30 ET), NFP (8:30 ET), consumer sentiment (10:00 ET), and FOMC (14:00 / 15:00 ET) Crossfire emails are a separate weekday poller after the print — not the 6 AM cron.
Each macro emit is recorded once per portfolio (user × event × release date × book hash). We do not replay the same CPI/NFP/FOMC closure repeatedly.
The live Crossfire path is still single-winner: surprise macro (hot/cool/hawkish/dovish) beats Active rates, Active energy, and geo. An in-line CPI/NFP or FOMC-neutral print still gets its closure email, but it does not lock the slot — a later Active energy or qualifying geo headline can take the live path and email on the weekday poller. UMich in-line (|delta| ≤ 1.5) is in-app only — no email. The 6 AM brief stays one Crossfire email.
CPI surprise is Core CPI MoM (FRED CPILFESL) stored as percent points — 0.3 means 0.3%, never a 0.003 decimal and never headline or core YoY. We round actual and consensus to one decimal (BLS publication precision) and require |delta| ≥ 0.10 after that rounding so a 0.34 computed print vs 0.30 consensus cannot fire hot. Headline YoY / Core YoY are not Crossfire triggers. UMich 1Y inflation expectations are percent points (4.3 not 0.043); a rise ≥ 0.1pp vs prior flags elevated inflation expectations. CPI and NFP rows must cite where the median came from (Bloomberg/Reuters or equivalent — we never invent a consensus number). A maintenance check fails CI when a CPI/NFP release is within ten US trading days without a cited row. When consensus or actual is missing, we still emit an in-line closure read — never silence after flagging the catalyst. University of Michigan sentiment uses the Surveys of Consumers homepage as the same-day primary print; FRED UMCSENT is lagging validation, never the only resolver, and a missing FRED observation is not treated as “the release did not happen.” After the scheduled clock the card is Awaiting official print, then Release data delayed, then Release data unavailable — never left on Preparing. |actual − consensus| ≤ 1.5 index points is in-line (no material surprise, no hot/cool email).
FOMC is a post-decision market reaction, not a single CPI-style print. We classify hawkish / dovish from (1) the actual funds-target change vs a cited consensus row when we have one (hold vs cut vs hike), then (2) the 2Y yield reaction — the policy-expectations proxy. 10Y and the dollar are confirmation only; they cannot reclassify an emergency cut as hawkish because the long end or DXY spiked on a growth scare. We never invent a FOMC consensus number. Labeled as how markets reacted, not a pre-meeting prediction.
Branch shocks are rule-based educational models applied to your holdings by sector and asset class — not trade recommendations and not a performance track record.
The suggested stress-test link follows the surprise direction, then runs that catalog scenario on your book. Hot CPI → High Inflation. Cool CPI or dovish FOMC → Soft Landing / Rate Cut (catalog assumptions — not a historical replay). Hot NFP or hawkish FOMC → Fed Rate Shock. Cold / weak NFP → Recession / Growth Shock. Cool UMich → Recession / Growth Shock. Hot or in-line UMich → Soft Landing (in-line is labeled as a modeled scenario, not a signal from the print). Unresolved UMich → Explore recession sensitivity, also labeled modeled. Active energy / transit → Oil Supply Crisis.
Position Crossfire — unusual holding moves
Event Crossfire answers “what scheduled macro or geo path could hit this book?” Position Crossfire answers the other half: “a holding already moved unusually — what kind of move is it, and how much did it change the portfolio?” A large holding move does not fire Event Crossfire by itself, and an in-line macro print does not consume the position-alert email slot.
In-app: weight at least 2% and |daily return| at least max(3%, 2× the holding’s 20-session average absolute return). Without 20-session history we require 5%. Email (weekday poller after 16:00 ET): |return| at least max(5%, 2.5× that average), weight at least 3%, and |portfolio contribution| at least 0.75 percentage points (weight × return). Broad-market tape days stay in-app — they are not emailed. One position email per user per day; volume above ~2.5× recent average is confirmation, not a separate trigger.
Each flagged move is labeled company-specific, sector-wide, broad-market, or unclassified by comparing the holding to SPY and its sector ETF. A Marketaux ticker mention is shown when present and labeled as a mention, not a confirmed catalyst. This is investigation context, not a trade signal.
What we're not claiming
These estimates are for structured risk context only:
- Geo theme lists are not price forecasts. Shock percentages appear only for two verified past episodes (US–China chip export, OPEC+ cut). Catalog-only stress paths are hand-set assumptions, not backtests.
- Historical replay uses how your covered holdings moved around one disclosed past episode. That is a narrow, one-episode look at history — not a full market model, not a likelihood estimate, and not a track record.
- Sector mini stress percentages may differ from the Portfolio Stress Simulator for the same scenario name because they use catalog math on a sector slice only.
- Scores are not statistical “betas” unless we say so explicitly.
- MacroZak does not tell you what to buy or sell.
- We do not present a performance track record for these estimates.
What's next
We keep checking which episodes and holdings can honestly support historical replay, keep labeling anything that is still an assumption, and expand custom what-if scenarios without blurring replay and catalog.
MacroZak is not financial advice. See our investment disclaimer for full terms.
Related: Investment disclaimer · Terms of Service · Product log