Working paper · overnight funding markets

When overnight cash runs short

Forecasting when the cost of overnight borrowing against Treasuries climbs above the Fed’s rate on reserves, using only what was public at the time.

Every business day, banks, dealers and money-market funds lend each other cash overnight against U.S. Treasury securities. The benchmark rate for those loans is SOFR; on 3 September 2026 it was set from about $2.9 trillion of trades. The Federal Reserve pays banks its own rate on the cash they hold with it, IORB, and on most days SOFR sits at or just below it. When spare cash runs short, SOFR climbs above.

Executive summary

This study forecasts the overnight cost of borrowing cash against U.S. Treasuries, measured as SOFR minus the Fed’s rate on reserves, and asks what drives it. It has two goals. Primary goal (H5): a forecast of the whole range of the SOFR − IORB spread, in basis points, beats the phase 2 models and the yes-or-no pressure forecasts. Secondary goal (H9): richer targets, such as the SOFR tail, other repo rates and take-up at the Fed's facilities, hold more signal a model can learn. H1, H2, H3, H4, H6, H7, H8 and H10 support those goals or follow from them; section 2 gives each one line, with its step, tests and milestones folded beneath it.

Verdicts reached: none yet. A verdict needs prospective confirmation days; development data never gives one (scoring protocol v1). Every figure from development days below is marked “development, not a verdict”, and one from a model that did not read calendar days at the target day is also marked “provisional: calendar not read at the target day” until it is re-run. Next on the critical path. For both goals it is CP1 (H1.M3), interval coverage verified, which waits on the corrected test's decisions, the recalibrated critical values and the corrected test's size on post-2020 resampled history. The ruling on the scorer's marked questions, whose check 2 is the coverage check, has merged.

The next link is the first in the plan’s “Critical path” section that gates the goal and whose milestone is not marked done in docs/research/milestones.json.

Limits. This is a research forecast of next-day overnight borrowing costs, not a warning system or a tool for managing risk. It has been tested mostly in calm conditions, so it needs re-checking if the market changes sharply. The final test was near-blind, and the central range is not yet fully calibrated. Method and limits

1Current best performer

No candidate is registered under the scoring protocol yet, so the incumbent stands: the published v1 funding declaration, which the protocol uses as its benchmark B3.

The incumbent. On the 169 days 2026-01-02 to 2026-09-03 the published declaration scored 1.66 bp mean CRPS at h = 1, as that record scores it (not the protocol’s grid CRPS), against 1.83 bp for as-of persistence (edge +0.17 bp, 90% interval +0.03 to +0.36). development, not a verdict provisional: calendar not read at the target day · register

The development standings. The H5 candidate is sc_s3_robust, (s3) of the state-scaled calendar study: the scaled mean reversion with calendar terms read at the target day in standardised units, fitted with a Huber estimator and a heavier ridge. Eleonora ruled on 2026-10-23 that it replaces spread_mr_fhs_mad20_f0.5; the committed record is docs/research/h5-candidate.json and the evidence pages are state-scaled calendar study (read on the mean-d bound), calendar-terms study (read on the mean-d bound), walk-forward calibration study (read on the mean-d bound). Nothing is registered: registration remains her own action. The tables set it beside B1, B1′, B2, spread_mr_fhs_mad20_f0.5 and spread_mr_ctx on the decision days 2018-07-19 to 2025-12-23, from the record docs/research/state-calendar-1145/result.json; every figure is copied from it. Mean grid CRPS in bp over horizons one to five, lower is better. d is the benchmark’s score minus the candidate’s, positive favouring the candidate; the interval is the studentized stationary bootstrap’s two-sided 90% interval, whose ends are the one-sided 95% bounds, and the reading follows the bound on mean d as the protocol does: better when the lower end is above zero, worse when the upper end is below, no difference otherwise. The skill interval is drawn separately and can fall on the other side of zero (Eleonora’s ruling on which interval is read), so it is shown for reference and not read. No row compares it with gbm_funding: its walks were not supplied to the study that scored it. development, not a verdict

ModelGrid CRPS, all decision days (1855 days)d = benchmark − sc_s3_robust, bp [90%], readsc_s3_robust’s skill [90%]Grid CRPS, ordinary targets (507 days)d = benchmark − sc_s3_robust, bp [90%], readsc_s3_robust’s skill [90%]
B12.29+0.66 [+0.41, +1.57], better+29.0% [+23.1%, +42.1%]1.77+0.65 [+0.39, +1.51], better+37.0% [+28.3%, +57.9%]
B1′1.93+0.30 [+0.19, +0.48], better+15.8% [+9.9%, +22.0%]1.44+0.33 [+0.20, +0.63], better+22.8% [+15.5%, +35.5%]
B22.52+0.89 [+0.65, +1.20], better+35.5% [+24.6%, +44.4%]1.72+0.60 [+0.31, +1.02], better+35.1% [+20.7%, +49.2%]
spread_mr_fhs_mad20_f0.51.70+0.07 [+0.03, +0.11], better+4.3% [+1.8%, +6.4%]1.15+0.04 [+0.02, +0.05], better+3.2% [+2.4%, +4.0%]
spread_mr_ctx1.75+0.13 [+0.08, +0.18], better+7.2% [+3.6%, +10.3%]1.15+0.04 [-0.00, +0.08], no difference+3.5% [-0.5%, +7.3%]
sc_s3_robust1.62——1.11——

Lens C’s caveat. B1′ is Lens C’s calendar-aware persistence: B1 with its changes pooled by the target day’s type. B1 stays the protocol’s benchmark, but B1 alone is not the honest baseline, so the candidate’s gain over B1′ is the one to weigh. The candidate reads the calendar at the target day on direct pairs, so its figures are not provisional on that account; it was chosen after seeing the development days, so they are optimistic for it. The split below is the protocol’s: a pooled figure alone is not a result.

SplitDayssc_s3_robust’s grid CRPSd against B1 (bp) [90%], readd against B1′ (bp) [90%], read
By regime
2018-193613.70+2.09 [+0.90, +9.02], better+0.61 [+0.21, +1.52], better
20202511.44+0.20 [-0.05, +0.45], no difference+0.17 [-0.09, +0.52], no difference
2021-237480.63+0.06 [+0.03, +0.09], better+0.03 [-0.00, +0.06], no difference
20242501.11+0.50 [+0.26, +1.13], better+0.37 [+0.17, +0.86], better
2025-262492.29+1.07 [+0.68, +1.59], better+0.78 [+0.47, +1.17], better
By target-day type
calendar_days13521.82+0.67 [+0.39, +1.63], better+0.30 [+0.18, +0.46], better
dom_19_233051.16+0.96 [+0.23, +8.55], better+0.17 [-0.02, +0.58], no difference
fomc_day1184.47+0.12 [-0.04, +0.29], no difference+0.07 [-0.06, +0.24], no difference
iorb_window782.23+2.87 [+0.17, +35.73], better-0.26 [-1.77, +0.24], no difference
month_end1802.34+0.69 [+0.09, +1.46], better+0.55 [+0.04, +1.19], better
ordinary5071.11+0.65 [+0.39, +1.51], better+0.33 [+0.20, +0.63], better
post_month_end_window2672.05+0.56 [+0.24, +1.27], better+0.25 [-0.03, +0.67], no difference
quarter_end305.12+1.84 [-0.05, +5.46], no difference+1.73 [-0.13, +5.17], no difference
settlement9461.97+0.66 [+0.39, +1.33], better+0.36 [+0.21, +0.59], better
tax_date895.16+0.34 [-0.02, +0.97], no difference+0.26 [-0.05, +0.99], no difference

The incumbent’s figures are from the published record docs/runs/final_test_near_blind.json, read by the final-test section below; this page scores nothing itself.

2The hypotheses, H1 to H10

Each hypothesis follows the same six steps, from question to verdict. Open a line for its step, status, tests, kill criterion, milestones and research log. Development figures are labelled “development, not a verdict”; a figure nobody has measured says so.

H1 The scorer puts forecasts of known quality in the right order.

In the plan. The scorer ranks forecasts of known quality correctly.

Question
Does the scoring module rank forecasts of known quality correctly, and is each benchmark computed as specified?
Test
the synthetic suite the protocol requires; a tracked directive covers the +5 bp judge, if she keeps it.
Kill criterion
Any pre-registered check fails. Every registration is blocked until it passes.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 5
Milestones
  • M1 done Synthetic suite committed, with the expected order stated. evidence
  • M2 done Scorer passes every check. evidence
  • M3 open Interval coverage verified.
  • M4 open Auditor confirms.
Progress markers
  • Checks passed out of the total: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H1
  • 2026-10-12, step 3, log entry, tier development development, not a verdict
    under the pooled count, risk_gbm+every_day+gate+settle+h41+iorb has 3.46 (worst single lead 1.64) and ngboost_laplace 2.34 (1.73), tier 1 no where it was stored as yes. risk_gbm+settle+h41 1.44 / 1.48 (same-row / own-leg), tier 1 yes.
    Against kill: the old judge's counting was wrong in a way that changed tier 1 verdicts; consistent with H1's concern (the plan's Why section).
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    the first check passes: every stated order is recovered under grid CRPS and the upper-tail twCRPS. The second check fails: the one-sided 95% bound covers 0.802 (percentile) and 0.825 (studentized) of 1,500 replications on the real series, against 0.937 and 0.941 on the control; 0.831 at 10,000 draws. The real series' left tail drives it (0.929 with its one September 2019 day removed).
    Against kill: the second check failed as first written, and passes with the calibrated value; per Eleonora's ruling no candidate is registered until a tracked directive's power study confirms coverage.
  • 2026-10-13, step 1, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the verdict reads the grid comparison's values, 2.43 at 250 days and 3.42 at 125 (B3 − B1 on five levels: 5.45 and 9.50); null false detections on the full development history 0.85% and 0.25% by 250 and 125 days (B3 − B1: 0.0%). Futility values 1.93, 1.56 and 1.45 at 60, 125 and 250 days. Power at these values stays low (14% for a 3% skill by 250 days), and the confirmation design goes to a separate study.
    Against kill: the second check passes at the grid comparison's value; no registration until the confirmation-design study is decided.
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    at the critical value in force (the largest across four comparisons) no design has power: D0 to D2 under 1% at 3% and at 10% even on the post-2020 history, D3 2.6% and 3.9% there; the standardized D4 reaches 14.4% and 19.4% on the post-2020 history but fails size (8% to 13%). At reading (b) D0 reproduces PR a tracked directive's Q-E table on the post-2020 history (14.3% and 19.7% against 14.0% and 19.25%) with size 11.5%; every design fails size on that history. No design reaches 80% power at 3% or at 30% skill. The §7 rule's pick (D3) is the least bad of the admissible, not a useful design.
    Against kill: not applicable (H1 is a validity check, not a gain claim); the page's reading is that the confirmation design cannot confirm the 3% MME in 500 days as the test stands.
  • 2026-10-14, step 3, log entry, tier development development, not a verdict
    docs/research/literature-2026-10.md. Power at 60 to 125 days depends mainly on the dependence and tail weight of the CRPS differences, which no test choice changes; the sequential tests need a declared cap and are weakest at horizons above 1. No source sizes a confirmation period for a CRPS comparison, and none quantifies a sign test under dependence: gaps.
    Against kill: not applicable (reading only; development).
  • 2026-10-14, step 3, log entry, tier development development, not a verdict
    the ruled alignment holds (anchor = last public row; B1 adds h-row changes; B2 = same-type trailing-year climatology), and three recorded mutations fail it. Coverage of the central 90% is below 0.90 at every lead: B1 0.804 [0.802, 0.805] at lead 1 to 0.889 [0.887, 0.890] at lead 3; B2 0.863 to 0.870. B1's shortfall is the one-row gap between its anchor and h-row changes; B2's sits in the rare day types. Detail in docs/research/benchmark-simulation-762.md.
    Against kill: no pre-registered check failed; coverage is reported, not a check. B1's definition is Eleonora's, so the departure is a marked question.
  • 2026-10-15, step 3, log entry, tier development development, not a verdict
    on the declared process the forecaster beats B1 by +17.58% [+17.33%, +17.84%] pooled, every panel at or above the 3% MME, all of it from spike anchors (ordinary 0.00%; month-end +52.3%, tax date +32.6%, quarter-end +84.5%); with no spikes it has no gain (-1.27% [-1.54%, -1.01%]). Candidate evidence (a) for a §13 change; B1, B2, B3 and the MME unchanged. a tracked directive's candidate against B1 by anchor type on the development days: pooled +22.3% [+13.7%, +29.5%], ordinary anchors +11.2% [+6.9%, +15.9%], month-end +34.2%, tax date +67.5%, quarter-end +65.9%. Detail in docs/research/spike-blind-741.md.
    Against kill: not applicable (H1's checks are pre-registered; none failed, none run).
  • 2026-10-15, groundwork G1, log entry, tier development development, not a verdict
    the conflict block that reached main on 15 October would now fail the check; the tracked Markdown has none.
    Against kill: not applicable (groundwork).
  • 2026-10-15, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    only B3 against B1 is a known-better pair (skill 21.8%); B2 scores worse than B1. At that gain the current test flags 66% to 73% of windows but flags 26% to 33% of sign-flipped B3 windows, so its size on a symmetric null is far above 5%; the fixed-b test flags 27% to 34% of the real windows and 4% to 10% of the sign-flipped. Synthetic gated power at a 3% gain, 250 days: 10% (current), 8% (matched null), 3% (fixed-b), 0% (e-process, whose bounded bets never grow on these scores). No family reaches 80% power at any gain up to 50% in 250 days; the current test does at 50% in 500 days. By normal-theory arithmetic the daily signal-to-noise of B3's 22% gain needs about 1,300 days. The rule's pick (the e-process on lead 1) holds the size limit with 0% power.
    Against kill: not applicable (H1 is a validity check; development).
  • 2026-10-15, step 1, log entry, tier development development, not a verdict
    a true 3% skill is detected on 0.8% (full history, circular), 7.8% (post-2020-04, circular), 1.8% (full, stationary) and 13.9% (post-2020-04, stationary, a tracked directive's own) of paths by 250 days; none reaches 80% at either look, so days needed and the smallest skill detected at target power are null in every reading. Size with no true skill by 250 days: 0.5%, 6.1%, 1.3% and 10.9%. Detail in docs/research/power-study-769-result.md.
    Against kill: not applicable (groundwork; development data gives no verdict).
  • 2026-10-15, groundwork G1, log entry, tier development development, not a verdict
    a merge to main no longer makes the page stale or conflicting in an open PR; the page's content is still checked byte for byte. No published figure moves.
    Against kill: not applicable (groundwork).
  • 2026-10-17, step 4, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    efficacy 2.55 and 1.35 at 125 and 250 days (grid) against 3.42 and 2.43 in force; B3 five levels 1.43 and 1.01 against 9.50 and 5.45; futility 2.44, 2.29 and 2.30 against 1.93, 1.56 and 1.45. Power of a true 3% by 250 days: 8.7%, 24.3%, 11.8% and 30.8% in readings (a) to (d), against 0.8%, 7.8%, 1.8% and 13.9%; size by 250 days 5.9%, 20.2%, 9.4% and 26.6% against 0.5%, 6.1%, 1.2% and 10.9%. Replay of B3 against B1 at the grid values: 59.0% of windows flagged against 31.5% in force; sign-flipped windows 14.2% against 2.5%. No reading reaches the 80% target.
    Against kill: not applicable (H1 is a validity check; development and simulated data only).
  • 2026-10-17, groundwork G1, log entry, tier development development, not a verdict
    every chapter, view, figure and record of the page is still on it, folded or in the contents list; no figure, record or rule moves. The taglines are drafted from the plan's headings for Eleonora's review.
    Against kill: not applicable (groundwork).
  • 2026-10-17, groundwork G1, log entry, tier development development, not a verdict
    no false archive alarm on a weekend or holiday; a failed archive on a decision day can no longer finish green. No record, archive or published figure moves.
    Against kill: not applicable (groundwork).
  • 2026-10-17, step 5, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    at the new values the size by 250 days is 5.0% on post-2020 stationary paths (26.6% at a tracked directive's values) and below 5% on the other three readings; power at 3% by 250 days falls to 6.1% (30.8%), at 10% to 9.6% (39.8%). a tracked directive's rule recommends D4 (250 days, standardized) where it recommended D3; at the full-history circular values no design is admissible. Development and simulated data, not a verdict.
    Against kill: not applicable (a design and calibration measurement; development data gives no verdict).
  • 2026-10-19, step 4, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    B1 reproduces a tracked directive within the Monte Carlo error of two independent draws (full, 250 days: 24.6% amended, 4.8% earlier). gbm_funding, full history, 250 days: 9.6% amended, 0.9% earlier; post-2020-04: 9.2% and 0.8%. At 125 days: 0.6% and 0.1% (full). Development data, not a verdict. Detail in docs/research/b2-leg-size-922-result.md.
    Against kill: not applicable (a sizing of a rule, not a model).
  • 2026-10-19, step 4, log entry, tier development development, not a verdict
    leg against B1 2.438 (250 days) and 4.727 (125); leg against B2 1.701 and 2.682. At 250 days the B2 leg's size for gbm_funding is 4.5% (9.2% at the amended value) and the B1 leg's 0.1% (6.4%); the stand-ins sit at the nominal 4.8%. a tracked directive's post-2020-04 values (2.427 / 4.808) come from a cut at 2020-04-01 and are reproduced by it. Development data, not a verdict. Detail in docs/research/per-leg-calibration-929-result.md.
    Against kill: not applicable (a calibration of a rule, not a model).
  • 2026-10-19, step 1, log entry, tier development development, not a verdict
    no figure; nothing is scored. The verdict is unchanged on every fixture whatever B3 shows.
    Against kill: not applicable (the output of the scorer; no hypothesis result).
  • 2026-10-19, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    against B1 the lead-averaged differentials have rho(1) 0.16 and an automatic block of 4.8 days; against B2 rho(1) 0.87, rho(10) 0.47 and 73.2 days pooled (5.8 to 47.5 within regime). Pooled lower bounds at block 5, 10 and 20: +0.241, +0.236, +0.226 against B1; +0.485, +0.458, +0.417 against B2. Only the 2025-26 bound against B2 changes sign with the block (+0.121, +0.002, −0.165). The block stays 10. Detail in docs/research/block-length-949-result.md.
    Against kill: not applicable (a check on the interval, not a model).
  • 2026-10-19, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    at 250 days the contiguous c is 7.19 for B2, 1.92 for spread_mr_ctx and 2.07 for gbm_funding, against 3.10, 1.49, 1.57 (stationary-10) and 2.44, 1.38, 1.45 (circular-10); the series hold 5.7 non-overlapping 250-day windows. By the declared reading rules the 250-day design survives on the candidates' own d and fails on B2's. Last 2 years, NW(10) t against fixed-b t: 4.13 / 3.53 (spread_mr_ctx), 3.66 / 3.21 (gbm_funding). Detail in docs/research/contiguous-calibration-963-result.md.
    Against kill: not applicable (a check on the confirmation design, not a model).
  • 2026-10-20, step 3, log entry, tier development development, not a verdict
    the hand and the module agree to 9 decimal places at all 25 levels on every sampled day, lead and target; the last public row is the day before the decision day for all three. No disagreement, so nothing is marked for Eleonora. One recorded mutation (B2 ignoring the day type) fails the test.
    Against kill: not applicable (a check on the benchmarks, not a model).
  • 2026-10-20, step 2, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the scale buys nothing under contiguous calibration. D4 (250 days, scaled) has size 0.0% and gated power 0.1% at 10% true skill (raw D0: 1.4%); no design on the grid reaches 80% power. The contiguous critical values are 4.3 at 250 days and 15.7 at the 125-day look, against 2.4 in force. The scaled score swaps the order of the two candidates in two regimes (2018-19 from 2019-07, and 2021-23, where the scaled means are a tie at +0.0316), so the misranking demonstration holds, thinly. Detail in docs/research/scaled-score-967-result.md.
    Against kill: the declared rule "the scale buys nothing" fires (power at 10% below 20%); the rule "the misranking fails" does not. Development data, never a verdict.
  • 2026-10-20, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    at 250 days the contiguous c is 3.50 for spread_mr_ctx and 3.86 for gbm_funding (125 days: 6.61 and 6.46), against 1.92 and 2.07 on the leg against B1. By a tracked directive's reading rule the B1 leg survives and the B2 leg is between 3.0 and 4.0 (neither rule applies), so the joint reading is neither. Size at the value in force is 10.6% and 13.6% at 250 days, 18.1% for gbm_funding at a tracked directive's draft value. Detail in docs/research/b2-leg-contiguous-1015-result.md.
    Against kill: not applicable (a check on the confirmation design, not a model).
  • 2026-10-20, step 2, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    D4 (250 days, scaled) has size 1.1% and gated power 3.4% at 10% true skill (raw D0: 0.2%; a tracked directive: 0.1%); D5 (375 days) 6.7%. The contiguous critical values at the last two looks are 12.67 and 2.69 for D4 (a tracked directive: 15.66 and 4.32). No design on the grid reaches 80% power. The scaled score still swaps the order of the two candidates in 2018-19 and 2021-23. Detail in docs/research/scaled-score-1013-result.md.
    Against kill: "the scale buys nothing" still fires (power at 10% below 20%); "the misranking fails" does not. Development data, never a verdict.
  • 2026-10-20, step 4, log entry, tier development development, not a verdict
    calibrated here 4.359 (125 days) and 2.554 (250); the a tracked directive draft detects 22.9% and 35.0% of null paths by 125 and 250 days, the a tracked directive draft 11.4% and 21.9%, the value in force 0.0% and 0.1%. Detail in docs/research/b3-orientation-1014-result.md.
    Against kill: unchanged. Development data, never a verdict.
  • 2026-10-21, step 1, log entry, tier development development, not a verdict
    the set of classified functions is the same before and after (7 library entry points, 2 script entry points, 52 not-entry functions, 44 CRPS functions; every kind and reason compares equal). A new study declares itself in its own script and no longer edits the shared test. Of the last 50 merged pull requests 4 edited that file, and all 4 edits were one classification entry.
    Against kill: not applicable (a guard, not a model).
  • 2026-10-21, step 1, log entry, tier development development, not a verdict
    the pages job runs the same four checks; nothing is scored.
    Against kill: not applicable; no score exists.
  • 2026-10-21, step 1, log entry, tier development development, not a verdict
    the worker lives in repo_model.reliability_regimes, so the pool works under fork and spawn and the cells are identical for 1 and 2 workers under both. No published figure moves.
    Against kill: not applicable (infrastructure, not a model).
  • 2026-10-21, step 1, log entry, tier development development, not a verdict
    the record and the code agree: grid 3.419 (125 days) and 2.426 (250 days), five-level 9.501 and 5.455, no per-leg value.
    Against kill: not applicable; no score exists.
  • 2026-10-21, step 1, log entry, tier development development, not a verdict
    a delegated-review merge can no longer add or change a decision record, and so cannot open the live-monitoring gate (live_monitor.require_decision_record), without her own GitHub action. No result, record or published figure is edited.
    Against kill: not applicable (a guard, not a model).
  • 2026-10-22, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    a tracked directive reproduced to 1e-9 (4.8 against B1, 73.2 against B2, 1,868 days). Without 2019-09-18 the B1 leg's block moves 4.8 to 7.4 and the B2 leg's stays at 73. Post-2020-04 (1,429 days) the B1 leg's block is 10.2 and the B2 leg's 64.9 (89.1 widened); the proxy's 63.8 (97.9 widened) against Lens C's 108, with its ACF and long-run ratios reproduced closely. The block stays 10; the choice is a marked question for her (section 13). Detail in docs/research/block-length-1022-result.md.
    Against kill: not applicable (a check on the interval, not a model).
  • 2026-10-22, step 1, log entry, tier development development, not a verdict
    the workers live in repo_model.confirmation_workers and repo_model.scaled_score_workers, and the scripts import them. A fixed-seed run of the calibration, the design values and the path workers on a constructed design is byte-identical before and after. No published record or declaration changes.
    Against kill: not applicable (infrastructure, not a model).
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    the 2018-19 and 2025-26 cells equal a tracked directive's to the last digit (50 point values compared, none differs), so a tracked directive reproduces on the Mac; the 2020-24 cell of a tracked directive splits into 2020 (3 pressure days), 2021-23 (0) and 2024 (2), so the five-regime table has no scored cell there, and the 2020 cells carry no interval. Of 10 scored regime-by-lead cells per row (2018-19 and 2025-26), above zero in 5 for mean reversion, 5 for context-pooled residuals, 0 for two-part, 1 for gbm_funding; none below zero. The gain sits in 2018-19 and is small in 2025-26. Detail in docs/research/ordinary-day-p5-1023-result.md.
    Against kill: not a kill test and no verdict (development data, scoring protocol v1). No pooled gain is claimed. The cells carry a tracked directive's percentile interval; on Eleonora's ruling of 22 October 2026 (comment 6340379028) each is also read on the protocol's studentized one-sided bound (scoring protocol section 5, over target days, Newey-West lag 10 on the AUROC difference's influence series). The bound column is computed by the re-score the needs-mac: comment on a tracked directive asks for; until then the page says it is pending.
  • 2026-10-23, step 3, log entry, tier development development, not a verdict
    each cell with an interval now carries "studentized lower bound x" beside a tracked directive's percentile interval. Cells whose one-sided studentized lower bound is above zero, out of 10 cells that have one: mean reversion 5, context-pooled residuals 3, two-part 0, gbm_funding 1. These count cells; they set no threshold. Read on the mean-d / studentized bound as ruled in a tracked directive. Detail in docs/research/ordinary-day-p5-1023-result.md.
    Against kill: not a kill test and no verdict (development data, scoring protocol v1). No pooled gain is claimed. The page stays provisional under the register (row 10, a tracked directive, class b).
H2 The data already held carries signal for the spread and for pressure on ordinary days.

In the plan. The data we hold carries signal for the spread and for ordinary-day pressure.

Question
How much CRPS skill (spread) and AUROC (ordinary days) is extractable from every input we hold? Two figures answer it: the ceiling (in-sample, generous) and what is reachable (walk-forward).
Test
a tracked directive (upper bound), tracked directives.
Kill criterion
The ceiling is barely above the benchmark: ordinary-day AUROC below 0.6, or the spread's CRPS skill against persistence covers 0.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 3
Milestones
  • M1 open Matrices published.
  • M2 open Features published.
  • M3 done Upper bound published, with its verdict: data problem, model problem, or partly reached. evidence
Progress markers
  • Ceiling and reachable skill, side by side: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H2
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no variant passes the full rule under either miss rule. risk_gbm h = 1: 13/26 onsets, worst false alarms 1.35; variants 15/26 with 2.46 to 3.54. Brier against the parent: interval includes zero in all 100 horizon-by-variant cells.
    Against kill: not applicable (no verdict; hypotheses postdate it).
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no model passes (flat rule, +5 bp). Onsets flagged of 26: risk_gbm 13 (recall 0.500 [0.310, 0.667], worst false alarms 1.35), effr_pretrain_finetune 7, effr_pooled 5, SOFR-only control 7; combined with risk_gbm 11 each. Recall in 2018, 2020 and 2024 unchanged from the parent: no model warns any of them. Against the control, Brier and log loss intervals include zero at every horizon.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no latent-factor row passes the judge. Tier 1 weighted, onsets flagged / worst false alarms per onset: latent_factor 14 / 3.38, latent_factor_logit 12 / 3.37, risk_gbm+latent_factor_logit 15 / 2.15, against risk_gbm 13 / 0.80. Brier gain under risk_gbm at h = 1: 0.011 [0.002, 0.022]; recall difference +0.115 [0.000, 0.250]; it warns none of the 2018 or 2024 onsets.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    alone it warns 12 of 26 onsets (weighted rule), the calendar climatology's number, and misses every 2018, 2020, 2024 and 2025 onset; it fails tier 1 on recall. As the every-day part under risk_gbm it warns 12 of 26 at h = 2 and 3 and fails tier 1 on false alarms.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    nowcast MAE 3.463 → 1.920 bp, −1.543 [−1.853, −1.271] against the declared nowcast, still behind naive over all days (+0.095 [+0.017, +0.169]). risk_gbm_base+all: 18 of 26, worst false alarms 3.96. No parent and no variant passes the pass rule.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no row passes the full rule under either miss rule and no verdict changes. +settle improves Brier at h >= 2 (70 of 100 variant-horizon pairs favour it, none go against).
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no row passes the full rule. risk_gbm+combined_nogate 11 / 13 of 26 onsets flagged (flat / weighted), recall 0.500 [0.308, 0.684], worst weighted false alarms 1.74, tiers 1 / 3 / 5 yes / no / yes. The control risk_gbm+every_day+gate+settle+h41 flags 18 of 26 at 1.64. The combination does not beat the control.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    under the weighted rule six of the eight are warned by no model row. The four 2018 onsets cannot be warned by any row: the judge has no cut-off in force for almost all model rows on those days (36 percent of all 2018-19 model-row cells). 2020-03-04 was public and unused (the announced IORB cut).
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    before and after tables for every re-scored row in docs/pivot/audit-fixes-578-result.md.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no verdict changes under either rule. The gain is one onset, 2020-03-04 (recall in 2020 1 of 2 to 2 of 2); 2018 and 2024 gain nothing. Paired Brier differences all cover or touch zero. The input was picked from a tracked directive's diagnosis on the same days; not a confirmation.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    102 of 1,873 days change state at h = 1 (54 up, 48 down); 64 of the 102 are in 2025. The re-score under the pooled count is a tracked directive.
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no tier 1 verdict changes; no row passes the full rule. Structural with the rolling level: 14 onsets, weighted false alarms 3.12 (limit 2), 5 of 5 onsets warned in 2025, against 11 and 1.69 with the fixed 0.12 level. The page later describes the rolling level as a two-year reserves low (dated note, a tracked directive).
    Against kill: not applicable.
  • 2026-10-11, step 3, log entry, tier development development, not a verdict
    no variant passes tier 1, tier 3 or the overall pass. Tier 5 goes no to yes for state_platt under both rules. Neither repairs 2018-19. The parent fails tier 1 at 3.46 weighted pooled (limit 2).
    Against kill: not applicable.
  • 2026-10-12, step 3, log entry, tier development development, not a verdict
    one more 2025 onset warned per variant (15 of 26 against 14), no verdict changes. Recall difference against the parent 0.038 [0.000, 0.111]. 2025-26 predicted rate 0.030 to 0.042 against 0.117 realised.
    Against kill: not applicable.
  • 2026-10-12, step 3, log entry, tier development development, not a verdict
    none passes tier 1 under the pooled count (limit 2): the row 19 of 26 at 3.46; +leadgate 18 of 26 at 2.69; +gate95 16 of 26 at 3.27; +tail 19 of 26 at 3.25. The every-day part raises 131 of the row's 184 pooled false-alarm days.
    Against kill: not applicable.
  • 2026-10-12, step 3, log entry, tier development development, not a verdict
    tier 3 fails in 2018-19 and 2025-26 at every lead. Best row h = 1: 2018-19 predicted 0.0927 against 0.2720 realised, difference +0.1793 [+0.1046, +0.2532]; 2025-26 0.0481 against 0.1165, +0.0684 [+0.0051, +0.1500]. None of the three passes.
    Against kill: not applicable.
  • 2026-10-12, step 3, log entry, tier development development, not a verdict
    one input separates them, the tail spread's level, lower at the onset warnings: AUROC 0.304 [0.16, 0.47] over all, in the same direction against the 2019-20 false alarms. Step 2, weighted rule: +tailcap75 18 of 26 onsets, recall 0.692 [0.522, 0.852], pooled false alarms 1.88 (tier 1 yes, tiers 3 and 5 no); +tailcap50 14 of 26 at 1.48. Paired Brier of +tailcap75 against the row: −0.0073 [−0.0150, −0.0005] over all days. Detail in docs/pivot/every-day-separation-result.md; the paired-Brier header on this page was later corrected (dated note, a tracked directive).
    Against kill: not applicable.
  • 2026-10-13, step 2, log entry, tier development development, not a verdict
    at h = 1 the ordinary set is 1568 days with 87 pressure days (scheduled) or 1469 with 82 (non_ordinary); the 99 month-ends that are not quarter-ends are the difference. No figure moves.
    Against kill: not applicable.
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    leaving the class out has the smallest mean absolute error at leads 4 and 5 (32.8 and 35.9 bn, against 49.1 and 51.7 for the old rule and 87.7 and 87.5 for a tracked directive's) and overall (37.2 against 50.6 and 85.7); at lead 2 (2 cases) and lead 3 (10 cases) another rule is nearer. Re-scored: no tier or pass changes; risk_gbm+structural stays at 15 of 26 onsets (tier 3 yes), structural_liquidity 11 to 12 of 26, projected_reserves 12 to 11 of 26; none of the rows passes.
    Against kill: not applicable (a data correction; no hypothesis is tested).
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    over all days at lead 1 no row beats persistence-logistic (AUROC 0.897, Brier skill 0.196; +offday −0.009 [−0.065, +0.027] and +0.042 [−0.008, +0.111]). +offday is ahead at leads 2, 3 and 5 over all days (Brier skill +0.090, +0.092, +0.062, intervals above 0) and not inside 2018-19 (62 of 82 pressure days) or 2025-26; the gain sits in 2020 and 2024 (3 and 2 pressure days). The raw as-of spread has AUROC 0.92 to 0.94, above every row. Detail in docs/pivot/off-risk-day-result.md.
    Against kill: not tested (H2's kill is on the ceiling, a tracked directive); consistent with the ordinary-day ranking being no more than the as-of spread's.
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    the ungated logistic ranks the ordinary days as well as persistence-logistic (AUROC 0.905 against 0.897 at lead 1, difference +0.008 [-0.004, +0.027]) and below the raw spread (0.941). The gate takes it to 0.736 (37 of 82 pressure days on a forecast of 0) and the tail cap to 0.493; removing only the cap from the full construction gains +0.240 [+0.156, +0.304]. Refits do not lower the pooled AUROC: within-block AUROC is lower (0.659 against 0.905).
    Against kill: not applicable (no verdict; development data).
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    spread, ordinary days, against B1: cross-fitted gbm +0.144 [+0.0002, +0.271], reachable gbm +0.192 [+0.007, +0.352] (behind in 2021-23, -0.318 [-0.529, -0.133]); the cross-fitted ceiling is not above the reachable line (-0.037 [-0.124, +0.049] on the same days); both ridge fits are worse than persistence. Indicator, read against persistence-logistic: cross-fitted gbm AUROC difference -0.016 [-0.044, +0.015], Brier skill -0.159 [-0.245, -0.059]; reachable +0.015 [-0.017, +0.058] and -0.192 [-0.374, +0.034]. The in-sample gbm (AUROC 1.000) is a reference only.
    Against kill: not applicable as a verdict (development). Under the amended reading rule: spread partly reached, by a hair; indicator data problem.
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    no tier and no pass of any row changes. structural_rolling flags 18 of 26 onsets (was 14) with tier-3 flags per 252 days 2.9 / 3.4 (was 1.2 / 1.3); structural_liquidity and structural_fitted 12 of 26 (was 11); structural_kinked_rolling 17 (was 16); structural_kinked_fitted stays at 11 with fewer false alarms (1.21 against 1.69). Detail in docs/pivot/declarations-691-result.md.
    Against kill: not applicable (a record correction; no hypothesis is tested).
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    no ranking, redundancy group or pass/fail verdict moved. Figures moved for the Fed repo columns only (e.g. fed_repo_days_since_positive ordinary-day pressure AUROC at lead 1 0.58 [0.43, 0.72] to 0.64 [0.48, 0.79]); in the judged records the dealer candidates flag more 2018 onsets (OFR logistic 15 to 18 of 27, recall 0.577 to 0.692 [0.517, 0.844]) and some paired-Brier intervals change whether they exclude zero. Detail in docs/pivot/fed-repo-rescreen-692-result.md.
    Against kill: not applicable (no verdict; development data). The ceiling statements of H2 are unchanged: the Fed repo columns stay far below the cut-off of the source screen.
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    the 2026 column is empty on both screens: 133 ordinary days and 2 pressure days (2026-01-02, 2026-02-18), under the declared minimum of 3. The 2018-2025 column reproduces the earlier page (82 pressure days on 1,469 ordinary days). a tracked directive has 87 series, not 101: the 14 fed_repo_* series cannot be read in 2026 (the repo-operations snapshot ends 2025-12-31). a tracked directive's ranked leads move by one entry (spread_rv5 enters, days_since_pressure becomes redundant). The 2018-2025 cells of a tracked directive's model test and of a tracked directive's steps 1 and 2 reproduce the earlier pages to the digit; the 2026 days (2 pressure days) move no AUROC by more than 0.02, and the conclusions stand: lagged pressure does not help (h = 1 difference -0.040 [-0.078, -0.013]), and the ordinary-day ranking is not beyond persistence-logistic or the raw as-of spread. The 2026 cell stays empty below the 3-pressure-day minimum. a tracked directive's three floor rows are not re-run, and the judge is not run on 2026 days.
    Against kill: not applicable (H2's kill is not tested here; development data never gives a verdict).
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    ngboost_laplace 17 to 13 of 26 onsets warned, 2.34 false alarms per onset in both readings, tier 1 fails (the a tracked directive draft passed it at 1.81 only because the dropped flags also left the false alarms). The benchmarks lose most of their 2019 warnings (calendar climatology 12 to 2, persistence-logistic 12 to 4, published_v1 14 to 8) and fail either way.
    Against kill: not applicable (no verdict; the +5 bp judge is retired as a decision rule, a tracked directive).
  • 2026-10-15, step 3, log entry, tier development development, not a verdict
    the difference is in the build, not the inputs. 08df8d19… rebuilds exactly (two satiation columns placed as declared); 92bf10a4… is main without a tracked directive; its only value difference from H2's is net_settlement_due_5d. Both controls reproduce H2's recorded skill against B1 (reachable +0.192 [+0.007, +0.352], ceiling +0.162 [-0.009, +0.310]) to every digit; H5 step 4's panel gives +0.196 [+0.019, +0.354] and +0.168 [+0.003, +0.316]. No published figure moves
    Against kill: not applicable (a reproducibility trace; no hypothesis is tested)
  • 2026-10-17, step 3, log entry, tier development development, not a verdict
    every commit rebuilds identically twice, so there is no nondeterminism and the digests differ by code drift: the first step that moves is net_settlement. 92bf10a4… is the chain at 2c9bd283 and 400372d6… the chain at 38a00d81; H2's 08df8d19… is not reproduced at its own commit, which gives 1e5b748a….
    Against kill: not applicable (no verdict; development data).
H3 New public data adds signal.

In the plan. New public data adds signal.

Question
Does a new public series improve H5's primary score when added to the registered candidate?
Test
a tracked directive, then a tracked directive (step 3; the nested development run against H5's candidate; queued).
Kill criterion
No new series ranks above the held ones on ordinary days.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 3
Milestones
  • M1 open Due-diligence table.
  • M2 open Snapshots and readers.
  • M3 open Nested development test.
  • M4 open Registration.
Progress markers
  • Sources assessed / usable / blocked: not measured
  • development nested skill per source: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H3
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    the export withholds 85 of 666 weekly dates of pd_repo_ust and 72 of pd_reverse_repo_ust (2022 to 2025), 3 of pd_repo_mbs, none of the fails series. Partial rank correlation with the +5 bp indicator on ordinary days: pd_reverse_repo_ust +0.112 → +0.087 [+0.05, +0.12], pd_repo_ust +0.104 → +0.076 [+0.03, +0.12]. Detail in docs/pivot/new-sources-withheld-weeks.md.
    Against kill: not applicable (H3's kill is not tested here; the two series lose rank, and neither was a lead beyond a tracked directive's own reading).
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    auc_dealer_share is no longer clear of 0.5 on ordinary days (AUROC 0.566 [0.49, 0.64] at lead 1, was 0.580 [0.51, 0.66]; scarce band 0.491 [0.41, 0.56]). auc_cover on Treasury's definition is now the auction series clear of 0.5, on the low side (ordinary days 0.365 [0.31, 0.43] at lead 1 and 0.297 [0.25, 0.35] at lead 5; partial rho -0.10 [-0.15, -0.06]). Exploratory, unadjusted for multiplicity.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-15, step 1, log entry, tier development development, not a verdict
    the ordinary-day pressure AUROC of fed_repo_days_since_positive falls from 0.64 [0.48, 0.79] to 0.50 [0.35, 0.65] at lead 1 and from 0.68 [0.51, 0.82] to 0.54 [0.39, 0.67] at lead 10, all intervals containing 0.5. The 2018 warnings of risk_logistic_base_dealer (3 of 5 onsets) are the same with the floor and with the column removed, so they do not rest on it.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-15, step 1, log entry, tier development development, not a verdict
    the six dates of the finding keep their take-up; the ordinary-day pressure AUROC of fed_repo_days_since_positive at lead 1 is 0.60 [0.42, 0.76] (counted 0.64, floor 0.50), and the 2018 warnings are 3 of 5 in every arm, including with all fed_repo_* columns zeroed.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    no family improves the candidate beyond its interval on the pooled primary score (nested skill +0.1% [-1.1%, +1.3%] pd financing, -0.7% [-1.4%, -0.1%] auction results, +0.5% [-0.1%, +1.1%] ON RRP counterparties with Holm p 0.260, -0.9% [-1.6%, -0.3%] DTS debt and cash). Two families make it worse beyond the interval. ON RRP counterparties has a lower bound of +0.0001 bp on ordinary targets, one unadjusted split.
    Against kill: the kill reading (no family improves the candidate beyond its interval) is met on development data; this is exploration, not a verdict (protocol v1).
  • 2026-10-17, groundwork G1, log entry, tier development development, not a verdict
    no announcement exists for the recurring afternoon trade of $100 to $113 mn (35 of 40 operations); the 5 announced exercises in that band are morning operations already dropped by their note. Figures are under the rule now in force unless named. Longest gap / take-up days: 2024 50 / 24 in force, 50 / 23 announcement-keyed, 134 / 11 under the ruling; 2025 32 / 55, 32 / 55, 62 / 43; 2026 17 / 27, 17 / 27, 27 / 17. The announcement-keyed rule changes one operation, the announced $57 mn term repo of 2024-09-24 (fed_repo_* columns differ on 2024-09-24 to 2024-09-27 only). The ruling changes the fed_repo_* columns on the days of the 35 operations and after. No H5 declaration reads a fed_repo column. A rule that selects the 35 without a size cutoff or an after-the-fact list cannot be stated; it is drafted for Eleonora in docs/DATA_QUALITY_DECISIONS.md with the definition as a question, and src/ is unchanged. Development data, not a verdict.
    Against kill: not applicable (data quality of an input; no kill criterion assessed).
  • 2026-10-19, step 1, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    no change. The DVP rate minus BGCR keeps its pooled Spearman with the +5 bp indicator at lead 1 (+0.175 declared, +0.177 stated; rank 16 and 20 of 62; pre-onset AUC 0.784 and 0.762), and the paired test is "no effect" at both lags with no paired Brier difference moving by more than 0.00011.
    Against kill: not applicable (no verdict; development data); the directive's kill, a change in the screen's verdict, did not occur.
  • 2026-10-20, step 1, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the lookahead is closed (the decision after each of the three days no longer reads the previous day's value). Only the two cleared columns that hold values on those days move, in the fourth decimal (DVP rate minus BGCR at lead 1: +0.1767 to +0.1768, rank 20 of 62 unchanged); every other series is identical. The paired test is no effect at the declared lag, at a tracked directive's reading and at the corrected one, with no Brier mean moving by more than 0.000007. Detail in docs/research/ofr-cleared-holidays-1016.md.
    Against kill: no change in the screen's verdict. Development data, never a verdict.
  • 2026-10-21, step 1, log entry, tier development development, not a verdict
    both results registered as class b (treasury_settlement one row off at lead 1); their figures stand as published and are marked provisional. On direct pairs the CRPS difference at h = 1 is +0.0158 bp [+0.0037, +0.0276] over 1263 origins, against +0.0101 bp [-0.0044, +0.0243] on one-step pairs. A nested compare whose arms name different training pairs is refused, naming both. Detail in the note of docs/research/ofr-cleared-holidays-1016.md.
    Against kill: not applicable (a register and an instrument; development data, never a verdict).
H4 A longer history fixes part of the 2018–19 misses.

In the plan. Longer history fixes part of 2018–19.

Question
Do series with established publication instants for 2014–18 improve H5's development score in 2018–19, and then prospectively?
Kill criterion
No 2014–18 series has an established posting time, or extended training moves 2018–19 calibration by less than its interval.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 3
Milestones
  • M1 open Posting-date table.
  • M2 open Guard updated.
  • M3 open Development test.
  • M4 open Registration.
Progress markers
  • Series released / held: not measured
  • change in 2018–19 skill: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H4
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    2018-19 coverage of the central 90% interval rises +0.050 [+0.020, +0.082] (declared) and +0.035 [+0.017, +0.054] (workbook-only); 2018-19 CRPS d +0.043 [−0.013, +0.101] and +0.064 [+0.009, +0.117]; the share above the 95th percentile does not move (0.167 → 0.174, 0.191 → 0.191). Detail in docs/pivot/posting-dates-h4-result.md.
    Against kill: not killed, as exploration: a posting time is established, and the 2018-19 calibration move's interval excludes zero in both input sets. The 2018-19 upper tail stays under-forecast.
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    none scored. No code, declaration or published figure changes.
    Against kill: not applicable (no result).
  • 2026-10-14, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    2018-19 grid CRPS 4.005 → 4.119, d −0.114 [−0.168, −0.061] (worse); all days d −0.001 [−0.038, +0.040]; 2018-19 90% coverage 0.688 → 0.659 (−0.029 [−0.064, +0.007]); 2024 and 2025-26 slightly worse, 2020 and 2021-23 better with intervals covering zero. Detail in docs/pivot/backfill-h5-726-result.md.
    Against kill: no development gain beyond the interval, so H4 is not supported by this test, as exploration only; the test is narrow, since the candidate's other inputs are imputed on back-filled rows.
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    the declared model of a tracked directive reads the bill rate, reserves and the TGA from the back-filled rows and is now refused (LookAheadError); its pooled (+0.081 [+0.035, +0.133]) and 2021-23 (+0.149 [+0.061, +0.257]) CRPS gains rest on series that are not admitted. The workbook-only variant passes: pooled +0.032 [−0.002, +0.072], 2021-23 +0.033 [−0.041, +0.125], 2018-19 central-90% coverage +0.035 [+0.017, +0.054]. Detail in docs/pivot/posting-dates-h4-result.md.
    Against kill: not killed on the workbook-only variant (a posting time is established; the 2018-19 calibration move's interval excludes zero).
  • 2026-10-15, step 2, log entry, tier development development, not a verdict
    the page's editor's note dates a correction of the linked historical-rates file to May 17, 2018 and gives no time of day; it does not state a first posting.
    Against kill: not applicable (evidence for the posting-instant ruling; no figure moves).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict
    the build runs again and the published rows still reproduce the scratch panel; the a tracked directive page now carries a dated note that its 2018 gains rest on series that are not admitted. No figure changed.
    Against kill: not applicable (a repair of the back-fill build; development data, no verdict).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict
    nothing is scored and no figure moves. A tracked directive with-history arm and the tier-1 extended-panel rows that read the volume are listed in the pull request; whether to re-score them is a marked question for Eleonora.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict
    the 2018-19 figures reproduce (mean d −0.114). 2018-19 stays a cost on the ruled interval [−0.180, −0.058], carried by 2018 H2 (−0.229); 2019 H1, 2019 H2 and 2019 alone cover zero. 2024 and 2025-26 are costs on the ruled interval but cover zero at the 250-day reference c; the pooled sample covers zero. At most 50% back-filled leaves no 2018-19 day; at 75% 2018-19 covers zero (124 days), at 90% it stays a cost. Development data, not a verdict.
    Against kill: not applicable (a re-read of step 3's measurement; whether H4's kill is read is Eleonora's).
H5 A forecast of the whole range of the SOFR − IORB spread, in basis points, beats the phase 2 models and the yes-or-no pressure forecasts.

In the plan. The SOFR − IORB spread distribution in bp improves on phase 2 and beats classification. primary goal

Question
Does a registered distribution forecast of SOFR − IORB (h = 1–5) beat as-of persistence and calendar climatology on CRPS by at least the MME, on prospective days?
Open questions
2021–23 and the tails.
Test
tracked directives (step 3, done), a tracked directive (step 4, done), and a tracked directive (step 6, the validation report; done).
Kill criterion
No CRPS gain over the phase 2 models, and no ordinary-day ranking gain.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 6
Milestones
  • M1 open G1–G5 complete: protocol merged, scorer validated, logging live, power study in, a tracked directive merged.
  • M2 done Baseline re-score published on development days. evidence
  • M3 open Ablation of the new inputs published (which families help, with intervals).
  • M4 done 2021–23 and upper-tail diagnoses published. evidence
  • M5 open Candidate registered (attested).
  • M5a done Validation report rewritten for the chosen candidate (step 6), ready for Eleonora to read with the evidence
Progress markers
  • Development CRPS skill against B1 and B2 (pooled, 2021–23, upper tail), for the best candidate so far: not measured
  • Variant count: not measured
  • Prospective days logged: not measured
  • Running skill with its interval (shown as "not yet decision-grade" before 60 days): not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H5
  • 2026-10-05, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    criterion met on the interval evidence for beating as-of persistence on CRPS (paired intervals exclude zero); not uniform: every gbm loses to persistence in 2021-23 and the uncalibrated gbm loses on quarter ends. The tail clause is measured and failing: at the upper thresholds every gbm's exceedance probabilities are beaten by climatology.
    Against kill: phase 2 closed for now by Eleonora on 5 October 2026 with two items open (PLAN.md, Phase 2).
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    no new figure; a page that shows each candidate's spread CRPS difference, ordinary-day AUROC, Brier difference, calibration and judge tiers, with "not measured" where the evidence has none.
    Against kill: not applicable (no verdict; infrastructure).
  • 2026-10-13, step 1, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    published declaration 1.814 bp on its five levels, +21.8% [+14.4%, +41.0%] against B1 and +27.4% [+17.8%, +36.5%] against B2 there; phase 2 gbm on the grid +20.7% [+13.3%, +40.0%] and +27.4% [+17.4%, +36.6%]. The new inputs add nothing on the primary score (ablation −0.9% [−2.3%, +0.6%] for the published declaration, −0.8% [−2.3%, +0.6%] for the gbm); no variant beats B3 on its five levels. Upper-tail twCRPS: only the two-part form is ahead of B3, +5.3% [+0.7%, +10.5%]. In 2021-23 no variant beats persistence.
    Against kill: not applicable (development days give no verdict); no CRPS gain over the phase 2 models on the primary score.
  • 2026-10-13, step 2, log entry, tier development development, not a verdict
    grid CRPS 1.778 bp over 1,855 decision days to 2025-12-31: skill +22.3% [+13.7%, +29.5%] against B1 and +29.4% [+21.4%, +37.3%] against B2; upper-tail twCRPS +32.4% and +17.8%. Against the published distribution on five levels: +1.2% [-2.3%, +4.8%], a tie. Weak spots: 2021-23 (-2.6% vs B1) and quarter-end days. It narrows B1's over-forecast of P(> +5 bp) on ordinary days (2018-19 -0.113 to -0.071, 2025-26 -0.049 to -0.028) without closing it.
    Against kill: not applicable (no verdict; development data). It does not beat the published distribution, so it adds nothing over the incumbent on CRPS.
  • 2026-10-13, step 6, log entry, tier development development, not a verdict
    not applicable (a plan edit; no experiment).
    Against kill: not applicable.
  • 2026-10-13, step 3, log entry, tier development development, not a verdict
    +offday of a tracked directive at h = 1 has a pooled slope of 0.83, 0.48 inside 2018-19 and 0.79 inside 2025-26; at h = 3 to 5, 0.14 to 0.22 inside 2018-19 against a pooled 0.78 to 0.80. a tracked directive's rows have no per-regime slope yet.
    Against kill: not applicable (a correction to how step 3 figures are read).
  • 2026-10-14, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    (c) loses to B1 in 2021-23, -30.4% [-54.7%, -13.5%]; the phase 2 gbm does not resolvably (-0.9% [-17.8%, +10.1%]). For (c) the remainder after a constant level and scale correction is 0.184 of the 0.216 bp gap (lower bound +0.087), read as regime transfer: the loss is -60.8% in 2022 and +1.0% in 2023. Shrink toward B1 closes the gap (+1.2% [-2.6%, +4.6%]); the level and scale remedies do not.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-14, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    twCRPS skill pooled is +35.7% [+26.5%, +51.7%] against B1 and +21.3% [+8.8%, +34.4%] against B2 for (c) (+31.3% and +15.9% for the gbm); neither beats B2 in the abundant state, and neither has a resolved gain over B1 on quarter-end or tax-date targets. The q95 exceedance rate is 0.095 for (c) and 0.128 for the gbm (lower bounds 0.075 and 0.106, nominal 0.05) with a median PIT of 0.825 on days above 0 bp: under-dispersed, not mislocated pooled.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    grid CRPS against the control, 1,868 decision days: bill settlement −0.10% [−0.49%, +0.28%]; window +1.03% [+0.50%, +1.61%], at h = 3 to 5 (+1.30%, +1.74%, +1.69%, each interval above zero), none at h = 1 and 2, and only in 2021-23 by regime (a regime with no ordinary pressure day); upper-tail twCRPS inside its interval for both. The screen's near-threshold bill contrast reproduces (13/44 against 5/60 at lead 1, none of it plain persistence) but does not carry into the distribution; the window's lead-1 rise is plain persistence. Detail in docs/pivot/near-threshold-688-result.md.
    Against kill: not applicable (H5's kill is by the protocol's futility rule; development days give no verdict).
  • 2026-10-14, step 3, log entry, tier development development, not a verdict
    docs/research/literature-2026-10.md. Nothing found that fits a short-horizon spread directly; five leads, three for H5 (quantile-wise combination, tail calibration with twCRPS, conformal with a state predictor). No similar public SOFR − IORB forecasting project dated after 30 September was found.
    Against kill: not applicable (reading only; development).
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    grid CRPS 1.737 / 1.780 / 1.745 bp against mean reversion's 1.778 over 1,855 decision days to 2025-12-31; gain over mean reversion, studentized 90%: (i) +2.3% [+1.0%, +3.6%], (ii) -0.1% [-4.5%, +3.1%], (iii) +1.9% [-2.7%, +5.2%]. Upper-tail twCRPS (i) +4.1% [+2.4%, +5.8%]. (i) loses in 2020 (-5.9%) and 2021-23 (-0.3%); (ii) loses after a risk day (-4.3%). Calm ordinary-day P(> +5 bp) error: mean reversion -0.046, (i) -0.021, (iii) -0.006. Detail in docs/pivot/spread-mr-variants-result.md.
    Against kill: not applicable (no verdict; development data). Only (i) has an interval above zero against mean reversion.
  • 2026-10-13, groundwork G3, log entry, tier development development, not a verdict
    no figure; the prospective log carries the protocol block (copied from the fenced block of PR a tracked directive, which the log could not hold until a tracked directive).
    Against kill: not applicable (groundwork).
  • 2026-10-13, groundwork G4, log entry, tier development development, not a verdict
    3% is not detected within 250 days (power 0.16 at 125, 0.29 at 250 against a 0.80 target); look 1 (60 days) cannot be read with 10,000 draws; post-hoc, the test fires on 21.75% of paths with no true difference by 250 days.
    Against kill: not applicable (groundwork).
  • 2026-10-14, step 4, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    best candidate gbm_funding +0.257 [+0.114, +0.400] against B1 on ordinary targets, ceiling +0.168 [+0.003, +0.316], reachable line +0.196 [+0.019, +0.354]; headroom of the ceiling −0.090 [−0.161, −0.019]. Shown in one of 13 cells: regime 2024 (+0.110 [+0.027, +0.160]). The rerun differs from H2's recorded skills by 0.004 to 0.006. Detail in docs/pivot/h5-step4-result.md.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-14, step 5, log entry, tier development development, not a verdict
    the count moves from 2 declarations and 4 variants (the files named spread_distribution_*) to 19 declarations and 55 variants. near_threshold_688.json, the case that found the gap, is now seen (3 variants, under model). The 55 include the pre-pivot +5 bp classification variants as well as spread-forecast ones, because the ruling counts by content.
    Against kill: not applicable (no verdict; a count, not a score).
  • 2026-10-14, step 5, log entry, tier development development, not a verdict
    the oracle block of the finding, written the evening after its decision day, is now refused; two recorded mutations kill the guard and the commit-time check. Nothing published moves and no registration is made.
    Against kill: not applicable (no hypothesis test).
  • 2026-10-15, step 2, log entry, tier development development, not a verdict
    grid CRPS against the control, the window flag +1.03% [+0.44%, +1.64%] (was [+0.50%, +1.61%]), still above zero at h = 3 to 5 (+1.30% [+0.39%, +2.18%], +1.74% [+0.80%, +2.65%], +1.69% [+0.88%, +2.53%]); bill settlement −0.10% [−0.54%, +0.28%] (was [−0.49%, +0.28%]). One cell crosses zero: the window's pinball loss at 0.05, +1.09% [−0.03%, +2.23%]. Against B1 the control is +19.26% [+10.55%, +39.09%] (was [+8.36%, +28.35%]). Quarter-end days: identical forecasts; tax-date days: no interval. Point values unchanged. Detail in docs/pivot/near-threshold-688-result.md, section "Re-score on the ruled interval".
    Against kill: not applicable (development days give no verdict).
  • 2026-10-15, step 2, log entry, tier development development, not a verdict
    grid CRPS 1.750 / 1.780 / 1.759 bp against mean reversion's 1.778; gain over mean reversion, studentized 90%: (i) +1.6% [+0.2%, +2.9%] (was +2.3% [+1.0%, +3.6%]), (ii) -0.1% [-4.5%, +3.1%] (unchanged), (iii) +1.1% [-3.4%, +4.5%] (was +1.9% [-2.7%, +5.2%]). Upper-tail twCRPS (i) +2.4% [+0.2%, +4.3%] (was +4.1% [+2.4%, +5.8%]). (i) in 2020: -6.7% [-9.8%, -3.7%] (was -5.9% [-10.7%, +0.8%]). Detail in docs/pivot/spread-mr-variants-result.md.
    Against kill: not applicable (no verdict; development data). (i) keeps an interval above zero against mean reversion; part of the earlier gain came from the read that bypassed the as-of rule.
  • 2026-10-15, step 2, log entry, tier development development, not a verdict
    the helpers agree with the old ones to 4e-13 (624), exactly (632) and within 5e-3 in small samples (626) on 1,840 synthetic cells; a cell on which the shared fit does not converge now reads undefined, which happened in 137 cells with forecasts far below the event rate. The published panels are not tracked, so no page was re-run.
    Against kill: not applicable (groundwork; development data gives no verdict).
  • 2026-10-15, step 3, log entry, tier development development, not a verdict
    no slope or other figure moves; 66 table cells change their mark only (24 in step 1, 42 in step 2) (for example +tailcap75 at h = 1 in 2018-19: 1.39 now carries †, 2 events in the fit of 62 pressure days). The regime convention (three or five regimes) is left to Eleonora.
    Against kill: not applicable (no hypothesis test).
  • 2026-10-14, step 3, log entry, tier development development, not a verdict
    inside 2018-19 (63 of 87 pressure days) the structural rows read 0.18 to 0.27 (fixed and fitted kink) and 0.30 to 0.47 (rolling) at h = 1 to 5, intervals below 1; inside 2025-26, 0.98 to 1.51, intervals including 1; the pooled 0.39 to 0.74 is a mean of the two. The rolling form is nearer 1 than the other two only in 2018-19, and persistence_logistic is nearer than it at h = 1 to 4. Slow step found: the five-horizon rebuild of what the table reads is 16 minutes; the slow steps are risk_date_severity.py (a skew-t fit, about 0.6 s a day, not needed for this table) and the single-process bootstrap (about 26 minutes on four processes).
    Against kill: not applicable (a correction to how step 3 figures are read; development data, not a verdict).
  • 2026-10-15, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    grid CRPS skill against B1, pooled → ordinary-anchor days → without 2019-09-18: gbm +20.7% [+13.3%, +40.0%] → +9.0% [+4.6%, +14.9%] → +14.9% [+10.3%, +21.3%]; (c) +20.3% [+11.0%, +38.0%] → +9.0% [+2.9%, +15.8%] → +14.5% [+7.7%, +22.2%]. The gain concentrates on days after a calendar spike. (c)'s Brier gain at +5 bp holds pooled (+19.0% [+13.7%, +23.7%] against persistence-logistic) and in 2018-19 and 2025-26, not in 2020; 2021-23 has no events. Detail in docs/pivot/h5-splits-805-result.md.
    Against kill: not applicable (no verdict; development data). H5's kill, no CRPS gain over phase 2 and no ordinary-day ranking gain, is not assessed here; the ordinary-anchor gain is resolved and about +9%.
  • 2026-10-15, groundwork G1, log entry, tier development development, not a verdict
    no figure moves. H5's 386 risk days and H6's 386 (every type) are identical before and after. The shared definition read the calendar-day month-end window has 404; the two readings disagree on 58 days (20 only in the business-day reading, 38 only in the calendar-day one).
    Against kill: not applicable (groundwork).
  • 2026-10-15, step 5, log entry, tier development development, not a verdict
    the page still reads 22 declarations with a variants block, 65 variants. Beside it, 18 more files name 72 arms as candidates or arms, and 33 declarations carry no block the count can read. These are not added to the 65: what counts as a variant is Eleonora's question in the PR.
    Against kill: not applicable (no hypothesis test).
  • 2026-10-15, step 2, log entry, tier development development, not a verdict
    38 of 4,972 cases change. On them the mean absolute error against the completed net falls from 71.6 to 42.2 bn (2020: 96.9 to 47.3 on 22 cases; 2025-26: 36.0 to 50.0 on 2); over all cases 1.9 to 1.6. 68 ahead_columns cells move, 43 of them in 2020. No published figure moves. Detail in docs/pivot/evidence/cmb-point-in-time-738/result.md.
    Against kill: not applicable (an input-timing correction; development data gives no verdict).
  • 2026-10-16, step 3, log entry, tier development development, not a verdict
    inside 2018-19 (73 or 74 of 100 or 101 pressure days) (b) reads 0.07 to 0.60 at h = 1 to 5, intervals below 1; persistence_logistic reads 0.32 to 0.58, so its pooled 0.89 to 1.08 ("the better calibrated of the two") holds only in 2025-26 (0.82 to 1.07). In 2025-26 (b) reads 0.30 to 0.90 with intervals including 1. The rebuilt rows (a) and (b) differ slightly from the page's first run (AUROC 0.9072 against 0.9029 at h = 1 for (b)); references reproduce.
    Against kill: not applicable (a correction to how step 3 figures are read; development data, not a verdict).
  • 2026-10-16, step 3, log entry, tier development development, not a verdict
    inside 2018-19 (62 of 82 pressure days) the parent reads 0.32 to 0.61 at h = 1 to 5 and lagged pressure 0.21 to 0.51, intervals below 1 from h = 2; the pooled 0.85 to 1.00 is not calibration by regime. In 2025-26 the rows read 0.62 to 0.94 with intervals including 1. Two pooled cells differ from Table M2 (parent h = 3: 0.91 against 0.98; lagpress h = 4: 0.71 against 0.73), the fit definition being a tracked directive's.
    Against kill: not applicable (a correction to how step 3 figures are read; development data, not a verdict).
  • 2026-10-16, step 3, log entry, tier development development, not a verdict
    ml.py is not the cause: all five trees give the same rows ((a) AUROC 0.5673, (b) 0.9072, slope 0.497). The cause is the two distance columns, rebuilt per H.4.1 release since a tracked directive: with the older columns the page's 0.5629, 0.9029 and slope 0.463 return to the digit. Development data, no verdict.
    Against kill: not applicable.
  • 2026-10-16, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    on ordinary target days from 2025-12-12 (6 pressure days of 152 to 155 cells per lead) every law over-forecasts: lead 1 mean P 0.086 mean reversion, 0.070 (i), 0.077 (c), 0.057 gbm_funding, 0.085 persistence-logistic against 0.039 realised; lead 5 0.117, 0.090, 0.123, 0.067, 0.095. In 2019-10-15 to 2020-02-28 (9 pressure days of 80) lead 1 is 0.232, 0.201, 0.159, 0.160, 0.224 against 0.113. The level part is 0.001 to 0.025 of an error of 0.02 to 0.09: the over-forecast sits in the residual pool, not the centre. Detail in docs/pivot/calibration-reserve-mgmt-845-result.md.
    Against kill: not applicable (calibration in the large of existing laws; development data, not a verdict).
  • 2026-10-15, step 5, log entry, tier development development, not a verdict
    a block regenerated or committed after its decision day now fails on read-back; commit times exist for the fill step. Two recorded mutations kill the two guards. No rule changes, nothing published moves and no registration is made.
    Against kill: not applicable (no hypothesis test).
  • 2026-10-15, step 1, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the twin is behind the control: pooled skill of the twin over the control -5.4% [-10.2, -1.2] (-5.4% [-10.1, -1.2] without 2019-09-18), whole interval below zero at leads 2 to 5; ordinary targets -7.7%, regime 2021-23 -19.7%; no split has an interval wholly above zero (2024: +9.5% [-0.7, +18.9]). Skill against B1 is +20.7% for the control and +16.4% for the twin (+14.9% and +10.3% without 2019-09-18).
    Against kill: not applicable (a measurement ahead of step 5; development data gives no verdict).
  • 2026-10-16, step 6, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the report replaces the phase 2 content and carries a proposed use-limitation statement; the phase 2 records are untouched. Nothing is published and no day is scored.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    lead 1 pooled, ordinary days: AUROC above persistence-logistic for mean reversion (+0.037 [+0.012, +0.069]), (i) (+0.038 [+0.013, +0.069]) and gbm_funding (+0.029 [+0.006, +0.059]); (c) covers zero (+0.012 [-0.017, +0.040]). Across 15 regime-by-lead cells with an interval: above zero in 5 (mean reversion), 5 ((i)), 0 ((c)), 1 (gbm_funding); below zero in 2, 2, 2, 1. Brier differences mostly cover zero. Detail in docs/pivot/ordinary-day-p5-result.md.
    Against kill: not applicable (no verdict; development data, scoring protocol v1 a tracked directive).
  • 2026-10-17, step 2, log entry, tier development development, not a verdict
    no verdict or tier changes. (b) warns 19 of 26 onsets (0.731 [0.560, 0.889]), tracked 20 (0.769 [0.600, 0.923]), and fails tier 1 at 5.09 weighted false alarms per onset (5.35); its onset-recall gain over the +tailcap75 row is +0.038 [-0.048, +0.133] (tracked +0.077 [0.000, +0.172]) and its h = 5 Brier gain over the comparator now includes zero. Ordinary-day AUROC of (b) 0.907 (0.903). CRPS moves by at most 0.03 bp. tracked directives and a tracked directive drift slightly on their pre-a tracked directive columns; tracked directives and a tracked directive read the new ones.
    Against kill: not applicable (a re-score of an exploratory page; development data, not a verdict).
  • 2026-10-17, step 2, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    no defect. The pairs are aligned (anchor h + 1 rows before the target, both guards pass); the sample difference is immaterial (+0.1% [-0.2, +0.6]). The shortfall falls as the training pairs get fresher: lead 5, twin -7.0% against the control, k = 3 -3.0% [-8.2, +1.8], k = 1 +0.9% [-2.0, +3.8]; lead 3, k = 2 -3.2%, k = 1 -0.5% [-3.4, +2.2]. It sits in 2021-23 (-20.1% [-30.9, -12.5]) and on ordinary days; the twin is ahead in 2024. Development data, not a verdict.
    Against kill: not applicable (a diagnosis of a construction question; no kill criterion assessed).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict
    H5 reads step 3 of 6 (development done on merged records, registration not yet), not step 6. Every figure is copied from a merged record; nothing is a verdict.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    a tracked directive and a tracked directive reproduce the tracked figures (differences 5e-15 and 0); in a tracked directive the candidates reproduce and the H2 ceiling does not (scratch panel digest differs). Without the day the candidates' pooled ordinary skill against B1 falls by about 9 points and stays above zero (gbm_funding +0.257 to +0.169); headroom changes sign nowhere; the reachable line's skill against B1 loses its resolved lower bound (+0.193 [+0.015, +0.352] to +0.097 [-0.008, +0.186]). Against B2 nothing moves. Development data, not a verdict.
    Against kill: not applicable (a sensitivity table; nothing re-ruled).
  • 2026-10-17, groundwork G2, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the controls reproduce the tracked evidence to 1e-9 for tracked directives and a tracked directive; a tracked directive's does not byte for byte (scratch panel digest drift, a tracked directive) but is within the declared tolerance. Pooled skills move by about 0.1 points at most, ordinary-day groups by at most 0.8 points with no sign change, month-end groups by up to 5.5 points; the kill outcomes shown do not change. Development data, not a verdict.
    Against kill: not applicable (a measurement of a definition, no kill criterion assessed).
  • 2026-10-17, step 2, log entry, tier development development, not a verdict
    three values on the results page move: 2022-10-03 0.003 to 0.0, 2025-12-23 0.006 to 0.0, 2025-12-24 0.503 to 0.5 (USD bn); nothing is scored.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-18, step 3, log entry, tier development development, not a verdict
    one path changes on the page; no figure moves and nothing is scored. The result is development data, not a verdict.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-18, step 3, log entry, tier development development, not a verdict
    the "with" run equals the tracked file (6e-16). Records whose bound changes sign: 16 (12 before; 4 in both). Against B2 the tax-date and 2018-19 cells move from covering zero to excluding it (spread_mr_ctx_b2, tax dates: +0.372 [-0.007, +0.555] to +0.461 [+0.167, +0.618]); the published-distribution gap goes from +0.031 [-0.008, +0.068] to +0.040 [+0.001, +0.076]. Pooled skills are unchanged. Development data, not a verdict.
    Against kill: not applicable (a correction of a sensitivity table).
  • 2026-10-19, step 2, log entry, tier development development, not a verdict
    fed_repo_days_since_positive longest gap moves in 2020 (66 to 124), 2021 (156 to 250), and 2023 (39 to 63); take-up days drop by 1 in 2020, 1 in 2021, 2 in 2023 and 1 in 2024. srf_total_accepted moves on one date, 2023-05-23 (0.076 to 0.0 USD bn). Nothing is scored. Detail in docs/pivot/desk-test-marks-933-result.md.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-19, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    by regime and lead, gbm_funding has 1 cell above zero and 1 below of 15; the pooled difference exceeds every regime's in 13 of 20 model-by-lead rows, which comes from ranking across regimes (61 of 81 pressure days are in 2018-19, 5 in 2020-24). No pooled gain is claimed. Development data, not a verdict. Detail in docs/pivot/ordinary-day-p5-844/correction-934.md.
    Against kill: not applicable (no verdict; what counts as a ranking gain is Eleonora's).
  • 2026-10-19, groundwork G3, log entry, tier development development, not a verdict
    no figure; nothing is scored. The false "Failed: <day>, at step record" comments of 10-13 to 10-16 came from the 01:15 UTC fallback slot starting after midnight ET.
    Against kill: not applicable (groundwork).
  • 2026-10-19, groundwork G3, log entry, tier development development, not a verdict
    the API's revision indicator is blank on all 2104 rows, so no revised date can be shown and first prints for the past are not recoverable here; the paired effect on grid CRPS and on the +0, +5 and +10 bp labels is not computed, and earlier H5 figures stay "current vintage". Exposure bound to 2025-12-31 is on the page, not an effect.
    Against kill: not applicable (groundwork; nothing is scored).
  • 2026-10-19, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    over 1,868 decision days to 2025-12-23, the arm's skill over gbm_funding is +2.8% [+1.7%, +3.8%] pooled; on month-end targets +13.8% [+11.1%, +16.6%] (149 days); on mid-month coupon dates +13.8% [+8.6%, +21.5%] (115 days); on ordinary days -0.2% [-1.9%, +1.3%] (1,486 days); on tax dates +2.4% [-1.0%, +7.4%]; quarter-ends too thin. The direct-pairs twin's skill over the arm is -4.9% [-7.3%, -2.6%] pooled. Against B1 +21.6% [+13.8%, +39.2%], against B2 +35.9% [+24.2%, +44.4%]. By regime the arm is ahead of gbm_funding in every regime, the interval clear of zero in 2018-19 only. Detail in docs/research/aligned-pairs-931-result.md.
    Against kill: the kill condition (no CRPS gain over the phase 2 models and no ordinary-day ranking gain) is not touched: the gain comes on settlement days and ordinary days are level. Development data, never a verdict.
  • 2026-10-19, step 2, log entry, tier development development, not a verdict
    (a) pooled skill of the relabelled B2 against B2 as is -3.0% [-13.0%, -0.5%]; on the turn days -17.7% [-88.4%, +3.9%]; on the penultimate days +3.2% [-6.8%, +14.6%]; better in 2024 (+2.7% [+0.9%, +5.0%]), worse in 2018-19 and 2020. The relabelled year_end pool is two days a year. (b) pooled -1.0% [-3.7%, +0.1%], turn days +0.8% [-0.2%, +1.6%]; the sensitivity pooled -0.1% [-0.5%, +0.2%], turn days +0.6% [+0.4%, +0.8%]. (c) the calendar benchmark on the turn set against as is on the 1,031 common cells: -5.8% [-14.7%, -2.4%]. Detail in docs/research/turn-day-labels-959-result.md.
    Against kill: no kill clause of H5 step 2 is read here; the relabelled B2 does not beat B2 as is pooled, so the data give no reason to adopt the label on skill. Adoption is a section 13 change and a data meaning, Eleonora's. Development data, not a verdict.
  • 2026-10-19, step 5, log entry, tier development development, not a verdict
    grid CRPS skill of B1′ over B1 is +15.8% [+8.1%, +49.2%] pooled and +19.7% [+7.6%, +75.9%] on ordinary targets, but +1.1% [+0.2%, +1.8%] when the anchor is an ordinary day; over B2 +23.4% [+12.1%, +33.7%]. spread_mr_ctx over B1′ is +9.2% [+4.9%, +15.3%] pooled and −7.8% [−13.6%, −2.4%] in 2021-23. Detail in docs/research/b1-calendar-960-result.md.
    Against kill: not evaluated (the gbm candidate's skill over B1′ and over spread_mr_ctx is not scored); development data, not a verdict.
  • 2026-10-19, step 4, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    H2's ceiling and reachable fits are aligned; gbm_funding at lead 1 and a tracked directive variants a and b are one day off. Quarter-ends reach 20 in the training window in about a third of refits. On direct pairs the inputs add skill (+0.075 [+0.054, +0.098] pooled, +0.104 on calendar days), but against gbm_funding the arm is flat pooled (+0.001 [−0.042, +0.043]) because direct pairs cost skill alone (−0.054), with a calendar-day gain (+0.068 [+0.002, +0.141] at leaf 5). The ruled one-step arm beats gbm_funding (+0.031 [+0.019, +0.045] pooled, +0.062 [+0.032, +0.107] on calendar days), so "calendar makes it worse" is not reproduced; alignment alone, calendar fixed, is −0.031 [−0.072, +0.008] pooled. Development data, not a verdict. Detail in docs/research/drivers-audit-951-result.md.
    Against kill: not reached; H5's kill (no CRPS gain over phase 2 and no ordinary-day ranking gain) is not decided by development data.
  • 2026-10-19, step 2, log entry, tier development development, not a verdict
    pooled, B2 with October is +0.3% [-0.2, +1.1] on grid CRPS (no difference) and the ranker's precision@5 gains +0.006 [+0.000, +0.014]. In the October window B2 improves by +16.7% [+2.8, +36.6] and the ranker by +0.068 [+0.011, +0.128] precision@5; the control's own window shows no gain (-3.8% [-17.5, +9.5]). The October window holds a pressure day in 2 of its 8 years (2019, 2025), so the gain rests on them. Development data, not a verdict. Detail in docs/research/tax-date-october-965-result.md.
    Against kill: not applicable (no verdict; the tax-date definition is Eleonora's).
  • 2026-10-19, step 3, log entry, tier development development, not a verdict
    grid CRPS skill, pooled: (i) +1.2% [+0.5%, +2.2%] against B1; (ii) +1.5% [+0.5%, +2.7%] against its own pool and +23.5% [+17.2%, +39.8%] against B1. In 2021-23, where the flag is on for 660 of 748 days, neither resolves a gain (i: +0.1% [-3.5%, +4.8%] against B1; ii: +2.2% [-2.8%, +8.7%] against its own pool). The gains are in 2024-26 (ii against its own pool +4.1% [+3.2%, +5.1%]) and in the flag-off state, where the flag is off on every day of 2025-26. Development data, not a verdict. Detail in docs/research/floor-flag-966-result.md. Added 22 October: the scaled mean reversion beats B1 pooled by +25.8% [+19.6%, +42.2%] (grid CRPS), and the flag does not improve it: (iv) flag-restricted pool against the scaled model pooled -0.1% [-0.6%, +0.3%], on the 2024-26 days -0.4% [-1.2%, +0.4%]; (v) two-part rule (B1 while the flag is on) against the scaled model pooled -1.2% [-2.1%, -0.4%] and in 2021-23 -5.2% [-10.1%, -0.1%]. The upper tail (twCRPS) pooled: (iv) -0.0% [-0.1%, +0.1%], (v) -0.1% [-0.2%, -0.0%]. Arms (i) and (ii) re-scored identically.
    Against kill: (ii) kill rule (no gain over its own pool on 2024-26 days, interval covering 0) not met; (iv) the same rule on the scaled model's pool: met (-0.4% [-1.2%, +0.4%]); (v) loses to the scaled model pooled by more than its interval: met (upper bound -0.4%); (iii) not run (Eleonora's ruling of 22 October: Mac run skipped).
  • 2026-10-19, groundwork G3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    reported only, nothing decided. The CRPS ratio to B1 is 1.266 in 2021-23 (above 1.1 from 2021-07-09; below 1 in 2018-19, 2024 and 2025) and the q95 miss rate is 0.116 in 2024 with the Kupiec and Christoffersen stop set from 2024-09-04. The proposed thresholds do not discriminate: a flag is set on most days (the Christoffersen test in every regime). Detail in docs/research/live-monitoring-969-result.md.
    Against kill: not applicable (groundwork).
  • 2026-10-19, step 3, log entry, tier development development, not a verdict
    34 of 1,873 scored days change state at horizon 1 (19 up, 15 down; 33 days at horizons 2 to 5), none enter the risky set and five leave it; the changed days fall in 2020, 2023 and 2025. No onset changes state. The Wednesday level differs from the average by 24 bn on average in absolute terms for reserves and 16 bn for the TGA. Detail in docs/research/h41-wednesday-levels-970-result.md. The never-revised status was not re-verified (ALFRED refused).
    Against kill: the kill condition (no movement) is not met on the scored days and is met at the onsets. Development data, never a verdict.
  • 2026-10-19, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the midpoint bins reproduce a tracked directive's report to the digit. In 2021-23 (3,740 cells) the share of PIT at or below 0.10 is 0.438 midpoint and 0.421 randomised for c_two_part_new, 0.364 and 0.343 for gbm_funding; under 20 further seeds 0.419 to 0.425 and 0.333 to 0.347. Detail in docs/research/randomised-pit-970-result.md.
    Against kill: not a kill test. The declared reading rule says the a tracked directive reading of the 2021-23 low-PIT share stands; the ties moved the share by 0.02 at most. Development data, never a verdict.
  • 2026-10-19, step 3, log entry, tier development development, not a verdict
    the guard refuses quarter_end, tax_date and the scheduled fields in a one-step fit and leaves direct-pair fits and fits without such columns unchanged. Committed arms it would refuse are listed in docs/pivot/one-step-guard-947.md (the a tracked directive variants a and b, and scripts that reuse their lists). Development data, not a verdict.
    Against kill: not applicable (no verdict).
  • 2026-10-20, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    over 1,868 decision days to 2025-12-23 the arm's skill over gbm_funding is −5.5% [−9.0%, −2.5%] pooled, and below zero at every lead (lead 1 −4.1% [−8.7%, −0.7%]); against gbm_funding_aligned at lead 1 −7.0% [−11.7%, −3.4%]. By regime: 2018-19 −5.6% [−12.2%, −0.4%], 2020 −13.7% [−41.9%, −4.0%], 2021-23 −10.6% [−17.8%, −5.5%], 2024 +0.0% [−2.2%, +2.6%], 2025-26 +0.6% [−2.4%, +3.2%]. Month-ends +0.8% [−6.1%, +7.6%], ordinary days −7.8% [−11.8%, −4.4%]. Against B1 +16.4% [+7.8%, +38.2%], against B2 +23.4% [+14.1%, +32.7%]. Detail in docs/research/onrrp-distance-948-result.md.
    Against kill: the kill condition (no CRPS gain over the phase 2 models) is not touched by a variant that does worse than gbm_funding. Development data, never a verdict.
  • 2026-10-20, step 5, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    over 1,855 decision days to 2025-12-23 the grid CRPS skill of gbm_funding is −4.1% [−8.0%, −0.3%] over spread_mr_ctx pooled and −2.2% [−6.9%, +2.7%] on ordinary targets, +5.5% [+1.3%, +11.7%] over B1′ pooled, +20.4% [+12.8%, +41.2%] over B1 and +27.6% [+17.9%, +37.2%] over B2. Reading rule 1 (lower bound on ordinary targets below 0) holds as printed: the gbm is not shown to carry anything beyond spread_mr_ctx. Reading rule 2 (pooled skill over B1′ below 3%) does not: +5.5%. Detail in docs/research/b1-calendar-960-result.md.
    Against kill: not a verdict; development data. The gbm's lead over B1′ is not shown in 2018-19, 2020 or 2021-23.
  • 2026-10-20, step 4, log entry, tier development development, not a verdict
    8 rows change between a gain and no gain (1a), among them gbm_funding -> direct_cal_leaf5 on calendar days and B1 and gbm_funding -> direct_cal_leaf20 on month-ends, which read as gains on the percentile interval and not on the bound; 40 percentile harm rows read as not seen because a one-sided bound cannot confirm a harm. Detail in docs/research/drivers-audit-951-studentized.md.
    Against kill: no kill clause is tested; development data, never a verdict.
  • 2026-10-20, step 3, log entry, tier development development, not a verdict
    gbm_funding_cal_aligned beats gbm_funding on calendar days (grid CRPS skill +3.2%, one-sided 95% lower bound +0.7%) and does not lose on ordinary days (-2.6% [-6.4%, +0.7%]); pooled +1.1% [-1.1%, +3.5%]; it is weak in 2021-23 (-7.9% [-14.3%, -2.1%]). gbm_funding_cal_direct is not shown to beat gbm_funding on calendar days (-0.1%, lower bound -5.4%). Aligned over direct, pooled: +3.6% [-0.1%, +7.3%]. Development data, not a verdict.
    Against kill: the declared reading rule is met for the aligned variant (beats on calendar days, does not lose on ordinary days) and not for the direct one; no kill condition is read, and the result is not a verdict.
  • 2026-10-20, step 3, log entry, tier development development, not a verdict
    every declaration that names a calendar or scheduled column is classified, and a test fails when a new one is not. The results page marks the figures of the registered log entries, and the incumbent's, "provisional: calendar not read at the target day". No result, record or published figure is edited.
    Against kill: not applicable (a register, not a model).
  • 2026-10-20, step 3, log entry, tier development development, not a verdict
    the register rebuilds from the tracked pages and agrees with the Board's calendar pages for every year they carry; a meeting is invisible before its schedule's release and an unscheduled meeting before its announcement; three recorded mutations are killed. No figure moves: the source is off in every published declaration.
    Against kill: not applicable; nothing was scored. Development data, never a verdict.
  • 2026-10-20, step 3, log entry, tier development development, not a verdict
    the register's content is unchanged; python3 scripts/provisional_register.py --check fails on a stale page and runs in CI. No result, record or published figure is edited.
    Against kill: not applicable (a register, not a model).
  • 2026-10-21, step 6, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the published model's q95 sat below the print on 14 of the 24 replayed days and on every day of September 2019; the band was wider on a later day than on the first-miss day in all five episodes. The year-end windows are this study's choice. Detail in docs/research/episode-replay-1030-result.md. Provisional: the published model is class a+b at lead 1 and B1 reads no calendar day; B2 and B1′ read the target day's type.
    Against kill: not applicable (a replay of tracked records, not a model or a score).
  • 2026-10-21, step 3, log entry, tier development development, not a verdict
    finding a tracked directive is closed for the guard and the scan. The register's scan names the FOMC columns, so metadata/sources_measurement.json is classified (cleared, data). No result, record or published figure is edited.
    Against kill: not applicable (a guard, not a model).
  • 2026-10-21, step 2, log entry, tier development development, not a verdict
    the flags add little to the base. Grid CRPS pooled over the base: coded +0.4% [+0.1%, +0.9%], turn +0.3% [−0.3%, +0.9%]; the relabel alone (turn over coded) −0.2% [−0.7%, +0.5%]; on the turn days the turn arm is +0.9% [−1.0%, +3.0%], not shown to help. Only the 44 quarter-end turn days show the turn arm over the base with an interval above zero (+4.4% [+0.4%, +13.6%]); thin. Upper-tail twCRPS agrees. Both arms stay about +26% over B2, as the base does. Development data, not a verdict.
    Against kill: not applicable (a calendar-aware result closes nothing and is not a verdict).
  • 2026-10-21, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    the 2021-23 share of PIT at or below 0.10 moves. For gbm_funding 0.314 to 0.211, for gbm_funding_cal_aligned 0.425 to 0.267, for gbm_funding_cal_direct 0.451 to 0.271; under 20 further seeds the proper share stays within 0.187 to 0.271. Other regimes agree across the versions to within about 0.03. Detail in docs/research/integer-pit-1072-result.md.
    Against kill: not a kill test. The declared reading rule (a tracked directive's) still says the 2021-23 reading stands, at a smaller size; part of the earlier size was a discretisation artefact. Development data, never a verdict.
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    grid CRPS over h = 1-5 falls from 1.778 bp (unscaled mean reversion) to 1.698 bp for the declared variant (mad, window 20, floor 0.5): skill +4.5% [+2.8%, +6.3%]; the other four mad variants gain +3.0% to +3.8%, all with intervals above zero; the standard deviation loses (-6.1% [-36.0%, +2.4%]). Upper-tail twCRPS 0.930 to 0.896: +3.6% [+1.0%, +6.3%]. The 90% interval covers 0.890 of cells (unscaled 0.852), quarter-ends 0.533 (0.520). Reliability slope at all cells 1.17 [1.00, 1.39] (unscaled 0.91 [0.73, 1.13]). The gain is undecided in 2018-19 and in month-ends for the declared variant. Hit sequences and Kupiec, Christoffersen tests by lead are on the page and in result.json. Detail in docs/research/fhs-scale-941-result.md.
    Against kill: not a kill test. Mean reversion reads no calendar column, so every figure is provisional under the calendar-first rule, and the variants were chosen after seeing 2018-2025. Development data, never a verdict.
  • 2026-10-22, groundwork G4, log entry, tier development development, not a verdict
    the a tracked directive count is the days a 2 bp revision could flip, not an upper bound; larger revisions reach further and the counts rise along each row (table on the result page). Exposure only: no date can be shown to have been revised. A tracked directive page stands with a pointer here.
    Against kill: not applicable (groundwork; nothing is scored).
  • 2026-10-22, step 2, log entry, tier development development, not a verdict
    the rows that change are listed on the two new pages; in both directions (a "no difference" becomes "worse" or "better", and a skill "better" or "worse" becomes "no difference"). Each page states Lens C's caveat: the lag-10 HAC standard error is understated about 2x after 2020, so the bound is optimistic. The original pages stand.
    Against kill: not applicable (reporting; no kill rule reads a development row).
  • 2026-10-22, step 2, log entry, tier development development, not a verdict
    over 1,855 decision days to 2025-12-23 the grid CRPS skill of the term over gbm_funding_cal_direct is +0.4% [+0.2%, +0.6%] pooled, +0.7% [+0.3%, +1.0%] on target days of the 19th to 23rd and +0.3% [+0.0%, +0.6%] on ordinary days; by regime 2018-19 +0.3%, 2020 +0.8%, 2021-23 -0.0% [-0.5%, +0.4%], 2024 +0.2% [-0.3%, +0.8%], 2025-26 +0.7%. Against gbm_funding_cal_aligned -3.3% [-7.3%, +0.5%] and against gbm_funding -2.1% [-7.7%, +3.0%] pooled (-9.9% [-22.1%, +0.8%] on 19-23; calendar days +0.3%, one-sided 95% lower bound -4.9%; ordinary days -6.6% [-15.7%, +1.7%]); against B1 +18.7% [+9.2%, +35.8%], B2 +26.1% [+16.6%, +34.8%]. Upper-tail twCRPS over the control +0.3% [+0.1%, +0.6%] pooled. Detail in docs/research/dom-level-term-1032-result.md.
    Against kill: not touched; the term helps over its own control but is not shown to beat gbm_funding on calendar days. Development data, never a verdict.
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    no gain from the columns. Grid-CRPS skill over the direct variant is -0.7% pooled (-1.5% to +0.1%), -1.2% on the 120 FOMC days (-3.0% to -0.2%) and -0.7% on ordinary non-FOMC days (-1.7% to +0.3%); over gbm_funding -3.2% pooled (-8.8% to +2.1%). Upper-tail twCRPS pooled -0.0% over the variant. Detail in docs/research/fomc-variants-1087-result.md. Development data, not a verdict.
    Against kill: no kill condition is read. The declared rule "helps on FOMC days" is not met (lower bound -3.0%); "does not lose on ordinary non-FOMC days" is met.
  • 2026-10-22, step 2, log entry, tier development development, not a verdict
    fed_repo_days_since_positive longest gap moves in 2024 (50 to 134), 2025 (32 to 61) and 2026 (17 to 27); take-up days drop to 10 in 2024, 44 in 2025 and 19 in 2026. srf_total_accepted moves on 32 dates. Nothing is scored. Detail in docs/pivot/afternoon-test-trade-938-result.md.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    grid CRPS over h = 1-5 is 1.698 bp for the base (a), 1.978 for (b), 1.860 for (c), 1.804 for (d): the terms lose pooled (skill over (a): (b) -16.5% [-29.7%, -7.2%], (c) -9.6% [-19.2%, -2.5%], (d) -6.2% [-14.2%, -0.6%]). They gain in 2024 (+6%) and 2025-26 (+10%) for (b) and lose heavily in 2020 and 2021-23; the 95th-percentile exceedance rate is 0.053 for (a) and 0.067 to 0.071 for the arms. Against gbm_funding (grid CRPS 1.822; gbm_funding_cal_aligned 1.802) the base (a) gains +6.8% [+3.3%, +10.1%], (b) -8.6% [-20.8%, +0.5%], (c) -2.1% [-11.3%, +5.2%], (d) +1.0% [-6.7%, +7.4%]; against gbm_funding_cal_aligned (a) +5.8% [+1.1%, +10.2%], (b) -9.8%, (c) -3.2%, (d) -0.1%. B1' (1.928) sits beside B1 (2.289) in every table. The q95 exceedance rate (hit on y > q; y >= q moves the arms by at most 0.001 and gbm_funding not at all) is 0.128 for gbm_funding and 0.156 for gbm_funding_cal_aligned, against 0.053 for (a) and 0.067 to 0.071 for (b) to (d). Detail in docs/research/calendar-mr-1115-result.md.
    Against kill: not a kill test; the arms read the calendar at the target day on direct pairs, so the result is not provisional, but it is development data and the estimation choices (ridge 1, three-flag minimum, 0.25 floor) are this study's own and were not tuned.
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    no figure moves. The test also lists two older readers with no row (scripts/b1_calendar_960.py, scripts/per_leg_calibration_929.py), named in the test and filed as a tracked directive.
    Against kill: not applicable (register housekeeping, no model).
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    none yet. The result page and this entry's result line are written when the walks come back. Development data, not a verdict.
    Against kill: no kill condition is read.
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    the base is already calibrated pooled, so the arm has little to correct. Grid CRPS over h = 1-5: base 1.525 bp, (a) 1.550 (skill over the base -1.7% [-2.9%, -0.3%]); upper-tail twCRPS 0.675 to 0.690 (-2.2% [-5.0%, +2.0%]). The arm stays ahead of B1, B1' and B2 on grid CRPS (+23.5% [+15.2%, +47.4%] over B1, +8.0% [+3.4%, +13.1%] over B1', +34.0% [+20.3%, +45.7%] over B2). The base's 90% band covers 0.890 of cells and (a) 0.881; the 50% band 0.491 and 0.531; q95 is exceeded about 0.050 of the time by the base and 0.057 by (a) under y > q. Where the base is off, (a) moves it: quarter-end 90% coverage 0.608 to 0.669; 2024 0.895 to 0.909; 2025-26 0.909 to 0.909; 2021-23 falls 0.880 to 0.857. The grid CRPS gain over the base is a gain on quarter-ends and a loss on ordinary days. Finding: the base's bands already hold and recalibration costs CRPS. Detail in docs/research/walk-calibration-1133-result.md.
    Against kill: not a kill test. The base reads no calendar column, so every figure is provisional under the calendar-first rule, and it was chosen after seeing 2018-2025. Development data, never a verdict.
  • 2026-10-22, step 3, log entry, tier development development, not a verdict
    grid CRPS over h = 1-5 is 1.698 bp for the base (a), 1.720 for (s1), 1.715 for (s2), 1.624 for (s3), 1.760 for (s4); skill over (a): (s1) -1.3% [-7.4%, +2.5%], (s2) -1.0% [-8.5%, +3.1%], (s3) +4.3% [+1.8%, +6.4%], (s4) -3.7% [-10.1%, +0.7%]. Only (s3) beats (a): a gain in 2021-23, 2024 and 2025-26, undecided in 2018-19 and 2020, a gain on ordinary days (+3.2% [+2.4%, +4.0%]) and on calendar days (+4.9% [+1.6%, +7.6%]), and +5.2% [+2.8%, +7.4%] on the scaled score; its twCRPS is +4.4% [+1.0%, +7.6%]. The scarcity interaction adds nothing over (s1) (+0.3% [-1.4%, +1.5%]); the FOMC and IORB terms cost (s4) -2.3% [-4.6%, -0.8%] against (s1). (s1) and (s4) lose in 2020 (-19.7%, -24.5%). The effects now follow the state (month-end under (s1): +5.8 bp in 2018-19, +0.3 in 2021-23, +4.3 in 2025-26). B1' (1.928) sits beside B1 (2.289) in every table; against them (a) is +11.9% and (s3) +15.8% over B1'. The q95 exceedance rate is 0.053 for (a) and 0.057 to 0.061 for the arms (0.083 B1, 0.090 B1'). (s3) changes the estimator and the ridge together, so its gain is not attributed to robustness. Detail in docs/research/state-calendar-1145-result.md.
    Against kill: not a kill test; the arms read the calendar at the target day on direct pairs, so the result is not provisional, but it is development data and the estimation choices (the state mapping, the ridge of 5, Huber's 1.345, the 0/1 coupon flag) are this study's own and were not tuned.
  • 2026-10-23, step 3, log entry, tier development development, not a verdict
    no arm fixes the clustering. Christoffersen independence of the 90% band's misses is p = 0.000 at every lead, both hit rules, for (a) and every arm; within a regime 51 of 500 model-rule-lead-regime cells reach 0.0005 or more (largest 0.457, EWMA half-life 3 at h = 1 in 2025-26), the rest are 0.000 to three places. The runs get somewhat shorter, not short: mean run of band misses (closed rule, five leads pooled) (a) 2.205 (longest 13), v1 MAD 5/10/blend 1.96/2.00/1.96, v2 2.10-2.31, v3 1.97 (longest 7), v4 1.99 (longest 7); independent misses at 10% would give 1.11. Grid CRPS over h = 1-5: (a) 1.698; v1 and v2 lose to (a) (-1.2% to -7.3%; all but the 10-day MAD outside the interval); v3 +0.1% [-0.1%, +0.3%]; v4 1.683, +0.9% [+0.3%, +1.7%], upper-tail twCRPS +1.7% [+0.5%, +3.4%], a loss in 2020. v4 lifts the 90% band's quarter-end coverage from 0.533 to 0.740; pooled coverage stays 0.888-0.891 for (a), v3 and v4. The EWMA arms undercover (90% band 0.87-0.88; q95 exceeded 0.061 at h = 5 for half-life 5, Kupiec p 0.037).
    Against kill: the kill rule as worded is not met, because seven arms have a shorter mean run than (a) (the p-value condition is met: no arm leaves 0.000 at any lead). The shortening is about 10% and leaves runs near twice the independent length. The arms are calendar-blind except v4, so the result is provisional and closes no question.
  • 2026-10-23, step 2, log entry, tier development development, not a verdict
    the thin types are thin (smallest trailing-year pools: year_end 1, quarter_end_turn 4, turn 12, tax_date 10). At a minimum of 10 only year_end and quarter_end_turn change pool (both read the turn rows). Year-end 90% band miss 0.967 to 0.492 and q95 exceedance 0.475 to 0.328 (rule y > q); quarter-end turn 0.405 to 0.600 and 0.150 to 0.300, worse, because those days run hotter than the turn days they now read. All stay far from nominal. A minimum of 4 changes only year_end (it reads quarter_end_turn): year-end 0.508 and 0.344, quarter-end turn unchanged at B2's 0.405 and 0.150; pooled grid CRPS 2.452 as at 10, and its paired test against B2 without a minimum is undefined (only year-end targets differ). A minimum of 20 and 30 are the same rule here (every type but ordinary reads all days). Pooled grid CRPS: B2 without a minimum 2.531, minimum 4 2.452, minimum 10 2.452, minimum 20 2.418, B1' 1.715, B1 2.090. Paired intervals, by regime and pressure-day type, and both hit rules in docs/research/b2-pool-fallback-1155-result.md.
    Against kill: not a kill test. Development data, never a verdict; B2 is a benchmark and no candidate's result chose a number.
  • 2026-10-23, step 5, log entry, tier development development, not a verdict
    a calibrated forecaster fails the requirement on 100.0% of paths under strict and on 100.0% under tie_counts, and on 2.3% [1.7%, 3.1%] under the randomised tie rule (no lead above 3.9%). Lead-1 hit rates at q05: 1.81% (strict), 16.76% (tie_counts), 5.02% (randomised), against 5% nominal. The randomised rule is the only one at or under 5%; against the too-narrow forecaster it fails on 47.6% of paths at factor 0.9, 99.9% at 0.8 and 100.0% at 0.7. Detail in docs/research/coverage-size-1156-result.md.
    Against kill: not a kill test; a size measurement on synthetic data.
  • 2026-10-23, step 3, log entry, tier development development, not a verdict
    of 1180, 1190, 287 and 1422 paired rows, 115, 131, 49 and 156 read on the other side of zero on the mean-d bound; each is listed on its page. Calibrated (a) against the uncalibrated base reads as a loss in 2020, 2024 and 2025-26 (undecided before), and no longer reads as a gain on quarter-end and tax dates. a tracked directive's v3 reads as a gain on tax dates against (a); its v2 arms no longer read as losses there. Each page states Lens C's caveat: the lag-10 HAC standard error is understated about 2x after 2020, so the bound is optimistic.
    Against kill: not applicable (reporting; no kill rule reads a development row).
  • 2026-10-23, step 3, log entry, tier development development, not a verdict
    grid CRPS over h = 1-5 is 1.698 bp for (a), 1.720 (s1), 1.676 (r1), 1.644 (r2), 1.624 (s3), 1.623 (r3), 1.616 (v4). Share of (s3)'s gain over (a) recovered: (r1) 29%, (r2) 73%, (r3) 101%, (v4) 111% (twCRPS 33%, 74%, 104%, 108%). Against (s1): the ridge alone +2.5% [+1.1%, +5.4%], the Huber fit alone +4.4% [+2.7%, +6.5%], both +5.6% [+2.8%, +9.9%]. Against (a), (r1) +1.3% [-2.6%, +4.3%] and (r2) +3.2% [-1.1%, +6.1%] do not exclude zero; (s3) +4.3% [+1.9%, +6.5%] does. The settlement size adds nothing over the flags (+0.0% [-0.1%, +0.3%]). (v4) over (s3): +0.5% [+0.1%, +1.0%], mean d +0.008 [+0.001, +0.016], one regime gain and four undecided. Detail in docs/research/s3-decomposition-1172-result.md.
    Against kill: the kill rule is not met: (r2) recovers 73% of (s3)'s gain, so the gain is mostly the robust fit, with the ridge adding the rest; neither half alone beats (a) with the interval excluding zero.
  • 2026-10-23, step 3, log entry, tier development development, not a verdict
    no arm fixes the clustering. Christoffersen independence of the 90% band's misses is p = 0.000 at every lead, both hit rules, for (s3), (a) and every arm; within a regime 14 of 250 model-rule-lead-regime cells reach 0.0005 or more (largest 0.011, (d1) and (d3) at h = 1 in 2024), the rest are 0.000 to three places. Mean run of band misses (closed rule, five leads pooled): (s3) 2.083 (longest 10), (d1) 2.028 (13), (d2) 1.968 (13), (d3) 2.039 (13); independent misses at 10% would give 1.11. Grid CRPS over h = 1-5: (s3) 1.624; (d2) 1.611, +0.8% [+0.4%, +1.4%] over (s3), mean-d bound above zero pooled, in 2018-19, 2020, 2021-23 and on ordinary days, undecided elsewhere, no loss; (d1) 1.619, +0.3% [+0.1%, +0.6%]; (d3) 1.625, no gain. Upper-tail twCRPS: (d2) +0.5% [0.0%, +1.4%], undecided; (d3) -0.1%. Calibration moves the wrong way: pooled 90% band coverage (s3) 0.879, arms 0.875-0.876; q95 exceedance (s3) 0.052-0.061, arms 0.056-0.064 (Kupiec p for (d2) at h = 5: 0.007).
    Against kill: the kill rule as worded is not met, because every arm has a shorter mean run than (s3) (the p-value condition is met: no arm leaves 0.000 at any lead). The shortening is 2% to 5% and leaves runs near twice the independent length; the longest run is 13 for every arm against 10 for (s3).
  • 2026-10-23, step 6, log entry, tier development development, not a verdict
    in 2018-19 the last business day averaged +11.5 bp (71% of days above +5 bp) and the first +4.0 bp, the second-last +0.3 bp against +1.7 bp on an ordinary mid-month day; 2025-26 has the same shape smaller (+3.5, +2.1, -0.5 against -3.8); 2021-23 and 2024 show no turn. The same month-end added +5.8, +0.3 and +4.3 bp in 2018-19, 2021-23 and 2025-26 (coupon settlements +8.5, +0.5, +3.8). Of the 6 stress episodes since 2020-04-01, 5 began near a known date; 2024-12-26 did not under the stated rule. 37% of all business days sit that close.
    Against kill: no kill applies; the findings are descriptive and test nothing.
  • 2026-10-24, step 3, log entry, tier development development, not a verdict
    independence of the 90% band's misses stays at p = 0.000 at every lead, all three hit rules, for every arm. Mean run (closed rule, five leads pooled): (s3) 2.126 (longest 10); (m1, k = 3) 1.903 (9), 10.5% shorter; (m1, k = 5) 1.891 (9), 11.1%; (m2) 2.283 (12), 7.4% longer; (m3) 2.233 (10), 5.0% longer; independent misses at 10% would give 1.11. Grid CRPS over h = 1-5: (s3) 1.569; (m1, k = 3) 1.558, +0.7% [+0.3%, +1.2%], mean-d bound above zero pooled, no regime or day type read as a loss; (m1, k = 5) 1.562, undecided; (m2) 1.580 and (m3) 1.571, undecided pooled. Upper-tail twCRPS: all four undecided against (s3). (m2) and (m3) bands miss 0.17-0.23 of outcomes against 0.12 for (s3): too narrow, so their run lengths are weak evidence.
    Against kill: met. No arm leaves p = 0.000 at any lead and none cuts the mean run by more than 15% (the best, (m1, k = 5), cuts 11.1%). The issue's recommendation follows: report the clustering as a known limit in the use limitation rather than try another arm. With the caveat that the Markov arms are miscalibrated, so the kill is firmer for the observable state than for the latent one.
  • 2026-10-24, step 3, log entry, tier development development, not a verdict
    of 1260 paired rows, 170 read on the other side of zero on the mean-d bound (of the 319 pooled and regime readings, 50). (s3) against (a) reads as a loss on upper-tail twCRPS in 2020 and on FOMC target days (undecided before), no longer reads as a gain on quarter-end target days, and reads as a gain in 2018-19 on both scores. The page states Lens C's caveat: the lag-10 HAC standard error is understated about 2x after 2020, so the bound is optimistic and the 2020 loss is evidence for a question, not a verdict.
    Against kill: not applicable (reporting; no kill rule reads a development row).
  • 2026-10-24, step 3, log entry, tier development development, not a verdict
    grid CRPS over h = 1-5 is 1.637 bp for (a), 1.570 (s3), 1.578 (s3+state), 1.573 (s3+FOMC/IORB); upper-tail twCRPS 0.832, 0.800, 0.804, 0.801. Against (s3), pooled: (s3+state) grid CRPS d -0.007 [-0.023, +0.003], twCRPS d -0.004 [-0.017, +0.005]; (s3+FOMC/IORB) grid CRPS d -0.003 [-0.013, +0.001], twCRPS d -0.001 [-0.005, +0.002]; both undecided. Neither repairs the two upper-tail losses of (s3): in 2020 and on FOMC target days both arms have a higher (worse) mean twCRPS than (s3), undecided against (s3) on the bound, and against (a) they read as (s3) does (2020 twCRPS: (s3+FOMC/IORB) d -0.044 [-0.219, +0.000], undecided; FOMC days: d -0.079 [-0.344, -0.008], a loss). (s3+FOMC/IORB) against (s3) on IORB-window target days: grid CRPS d +0.029 [+0.000, +0.082], a gain on the mean-d bound (78 days; undecided on the skill interval). Detail in docs/research/s3-terms-1196-result.md.
    Against kill: no kill rule was declared; no arm beats (s3) pooled, so on the declared adoption rule neither replaces it (her decision).
H6 The spread on known risk dates, such as settlements, tax days and month- and quarter-ends, can be forecast.

In the plan. The spread on known risk dates is forecastable.

Question
On declared risk dates, does a registered forecast beat B1 and B2 on CRPS by the MME, prospectively?
Goal
the spread in bp on announced settlement, tax, quarter-end and month-end days, which number in the hundreds rather than 26 onsets.
Test
a tracked directive (step 1), a tracked directive (step 1 re-read on the studentized bootstrap) and a tracked directive (step 1 re-read by lead); done.
Kill criterion
No CRPS or MAE skill against as-of persistence and a risk-date calendar benchmark on those days.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 2
Milestones
  • M1 open Calendar rule frozen.
  • M2 open Development score.
  • M3 open Registration.
Progress markers
  • Risk dates per quarter: not measured
  • development skill on risk dates: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H6
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    grid CRPS 3.139 bp for the H5 row against 3.243 for B1 and 4.289 for the calendar benchmark: skill +3.2% [+0.0%, +6.6%] against B1 (lower bound +0.03%) and +26.8% [+13.8%, +44.7%] against the calendar; MAE of the median has no skill against B1 (+0.7% [-3.2%, +3.6%]). By regime its skill against B1 is +4.4% in 2018-19, -1.8% in 2020-24 and +5.7% in 2025-26. The type × state model is worse than the calendar benchmark on CRPS (-7.1% [-16.6%, -0.8%]).
    Against kill: not killed on the declared reading (the H5 row has CRPS skill against both benchmarks), narrowly and from the regimes outside 2020-24; development data, not a verdict.
  • 2026-10-15, step 1, log entry, tier development development, not a verdict
    no development skill. The H5 mean-reverting row's pooled CRPS skill against B1 is +3.18% [−0.90%, +6.03%] (the percentile lower bound was +0.03%); its MAE skill against B1 is +0.70% [−3.00%, +3.12%]. Against the calendar benchmark CRPS skill is +26.80% [−2.58%, +46.79%]. By regime, CRPS skill against B1 is +4.45% in 2018-19, −1.82% in 2020-24 and +5.70% in 2025-26, every interval covering zero. Detail in docs/research/risk-date-reread-739.md. The entry of a tracked directive is not edited.
    Against kill: killed on the declared development rule (skill against both benchmarks on CRPS or MAE: none). H6 stays open: its kill is by futility on prospective days.
  • 2026-10-17, step 1, log entry, tier development development, not a verdict
    the control reproduces both published evidence files (largest difference 6e-14). Settlement cells at leads 2 to 5 drop (1907 to 1451 scored cells; 4 of 20 lead-by-type pairs move; target days 383 to 382). The first candidate's CRPS skill against B1 goes from +3.2% [+0.0%, +6.6%] to +2.2% [-1.4%, +5.7%] and its MAE skill against B1 from +0.7% to -0.9%, so a tracked directive's percentile reading flips from not killed to killed on the declared reading; a tracked directive's studentized reading is killed before and after. Development data, not a verdict.
    Against kill: not applicable (a correction to how step 1's day set is read).
  • 2026-10-19, step 1, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    month-end 114 events (20.4 a year), tax date 71 (12.5), coupon settlement 186 (32.8); quarter-end 22 (4.2), too few to test. gbm_funding and spread_mr_ctx beat B2 on all three tested strata with the one-sided 95% bounds above zero, and neither is clear of B1 on any. The ACF of d between consecutive events is 0.5 to 0.7 at lag 1 against B2 and 0.0 to 0.5 against B1. Detail in docs/research/contiguous-calibration-963-result.md.
    Against kill: no CRPS or MAE skill against as-of persistence and a risk-date calendar benchmark on those days is not tested here (B1 is the persistence-type benchmark; the calendar benchmark is B2, which both candidates beat); development data, never a verdict.
  • 2026-10-22, step 2, log entry, tier development development, not a verdict
    the union holds more events a year than any stratum and the same history, so it leaves as few independent windows as H5's own unit; the ACF of d between consecutive events is not near zero; the contiguous c is above the normal value; power at the protocol's 3% is low. Figures and ten marked questions, each with a default, are on docs/research/h6-design-1131-result.md.
    Against kill: not applicable (a design and power page; no verdict).
H7 Reserve scarcity can be tracked directly, as a slow-moving state.

In the plan. Reserve scarcity can be tracked.

Question
Does a direct estimate of distance to the demand-curve kink improve H5's primary score as an input, prospectively?
Goal
the distance to the demand-curve kink and the scarcity state, estimated directly as a slow variable.
Kill criterion
The estimate does not predict later spread behaviour beyond the current scarcity state.
Owner
Steps 1–2 (estimand, estimator, stability) are owned by eleonorabjornberg/repo-market-liquidity. The nested forecast test and the registration stay here, under a tracked directive.
Step
2 of 6: Groundwork; status open, not yet queued here; the manual’s own step 3
Milestones
  • M1 open Estimator defined, with tests.
  • M2 open Nested development test.
  • M3 open Registration.
Progress markers
  • The estimate's path against the reserves ratio: not measured
  • development nested skill: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H7
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    the interval of levels within 1.92 nats of the profile's minimum reaches the grid maximum 0.20, above every observed ratio, at every refit at every horizon (width about 0.08, several local minima at 46% to 100% of refits): the logistic never rejects "no kink". The profile level moves more than the least-squares one (20 changes of 0.01 or more against 9 at h = 1); the slow level is held at 0.1375 by its penalty. Ordinary days, h = 1: AUROC 0.881 [0.829, 0.921] for both, against 0.883 for the unkinked control; AUROC minus kinked_fitted +0.005 [0.000, 0.011], minus kinked_rolling -0.001 [-0.017, 0.017].
    Against kill: not testable (no registered test; development data). The demand-curve route is closed for a kinked logistic whose level is estimated from the pressure label, and open for H7's label-free estimator.
  • 2026-10-14, step 1, log entry, tier development development, not a verdict
    no refit in any row, year or horizon is "not identified" and no level moves, so no earlier figure moves; the old rule reproduces the recorded levels for the structural and combined rows exactly (the projected row differs in 47 refits for a later feature change, not the tie). At a tolerance of 1e-4, 44 refits of each structural and combined row would be tied; none at 1e-6. Detail in docs/pivot/satiation-ties-747-result.md.
    Against kill: not applicable (no verdict; development data).
  • 2026-10-13, groundwork G5, log entry, tier development development, not a verdict
    first-filed figures are not recoverable from the public bulk files; for most G-SIB subsidiaries the file holds an amended figure last updated 30 to 1,611 days after quarter-end. No input built, nothing scored
    Against kill: no goalpost is tested here; this is an input question
  • 2026-10-14, groundwork G5, log entry, tier development development, not a verdict
    inputs built, nothing scored; 277 of 306 bank-quarters in the extract, the rest listed with reasons; headroom blank from 2026-04-01 (requirement not set in row 16); State Street's filed exposure not credible
    Against kill: no goalpost is tested here; this is an input
  • 2026-10-14, groundwork G5, log entry, tier development development, not a verdict
    inputs revised, nothing scored; no figure moved; the headroom stays blank from 2026-04-01 pending her answer to open question 1
    Against kill: not applicable; nothing scored
  • 2026-10-14, step 1, log entry, tier development development, not a verdict
    510 operations on 169 operation dates, 2026-01-02 to 2026-09-03. Rows before 2026-01-01 read identically with and without the new file (both readings), the eight earlier files and manifests are byte-for-byte unchanged, and a date after 2026-09-03 is still refused. The published panel digest does not move.
    Against kill: not applicable (no verdict; nothing scored on a 2026 day).
  • 2026-10-14, groundwork G6, log entry, tier development development, not a verdict
    MME 0.05 detectable in 10 of 13 250-day windows that reach 10 events (power 15% over all 67 windows; 41% to 2020, 6% 2021-24); events are the constraint (221 in 1,570 days)
    Against kill: not applicable (no candidate scored); docs/decisions/measurement-protocol.md §5 and §9 unchanged
  • 2026-10-15, groundwork G1, log entry, tier development development, not a verdict
    log check aligned, nothing scored
    Against kill: not applicable
  • 2026-10-15, groundwork G4, log entry, tier development development, not a verdict
    provenance relabelled, no value changed, nothing scored.
    Against kill: not applicable.
  • 2026-10-16, groundwork G5, log entry, tier development development, not a verdict
    archive fixed, nothing scored; two 14 Oct zips are not_stored (bytes lost)
    Against kill: no goalpost is tested here; this is tooling
  • 2026-10-16, groundwork G1, log entry, tier development development, not a verdict
    check added, nothing scored; a tracked directive's corrected entry passes the model repo's checker
    Against kill: not applicable
  • 2026-10-16, groundwork G6, log entry, tier development development, not a verdict
    panel digest unchanged; snapshot digests unchanged; repo-operation labels now reach 2026-09-03 (they stopped at 2025-12-31 at 53e61af)
    Against kill: not applicable (no candidate scored); docs/decisions/measurement-protocol.md unchanged
  • 2026-10-15, groundwork G6, log entry, tier development development, not a verdict
    rulings recorded, nothing scored.
    Against kill: not applicable.
  • 2026-10-16, groundwork G4, log entry, tier development development, not a verdict
    provenance relabelled, no value changed (the old extract and snapshot digests re-derive from the new files), nothing scored
    Against kill: not applicable
  • 2026-10-16, groundwork G6, log entry, tier development development, not a verdict
    at 250 days power at 0.05 is 19% over every window (14/75) and 67% among windows at the floor (14/21, interval 14%-96%), sizes 1% and 5%; at the 2025-26 event rate 10 events take a median 125 days and power at 0.05 is 21% (85/400)
    Against kill: not applicable (no candidate scored); docs/decisions/measurement-protocol.md §5 and §9 unchanged
  • 2026-10-17, groundwork G5, log entry, tier development development, not a verdict
    a failed archive_cdr.py in a piped step now fails the run (exit status 1 under bash -eo pipefail); nothing archived differently
    Against kill: not applicable (no candidate scored); docs/decisions/measurement-protocol.md unchanged
  • 2026-10-17, groundwork G5, log entry, tier development development, not a verdict
    the Fed's standard matches the OCC's in every period (6.0% to 2026-03-31; SLR condition removed and buffer min(1.0%, 50% x surcharge) from 2026-04-01); no figure moves.
    Against kill: not applicable (no hypothesis test; development data gives no verdict).
  • 2026-10-18, groundwork G4, log entry, tier development development, not a verdict
    inputs built, nothing scored. 452 H.8 weeks, residual negative in 0 weeks; the resync changed only manifest digests, no series value. The sensitivity at share -0.009 and 0.163 is reported beside the main series
    Against kill: no goalpost is tested here
  • 2026-10-19, step 2, log entry, tier development development, not a verdict
    built, nothing scored
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-19, groundwork G5, log entry, tier development development, not a verdict
    304 rows (295 + 9); the 295 earlier rows unchanged; withheld bank-quarters 11 to 2 (Morgan Stanley Bank, both amended 10 September); nothing scored
    Against kill: not applicable (no candidate scored); docs/decisions/measurement-protocol.md unchanged
  • 2026-10-19, groundwork G6, log entry, tier development development, not a verdict
    the stale cite fed_liquidity.py:163 (a closing brace at the pin) is superseded; no rule, threshold or definition changed; nothing scored
    Against kill: not applicable (no candidate scored); the event and the $1bn bar are unchanged
  • 2026-10-19, groundwork G7, log entry, tier development development, not a verdict
    built, nothing scored; the reserve-adding rows runoff_caps reads as (0, 0) are -60 (15 Oct 2019), -120 (11 Jun 2020) and -40 (12 Dec 2025); the March 2020 plan and the months after the first December 2025 schedule are unquantified
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-19, groundwork G6, log entry, tier development development, not a verdict
    at 0.05 and 250 days power is 17%-22% (not shown detectable); 500 days 28%-31%; 750 days 45%-51%; the calendar-stratified statistic adds none; the two-state cell is lower than record 2's above gain 0 (agrees at the size and at 0.05); docs/research/h7m-power-study-3.md
    Against kill: not applicable (no candidate scored); docs/decisions/measurement-protocol.md §5 and §9 unchanged
  • 2026-10-19, step 1, log entry, tier development development, not a verdict
    built, nothing scored
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-20, groundwork G8, log entry, tier development development, not a verdict
    20 of 79 rows read later or earlier (six releases moved one business day, 3 to 4 rows each); the sign-change dates 2025-10-16 and 2026-05-21 are unchanged; nothing is scored
    Against kill: not applicable, an input
  • 2026-10-20, step 3, log entry, tier development development, not a verdict
    built, nothing scored; no complete quarter of the nine banks is public before 2021-12-18, so D has no estimate on the first episode and the out-of-sample test has nothing to fit on
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-20, step 2, log entry, tier development development, not a verdict
    declared only, nothing computed or scored; six marked questions
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-20, groundwork G5, log entry, tier development development, not a verdict
    the archive holds only the quarters 2026-03-31 and 2026-06-30 (first retrieved from 2026-10-14); no first print exists for the first episode, so her test is not met and no vintage rule is declared
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-20, step 2, log entry, tier development development, not a verdict
    implementation only; under her rulings (the floor read on all days, a final refit on 2025-12-31) the 2025 episode counts at the final refit only, for every variant; the figures come with the Mac run
    Against kill: not applicable (no goalpost is read before the run; docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-20, groundwork G9, log entry, tier development development, not a verdict
    the two calendars agree on all 16 meetings of 2024-2025; H10 method digest cc7bab6e...49b1 at the old pin and 43bf1303...15bb at the new, the five named parent files byte-identical; the move changes 391 rows of srf_take_up in the Phase 3 panel, published as panel version 4 (version 1 stays; H10's development table is unchanged); the Stage 4 fitter moves to direct pairs and its published figures are provisional until re-run
    Against kill: not applicable, groundwork
  • 2026-10-22, step 1, log entry, tier development development, not a verdict
    every variant lowers the worst refit gap below B's (6.25 points) to 2.0 to 5.5, with 3 to 17 refits not fitted against B's 0; no clean variant has a wider median interval than B's (1.75 to 2.75 points against 2.75); goalpost 1 holds for none, and goalpost 2 holds for all, though the printed column says otherwise (unit bug, a tracked directive); the Politis-White block length rises from about 4 to 38 to 70 days against the declared mean block of 10
    Against kill: not met as declared (docs/stages/h7-kink.md section 4, clause 1: some specification reduces the worst gap; clause 2 reported per variant, none wider); development evidence, not a verdict
  • 2026-10-22, groundwork G6, log entry, tier development development, not a verdict
    analysis, no fit; the final refit on 2025-12-31 serves no scored day, so under S0 and S1 C has one sample and goalpost 1 has no transition; the 2025 episode reaches its floor on 2025-12-05 and 16 scored days follow, so any schedule gives C at most a handful of transitions; A has 68; schedule changes that add refits keep A's 69 declared fits
    Against kill: not applicable (no goalpost is read before step 5, docs/decisions/measurement-protocol.md §3-§5)
  • 2026-10-22, groundwork G8, log entry, tier development development, not a verdict
    no release date moved and no row's availability changed, so the rde snapshot is not republished; a meeting not public at the release instant cannot move it
    Against kill: not applicable, groundwork
  • 2026-10-22, step 1, log entry, tier development development, not a verdict
    goalpost 2 holds for all seven (medians 1.75 to 2.75 points against 3); goalpost 1 fails for all seven (worst gaps 2.0 to 6.25 points against 0.5, and V1 to V6 leave 3 to 17 refits unfitted); every other figure is identical to the record at 06beb39; B's median over all served days is 3.25 points, so goalpost 2 does not hold for B on that view
    Against kill: unchanged from a tracked directive (section 4 clause 1 not met as declared: every variant reduces the worst gap; clause 2 reported per variant, none wider); development evidence, not a verdict
  • 2026-10-23, groundwork G6, log entry, tier development development, not a verdict
    no count moved; three recorded hashes had drifted (h7_kink.py, h7_kink_run.py, h7_calendar_clean.py) and now equal main's files. Nothing fitted, no claim changed.
    Against kill: not applicable, groundwork
H8 For desks, ranking the next 20 business days by risk beats calibrating probabilities.

In the plan. Ranking beats calibrating for desk use.

Question
Does a registered ranking of the next 20 business days beat the calendar of known risk dates on top-5 precision, prospectively?
Goal
rank the next 20 business days by risk, scored on top-k precision and recall against climatology and persistence.
Test
a tracked directive (step 1, development; done) and a tracked directive (step 2, development: tail probability combined with the day type; done, re-scored on the as-of calendar in a tracked directive).
Kill criterion
No ranking skill beyond the calendar of known risk dates.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 2
Milestones
  • M1 open Target and benchmark frozen.
  • M2 done Development score. evidence
  • M3 open Registration.
Progress markers
  • Development top-5 precision against the calendar: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H8
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    top-5 precision of the probability ranker 7.9% against 13.0% for the calendar, gain -5.2 pp [-7.7 pp, -3.0 pp] over 1,825 decision days to 2025-12-31; against climatology by day type -1.7 pp [-2.8, -0.6]; against persistence +0.1 pp [-0.3, +0.6]. The median ranker is lower still. The model's top 5 are scheduled risk dates 16% of the time (calendar 64%); the calendar holds 36% of the pressure days. Sensitivity (ruling of 13 October 2026, item 2): with the protocol's mean block of 10 days in place of the declared 20, the same gain's interval is [-7.2 pp, -3.4 pp], so the reading is unchanged. Detail in docs/pivot/ranking-result.md.
    Against kill: the kill condition (no ranking skill beyond the calendar of known risk dates) is met on development data, as exploration and not a verdict: the model carries no calendar information and the calendar alone out-ranks it in every year with pressure days.
  • 2026-10-15, step 1, log entry, tier development development, not a verdict
    the calendar's top-5 precision falls from 13.0% to 9.4% (recall@5 from 56.8% to 37.7%); the probability ranker's top-5 precision gain over it moves from -5.2 pp [-7.7 pp, -3.0 pp] to -1.6 pp [-2.9 pp, -0.3 pp] over 1,825 decision days to 2025-12-31. Gains over persistence and climatology do not move. Detail in docs/pivot/ranking-770-result.md.
    Against kill: the kill condition (no ranking skill beyond the calendar of known risk dates) is still met on development data, as exploration and not a verdict: the interval still lies wholly below zero, by a third of the earlier gap.
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    top-5 precision against the calendar's 13.0%: (a) 12.8%, gain -0.2 pp [-0.8 pp, +0.4 pp]; (b) 9.7%, -3.4 pp [-5.1 pp, -1.8 pp]; (c) 12.3%, -0.7 pp [-1.5 pp, -0.0 pp], over 1,825 decision days to 2025-12-31. Against the step-1 ranker (7.9%): (a) +5.0 pp [+2.9 pp, +7.3 pp]; (a) also beats persistence and climatology by day type. Block-10 sensitivity: the same readings. Detail, with splits by year, regime and scarcity state, in docs/pivot/ranking-daytype-result.md.
    Against kill: no ranker has an interval wholly above zero against the calendar of known risk dates, so the kill condition is met on development data, as exploration and not a verdict: the day type closes the gap to the calendar, and (a) ties it because its top 5 are the calendar's.
  • 2026-10-19, step 2, log entry, tier development development, not a verdict
    the calendar's top-5 precision is 9.4% (was 13.0%). Top-5 precision: (a) 9.9%, gain over the calendar +0.5 pp [-0.4 pp, +1.5 pp]; (b) 9.7%, +0.2 pp [-0.8 pp, +1.4 pp]; (c) 9.3%, -0.1 pp [-1.2 pp, +1.0 pp], over 1,825 decision days to 2025-12-31. No interval lies wholly below or above zero (the published page had (b) and (c) wholly below). By regime, 2018-19: calendar 37.2%, (a) 38.7%, (b) 37.2%, (c) 36.6%; 2025-26: calendar 12.7%, (a) 14.4%, (b) 16.2%, (c) 14.4%. Detail in docs/pivot/ranking-924-result.md; the earlier page and score are in docs/archive/ranking-daytype-771/.
    Against kill: no ranker has an interval wholly above zero against the calendar of known risk dates, so the kill condition is still met on development data, as exploration and not a verdict. Every other reading of the 2026-10-14 entry is superseded.
  • 2026-10-19, step 2, log entry, tier development development, not a verdict
    46 of 87 refits take the default weight 0.5 (4 for want of 60 windows, 42 with no pressure day in the trailing windows), mean weight in force 0.36 to 0.60. (c) top-5 precision 9.5%, gain over the calendar +0.0 pp [-1.1 pp, +1.1 pp] (was -0.1 pp [-1.2 pp, +1.0 pp]); 2024: 3.4% against the calendar's 4.2%, -0.8 pp [-1.9 pp, +0.0 pp] (was -1.8 pp [-3.6 pp, -0.3 pp]); 2018-19 and 2025-26 unchanged. (a) and (b) are identical to a tracked directive to the digit. Detail in docs/pivot/ranking-930-result.md.
    Against kill: no ranker has an interval wholly above zero against the calendar of known risk dates, so the kill condition is still met on development data, as exploration and not a verdict.
H9 Richer targets, such as the SOFR tail, other repo rates and take-up at the Fed's facilities, hold more signal a model can learn.

In the plan. Richer targets carry more learnable signal. secondary goal

Question
Do forecasts of richer rate series beat their own persistence and climatology? And does any of them improve the H5 forecast when used as an input? The series are: - the SOFR 99th percentile minus IORB, and SOFR dispersion; - TGCR, BGCR and EFFR, each minus IORB; - ON RRP take-up; - standing repo facility take-up.
Goal
the SOFR tail (99th percentile minus IORB, and dispersion), TGCR, BGCR and EFFR each minus IORB, ON RRP take-up, and standing repo facility take-up. Not SOFR − IORB itself, which is H5.
Test
a tracked directive (step 1, the screen; uses a tracked directive and a tracked directive; done) and a tracked directive (step 2, the models; done).
Kill criterion
No forecast skill over persistence, or no lead on the +5 bp episodes.
Owner
eleonorabjornberg/repo-market-model.
Step
3 of 6: Development; status open; the manual’s own step 3
Milestones
  • M1 open Sources and benchmarks ready.
  • M2 done Screen published. evidence
  • M3 done Up to three targets modelled. evidence
  • M4 open Nested test on development.
  • M5 open Registration.
Progress markers
  • Per target: development CRPS skill, the lead correlation with pressure, and prospective days logged: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H9
  • 2026-10-13, step 1, log entry, tier development development, not a verdict
    persistence beats the climatology for EFFR − IORB and the ON RRP level at every lead (skill +0.80 [+0.72, +0.86] and +0.89 [+0.87, +0.91] at lead 1), for TGCR/BGCR − IORB at lead 1 only (+0.22 [+0.04, +0.38]); the climatology beats it for the dispersions from lead 2, the ON RRP change and the facility take-up. The rate-level targets correlate +0.39 with the pressure indicator and read high before onsets (AUC 0.83) but not within the as-of scarcity state (scarce-state pre-onset AUC 0.47 to 0.52); TGCR/BGCR − IORB repeat SOFR − IORB (+0.95).
    Against kill: not testable in this step (no model, development data); no target shows a lead beyond the as-of scarcity state.
  • 2026-10-14, step 2, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    skill over B1 +0.329 [lower +0.271], +0.310 [+0.286], +0.330 [+0.241]; over B2 +0.156 [+0.080], −0.103 [−0.142], +0.155 [+0.054]; the spread (a tracked directive b) +0.201 over B1 and +0.268 over B2. Negative on quarter-end target days for all three. No lead on the +5 bp episodes in the scarce state (pre-onset AUC of the modelled median 0.38, 0.53, 0.39, intervals not above one half). Detail in docs/pivot/richer-targets-706-result.md.
    Against kill: H9.md's wording ("no skill over the target's own persistence, and no nested gain for H5", Eleonora's ruling of 15 October 2026) cannot be assessed until step 3's nested test; on development data skill over persistence is shown for all three targets and a lead on the +5 bp episodes for none. Not a verdict.
  • 2026-10-16, step 2, log entry, tier development development, not a verdict
    the as-of anchor is h + 1 rows back on every target. Lead-1 coverage of the level targets rises 4 to 7 points with h + 1-row changes (for example SOFR 99th percentile − IORB 81.6% to 87.2%); CRPS moves −1.9% to +1.3%. The persistence-against-climatology ranking is the same under both forms for every target at every lead 1 to 10; one flip in a 23-day cell (TGCR dispersion, quarter-end, lead 1). Development data, not a verdict.
    Against kill: not applicable (a robustness reading of step 2's ranking; no kill criterion assessed).
  • 2026-10-17, step 3, log entry, tier development development, not a verdict provisional: calendar not read at the target day · register
    nested d (lower 95%) −0.004 (−0.015), −0.000 (−0.009) and +0.006 (−0.005) for BGCR dispersion, ON RRP change and SOFR dispersion; skill −0.002, −0.000, +0.003; Holm p 1.000, 1.000, 0.517; the same without 2019-09-18. Two of about 40 cells per target show a lower bound above zero, both for SOFR dispersion (2025-26: +0.039 [+0.014]; lead 5: +0.017 [+0.002]). Detail in docs/pivot/h9-nested-842-result.md.
    Against kill: the nested part of H9.md's kill ("no nested gain for H5") holds on development data: no target improves the candidate beyond its interval. Not a verdict.
  • 2026-10-22, step 2, log entry, tier development development, not a verdict
    dropping the day moves the pooled skill over B1 from +0.320 to +0.295 (bgcr_dispersion_bps) and from +0.364 to +0.317 (sofr_dispersion_bps), and not at all for on_rrp_change_bn (+0.336); the move sits in the scarce state and on ordinary target days. Over B2 and B1' no pooled figure moves by more than 0.003. One lower bound changes sign (bgcr_dispersion_bps, ordinary target days, over B2: +0.001 to -0.001). The pre-onset AUC of the model's median is below one half in the scarce state for two targets, with or without the day. Tables on docs/research/richer-targets-902-result.md.
    Against kill: not applicable; a provisional development table that closes no question. Any reading against H9's kill criterion is a marked question for Eleonora on the pull request.
H10 Each pressure episode can be traced to its drivers.

In the plan. Pressure episodes can be attributed to drivers.

Question
For each pressure episode, how much of the spread's rise is explained by each of settlement, TGA, reserves, quarter-end, and residual?
Goal
a post-hoc decomposition of each episode into settlement, TGA, reserves, quarter-end and residual.
Kill criterion
The residual dominates most episodes.
Owner
eleonorabjornberg/repo-market-liquidity. Its results enter the single log here as [H10] entries that link to its pull requests.
Step
3 of 6: Development; status open, not yet queued here; the manual’s own step 3
Milestones
Progress markers
  • Episodes covered: not measured
  • residual share: not measured
Development variants
not measured (the running count belongs to the progress page, which is not built yet)
Research log for H10
  • 2026-10-14, step 1, log entry, tier development development, not a verdict
    method amended, nothing scored
    Against kill: not applicable
  • 2026-10-14, step 2, log entry, tier development development, not a verdict
    under the residual bar 4 of 31 (6% to 26%); beating the null 14 of 31 (31% to 60%); both 4 of 31 (6% to 26%). Median residual share 0.78 (0.66 to 0.85); explained share above reserves alone 0.23 (0.13 to 0.37); placebo gap -0.39 (-0.62 to -0.19). The development table reads residual dominates.
    Against kill: the plan's outcome rule needs more than half the episodes under the bar; the development table has 4 of 31. Development data never gives a verdict; this is not one.
  • 2026-10-15, step 3, log entry, tier development development, not a verdict
    what the development table shows: under the residual bar 4 of 31 (6% to 26%), beating the null 14 of 31 (31% to 60%), both 4 of 31 (6% to 26%); reads residual dominates. Sensitivity (labelled as such): 5 of 31 (8% to 30%), 16 of 31 (37% to 66%), both 5 of 31 (8% to 30%); also reads residual dominates.
    Against kill: the plan's rule needs more than half the episodes under the bar; the development table has 4 of 31. Development data never gives a verdict; this is not one.
  • 2026-10-15, step 3, log entry, tier development development, not a verdict
    sensitivity only: 3 of 31 under the residual bar (4% to 22%), 13 of 31 beat the null (29% to 57%), 3 counted, against 4, 14, 4 published; outcome still residual dominates; the abundant regime has 2 onsets
    Against kill: not applicable; development evidence, no verdict
  • 2026-10-15, step 3, log entry, tier development development, not a verdict
    placebo gap unfloored -0.39 (90% interval -0.62 to -0.19, n = 31); floored -0.20 (-0.39 to -0.02, n = 31); 508 of 620 placebo windows excluded.
    Against kill: not applicable; development data gives no verdict.
  • 2026-10-17, step 3, log entry, tier development development, not a verdict
    the only differing key is parent_commit (8fd2cf8 against the record's 53e61af); every computed figure reproduces; full suite 726 OK, zero expectedFailure
    Against kill: not applicable; development data gives no verdict and nothing was scored
  • 2026-10-17, groundwork G4, log entry, tier development development, not a verdict
    live entry point built, nothing scored. The method digest differs from PR a tracked directive's cae658c6… because that was the record file alone and PR a tracked directive has since amended the record; the number is reproduced from the record at its old commit.
    Against kill: not applicable (no hypothesis test; development data gives no verdict).
  • 2026-10-18, step 3, log entry, tier development development, not a verdict
    the registered digest changes; no decided value, development record or published figure moves.
    Against kill: not applicable (no hypothesis test; development data gives no verdict).
  • 2026-10-21, groundwork G4, log entry, tier development development, not a verdict
    method digest cc7bab6e...49b1 at 8fd2cf8 and 43bf1303...15bb at 08ff67e; the five parent files byte-identical; the only covered file that changed is h10_apply.py (PANEL_VERSION 1 to 4, a tracked directive); the development, interaction, regime and placebo-floor tables are unchanged on version 4
    Against kill: not applicable, groundwork

Background and detailed records

3Start here

New to this market? Short views, in order.

N1What is pressure?

From 3 April 2018 to 3 September 2026, closed more than +5 above , the Fed's rate on bank , on 148 of the 2,104 business days counted here. Most of those days came in 2019; the rest in 2018, 2020, 2024, 2025 and 2026.

SOFR minus the Fed's rate on bank reserves
Basis points, each business day from 3 April 2018 to 3 September 2026. Red dots: days more than +5 bp above
  1. SOFR prints 5.25%, 315 bp above IOER. Source
  2. Fed cuts rates to near zero and announces large asset purchases, on Sunday evening 15 March; the first business day to feel it is 16 March. Source
  3. Balance-sheet runoff resumes. Source
  4. Runoff ends, as announced on 29 Oct 2025. Source

SOFR is the typical rate on , cash lent against Treasury securities, mostly by to . Zero on the chart is the rate the Fed pays banks on their reserves. SOFR closed at or below it on 1,730 of the 2,104 days counted here (82%). More than +5 bp above it, the project calls a day a pressure day.

Go deeper: how this line is drawn
  • The line is SOFR minus the Fed's rate on reserves, each in percent as published, so the difference is a whole number of basis points. Before 29 July 2021 the Fed paid IOER, its rate on excess reserves, and the line uses it.
  • The +5 bp line is the project's headline pressure threshold, and a day counts only when it is strictly above it (the decision). SOFR is published at about 8:00 a.m. ET on the next business day, and may be revised at about 2:30 p.m. that day (source). The chart shows what happened, not what could have been predicted.
  • With the scale clipped at +45 bp, 4 days counted here rise above it and are drawn as triangles on the top edge; the largest was +315 bp on 17 September 2019.

The same line, with the Fed's balance-sheet runoff, the stress windows and the middle half of each day's trades, is section 7.

N2Why is this hard?

Of the 2,042 business days scored from 29 June 2018 to 3 September 2026, SOFR closed more than +5 bp above IORB on 145 (7%) and more than +10 bp above on 61 (3%). Most of the days above +5 bp came in 2019; the rest in 2018, 2020, 2024, 2025 and 2026.

Pressure days are few, and they come in bunches
One mark per scored business day, one row per year, from 29 June 2018 to 3 September 2026. Each day is drawn once, by the highest threshold its spread is above
  • At or below +5 bp
  • Above +5 bp (circle)
  • Above +10 bp (square)
  • Above +20 bp (diamond)
  • Above +50 bp (triangle)

That is what makes forecasting pressure hard. A forecast that always said “no pressure tomorrow” would have been right on 1,897 of the 2,042 days, and missed every pressure day. So a forecast is graded against simple benchmarks, not by how often it is right. Of the 145 days above +5 bp, 95 came on the business day after another one.

Show every day above +20 bp
  1. +60 bp
  2. +75 bp
  3. +30 bp
  4. +25 bp
  5. +36 bp
  6. +21 bp
  7. +24 bp
  8. +33 bp
  9. +315 bp
  10. +45 bp
  11. +21 bp
  12. +55 bp
  13. +25 bp
  14. +21 bp
  15. +44 bp
  16. +32 bp
  17. +23 bp
  18. +22 bp
  19. +22 bp
  20. +22 bp
Go deeper: which days are scored
  • The marks start on 29 June 2018, not on 3 April 2018 as in N1. A forecast needs 61 days of history before it is first scored, so the first scored day is the first with that much behind it. Every day after it, to the panel's end, is scored.
  • A day counts above a threshold only when its spread, in whole basis points, is strictly above it (the decision). The thresholds are the project's declared ones; +5 and +10 bp are the headline.
  • How the spread is drawn over time, with the events behind the bunches, is section 7; when in the calendar the pressure days fall is section 8.

N3When does it happen?

With cash scarce, SOFR closed more than +5 bp above IORB on 21 of 73 days in a quarter-end window and 121 of 977 other days counted here; with cash abundant, on 4 of 92 quarter-end window days and 1 of 961 other days.

Two things are crossed: the days around each quarter's end, and spare cash. Money market funds park cash at the Fed in ; cash is scarce on a day when the facility took in less than $100bn.

Share of days with SOFR more than +5 bp above IORB
Business days from 4 April 2018 to 3 September 2026, in four groups. Dot: the share; bar: its interval; circle: quarter-end window; square: other days

Around quarter-ends, and to a lesser extent some month-ends, some dealers scale back repo intermediation for regulatory and accounting reporting, and the spreads they charge widen (source).

The quarter-end cells are small, 73 days with scarce cash and 92 days with abundant cash, so their intervals are wide.

The reserve-scarcity state behind the spread
Business days from 29 June 2018 to 3 September 2026. Top: SOFR minus IORB in basis points, shaded by the state. Middle: the state, 0 to 3. Bottom: days ON RRP was below $100bn
  • 0 abundant
  • 1 ample
  • 2 tight
  • 3 scarce
  • ON RRP below $100bn

Pressure-day frequency does not rise step by step with the state. SOFR closed more than +5 bp above IORB on 0.5% of abundant days (5 of 1035) but 0.3% of ample days (1 of 324), and the intervals overlap.

Go deeper: how the cells are drawn
  • Quarter-end here is the column quarter_end_window: the quarter's last business day and the two business days either side, five days in all (the decision). A one-day flag on the last business day alone would put pressure on the days around it in “other days”.
  • Each day is classed by the ON RRP result public at 4 pm New York time on the panel day before it, the moment a forecast of that day is made. The project dates a result to 16:00 on the next business day, because the New York Fed states no publication time, so that reading is the operation of the business day before the one it is read on. The amount is what the facility accepted that day, summed over its operations, from the New York Fed's operation results (source).
  • The $100bn break is the project's constant, taken from the advisor evidence pack, which read it off weekly 2018-2026 pressure frequencies; those weeks overlap the days counted here, so it was not chosen blind to them. It was fixed before this project used it and is not tuned here on these days; the review of that pack found the reading insensitive to a break anywhere from $25bn to $200bn. The reserve-scarcity state in the band above counts the same break, but reads it with that week's bank assets, so its reading can be older than this one.
  • A day counts when its spread, in whole basis points, is strictly above the line (the decision). Each interval is a 90% stationary-bootstrap interval that resamples a cell's days in blocks averaging 10 days, because pressure days come in runs.

The band:

  • The state adds two readings. Reserves over the total assets of all commercial banks: 0 at or above 13%, 1 from 12% up to it, 2 below 12%. New York Fed research measures reserves against total bank assets, and puts the point where reserves stop being plentiful at about 12–13% of bank assets (source). And the overnight reverse repo balance: 0 at or above $100bn, 1 below it. The sum runs from 0 to 3: 0 abundant; 1 ample; 2 tight; 3 scarce. The band describes the period; it is not a working indicator, and no forecast on this page reads it.
  • Each day shows the state as it could be read at 4 pm New York time that day, from the latest week all its inputs were public. The Federal Reserve Board publishes commercial banks' weekly balance sheets, total assets among them, in its H.8 release, generally on Fridays at 4:15 p.m. Eastern Time (source). Bank assets are each week's first print. Reserves are the latest revised figures, so that leg is shown with hindsight.
  • The bottom lane marks the days the cells above call scarce cash, from the same 4 pm reading. Each interval is a 90% stationary-bootstrap interval that resamples a state's days in blocks averaging 10 days, the one the scarcity validation used.
Share of days above each headline line, by state, 29 June 2018 to 3 September 2026
StateDaysAbove +5 bpAbove +10 bp
0 abundant1035 days0.5% (5 of 1035); 90% interval 0% to 1.1%0.2% (2 of 1035); 90% interval 0% to 0.4%
1 ample324 days0.3% (1 of 324); 90% interval 0% to 0.9%0.3% (1 of 324); 90% interval 0% to 0.9%
2 tight107 days16% (17 of 107); 90% interval 3.7% to 31%8.4% (9 of 107); 90% interval 0.9% to 18%
3 scarce576 days21% (122 of 576); 90% interval 15% to 28%8.5% (49 of 576); 90% interval 5.2% to 12%
2026 onlydays by state, 0 0 / 1 0 / 2 66 / 3 103

The same cells at +10 bp:

Share of days with SOFR more than +10 bp above IORB
Quarter-end windowOther days
Scarce cash: ON RRP below $100bn14%10 of 73 days90% interval 5.5% to 23%5.0%49 of 977 days90% interval 2.9% to 7.5%
Abundant cash: ON RRP at or above $100bn1.1%1 of 92 days90% interval 0% to 3.3%0.1%1 of 961 days90% interval 0% to 0.3%

Pressure by day type and year, with the reserves behind it, is section 8.

N4Who lends to whom

Of the 18 public series on this market's map, six are read by a published forecast.

Cash moves between the Fed, the Treasury, money funds, banks, dealers and other lenders. Each public series that measures one of those flows is a tag on the map: for example the balance at , the balance of , the gap between and IORB, take-up at , or the s of each day's SOFR trades.

Three New York Fed rates price the repo segments: TGCR (), BGCR (tri-party plus ) and SOFR (BGCR plus cleared ). Direct bilateral repo is in none of them.

Where the cash goes, and which public series measure each flow
Each arrow points the way the cash goes. Its number matches the list, where each flow's tags open a detail panel
123456789BanksThe FedThe TreasuryMoney fundsDealersHedge funds and othersFederal Home Loan Banksand other cash lendersMarket-wide, under the dealers
  • Repo loan: cash lent overnight against Treasuries
  • Unsecured overnight loan (federal funds)
  • Cash kept at the Fed
  • Payment for Treasuries bought at auction
  • Faint: no registered series on this map measures the flow
Show each flow and its series
  1. Money funds → DealersRepo loan: cash lent overnight against Treasuries. In the tri-party segment the largest borrowers are primary dealers, borrowing cash from money market funds to finance the Treasuries they hold (source).
  2. Dealers → Hedge funds and othersRepo loan: cash lent overnight against Treasuries. In the centrally cleared segment, dealers lend cash on to hedge funds and other institutions (source).No registered series on this map measures this flow.
  3. The Fed → DealersRepo loan: cash lent overnight against Treasuries. In standing repo operations, dealers and banks can borrow from the Fed in a repo; their use helps limit upward pressure on repo rates (source).
  4. Federal Home Loan Banks and other cash lenders → DealersRepo loan: cash lent overnight against Treasuries. Federal Home Loan Banks lend in both the federal funds and the repo markets, and so link the two (source).No registered series on this map measures this flow.
  5. Federal Home Loan Banks and other cash lenders → BanksUnsecured overnight loan (federal funds). Commercial banks and Federal Home Loan Banks are the main participants in the federal funds market, and the Home Loan Banks make up the vast majority of its lending (source).
  6. Money funds → The FedCash kept at the Fed. Reserves and overnight reverse repo balances are cash held at the Fed by banks and by non-banks respectively (source).
  7. Banks → The FedCash kept at the Fed. Reserves and overnight reverse repo balances are cash held at the Fed by banks and by non-banks respectively (source).
  8. The Treasury → The FedCash kept at the Fed. On corporate tax dates, payments move from bank and money-fund accounts into the Treasury's account at the Fed, which drains reserves (source).
  9. Dealers → The TreasuryPayment for Treasuries bought at auction. When Treasury auctions settle, primary dealers pay for the securities they bought and finance them in repo, so more Treasuries need financing. The payment also drains cash from the banking system, and reserves fall (source).
  10. Market-wide, under the dealersSOFR is a broad measure of the general cost of financing Treasury securities overnight (source).
The three repo rates on quarter-ends and tax days
Basis points above IORB. 43 days: 13 quarter-ends and 30 tax deadlines
Go deeper: the status of every tag, and the segment days
TagFlowStatusRegistryPanelData in this repository
ON RRP balanceMoney funds → The Fed In progressbuilt; whether it joins the published forecast is not yet decidednyfed_on_rrp.reverse_repo_total_acceptednot in the panelyes
TGCR, the price of tri-party repoMoney funds → Dealers In progressbuilt; whether it joins the published forecast is not yet decidednyfed_tgcr.TGCRtgcryes
BGCR, tri-party plus GCF RepoMoney funds → Dealers In progressbuilt; whether it joins the published forecast is not yet decidednyfed_bgcr.BGCRbgcryes
Money fund repo holdings (N-MFP, monthly)Money funds → Dealers Registered but unusedregistered, and no published declaration reads itsec_nmfp.mmf_repo_holdingsnot in the panelno
Standing repo take-upThe Fed → Dealers In progressbuilt; whether it joins the published forecast is not yet decidednyfed_srf.srf_total_acceptednot in the panelyes
Cleared repo by segment (OFR)Dealers → Hedge funds and others Not registeredno source in metadata/sources.json carries itofr_short_term_funding.dvp_gcf_volumenot in the panelno
EFFR − IORBFederal Home Loan Banks and other cash lenders → Banks In progressbuilt; whether it joins the published forecast is not yet decidedfred_macro_latest_vintage.IORB, nyfed_effr.EFFReffr, not built; iorbyes
Reserve balancesBanks → The Fed Usedin the published declaration docs/runs/backtest_gbm_conformal_pid_nested_funding.jsonfred_macro_latest_vintage.WRESBALreserve_balancesyes
Announced IORB changesBanks → The Fed In progressbuilt; whether it joins the published forecast is not yet decidedfed_iorb_announcements.iorb_announced_change_bps, fed_iorb_announcements.iorb_days_to_announced_changeiorb_announced_change_bps, not built; iorb_days_to_announced_change, not builtyes
Reserve-scarcity stateBanks → The Fed Registered but unusedregistered, and no published declaration reads itfrb_h8.total_assets, fred_macro_latest_vintage.WRESBALreserve_balancesyes
TGA balanceThe Treasury → The Fed Usedin the published declaration docs/runs/backtest_gbm_conformal_pid_nested_funding.jsonfred_macro_latest_vintage.WTREGENtgayes
Treasury settlementsDealers → The Treasury Usedin the published declaration docs/runs/backtest_gbm_conformal_pid_nested_funding.jsontreasury_auctions.treasury_settlementtreasury_settlementyes
Bill yields, 4 and 13 weeksDealers → The Treasury Usedin the published declaration docs/runs/backtest_gbm_conformal_pid_nested_funding.jsontreasury_bill_rates.tbill_13w_coupon_equivalent, treasury_bill_rates.tbill_4w_coupon_equivalenttbill_13w; tbill_4wyes
SOFR and its volumeMarket-wide, under the dealers Usedin the published declaration docs/runs/backtest_gbm.jsonnyfed_sofr.SOFR, nyfed_sofr.SOFR_volumesofr; sofr_volumeyes
SOFR 25th and 75th percentilesMarket-wide, under the dealers Usedin the published declaration docs/runs/backtest_gbm.jsonnyfed_sofr.SOFR_p25, nyfed_sofr.SOFR_p75sofr_p25; sofr_p75yes
SOFR 1st and 99th percentilesMarket-wide, under the dealers In progressbuilt; whether it joins the published forecast is not yet decidednyfed_sofr.SOFR_p1, nyfed_sofr.SOFR_p99not in the panelyes
SOFR − TGCRMarket-wide, under the dealers In progressbuilt; whether it joins the published forecast is not yet decidednyfed_sofr.SOFR, nyfed_tgcr.TGCRsofr; tgcryes
Dealer Treasury positions (FR 2004)Market-wide, under the dealers In progressbuilt; whether it joins the published forecast is not yet decidednyfed_fr2004.PDPOSGST-TOTdealer_treasury_positionyes
  • Used: a published forecast reads it. Tried and hurt: adding it made the forecast worse. In progress: being worked on. Registered but unused: the project has the source and no forecast reads it. Not registered: the project has no source for it.
  • The days were chosen by one rule that reads only inputs known before each day: every quarter-end before 1 January 2026 on which the ON RRP result public at the 4 pm decision the business day before was below $100bn, and every corporate tax deadline before then on which Treasury coupon securities settled. It never reads a rate or a spread.
  • The segment chart's days come from the panel's quarter_end flag (the last business day of the quarter), the statutory corporate tax deadlines, the scheduled coupon settlements, and the New York Fed's ON RRP results read as they stood at each day's decision. The values are below.
DayChosen becauseTGCR − IORB, bpBGCR − IORB, bpSOFR − IORB, bp
15 Jun 2018Tax date on a coupon settlement−8−8−4
29 Jun 2018Quarter-end, ON RRP low+15+15+17
17 Sep 2018Tax date on a coupon settlement+2+2+5
28 Sep 2018Quarter-end, ON RRP low+4+4+5
17 Dec 2018Tax date on a coupon settlement+8+8+11
31 Dec 2018Quarter-end, ON RRP low+55+55+60
29 Mar 2019Quarter-end, ON RRP low+18+18+25
15 Apr 2019Tax date on a coupon settlement+3+3+7
17 Jun 2019Tax date on a coupon settlement+3+3+6
28 Jun 2019Quarter-end, ON RRP low+15+15+15
16 Sep 2019Tax date on a coupon settlement+32+32+33
30 Sep 2019Quarter-end, ON RRP low+55+55+55
16 Dec 2019Tax date on a coupon settlement+5+5+7
31 Dec 2019Quarter-end, ON RRP low000
15 Apr 2020Tax date on a coupon settlement−7−7−7
15 Jun 2020Tax date on a coupon settlement−3−3−1
30 Jun 2020Quarter-end, ON RRP low−3−30
15 Sep 2020Tax date on a coupon settlement−3−30
30 Sep 2020Quarter-end, ON RRP low−4−4−2
15 Dec 2020Tax date on a coupon settlement−3−3−1
31 Dec 2020Quarter-end, ON RRP low−4−4−3
31 Mar 2021Quarter-end, ON RRP low−9−9−9
15 Apr 2021Tax date on a coupon settlement−9−9−9
15 Jun 2021Tax date on a coupon settlement−9−9−9
15 Sep 2021Tax date on a coupon settlement−10−10−10
15 Dec 2021Tax date on a coupon settlement−10−10−10
18 Apr 2022Tax date on a coupon settlement−10−10−11
15 Jun 2022Tax date on a coupon settlement−17−18−20
15 Sep 2022Tax date on a coupon settlement−14−14−12
15 Dec 2022Tax date on a coupon settlement−13−13−8
15 Jun 2023Tax date on a coupon settlement−11−11−9
15 Sep 2023Tax date on a coupon settlement−10−10−9
15 Dec 2023Tax date on a coupon settlement−10−10−8
15 Apr 2024Tax date on a coupon settlement−9−9−8
17 Jun 2024Tax date on a coupon settlement−8−8−7
16 Sep 2024Tax date on a coupon settlement−7−7−2
16 Dec 2024Tax date on a coupon settlement−4−40
15 Apr 2025Tax date on a coupon settlement−5−5−4
16 Jun 2025Tax date on a coupon settlement−10−10−8
15 Sep 2025Tax date on a coupon settlement+10+10+11
30 Sep 2025Quarter-end, ON RRP low+5+5+9
15 Dec 2025Tax date on a coupon settlement+8+8+10
31 Dec 2025Quarter-end, ON RRP low+17+17+22

The segments nested inside each other, with their rates on one day, and the Fed's administered rates are in section 6.

N5A quarter-end squeeze, step by step

Two quarter-ends: 31 December 2025, with cash scarce, and 30 September 2022, with cash abundant. SOFR less IORB closed at +22 bp on the first and −17 bp on the second. Step through what the Fed's staff describe happening around a quarter-end, and what each public series did.

Each step is one link in the chain the Fed's staff describe. It lights the flows on the map and charts the series that measure them, five business days either side of each quarter-end. A filled point was public at 4 pm the business day before; a hollow point was not yet.

A quarter-end, step by step

Step 1 of 8: Treasury settlements take cash

When Treasury auctions settle, primary dealers pay for the securities they bought and finance them in repo, so more Treasuries need financing. The payment also drains cash from the banking system, and reserves fall (source). Dealers and hedge funds borrow in repo to finance coupon Treasuries, so days when new coupon securities are issued raise the demand for repo cash (source).

Treasury settlements Used
  • Treasury settlements: the value for 31 December 2025 was announced 1 calendar day before it, at the declared instant, 3 pm New York time; the value for 30 September 2022 was announced 1 calendar day before it, at the declared instant, 3 pm New York time.
123456789BanksThe FedThe TreasuryMoney fundsDealersHedge funds and othersFederal Home Loan Banksand other cash lendersMarket-wide, under the dealers
Go deeper: the values, and how the two quarter-ends were chosen

The scarce case is the most recent quarter-end before 1 January 2026 on which the ON RRP result public at the declared decision instant (4 pm New York time) the business day before was below $100bn: 31 December 2025, which read $10.6bn. The abundant case is the quarter-end before then with the largest such result: 30 September 2022, which read $2,367bn. The rule never reads a rate or a spread

  • The two quarter-ends come from one rule, declared in the generator before any chart was drawn. It reads only the panel's quarter_end flag (the quarter's last business day) and the New York Fed's ON RRP results, read as they stood at each decision, as N3 and N4 read them (source).
  • The Treasury's account and reserve balances are drawn as the change since the window's first day, because their levels differ by thousands of billions. Rates are drawn less IORB, in whole basis points.
  • Each step's publication times come from the project's source declarations, the same ones the forecasts are read under.
Around 31 December 2025, the quarter-end with cash scarce
Series23 Dec 202524 Dec 202526 Dec 202529 Dec 202530 Dec 202531 Dec 20252 Jan 20265 Jan 20266 Jan 20267 Jan 20268 Jan 2026
Treasury settlements, $bn2290316022922023802290238
Treasury General Account, $bn, change0+4+4+4+4+4+4+4+4−37−37
Reserve balances, $bn, change0−3−3−3−3−2−2−2−2+37+37
Dealer Treasury positions, $bn455484484484484477477477477459459
Overnight reverse repo, $bn6520111310666353
SOFR's 99th percentile, bp over IORB+10+10+22+24+18+35+22+14+9+9+8
SOFR, bp over IORB+1+1+11+12+6+22+10+5+10−1
EFFR, bp over IORB−1−1−1−1−1−1−1−1−1−1−1
Standing repo take-up, $bn001726375230000
Around 30 September 2022, the quarter-end with cash abundant
Series23 Sep 202226 Sep 202227 Sep 202228 Sep 202229 Sep 202230 Sep 20223 Oct 20224 Oct 20225 Oct 20226 Oct 20227 Oct 2022
Treasury settlements, $bn00125096172012501300
Treasury General Account, $bn, change000−3−3−3−3−3−59−59−59
Reserve balances, $bn, change000−143−143−143−143−143−131−131−131
Dealer Treasury positions, $bn104104104125125125125125161161161
Overnight reverse repo, $bn2,3192,2992,3272,3672,3722,4262,2532,2342,2312,2332,227
SOFR's 99th percentile, bp over IORB+5+5+5+5+5+5+5+5+5+5+5
SOFR, bp over IORB−16−16−17−17−19−17−15−11−11−10−10
EFFR, bp over IORB−7−7−7−7−7−7−7−7−7−7−7
Standing repo take-up, $bn00000000000

When each input is public relative to the decision is section 9; pressure by day type and year is section 8.

N6What the data show about the repo market

Three things the data show about the repo market, in a fixed order: stress sits on the turn of the month, the calendar sets the date and reserve scarcity sets the size, and all but 1 of the stress episodes since 2020-04-01 began next to a known calendar date. A description of what happened, not a forecast.

These are three things about the repo market itself, not about the forecasting model. The market lends cash overnight against Treasury securities. SOFR is the rate on that borrowing. IORB is the interest the Fed pays banks on the cash they hold with it. The gap is SOFR minus IORB, counted in basis points (a hundredth of a percentage point). Pressure is a gap more than 5 basis points above zero. This is development evidence: a description of what happened, not a forecast and not a verdict on any model.

1. Stress lives on the turn, not on month-end in general

The turn is the last business day of a month and the first business day of the next. In 2018-19 the gap averaged +11.5 basis points on the last business day and +4.0 on the first business day after it. On the second-last business day it averaged +0.3, the same as on an ordinary day in the middle of a month (+1.7). The days before the turn are ordinary; the turn carries the pressure. The latest period, 2025-26, has the same shape, smaller: +3.5 on the last business day, +2.1 on the first and -0.5 on the second-last.

Average gap in basis points, by market period and type of day (days counted in brackets; months that end a quarter are left out)
Market periodLast business day of the monthFirst business day of the next monthSecond-last business dayOrdinary mid-month day
2018-19+11.5 (14 days)+4.0 (14 days)+0.3 (14 days)+1.7 (139 days)
2020-1.6 (8 days)-1.9 (8 days)-2.9 (8 days)-0.7 (77 days)
2021-23-9.2 (24 days)-8.8 (24 days)-9.7 (24 days)-9.7 (233 days)
2024-5.5 (8 days)-5.8 (8 days)-8.0 (8 days)-7.7 (78 days)
2025-26+3.5 (14 days)+2.1 (14 days)-0.5 (14 days)-3.8 (133 days)

2. The calendar sets the date; reserve scarcity sets the size

The same month-end added about +5.8 basis points to the gap in 2018-19, +0.3 in 2021-23 and +4.3 in 2025-26. A coupon settlement, the day the Treasury is paid for newly auctioned notes and bonds, which draws cash out of the market, added +8.5, +0.5 and +3.8 in the same three periods. The calendar tells you which days to watch. How much a date adds follows how scarce reserves (the cash banks hold at the Fed) are. That second half is the project's reading of the pattern; the table shows the sizes, not the cause.

Added to the gap on that kind of day, in basis points, with the 90% interval (state-scaled calendar model)
Market periodMonth-endCoupon settlement
2018-19+5.8 [+4.4, +7.2]+8.5 [+7.2, +9.8]
2020+2.2 [+1.3, +3.0]+2.5 [+1.7, +3.4]
2021-23+0.3 [+0.1, +0.5]+0.5 [+0.3, +0.7]
2024+1.8 [+1.3, +2.2]+1.5 [+1.0, +2.0]
2025-26+4.3 [+3.5, +5.0]+3.8 [+2.8, +4.9]

3. Stress episodes begin on known calendar dates

A stress episode starts on a day the gap is above 5 basis points after more than 10 business days without one. Since 2020-04-01 there have been 6. Of those, 5 began on or within a business day of a known calendar date: a month-end or quarter-end turn, a mid-month Treasury settlement or a tax date. For scale, 37% of all business days in that period sit on or next to such a date. The episodes all began in 2024 to 2026.

Stress episodes since 2020-04-01
StartGap, basis pointsKnown date on or next to it
2024-09-30+6.0quarter-end
2024-12-26+13.0none
2025-09-15+11.0tax date, mid-month settlement
2025-09-30+9.0quarter-end
2026-02-17+6.0mid-month settlement
2026-04-15+7.0tax date, mid-month settlement
Go deeper: how each finding is measured
  • Finding 1 is computed from the published panel (digest 4ddc3882), 2018-04-03 to 2026-09-03. A turn is the last business day of a month and the first business day of the next, in months that do not end a quarter (the turn definition in force). The second-last day is the month's second-last business day. The ordinary day is any day from the 10th to the 20th that is no turn day and no tax date. Every figure is a mean of the spread, SOFR minus IORB in basis points, over the days counted.
  • Finding 2 is read from docs/research/state-calendar-1145/result.json, arm (s1): a model fitted by regime with one standardised effect for each kind of calendar day. The interval is the 90% interval of the effect over the refits.
  • Finding 3: an episode starts on a day the gap is strictly above 5 basis points after more than 10 business days with none, as counted on the panel's own calendar. “Near” is one business day either side. A mid-month settlement is a coupon settlement on the 13th to the 19th.
  • It is a description of what happened: no forecast, no model comparison, and no day the project holds back from analysis is read (the rule).

Where this comes from: docs/research/market-findings-1177/result.json, docs/research/state-calendar-1145/result.json and the study page.

4The final test

From 2 January to 3 September 2026, the model's next-day forecast of the range of SOFR − IORB was more accurate than carrying the latest spread forward: 1.66 bp against 1.83 bp of five-quantile score (how far the forecast range was from what happened; lower is better), and the 90% interval of the gap, +0.03 to +0.36 bp, lies above zero. Result: pass.

The model against carrying the latest spread forward, 2 January to 3 September 2026
Above: average score over 169 days, in basis points; lower is better. Below: the model's edge over carrying the spread forward, with its 90% interval; right of zero favours the model

How much to trust the pass

  • The pass rests on a handful of days: without the 5 days where the model did best, the edge falls from +0.17 bp to +0.03 bp; without the top 10 it reverses, to −0.04 bp.
  • The model did better on 87 of 169 days, about half: its edge comes from a few large wins, not from being better on most days.
  • By type of day and by quarter-end window: ordinary (147 days) and outside the quarter-end window (157 days) can't be told apart from zero; month-end (14 days), quarter-end (2 days), tax date (6 days) and inside the quarter-end window (12 days) have too few days to say (under 20 each).
How the edge holds up, in basis points
Above: the model's edge in each group, with its 90% interval; right of zero, the model is better. Below: the edge after dropping the days where the model did best
Show the numbers
By type of day
Day typeDaysMean difference, bp90% interval, bp
Ordinary147+0.152−0.006 to +0.360
Month-end14−0.125−0.262 to +0.024
Quarter-end2+0.507too few days for an interval
Tax date6+1.313too few days for an interval
By quarter-end window
WindowDaysMean difference, bp90% interval, bp
Outside the quarter-end window157+0.106−0.001 to +0.226
In the quarter-end window12+1.071no interval: the bootstrap is undefined on this few days
Influence of single days
MeasurePaired difference, bp
Mean+0.1741
Median+0.0122
Mean after dropping the top 1 day+0.1083
Mean after dropping the top 5 days+0.0251
Mean after dropping the top 10 days−0.0354
Days the model won87 of 169
The ten days that contribute most
RankDayPaired difference, bp
15 January 2026+11.22
26 January 2026+5.13
317 April 2026+3.40
426 May 2026+3.12
517 June 2026+2.43
620 February 2026+2.15
714 July 2026+2.14
813 July 2026+1.85
918 March 2026+1.82
1018 February 2026+1.78
How the test was run
  • Fixed first. The design, the benchmark and the command were written down (the pre-registration) before any of these days was scored.
  • Run once, on 5 October 2026, and published whatever it showed.
  • Against carrying the latest spread forward. Both forecasts are graded by the five-quantile score, the mean pinball loss over the five published quantiles: how far the forecast range was from the spread that came, in basis points. Lower is better.
  • One change before the test was opened. The deciding comparison moved from the probability forecast to this five-quantile score (the pre-registration records it). On the opened record the probability forecast does not beat calendar climatology: mean Brier difference +0.0053, 90% interval −0.0029 to +0.0137, label not shown (reported only).

The claim: the published model's one-day-ahead forecast of the five published quantiles of SOFR − IORB was more accurate than as-of persistence over January to September 2026.

5Forecast against what happened

The forecast one day ahead and the spread that came,
SOFR − IORB in basis points. Points: the actual spread. Line: the model's median forecast. Shaded: its 90% band. Circled: the biggest misses

The middle band, the range that should hold half of all days, has been recalibrated. It used to be too narrow: the actual spread landed inside it on 33% of days in 2018-2025 and 20% in 2026. It now holds 48% and 47%. The band moves by what recent misses on the same kind of day (a month-end, a quarter-end, a tax date, a coupon settlement or an ordinary day) say it should have been. The 90% band is not adjusted. The limits above describe the live forecast, which is unchanged. The before and after tables.

Show the numbers
How far off it was, in basis points. A band holds a day when the actual spread is inside it or on its edge.
Measure2018–2025, The published model2018–2025, Middle band recalibrated2026, January to September, The published model2026, January to September, Middle band recalibrated
Days scored1,8731,873169169
Mean absolute error of the median, bp2.262.242.512.49
Median absolute error of the median, bp1.000.991.952.04
Days within 1 bp of the median50%50%27%27%
Days within 2 bp of the median69%71%51%49%
Largest misses, actual minus median+309.1 bp, 17 Sep 2019
+74.0 bp, 2 Jan 2019
+59.0 bp, 31 Dec 2018
+308.3 bp, 17 Sep 2019
+72.9 bp, 2 Jan 2019
+58.5 bp, 31 Dec 2018
+9.8 bp, 26 May 2026
+9.7 bp, 15 Jun 2026
−8.8 bp, 9 Jul 2026
+10.2 bp, 26 May 2026
+9.3 bp, 15 Jun 2026
+8.8 bp, 27 May 2026
Actual inside the 90% band (misses below, above)89% (95 below, 115 above)89% (92 below, 112 above)93% (7 below, 5 above)93% (7 below, 5 above)
Actual inside the 50% band (misses below, above)33% (754 below, 503 above)48% (465 below, 503 above)20% (80 below, 55 above)47% (54 below, 35 above)
Mean width of the 90% band, bp10.7510.7612.0212.02
Mean width of the 50% band, bp2.002.601.934.02
The biggest misses of 2026, January to September
DateActual, bpForecast median, bp90% band, bpMiss, bp
26 May 2026−2−11.75−17.26 to −4.68+9.75
15 June 2026+4−5.66−9.12 to +0.68+9.66
9 July 2026−12−3.24−7.61 to +3.27−8.76
15 April 2026+7−1.53−5.92 to +3.88+8.53
27 May 2026−2−10.38−14.13 to −0.94+8.38

6The plumbing

The Fed brackets the market with a firm floor, its overnight reverse repo rate, and a soft ceiling, its standing repo rate. Under the implementation note of 16 September 2026, the standing repo rate is +10 bp from IORB and the overnight reverse repo rate −15 bp.

SOFR is the cost of borrowing cash overnight against Treasuries. It is the volume-weighted median of the rates on overnight Treasury repo trades, and the New York Fed publishes the volume of trades behind each day's rate (source). On 3 September 2026 it was set from about $2.9 trillion of trades.

Why IORB is the anchor. The Fed pays banks the interest rate on reserve balances, IORB, on the cash they hold with it (source). A bank can always earn IORB without lending, so SOFR above IORB means spare cash is not reaching the repo market.

A firm floor, a soft ceiling. Money funds do not earn IORB, so the overnight reverse repo rate is a floor under what they accept. The ceiling is soft: on 31 October 2025 SOFR printed 4.22%, above the standing repo rate of 4.00%.

Go deeper: the segments and the Fed's administered rates
Three segments, each inside the next
The Treasury repo segments the New York Fed's reference rates are built from. Rates on 3 September 2026, the panel's last day
  • TGCR measures overnight tri-party general collateral repo backed by Treasuries, leaving out trades in which the Fed is a counterparty (source). BGCR adds the trades cleared through FICC's GCF Repo service (source). SOFR adds the bilateral trades cleared through FICC's delivery-versus-payment (DVP) service, where each trade names the security it settles (source).
  • To keep trades for one scarce security from pulling the rate down, the New York Fed removes the lowest-rate 20 percent of DVP volume each day before taking the volume-weighted median (source).
  • Reserves and overnight reverse repo balances are cash held at the Fed by banks and by non-banks respectively (source).
  • In standing repo operations, dealers and banks can borrow from the Fed in a repo; their use helps limit upward pressure on repo rates (source).
The Fed's administered rates, as the current implementation note states them
Percent, effective 17 September 2026. The shaded band is the target range for the federal funds rate

Only rates the note states are drawn. They are today's settings, not the panel's: the panel ends on 3 September 2026.

  • The rates above are parsed by the page's generator from a copy of the implementation note issued 16 September 2026, retrieved 2026-10-02T02:01:09Z, SHA-256 ca952b275bbb6fccc07ef2ec02715f5e405b1185538985b40ac4fe496b55105b. None is typed.

To rebuild the panel behind the segment rates, run section 2 of the overview notebook in Colab.

7Eight years in one line

SOFR closed above the Fed's rate on reserves on 1 day in 2021–23, and on 111 days in 2025–26. It was more than 50 bp above on 4 days, all in 2018–19.

How big is pressure? A day more than +5 bp above is mild. The largest, on 17 September 2019, was +315 bp, and the New York Fed answered with repo operations that week.

Why calm days sit below zero. In 2021–23, the median day was 10 bp below IORB. When cash is abundant, SOFR settles near the Fed's overnight reverse repo rate, which sits below IORB.

Pressure arrives in episodes, not at random
SOFR minus the Fed's rate on reserves, basis points, each business day from 3 April 2018 to 3 September 2026

Red line: days more than +5 bp above. Shaded: the Fed shrinking its balance sheet. Hatched: stress windows. Numbers: the events below.

The events behind the numbered markers
  1. FOMC ends balance-sheet runoff two months early, effective August. Source
  2. SOFR prints 5.25%, 315 bp above IOER. The New York Fed answers with overnight repo operations, offering up to $75 billion each morning that week. Source
  3. Fed announces Treasury bill purchases to keep reserves ample. Source
  4. Fed cuts rates to near zero and announces large asset purchases, on Sunday evening 15 March; the first business day to feel it is 16 March. Source
  5. IORB replaces IOER as the Fed's rate on reserves. The day before, the FOMC announced the standing repo facility, a backstop for money markets. Source, Source
  6. Balance-sheet runoff resumes. Source
  7. Runoff slows: the monthly cap on Treasury securities the Fed lets run off falls from $60 billion to $25 billion. Source
  8. Runoff slows again: the monthly cap on Treasury securities falls from $25 billion to $5 billion. Source
  9. SOFR prints 4.22%, 32 bp above IORB and above the Fed's standing repo rate, so the ceiling is soft. Source
  10. Runoff ends, as announced on 29 Oct 2025. Source
  11. FOMC starts reserve-management purchases of bills. Source
Go deeper: how this chart is built
  • SOFR is the volume-weighted median rate of overnight repo trades backed by Treasury securities. SOFR is published at about 8:00 a.m. ET on the next business day, and may be revised at about 2:30 p.m. that day (source).
  • The Fed's rate on reserves is IORB from 29 July 2021. Before that the Fed paid IOER, the rate on excess reserves, and the chart uses it so that September 2019 and March 2020 are covered. The switch is marked as event 5.
  • The middle half of the day's trades is the band between SOFR's 25th and 75th volume-weighted percentiles, less the same rate. The New York Fed did not publish it on 2 days in the sample.
  • +5 and +10 bp are the project's headline thresholds: the forecast gives the probability that tomorrow's spread is above each of them.
  • The stress windows, 16–20 September 2019 and 9–20 March 2020, are frozen and checksummed. Every published result pools those days with the rest.
  • In the full view the scale stops at +45 bp so that ordinary days stay readable. 4 days rise above it and leave the frame; the largest, +315 bp on 17 September 2019, is labelled, and hovering shows the rest.

To rebuild this data yourself, run section 4 of the overview notebook in Colab.

8Why it happens

On pressure days in 2018–19, reserves had a median of $1.52 trillion. In 2025–26 the median was $2.93 trillion.

Pressure appears as reserves fall, but not at a fixed dollar amount
Each dot is one business day: reserves banks hold at the Fed against SOFR minus the rate on reserves

Dashed verticals: median reserves on days more than +5 bp above, by period. Triangles: the 4 days above +45 bp, drawn at the top edge. Reserves are the weekly average from the Fed's H.4.1 release.

Banks need more reserves as their balance sheets grow, so a dollar figure from one period does not compare with another. New York Fed research measures reserves against total bank assets, and puts the point where reserves stop being plentiful at about 12–13% of bank assets (source).

Reserves are only half of it. The other half is the Fed's overnight reverse repo facility (ON RRP), where money funds park cash instead of lending it. Weekly pressure above +5 bp was rare while the ON RRP balance was above $100bn and frequent below it, and more reserves mattered mainly once that buffer was gone (source). A thin buffer makes pressure possible, not certain: in 2021–23, ON RRP was below $100bn on 76 days and pressure came on 0 of them, because reserves were abundant. Over all the days counted here, pressure came on 142 of 1050 (14%) of the days with ON RRP below $100bn, against 5 of 1053 (0%) of the others.

The calendar picks the days once reserves are near the edge
Days more than +5 bp above, out of all days of each type, by year
Show the numbers
201820192020202120222023202420252026 (to 3 Sep)
Quarter-end2 of 33 of 40 of 40 of 40 of 40 of 42 of 42 of 40 of 2
Month-end2 of 68 of 80 of 80 of 80 of 80 of 80 of 82 of 80 of 6
Tax window3 of 128 of 120 of 120 of 120 of 120 of 120 of 122 of 111 of 6
Coupon settlement3 of 1011 of 171 of 180 of 190 of 170 of 161 of 164 of 152 of 14
Other6 of 15659 of 2093 of 2090 of 2070 of 2080 of 2092 of 21019 of 2112 of 141

In 2018–19, pressure came on 65 of 365 (18%) ordinary days. In 2025–26 it came on 21 of 352 (6%), but on 2 of 6 quarter-ends. In 2021–23, when reserves were most plentiful, there were none.

The usual explanations: Around quarter-ends, and to a lesser extent some month-ends, some dealers scale back repo intermediation for regulatory and accounting reporting, and the spreads they charge widen (source). On corporate tax dates, payments move from bank and money-fund accounts into the Treasury's account at the Fed, which drains reserves (source).

Go deeper: how the days are classified

Each day is counted once, in this order:

  • Quarter-end: the last business day of March, June, September or December (the panel's quarter_end flag).
  • Month-end: the last business day of any other month.
  • Tax window: the corporate tax dates and the business days after each that the panel's tax_date flag marks.
  • Coupon settlement: a day on which Treasury notes or bonds sold at auction settle.
  • Other: every remaining business day, bill settlements included.

A type with few days a year, such as quarter-ends, moves a long way on a single day. Read the counts, not only the shade. The periods are the regimes of metadata/evaluation_splits.json, the period slices declared before the reserve-scarcity state existed; re-declaring them by that state is a decision still open.

9What's known at 4 pm

Each forecast is made at 4 pm the business day before. By then the Treasury settlements for the next day are already announced; of the observed inputs, the freshest is 1 day old and the stalest is dealer Treasury positions, 7 business days old.

Every input has its own publication clock
When each of 16 inputs is first public, in days after the day its value describes

Dots: first public. Diamonds: announced before the day. Dotted lines: the 16:00 decision each day.

Go deeper: what this does and does not show
  • Each dot is drawn from the declaration the as-of rule itself reads (the information rule), through the same function. A lag counted in business days skips weekends and holidays; one counted in calendar days does not, so its dot can fall on a day with no decision.
  • The weekly H.4.1 series, reserves and the TGA, are declared five calendar days after the row's date, so each is read 5 to 12 days after its Thursday print. A newer print was public and unread on about two scored days in five. That is the safe direction, not a leak.
  • It shows the clock only. How much a stale input costs a forecast is a model result and appears only in the model chapters.

To see which value each input supplies on a given day, run section 5 of the overview notebook in Colab.

10Making a forecast

At +5 bp, three of the four scored models beat calendar-type climatology with a 90% interval above zero, and one beats the persistence-logistic. At +10 bp, one beats calendar-type climatology, and none beats the persistence-logistic.

Each model against the two benchmarks, on the same days
Benchmark's Brier score minus the model's, over 1,873 days from 29 June 2018 to 31 December 2025. Right of zero, the model was closer to what happened. Lines: 90% intervals

Blue: the interval is right of zero. Red: left of zero. Grey: it includes zero.

The same comparison, by regime and by type of day
Each group with its 90% interval
Go deeper: how the forecasts are scored
  • Each model gives, at 4 pm on the business day before, the probability that the next day's spread is above +5 bp and above +10 bp. It reads only what was public at that instant (the information rule).
  • The Brier score is the mean squared gap between the stated probability and what happened, 1 or 0. Lower is better.
  • The benchmarks are those the project fixed in advance: a climatology by type of day, and a logistic model of the latest spread (the pressure-probability rule). Each is scored in the same run as the model and paired with it day by day.
  • The intervals are stationary-bootstrap intervals on the daily differences, because neighbouring days are not independent draws.
  • This chapter shows four scored models. Which of them, if any, becomes the published pressure probability is decided in a scored record under that rule, not on this page.

11Grading it honestly

At +5 bp, pressure came on 7.5% of the scored days. The share of a model's Brier score that is miscalibration runs from 5% (climatology) to 16% (gradient-boosted distribution, cross-conformal, 4 inputs).

Does a stated probability come true as often as it says?
Each model's forecasts against how often pressure followed. On the diagonal, a probability comes true exactly as often as it says

Do the bands hold?

The central 50% range held on 32% of days and the 90% range on 89%. Split by type of day and period, the 50% range misses its target in all 11 groups and the 90% range in 4 of 11 groups.

Show the numbers
One day ahead, 1873 scored days, 2018-06-29 to 2025-12-31: how often the outcome fell inside each band.
GroupDays50% band50% interval90% band90% interval90% misses below90% misses aboveExcludes nominal
all: all days187331.8%29.6% to 34.0%88.7%87.2% to 90.1%96 (5.1%)115 (6.1%)50%
day type: month end18824.5%19.0% to 30.1%87.2%82.9% to 91.2%4 (2.1%)20 (10.6%)50%
day type: quarter end3116.1%5.6% to 28.0%77.4%64.5% to 90.0%0 (0.0%)7 (22.6%)50%
day type: year end8too few days (under 20)01
day type: tax date8916.9%9.9% to 24.6%80.9%72.3% to 88.6%4 (4.5%)13 (14.6%)50%, 90%
day type: coupon settlement24521.6%17.2% to 25.9%80.0%75.7% to 84.1%8 (3.3%)41 (16.7%)50%, 90%
day type: other146934.1%31.7% to 36.6%90.1%88.6% to 91.5%82 (5.6%)64 (4.4%)50%
regime: 2018-1937534.7%30.0% to 39.2%86.1%82.9% to 89.4%21 (5.6%)31 (8.3%)50%, 90%
regime: 202025134.7%28.9% to 40.6%89.6%86.0% to 93.2%11 (4.4%)15 (6.0%)50%
regime: 2021-2374829.0%25.3% to 32.7%91.0%88.7% to 93.2%50 (6.7%)17 (2.3%)50%
regime: 202425034.8%28.9% to 40.9%84.4%80.0% to 88.5%10 (4.0%)29 (11.6%)50%, 90%
regime: 2025-2624930.1%25.3% to 35.1%89.2%85.5% to 92.4%4 (1.6%)23 (9.2%)50%
2 days ahead, 1872 scored days, 2018-07-02 to 2025-12-31: how often the outcome fell inside each band.
GroupDays50% band50% interval90% band90% interval90% misses below90% misses aboveExcludes nominal
all: all days187232.1%29.8% to 34.3%89.0%87.5% to 90.4%91 (4.9%)115 (6.1%)50%
day type: month end18726.7%21.0% to 32.8%82.9%77.7% to 87.7%4 (2.1%)28 (15.0%)50%, 90%
day type: quarter end3016.7%6.2% to 29.0%60.0%44.1% to 75.0%0 (0.0%)12 (40.0%)50%, 90%
day type: year end8too few days (under 20)03
day type: tax date8922.5%15.6% to 29.9%79.8%70.9% to 87.5%5 (5.6%)13 (14.6%)50%, 90%
day type: coupon settlement24425.0%20.3% to 29.8%80.7%76.4% to 85.0%3 (1.2%)44 (18.0%)50%, 90%
day type: other146933.3%30.8% to 35.8%90.7%89.2% to 92.2%80 (5.4%)57 (3.9%)50%
regime: 2018-1937435.6%30.9% to 40.2%86.9%83.4% to 90.2%13 (3.5%)36 (9.6%)50%
regime: 202025133.9%28.6% to 39.3%91.2%87.6% to 94.7%11 (4.4%)11 (4.4%)50%
regime: 2021-2374830.5%26.6% to 34.3%90.8%88.3% to 93.0%50 (6.7%)19 (2.5%)50%
regime: 202425034.4%28.2% to 40.6%84.4%80.2% to 88.6%12 (4.8%)27 (10.8%)50%, 90%
regime: 2025-2624927.3%21.9% to 32.8%89.2%85.3% to 92.6%5 (2.0%)22 (8.8%)50%
3 days ahead, 1871 scored days, 2018-07-03 to 2025-12-31: how often the outcome fell inside each band.
GroupDays50% band50% interval90% band90% interval90% misses below90% misses aboveExcludes nominal
all: all days187129.8%27.7% to 32.0%88.4%86.8% to 89.9%95 (5.1%)122 (6.5%)50%, 90%
day type: month end18725.1%19.8% to 30.7%79.1%73.7% to 84.4%5 (2.7%)34 (18.2%)50%, 90%
day type: quarter end3010.0%2.5% to 19.0%50.0%34.8% to 65.2%0 (0.0%)15 (50.0%)50%, 90%
day type: year end8too few days (under 20)04
day type: tax date8918.0%11.1% to 24.7%82.0%73.5% to 89.9%3 (3.4%)13 (14.6%)50%, 90%
day type: coupon settlement24321.8%17.4% to 26.2%81.1%76.7% to 85.2%3 (1.2%)43 (17.7%)50%, 90%
day type: other146931.3%28.9% to 33.7%89.9%88.3% to 91.5%85 (5.8%)63 (4.3%)50%
regime: 2018-1937332.2%27.8% to 36.7%84.7%80.6% to 88.5%16 (4.3%)41 (11.0%)50%, 90%
regime: 202025131.1%25.4% to 36.9%90.8%87.1% to 94.4%15 (6.0%)8 (3.2%)50%
regime: 2021-2374829.3%25.5% to 33.0%90.9%88.5% to 93.2%48 (6.4%)20 (2.7%)50%
regime: 202425032.0%26.1% to 38.0%85.2%80.4% to 89.6%10 (4.0%)27 (10.8%)50%, 90%
regime: 2025-2624924.5%19.4% to 29.5%87.1%82.8% to 91.0%6 (2.4%)26 (10.4%)50%
4 days ahead, 1870 scored days, 2018-07-05 to 2025-12-31: how often the outcome fell inside each band.
GroupDays50% band50% interval90% band90% interval90% misses below90% misses aboveExcludes nominal
all: all days187030.1%27.9% to 32.3%88.3%86.6% to 89.9%101 (5.4%)117 (6.3%)50%, 90%
day type: month end18719.8%14.9% to 25.1%79.1%74.0% to 84.2%5 (2.7%)34 (18.2%)50%, 90%
day type: quarter end306.7%0.0% to 16.0%50.0%35.5% to 64.3%0 (0.0%)15 (50.0%)50%, 90%
day type: year end8too few days (under 20)04
day type: tax date8921.3%14.1% to 29.2%86.5%79.4% to 93.1%3 (3.4%)9 (10.1%)50%
day type: coupon settlement24320.2%15.9% to 24.7%79.0%74.6% to 83.2%4 (1.6%)47 (19.3%)50%, 90%
day type: other146832.0%29.6% to 34.5%89.9%88.1% to 91.5%90 (6.1%)58 (4.0%)50%
regime: 2018-1937234.9%30.5% to 39.7%84.7%80.9% to 88.3%16 (4.3%)41 (11.0%)50%, 90%
regime: 202025128.7%23.6% to 33.8%91.6%87.7% to 95.2%13 (5.2%)8 (3.2%)50%
regime: 2021-2374829.3%25.5% to 32.9%90.4%87.9% to 92.6%53 (7.1%)19 (2.5%)50%
regime: 202425031.6%25.5% to 37.6%85.2%80.0% to 90.1%11 (4.4%)26 (10.4%)50%
regime: 2025-2624924.9%19.9% to 30.4%87.6%83.5% to 91.4%8 (3.2%)23 (9.2%)50%
5 days ahead, 1869 scored days, 2018-07-06 to 2025-12-31: how often the outcome fell inside each band.
GroupDays50% band50% interval90% band90% interval90% misses below90% misses aboveExcludes nominal
all: all days186928.6%26.4% to 30.8%87.9%86.1% to 89.5%109 (5.8%)117 (6.3%)50%, 90%
day type: month end18719.8%14.6% to 24.8%78.6%73.1% to 84.0%10 (5.3%)30 (16.0%)50%, 90%
day type: quarter end3016.7%6.1% to 29.0%53.3%38.5% to 69.0%1 (3.3%)13 (43.3%)50%, 90%
day type: year end8too few days (under 20)04
day type: tax date8922.5%15.2% to 30.3%83.1%75.0% to 90.7%5 (5.6%)10 (11.2%)50%
day type: coupon settlement24321.4%16.9% to 25.9%80.7%76.2% to 84.9%6 (2.5%)41 (16.9%)50%, 90%
day type: other146730.4%27.9% to 32.8%89.5%87.7% to 91.2%90 (6.1%)64 (4.4%)50%
regime: 2018-1937129.6%24.9% to 34.6%84.4%80.1% to 88.3%21 (5.7%)37 (10.0%)50%, 90%
regime: 202025125.9%20.8% to 31.0%92.4%88.4% to 95.9%13 (5.2%)6 (2.4%)50%
regime: 2021-2374828.3%24.4% to 32.0%89.4%86.7% to 91.9%58 (7.8%)21 (2.8%)50%
regime: 202425033.6%27.7% to 39.5%85.6%80.7% to 90.1%9 (3.6%)27 (10.8%)50%
regime: 2025-2624925.7%20.5% to 31.1%86.3%81.9% to 90.5%8 (3.2%)26 (10.4%)50%

Each interval is a stationary bootstrap on the day series (block length 2, seed 1549347714, 2,000 replications, the one-day-ahead record's, used at every horizon). A group of fewer than 20 days is marked too few days and never flagged. Day-type groups overlap, because a day can carry several tags. Reported from the records; nothing is scored again.

Go deeper: reading the reliability curve
  • CORP sorts the forecasts and fits the best non-decreasing curve through what happened. Where the curve sits below the diagonal, the model said pressure was likelier than it turned out; above it, less likely.
  • The Brier score splits exactly into three parts: miscalibration, the curve's distance from the diagonal; discrimination, how far the recalibrated forecasts move away from the base rate; and uncertainty, which depends only on how often pressure came. A good forecast has little of the first and much of the second.
  • Most days carry a forecast near zero, so the curve is drawn on the range the forecasts actually used.

12How it was built

Every figure on this page is computed from a verified data panel by a script in the repository, and every change to that script went through a written directive and a pull request that a separate Claude review routine checked against its criteria. Eleonora wrote the directives and decided the judgement calls; she did not review all of the code (who decides and who reviews).

The process, the guards and a validation result
  1. DirectiveWork starts from a directive: an issue with a goal, acceptance criteria and the files to read. Rule
  2. SessionOne session works one directive on its own branch, test first. Rule
  3. Pull requestThe pull request is the report: what changed, the evidence, what was checked and what was not. Rule
  4. ReviewA separate Claude review routine, not Eleonora, checks each acceptance criterion against the tree and merges; judgement calls go to her. Rule
  5. PublishA record is published only while nothing that computes a figure, declares a source or supplies the panel has changed since it was scored. Rule

The guards

  • The as-of rule. Each forecast reads every input at its latest value public at the decision time the day before, field by field. Source
  • Leakage and staleness guards. A read newer than the decision instant raises LookAheadError; a read older than the latest admissible value raises StaleReadError. Source
  • The panel digest. The panel rebuilds from tracked files and is refused unless its SHA-256 matches the published manifest. Source
  • A locked test period. Recent days are held back from every model comparison until a phase verdict opens them. Source

An audit of the scoring code found that every published record had read its inputs later than they were public. That leaks nothing, but it is not what a forecaster at the decision time would have had, so every record was archived and re-scored under the as-of rule (source).

13Next steps

  • A live daily forecast, once a calibrated model is ready.
  • Not yet drawn: lead time to the onset of pressure, because no published record carries it.
Terms used on this page
Repo
A loan of cash against securities, here overnight and against Treasuries. The borrower sells the securities and agrees to buy them back the next day at a slightly higher price.
Basis point (bp)
One hundredth of a percentage point.
SOFR
Secured Overnight Financing Rate: the typical rate on overnight Treasury repo, published by the New York Fed.
TGCR, BGCR
The New York Fed's rates for the tri-party segment alone, and for tri-party plus GCF Repo.
IORB, IOER
The interest the Fed pays banks on their reserve balances; IOER until 28 July 2021, IORB since 29 July 2021.
Reserves
Cash that banks hold in their accounts at the Fed. It is the system's most liquid cash.
Overnight reverse repo
The Fed borrows cash overnight, mostly from money market funds, against its securities.
Standing repo
The Fed lends cash overnight against Treasuries at a rate it sets; often called the Standing Repo Facility.
Balance-sheet runoff
The Fed letting its securities mature without replacing them, which removes cash from the financial system. Often called quantitative tightening.
Settlement
The day a Treasury sold at auction is paid for and delivered.