macro-liquidity-monitor — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited macro-liquidity-monitor (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Is the banking system's overnight funding loose, normal, tightening, or stressed — and what's the next pressure point?
This is NOT the equity-warning radar (macro-warning). That one watches valuation / VIX / sentiment. This one watches the plumbing: where overnight cash actually clears, how much buffer is left, and whether anyone is tapping the Fed's backstop.
Two lenses, both served by the same data:
printing below IORB while the RRP buffer is gone — cash with nowhere to go.
reserves near LCLoR, and SRF takeup spiking.
(prior-day SOFR/EFFR) + 16:30 ET post-close confirm (same-day ON RRP + SRF). Both push a Telegram digest; a 🔔 REGIME CHANGED banner is prepended on a band flip (tracked via committed state.json).
scripts/liquidity_pull.pyOnly dependency is requests. No API key. Run it:
PY=/tmp/.insider_venv/bin/python; [ -x "$PY" ] || PY=python3
$PY ~/.claude/skills/macro-liquidity-monitor/scripts/liquidity_pull.py # human card
$PY ~/.claude/skills/macro-liquidity-monitor/scripts/liquidity_pull.py --json-only
$PY ~/.claude/skills/macro-liquidity-monitor/scripts/liquidity_pull.py --telegram # send if regime changed
TEST_MODE=1 $PY .../liquidity_pull.py --telegram --force # print the Telegram msg, don't send| Metric | Series / endpoint | Source | Freshness |
|---|---|---|---|
| SOFR + p1/p99 + volume | markets.newyorkfed.org/api/rates/secured/sofr/last/N.json | NY Fed | prior day ~8am ET |
| EFFR (unsecured) | .../rates/unsecured/effr/... | NY Fed | prior day ~8am ET |
| ON RRP ops + counterparties | .../rp/reverserepo/all/results/... | NY Fed | same day ~1:15pm ET |
| SRF takeup (stress alarm) | .../rp/repo/all/results/... (sum same-day "Repo") | NY Fed | same day |
| IORB (admin ceiling) | FRED IORB | FRED CSV | daily |
| ON RRP level ($B) | FRED RRPONTSYD | FRED CSV | next day |
| Bank reserves ($M, weekly) | FRED WRESBAL | FRED CSV | Thu, Wed-dated |
| TGA ($M, weekly) | FRED WTREGEN | FRED CSV | weekly |
| Fed balance sheet ($M) | FRED WALCL | FRED CSV | Thu, Wed-dated |
FRED rejects a Chrome User-Agent — the script calls FRED with the default requests UA (browser=False). NY Fed needs the browser UA.No public feed → manual event flags: SLR / eSLR rule changes, GSE balance shifts, debt-ceiling / issuance calendar. These are the structural drivers; note them in the wiki page investing/wiki/dollar-liquidity-plumbing.md when they happen.
Additive from a neutral 50. SOFR−IORB is the spine; the rest nudge it:
| Component | Effect on score |
|---|---|
| SOFR − IORB spread (spine) | −spread_bp × 2.5, clamped −30…+35 (SOFR below IORB = loose = up) |
| SRF takeup | <$1B: 0 · $1–10B: −15 · >$10B: −35 |
| Reserves vs LCLoR | >$3.4T: +8 · $3.1–3.4T: +4 · $2.9–3.1T: 0 · <$2.9T: −10 |
| TGA weekly flow | draining: +5 · flat: 0 · building $25–150B: −5 · >$150B: −10 |
| SOFR p99 − IORB (tail) | <10bp: 0 · 10–25: −3 · >25: −8 |
| Net-liq 13wk momentum ⭐ | >+$300B: +12 · +$100–300B: +6 · ±$100B: 0 · −$100–300B: −6 · <−$300B: −12 |
Bands → 🟢 ABUNDANT (≥80) · 🟡 AMPLE (60–79) · ⚪ BALANCED (45–59) · 🟠 TIGHTENING (25–44) · 🔴 STRESS (<25). Override: SRF ≥ $10B, or SOFR > IORB+5bp with RRP < $10B, forces 🔴.
⭐ The forward-looking factor. A 2yr backtest (scripts/backtest_liquidity.py) showed every level gauge here is coincident (≈0 correlation to next-week returns), but the 13-week CHANGE in net liquidity (WALCL−TGA−RRP) leads forward-3m returns (corr +0.26 SPX / +0.33 NDX). The net-liquidity level is a spurious −0.71 trap. So this row is the one that tilts the score toward what's coming; the rest describe what is. Regime-bucketed fwd-3m: 🟢/🟡 ≈ +4–6%, 🔴 ≈ NDX −1% (value is downside avoidance).Why an empty ON RRP does NOT drag the score down: that cash already flowed into the system (loose), so it isn't current tightness. An empty buffer is a forward fragility flag — surfaced as a trigger, not subtracted from the abundance number. The per-layer layers{} block still scores RRP 0–3 as evidence.against Treasuries overnight; IORB is what the Fed pays banks. SOFR far below IORB = so much cash banks lend it out below the risk-free admin rate = too loose. SOFR climbing to/above IORB = cash is getting scarce = tightening.
sponge empty, any drain (TGA rebuild, QT) hits reserves directly, so SOFR spikes get sharper and faster. This is the key fragility today.
account drains reserves; spending it adds. QT (WALCL falling) drains. Net liquidity ≈ WALCL − TGA − RRP.
private repo is too tight. Quarter-ends produce transient spikes; a persistent one means genuine scarcity.
scoring.liquidity_score (0-100), scoring.regime, scoring.score_detail{}, scoring.layers{...}, scoring.triggers[], scoring.headline_metrics{liquidity_score, sofr,iorb,spread_bp,effr,rrp_bn,reserves_t,tga_bn,srf_bn,net_liquidity_bn}, calendar{month_end,days_to_month_end,is_quarter_end_month}.
investing/wiki/dollar-liquidity-plumbing.md — the methodology + standing read.macro-warning — equity-valuation/sentiment regime (different question).~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.