Changing a baseline after the fact is moving the yardstick, and a prediction whose yardstick moves is not a prediction. The rule adopted instead is procedural: when the meeting resolves, both benchmarks are reported together with their as-of dates, and the baselines are refreshed before anything new is recorded. The direction of the error is stated rather than corrected - if the true market price on 1 August sat closer to a hike than the 3 July monitor did, the model was further from the market than this record says, not nearer.
ledger.py score on the frozen record, not on a
re-reading of it.The squared error summed across the whole action space, not just the call that turned out right: a confident right answer and a hedged right answer are not the same thing, and a distribution that hedged everything should not score like one that committed. Hold 75 / hike 25 scores 0.125 if it holds and 1.125 if it hikes. Lower is better. Below 0.5 beats always saying fifty-fifty, which is the only bar this machine has to clear to have said anything at all. The Committee hiked 25bp, so the score is 1.125. The scale runs from 0, a perfect call, through 0.5, a coin flip, to 2, the worst possible. On this one meeting the call did not clear the coin-flip bar.
The watch list is three names, written down in advance. Precision is how many of those three actually dissented; recall is how many of the actual dissenters were on the list. They are reported separately on purpose: naming everybody would give perfect recall and worthless precision, and naming nobody would do the reverse. This is the part of the output a rates market does not produce, so it is the part worth being measured on. Here the watch list was Bowman, Barr, Hammack. Nobody dissented, so none of the 3 did. Precision is 0 of 3. With no dissenters there is nothing to recall, and the ledger records no recall. The expected dissent count was 0.75; the actual count was 0.
The engine does not grade its own comparison. The market benchmark is entered with its date, the outcome is entered with its date, and whether one beat the other is written down as a sentence rather than computed into a flattering number. That line is empty: the ledger records no verdict on it.
| Meeting | Predicted | Actual | Brier | Dissent P/R | Beat market |
|---|---|---|---|---|---|
| 2026-09 16 September 2026 | Hold 75% | Hike 25bp, 12-0 | 1.125 | 0.0 / n/a | not scored |
One meeting is not a track record in either direction. The two checks below are dated before the meeting, 28 and 31 August, and one of them already found the mechanism behind the hold contradicted.
The Chair persona was distilled on 1 August from documents that existed then; the keynote did not exist until 28 August, so the model could not have read it. 5 substantive matches, of which the strongest is arithmetic rather than phrasing: the model counted the overshoot to “month 65 or 66” and he said “65 months”. Against that, one pillar failed outright. The model had the Chairman holding because the market had already delivered the tightening; he said in the keynote that he would be hard pressed to describe financial conditions as restrictive at all. That is not a shade of difference - it is the mechanism the hold rested on, gone.
Three days later the first reading was overturned - not the observation, the cause. The model did not invent the pillar. It is the Chairman's own mechanism, from his 29 July press conference, and it was in the corpus the card was built from. Two errors, both of them the kind that survives a spell-check: A hawkish argument was used as a dovish one - the sentence he actually said was vouching for transmission, not explaining why he could wait. And A change was promoted into a level - on 29 July he was describing the intermeeting change in conditions, while on 17 June and 28 August he was describing the level. The model read one as the other.
Nothing. The record for September was closed before the checks, and editing it because new information arrived would have meant it was never a prediction. What the re-diagnosis changed is the reading, and the reading tilted further toward a hike than the first one did. The Committee hiked 25bp on 16 September 2026. Both documents are published here, next to the result.