RainbowStats™Research you can reproduce

Is the Fed Adding Liquidity?

What M2 and the Fed’s balance sheet actually tell us

Bill Igoe · RainbowStats™ · Data reviewed August 31, 2026

M2 is rising. The Federal Reserve is buying Treasury bills. It is tempting to combine those observations into a single conclusion: the Fed is opening the liquidity taps.

There is evidence of an expansion, but the word liquidity needs more precision. Money held by households and businesses, reserves held by banks, and the financing available in securities markets are related. They are not interchangeable.

Our RainbowStats analysis illustrates the problem. Comparing monthly averages from January to July 2026, broad money, Fed assets, bank reserves, and a constructed net liquidity proxy all increased. Comparing July 2025 with July 2026, however, M2 increased while reserves and the proxy declined. Both statements are true.

The useful question is therefore: which liquidity, supplied through which mechanism, measured over which period?

First, identify what the chart measures

Measure What it tells us What it does not establish
M2 — WM2NS or M2SL A broad measure of currency, deposits, and retail money-market fund balances How much of a change was caused by a particular Fed action
Fed total assets — WALCL The size of the Federal Reserve’s asset holdings The amount immediately available for household spending
Reserve balances — WRESBAL Balances depository institutions hold at the Fed The volume of new loans banks will make
Overnight reverse repos — RRPONTSYD Use of the Fed’s overnight Treasury reverse-repo facility All reverse-repo liabilities or all money-market liquidity
Treasury General Account — WDTGAL Treasury cash held at the Fed A discretionary monetary-policy decision
Net liquidity proxy Fed assets less ON RRP and Treasury cash An official, comprehensive measure of money or market liquidity

These distinctions follow the definitions in the Fed’s H.6 description, reserve-balance series, and ON RRP documentation. Market liquidity—how readily a security can trade without moving its price—is a further question that these balance totals do not directly answer.

M2: the stock is rising, but look at the rate

WM2NS provides weekly M2 observations in billions of dollars, without seasonal adjustment. The observations are released in monthly updates; “weekly” does not mean that a fresh release arrives every week. FRED: WM2NS

Weekly M2 level since 2019 and twelve-month growth in its monthly means, ending July 2026.
Figure 1. A rising level and a rising growth rate are different statements. July’s twelve-month increase is about 5.4% in our monthly averages of weekly M2.

The top panel shows the large pandemic-era increase, the subsequent retreat, and renewed growth. The lower panel puts the recent rise in perspective: it is substantially slower than the peak growth in 2020–21. A record nominal level is not, by itself, evidence of an extraordinary current injection.

The seasonally adjusted monthly series provides a useful independent check. In the August 25 H.6 release, M2 rose from $22.413 trillion in January to $23.218 trillion in July, an increase of 3.6%. Its July-to-July increase was 5.4%. Growth is therefore not merely an artifact of one unadjusted weekly observation. These official monthly values are distinct from the simple weekly averages used in our charts. H.6 release

M2 nevertheless cannot identify the source of that growth. Commercial banks create deposits when they extend loans; repayment can extinguish deposits. A new $100 loan typically creates a $100 deposit for the borrower, without requiring a simultaneous $100 purchase by the Fed. Lending remains constrained by profitability, credit risk, capital, funding, and monetary conditions. Bank of England: money creation

That makes M2 informative about broad money, but insufficient for attributing its increase to the central bank. These are also nominal balances: they do not measure purchasing power after inflation.

Fed assets and bank reserves are different sides of the balance sheet

Fed securities and loans are assets. Bank reserves are liabilities of the Fed and assets of the banks holding them. A Fed purchase generally credits reserve balances, all else equal, but Treasury transactions and changes in other liabilities also affect the reserve total. Federal Reserve liabilities

Four separate panels compare M2, Fed assets, bank reserve balances, and the net liquidity proxy from 2019 to July 2026.
Figure 2. Each panel starts at zero but uses its own vertical scale. The lines describe different quantities, not four competing estimates of the same quantity.

The distinction also matters when discussing lending. Customers spend bank deposits. Banks use reserves to settle payments with other banks. A larger reserve balance does not specify which borrower receives credit, whether a bank finds a loan attractive, or whether a customer wants to borrow.

The charts show why M2 should not be used as a substitute for the Fed’s balance sheet. Broad money can rise while central-bank assets change relatively little, and reserve balances can follow a different path again.

The Fed really has been buying—but composition matters

There is a factual basis for discussing greater Fed support for funding markets. The December 2025 implementation directive authorized purchases of Treasury bills, and if needed other short Treasury securities, to maintain ample reserves. December implementation note

Those purchases should be distinguished from reinvestments. Replacing a maturing or repaid asset can change the portfolio’s composition without increasing its total size. The New York Fed’s operating framework separately identifies reserve-management purchases and reinvestment of agency-security principal into Treasury bills. Purchase FAQs

Changes in monthly mean Fed holdings from January to July 2026: Treasuries up 259.1 billion dollars, MBS down 90.2 billion, other assets down 12.9 billion, total assets up 155.9 billion.
Figure 3. Changes in holdings are not gross purchase volumes. Treasury growth was partly offset by declining mortgage-backed securities and other assets.

Our calculation finds a $259.1 billion increase in average Treasury holdings between January and July, against a $90.2 billion decline in mortgage-backed securities. Total assets increased by $155.9 billion. The underlying series are TREAST, WSHOMCB, and WALCL.

Calling every purchase “QE” loses information about maturity, purpose, and scale. The New York Fed described reserve-management purchases as an implementation measure rather than a change in the underlying policy stance. That distinction does not imply the purchases have no market effects. John Williams’s explanation

Indeed, an August 2026 Fed staff note explains how bill purchases can both supply reserves and reduce the bills available to money-market funds, encouraging repo lending and easing pressure on repo rates. The route through market participants matters, not just the total dollars purchased. Fed staff analysis

Treasury cash and reverse repos complicate the picture

When Treasury spends from its General Account, funds generally move into banks’ reserve accounts and recipients’ deposits. Tax receipts moving into Treasury’s account work in the opposite direction, all else equal. Reserve availability can therefore change without a new Fed asset purchase. Treasury-account mechanics

ON RRP use also reflects choices by eligible counterparties, including money-market funds. Cash can move between that facility, Treasury bills, and private repo lending. A decline in ON RRP is not automatically new QE or a dollar-for-dollar increase in bank reserves; the destination and transaction counterparties matter. The Fed staff note discusses this reallocation explicitly. Repo-market analysis

These mechanisms motivate the indicator used here:

Net liquidity proxy = Fed total assets − overnight reverse repos − Treasury General Account.

Arithmetic contributions to the net liquidity proxy increase: Fed assets 155.9 billion dollars, lower Treasury cash 14.4 billion, lower ON RRP 1.6 billion, total 171.9 billion.
Figure 4. The contribution bars explain the change in our formula. They are not estimates of effects on M2 or asset prices.

The proxy rose by $171.9 billion between the January and July monthly averages. Most came from higher Fed assets; lower Treasury cash and ON RRP added another $16.0 billion.

But the proxy is not bank reserves. It does not subtract currency, foreign-official reverse repos, other deposits, and other liability or capital items. Nor does it measure dealer capacity, collateral availability, bid–ask spreads, or the willingness to extend credit. Its $5.905 trillion July level must not be described as that much cash waiting to enter the stock market. The omissions are visible in the Fed’s balance-sheet accounts.

The time horizon changes the conclusion

For the main comparison, we use arithmetic means of weekly observations within the same calendar months. All four chart series are unadjusted. This avoids comparing January M2 with one late-August reserve observation while calling both changes “year to date.”

Monthly mean January 2026, $bn July 2026, $bn January–July change July 2025–July 2026 change
M2 22,483.95 23,153.73 +2.98% +5.45%
Fed assets 6,581.86 6,737.75 +2.37% +1.22%
Bank reserves 2,975.63 3,051.05 +2.53% −8.46%
Net liquidity proxy 5,732.67 5,904.58 +3.00% −3.29%

Calculations from the frozen RainbowStats exports. These simple averages of reported weekly observations need not equal official monthly averages.

Comparison of January-to-July and July-to-July percentage changes in the four liquidity measures.
Figure 5. Over the shorter window, all four measures rose. Over the full year, M2 rose while reserve balances and the proxy fell.

The January comparison is consistent with renewed balance-sheet expansion and a recovery in reserves. The longer comparison shows that this recovery did not restore reserve balances to the previous July’s level. M2’s growth cannot be read as an equivalent increase in central-bank reserves.

Seasonality remains relevant, especially between January and July. Comparing the same month a year apart reduces that problem, without identifying causation. The separate adjusted-M2 check confirms broad-money growth, but does not remove seasonality from the other series.

The latest weekly reading is a useful update, not a replacement for this table. By August 26, reserve balances were $2.925 trillion and the proxy was $5.771 trillion, below their July monthly means. Those observations do not yet provide a complete August comparison with M2. WRESBAL, WALCL, WDTGAL, ON RRP

What can we conclude?

Broad money is expanding. The Fed has also been purchasing securities to support reserve availability. Neither observation establishes a uniform flood of financing into every market.

The next questions depend on the claim. For funding-market conditions, examine repo spreads and facility use. For credit availability, examine lending, underwriting, and borrower demand. For purchasing power, consider prices and income alongside nominal money. An M2 chart cannot answer all three.

Monetary policy influences financing conditions and can affect allocation through the assets the Fed chooses to hold. It does not dictate each subsequent private investment. Housing, business equipment, securities, and working capital have different risks, expected returns, and financing needs. Understanding those choices requires more than a single aggregate labeled “liquidity.”

Reproduce and inspect the analysis

The complete RainbowStats script loads the series, constructs the proxy, calculates monthly means and twelve-month M2 growth, and produces a nine-chart slideshow. Open and reproduce the saved RainbowStats analysis. The fixed July cutoff keeps the comparison consistent.

The publication charts regroup those outputs for readability. The accompanying methodology notes, frozen data, and rebuild-charts.py preserve the exact calculations and image files. The purpose is to make each definition and comparison inspectable, not to turn a convenient proxy into an unexplained forecasting rule.

Complete RainbowStats replication script

Copy this script into the RainbowStats editor. No separate script file is required to read it.

M2_Weekly=SERIES_BETWEEN(WM2NS,20190101,20260731);
M2_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(M2_Weekly,MONTHLY,MEAN),"M2 NSA");
Fed_Assets=SERIES_BETWEEN(WALCL,20190101,20260731);
Fed_Reserves=SERIES_BETWEEN(WRESBAL,20190101,20260731);
Fed_TGA=SERIES_BETWEEN(WDTGAL,20190101,20260731);
Fed_Net=SERIES_BETWEEN(WALCL-RRPONTSYD-WDTGAL,20190101,20260731);
Assets_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(Fed_Assets,MONTHLY,MEAN),"Fed Assets");
Reserves_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(Fed_Reserves,MONTHLY,MEAN),"Bank Reserves");
Net_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(Fed_Net,MONTHLY,MEAN),"Net Liquidity Proxy");
TGA_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(Fed_TGA,MONTHLY,MEAN),"Treasury General Account");
RRP_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(Fed_Assets-Fed_TGA-Fed_Net,MONTHLY,MEAN),"ON RRP on Fed Dates");
Treasuries_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(SERIES_BETWEEN(TREAST,20190101,20260731),MONTHLY,MEAN),"Fed Treasuries");
MBS_Monthly=SET_NAME(AGGREGATE_TO_PERIOD(SERIES_BETWEEN(WSHOMCB,20190101,20260731),MONTHLY,MEAN),"Fed MBS");
M2_Growth=SET_NAME(100*(M2_Monthly/LAG(M2_Monthly,12)-1),"M2 12-Month Growth");
c1=SET_TITLE(LINE_CHART(M2_Weekly),"M2: Weekly Unadjusted Level");
c2=SET_TITLE(LINE_CHART(M2_Growth),"M2: Percent Change from 12 Months Earlier");
c3=SET_TITLE(LINE_CHART(Assets_Monthly),"Fed Total Assets: Monthly Mean");
c4=SET_TITLE(LINE_CHART(Reserves_Monthly),"Bank Reserves: Monthly Mean");
c5=SET_TITLE(LINE_CHART(Net_Monthly),"Net Liquidity Proxy: Monthly Mean");
c6=SET_TITLE(LINE_CHART(LIST(Treasuries_Monthly,MBS_Monthly)),"Fed Treasury and MBS Holdings");
c7=SET_TITLE(LINE_CHART(LIST(TGA_Monthly,RRP_Monthly)),"Treasury Cash and ON RRP");
m26=SERIES_BETWEEN(M2_Monthly,20260101,20260731);
a26=SERIES_BETWEEN(Assets_Monthly,20260101,20260731);
b26=SERIES_BETWEEN(Reserves_Monthly,20260101,20260731);
n26=SERIES_BETWEEN(Net_Monthly,20260101,20260731);
c8=SET_TITLE(LINE_CHART(INDEX_100(LIST(m26,a26,b26,n26))),"January 2026 = 100: Through July");
m25=SERIES_BETWEEN(M2_Monthly,20250701,20260731);
a25=SERIES_BETWEEN(Assets_Monthly,20250701,20260731);
b25=SERIES_BETWEEN(Reserves_Monthly,20250701,20260731);
n25=SERIES_BETWEEN(Net_Monthly,20250701,20260731);
c9=SET_TITLE(LINE_CHART(INDEX_100(LIST(m25,a25,b25,n25))),"July 2025 = 100: Through July 2026");
SLIDESHOW(c1,c2,c3,c4,c5,c6,c7,c8,c9);
Data and replication notes

Data and replication notes

Snapshot date: August 31, 2026. Main chart window: January 2019–July 2026. All percentage changes are simple percentage changes, not annualized, unless described as twelve-month growth.

Series, units, and observation conventions

Code Source Native units Convention
WM2NS Federal Reserve H.6, via FRED / RainbowStats Billions of dollars Unadjusted weekly observations, week ending Monday; released monthly
WALCL Federal Reserve H.4.1, via FRED / RainbowStats Millions of dollars Wednesday total assets
TREAST Federal Reserve H.4.1, via FRED / RainbowStats Millions of dollars Wednesday Treasury holdings
WSHOMCB Federal Reserve H.4.1, via FRED / RainbowStats Millions of dollars Wednesday MBS holdings
WRESBAL Federal Reserve H.4.1, via FRED / RainbowStats Millions of dollars Weekly average reserve balances; week ending Wednesday
WDTGAL Federal Reserve H.4.1, via FRED / RainbowStats Millions of dollars Wednesday Treasury General Account
RRPONTSYD Federal Reserve Bank of New York, via FRED / RainbowStats Billions of dollars Daily overnight Treasury reverse repos
M2SL Federal Reserve H.6 / FRED Billions of dollars Official seasonally adjusted monthly M2; narrative cross-check only
  1. Monthly calculation. Each observation is assigned to the calendar month of its reported date, then averaged with equal weight. This is the native AGGREGATE_TO_PERIOD(series,MONTHLY,MEAN) result. No daily weighting is implied. Monthly means of Wednesday stock observations and weekly-average reserve observations have different within-month sampling conventions. They are comparable calendar windows, not identical measurement schedules. They need not match official monthly figures.
  2. Not TOMONTHLY. In the tested deployment, TOMONTHLY selected each month's last available observation. It was not used for these means.
  3. The proxy. WALCL-RRPONTSYD-WDTGAL is evaluated by RainbowStats before monthly averaging. The frozen export preserves the engine's date alignment. Daily ON RRP is aligned to the weekly Fed observation dates; where the source lacks a matching observation, the exported result may reflect the engine's alignment behavior. Do not treat every implied date as an independently observed ON RRP transaction. The complete historical audit inputs are included.
  4. Unit conversion. RainbowStats handles the native billion/million conversion in that subtraction. This was numerically verified: August 26 equals 6,730,912 − 702 − 959,435 = 5,770,775 million dollars. Do not add a factor of 1,000 inside the RainbowStats expression. In external software, convert explicit raw units: WALCL − 1,000 × RRPONTSYD − WDTGAL. Python does not perform RainbowStats' automatic unit reconciliation.
  5. ON RRP contributions. The date-aligned amount used in the formula is recovered as assets − TGA − proxy, all in millions. Its monthly change is used for the contribution chart. A monthly average of all daily ON RRP observations would use a different sampling schedule and would not be the same decomposition.
  6. Growth. M2 growth is 100 × (monthly mean / monthly mean twelve observations earlier − 1). The two-horizon chart compares July 2026 with January 2026 and July 2025. All four measures in these charts are not seasonally adjusted. The year-over-year comparison reduces seasonal-composition concerns but does not eliminate every calendar effect.
  7. Holdings and purchases. Treasury, MBS, and residual asset changes add to total asset changes. Holdings changes can include repayments, valuation/accounting effects, and other changes. They are not gross purchase amounts. The other-assets series is a residual, not an independently named H.4.1 line.
  8. Validation. All 364 main monthly values (91 months × 4 series) were checked against native RainbowStats MEAN output. The asset and proxy decompositions were checked arithmetically. The final 32-equation, nine-panel RainbowStats slideshow executed successfully. Publication graphics use Matplotlib and package data; the live slideshow contains the same underlying series but uses RainbowStats' own formatting and panel organization.

Revised M2 data and the official cross-check

The Fed changed IRA/Keogh netting on July 28, 2026. The deductions moved from individual components to the total M2 calculation. Unadjusted total M2 was unchanged by this methodology change; adjusted M2 received small revisions. Do not interpret the higher component totals as new money, or assume the change raised unadjusted total M2. See the H.6 technical Q&A.

During preparation, the RainbowStats M2SL return retained older January–March 2026 values. Its January value was 22,420.1; the latest H.6 release reports 22,413.4. February was 22,620.3 versus 22,598.9, and March was 22,676.1 versus 22,640.4. We did not overwrite or change server data. Publication charts use WM2NS, not that cached M2SL history. The narrative adjusted-M2 check uses the current official H.6 values saved in data/official_h6_crosscheck.csv: January 22,413.4, July 23,218.0, and July 2025 22,025.5. The resulting changes are 3.5898% and 5.4142%. A cached or subsequently revised live run may differ slightly.

Scope and limits

The net liquidity proxy is an analyst construction, not an official aggregate. It omits currency, foreign-official reverse repos, other deposits, and other liabilities/capital. WRESBAL uses a weekly-average convention while the proxy uses Wednesday asset/TGA stocks; do not use their difference as a precise point-in-time balance-sheet reconciliation. Institutional money-market funds are not part of M2's retail-MMF component. No causal regression, trading rule, forecast, or claim about real purchasing power is estimated here. The post's conclusions are descriptive.

Files and exact reproduction

Source snapshots freeze this publication's calculations. Live sources can revise history. The script's dates can be advanced after every input has a complete comparable month. H41RESPPALDKNWW (historical BTFP) and SWPT (weekly swap balances) are omitted from the main script because they are not needed for the formula; adding those assets again would double-count amounts already included in WALCL.