The September 2019 Repo Crisis: A Post-Mortem
September 17, 2019, 8:00 AM Eastern Time. The Federal Reserve Bank of New York published the previous day's SOFR rate: 5.25%. Within the hour, the Fed announced emergency lending operations, the first since the 2008 financial crisis.
The repo market had broken.
This wasn't a dramatic stock market crash or a bank failure. Most people didn't notice. But for those watching the plumbing of the financial system, this was a critical moment that revealed how fragile market liquidity had become after years of quantitative tightening.
In my previous post about repo market mechanics, we covered how the repo market works and why it matters. Now let's analyze the biggest crisis in this market's recent history, using the actual data published by the Federal Reserve.
Understanding SOFR Data
Before we dive into the crisis, let's understand what we're looking at. The New York Fed publishes daily SOFR data with percentile distributions.

SOFR is the volume-weighted median rate of all eligible repo transactions - roughly $1 trillion in daily volume. But the median alone doesn't tell the full story.
The Fed publishes percentile distributions that reveal stress in the market:
- 1st percentile: The cheapest 1% of transactions
- 25th/75th percentiles: The core range where most transactions occur
- 99th percentile: The most expensive 1% - desperate borrowers paying premium rates
Normal markets show tight distributions. Stressed markets show wide distributions, especially at the 99th percentile.
One more important feature: seasonal spikes. Quarter-ends (March 31, June 30, September 30, December 31) typically see elevated rates as banks manage regulatory balance sheet requirements. Why? Banks face leverage ratio calculations based on their quarter-end balance sheets. Taking on additional repo positions increases their balance sheet size, potentially pushing them into higher regulatory capital requirements. So at quarter-end, banks reduce their repo market participation, causing rates to spike.
The Calm Before the Storm
SOFR usually traded around IORB, which at the time was 2.10%. Let's look at what SOFR was doing in early September:
| Date | SOFR | Spread to IORB | 99th Percentile | Status |
|---|---|---|---|---|
| 09/03 | 2.17% | +7 bps | 2.40% | Normal |
| 09/04 | 2.21% | +11 bps | 2.39% | Normal |
| 09/05 | 2.21% | +11 bps | 2.35% | Normal |
| 09/06 | 2.15% | +5 bps | 2.30% | Normal |
| 09/09 | 2.12% | +2 bps | 2.27% | Normal |
| 09/10 | 2.14% | +4 bps | 2.28% | Normal |
| 09/11 | 2.15% | +5 bps | 2.30% | Normal |
| 09/12 | 2.20% | +10 bps | 2.35% | Normal |
| 09/13 | 2.20% | +10 bps | 2.40% | Normal |
Key observations:
- Stable range: SOFR between 2.12% and 2.21% (9 bps range)
- Tight spreads: Never more than 11 bps above IORB
- Low volatility: 99th percentile consistently 2.27-2.40%
The market looked completely normal through Friday, September 13.
Monday, September 16: First Warning Signs
8:00 AM - SOFR Published
| Metric | Value | Change |
|---|---|---|
| SOFR | 2.43% | +23 bps from Friday |
| Spread to IORB | +33 bps | Previously +10 bps |
| 1st percentile | 2.38% | Elevated |
| 25th percentile | 2.42% | - |
| 75th percentile | 2.55% | - |
| 99th percentile | 4.60% | +220 bps jump |
| Volume | $1,156B | Normal |
What changed:
- Spread widened from +10 bps to +33 bps
- Distribution widened dramatically - 99th percentile hit 4.60% (was ~2.40%)
- Someone paid more than double the median rate
This was elevated, but not yet crisis-level. The core market (25th-75th percentile) remained relatively calm. But the outliers were screaming.
Tuesday, September 17: Crisis Day
8:00 AM - SOFR Published (THE SPIKE)
| Metric | Value | Change from Monday |
|---|---|---|
| SOFR | 5.25% | +282 bps |
| Spread to IORB | +315 bps | Was +33 bps |
| 1st percentile | 2.25% | Even the cheap end elevated |
| 25th percentile | 5.00% | Core market broken |
| 75th percentile | 5.85% | - |
| 99th percentile | 9.00% | Desperate rates |
| Volume | $1,177B | Normal volume |
What happened overnight:
- SOFR exploded from 2.43% to 5.25% - a 282 bps jump
- The entire distribution shattered:
- Even the 1st percentile: 2.25% (elevated from normal ~2.10%)
- Core transactions: 5.00% to 5.85% (should be ~2.10-2.20%)
- Desperate borrowers: Up to 9.00%
- Total range: 6.75% spread (normal is ~0.25%)
This is market dysfunction. When the 25th percentile hits 5.00%, it means most transactions are happening at crisis rates, not just the outliers.
9:17 AM - Fed Emergency Response
NY Fed announces:
"The Desk will conduct an overnight repo operation for up to $75 billion at 1:30 PM today."
Key details:
- First emergency operation since 2008
- Announced within 77 minutes of SOFR publication
- $75 billion offered (massive size for overnight operation)
- Operations would continue daily
The Fed had no choice. Repo rates at 5.25% when the target range was 2.00-2.25% meant complete loss of monetary policy control.
September 18-20: Stabilization
Wednesday, September 18 - Improvement
| Date | SOFR | Spread | 99th Percentile | Fed Action |
|---|---|---|---|---|
| 09/18 | 2.55% | +45 bps | 5.00% | $75B operation |
- SOFR dropped dramatically: 5.25% → 2.55% overnight
- But still elevated: +45 bps spread vs normal ~10 bps
- Fed continues: Another $75B operation
Thursday, September 19 - Fed Cuts Rates
| Date | SOFR | IORB | Spread | 99th Percentile | Fed Action |
|---|---|---|---|---|---|
| 09/19 | 1.95% | 1.85% (cut from 2.10%) | +10 bps | 2.50% | $75B + rate cut |
- SOFR overcorrected: 1.95%, actually below old IORB
- FOMC emergency meeting cuts rates:
- IORB: 2.10% → 1.85%
- Target range: 2.00-2.25% → 1.75-2.00%
Friday, September 20 - Back to Normal
| Date | SOFR | IORB | Spread | 99th Percentile | Fed Action |
|---|---|---|---|---|---|
| 09/20 | 1.86% | 1.85% | +1 bp | 2.08% | $75B operation |
- SOFR stabilized at new IORB
- Distribution tight again: 99th percentile 2.08%
- Market functioning normally
Why Didn't the Fed Stop Operations?
By September 20, SOFR had normalized. The crisis was over. So why did the Fed continue daily operations?
Because the crisis revealed a structural problem: reserves were too low.

Reserve balances had fallen from $2.8 trillion (2014) to $1.4 trillion (September 2019) during quantitative tightening. The Fed had shrunk reserves too far.
When two factors hit simultaneously:
- Corporate tax payments (September 15) - drained ~$100B from the system
- Treasury settlement (September 16) - absorbed additional liquidity
Banks didn't have enough excess reserves to intermediate the repo market smoothly. The plumbing seized.
October 8, 2019 - Fed Chair Powell Announces
"We will purchase Treasury bills at least into Q2 2020 to maintain appropriate reserve levels."
Translation: The Fed is restarting balance sheet growth. Not QE in name, but QE in practice.

The balance sheet started expanding again in October 2019 - six months before COVID. The repo crisis forced the Fed's hand.
What Changed Post-Crisis
1. Standing Repo Facility (SRF) Created
In July 2021, the Fed established the Standing Repo Facility - a permanent backstop where eligible institutions can borrow cash against Treasuries at a standing rate.
The SRF is designed to prevent September 2019 from happening again. It's a ceiling on repo rates - if rates spike, institutions can tap the facility instead of paying crisis rates in the market.
2. Fed's Reserve Management
The Fed learned it needs to maintain higher reserve levels than it thought. The "minimum" level of reserves isn't determined by theory - it's revealed by market stress.
Post-crisis, the Fed has been much more cautious about QT, monitoring reserve levels closely and stopping before stress emerges.
Conclusion
September 2019 proved that QT had gone too far. The Fed learned that "enough" reserves isn't a number you calculate - it's a threshold you discover when the system breaks.
By October, the balance sheet was expanding again. Six months later, COVID would provide cover for what the repo crisis had already made inevitable: the return of the printer.
The pattern was set. The next time repo markets seize, we'll know exactly what comes next.