Money market funds / Methodology
US money market funds (Form N-MFP): methodology
The money market funds page aggregates the SEC's Form N-MFP monthly portfolio reports into the industry picture: net assets by fund category, portfolio composition, and weighted-average maturity and life. Every number on the page is computed at build from a parquet derived here, and the result is reconciled against the SEC's own published aggregate before it ships.
Source
Money market funds file a monthly portfolio report on SEC Form N-MFP. The SEC's Division of Economic and Risk Analysis (DERA) extracts those filings from EDGAR into flat data sets, one ZIP per filing window, updated monthly: Form N-MFP Data Sets. Each ZIP holds around 23 TSV tables. We use three of them: the submission index (report date, series id), the series-level information (category, net assets, WAM, WAL, cash, feeder flag), and the schedule of portfolio securities (investment category and value per holding).
Access is free and requires no registration; a descriptive User-Agent header
is sent on every request per the SEC's fair-access policy. The raw ZIPs
(about 394 MB) are fetched by scripts/acquire/nmfp_fetch.py and the parquet
is built by scripts/build_nmfp.py.
The data set is public data. Per the SEC's own disclaimer, it "is derived from information provided by individual registrants" and "is not a substitute for" the underlying filings; we publish only computed industry-level aggregates with attribution to the SEC, never a per-fund surveillance surface.
From filings to a monthly panel
Report-month normalisation. A ZIP's filing window straddles two reporting periods, because a fund files for the prior month-end by the fifth business day of the month. A fund also reports as of either the calendar month-end or the last business day of the month, so a single reporting period appears under two or three distinct report dates (for example 29, 30 and 31 May). We therefore map each filing's report date to a calendar report month and pool filings across all ZIPs.
Latest filing wins. A fund may amend a prior filing. For each (report month, fund series) we keep the filing with the latest filing date and accession number, so amendments supersede originals, matching the SEC's own practice of using the most recent filing received.
Coverage. The complete monthly panel begins June 2022, the first fully reported month in the data sets. Sparse rows before that in the archive are late stragglers, not complete months, and are dropped.
Aggregation, matching the SEC's report
The aggregation mirrors the conventions of the SEC's own Money Market Fund Statistics report so the two reconcile exactly:
- Feeder funds are excluded (Item A.7,
FEEDERFUNDFLAG), to avoid double-counting the assets a feeder fund places in its master fund. The count of excluded feeder funds is reported on the page. - Net assets are Item A.16 (
NETASSETOFSERIES). - Fund category is Item A.10 (
MONEYMARKETFUNDCATEGORY), collapsed to three headline categories:- Prime;
- Tax-exempt = "Other Tax Exempt" + "Single State";
- Government = every Treasury, Government/Agency and Exempt-Government value. The N-MFP3 form revision effective 11 June 2024 replaced the older compound labels ("Exempt Government, Government/Agency", "Treasury", and so on) with a single "Government" label and re-derives the Treasury split from a new item, which shows as a small step in the category series at June 2024.
- WAM (weighted-average maturity, Item A.11) and WAL (weighted-average life, Item A.12) are net-asset-weighted across each category's funds. Under Rule 2a-7 a fund's WAM may not exceed 60 days and its WAL may not exceed 120 days.
- Portfolio composition sums the value of each holding (Item C.6,
EXCLUDINGVALUEOFANYSPONSORSUPP, value excluding any sponsor support) by investment category (Item C.7) over the winning ex-feeder filings, plus fund cash (Item A.14.a). Investment categories are grouped into Treasury/agency, repo, CD and time deposits, commercial paper, municipal, and an Other-and-cash residual. This is gross portfolio value and sits slightly above net assets, which is net of liabilities.
Anchor checks (build fails on drift)
scripts/build_nmfp.py reproduces the SEC's published report at build time and
aborts if any figure drifts. The anchor is the SEC's own
Money Market Fund Statistics, period ending May 2026,
the latest month the SEC has published, computed from the same Form N-MFP
filings. For May 2026 our aggregation reproduces, to the report's printed
precision:
| May 2026, ex-feeder | Computed here | SEC published |
|---|---|---|
| Total net assets | $8,388.3B | $8,388.3B (Table 2.1) |
| Government | $6,863.3B | $6,863.3B |
| Prime | $1,372.2B | $1,372.2B |
| Tax-exempt | $152.8B | $152.8B |
| Fund count | 290 | 290 (Table 1.1) |
| Feeder funds excluded | 32 | 32 (Table 1.2) |
Portfolio composition is anchored the same way against Table 7.1 (Treasury/agency $4,572.2B, repo $3,004.2B, CD/TD $308.2B all match), and the January 2026 record total ($8,217B, the record high the SEC's release headlined) is checked as a second span point.
Scope and where the rest lives
This is the SEC Form N-MFP fund-category view. The complementary short-term funding page carries the OFR Short-Term Funding Monitor's five-asset MMF aggregate, which reaches back to 2013 and shows the 2016 money-fund-reform rotation out of prime, alongside daily repo volumes. Money-market rates (SOFR, EFFR, the FOMC target range) are on financial conditions. The three pages are complementary, not duplicative: rates there, OFR volumes and the long MMF series there, SEC fund-category detail here.
Refresh
refresh_nmfp in scripts/refresh.sh re-runs the fetch (incremental: a ZIP
already on disk is skipped, so only the newly posted month is pulled) and the
build. The SEC posts a new data set monthly, on the fifth business day; the
step runs on the quarterly and annual tiers, which is sufficient for a monthly
series and keeps the daily tier light.