Every night at 07:00 UTC, a script this site does not control the output of grades the published data surface against an 18-check rubric and commits the result — pass or fail — to the public data repository. No human edits the score. This page explains what is checked, what the score means, and what it does not mean.
What gets checked
Freshness (20 pts). Is the published MPI computed after the last market close? Does the latest Daily Pulse match the last completed session? Is the Weekly present? Are retired trackers actually offline?
Consistency (20 pts). Does the number on the homepage equal the number in the data feed — score, date, SPY close, regime label? Two of these checks are critical: if the site ever shows a different MPI than the feed, the grade is capped at C no matter what else passes.
Methodology (25 pts). Does the published label actually match the published score band (below 40 Bear · 40–60 Neutral · above 60 Bull)? Does the regime label come from the model state, not the score? Does the confidence interval bracket the score?
Honesty (20 pts). The published SPY close is compared against an independent source (Stooq, with a second independent fallback), and the published VIX against CBOE’s official file. If our number disagrees with the outside world by more than $0.05, this check fails — critically.
Integrity (15 pts). Retired data inputs must be absent, the payload must match the reconciled Data Sources accounting, and the model’s proprietary internals (weights, transition matrix) must NOT appear in the public payload.
What the score means — and what it doesn’t
A 100 means: the data shown to you tonight is fresh, internally consistent, matches independent external sources, and discloses what it should. It is a data-quality score. It is not a performance score, not a returns claim, and says nothing about whether any published read was “right” — that is the Accountability Ledger’s job, where misses stay on the page.
When a ground-truth source is unreachable, the check is marked unverified — disclosed in the output rather than silently passed or failed. Any critical check that fails caps the grade at C, so a headline “A” cannot coexist with a broken core promise.
The scorer is ~300 lines of standard-library Python, public in the data repo: read the code · tonight’s raw output · full score history. If we ever fail a check, the fail is committed publicly before we fix it.
