Skip to content
FinObservatory

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, weighted-average maturity and life, liquid-asset headroom, and gross-yield, net-yield and expense-wedge distributions. Every number on the page is computed at build from aggregate parquets derived here, and the asset 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 companion scripts/build/build_nmfp_liquidity.py reads the liquidity and seven-day-yield items and writes data/parquet/nmfp_liquidity.parquet. That output contains only industry distribution cells, not filing or fund rows.

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. Both label sets map to Government here, so the relabelling on its own does not move the category series. The June 2024 step in the chart is a separate reclassification by the funds themselves: two fund series that reported "Prime" for May 2024, $214.4B of net assets between them, reported "Government" for June 2024, with no prime series leaving the panel. That is the largest one-month move in the prime series over the whole panel, -$204.6B against +$86.3B for the next largest (January 2023).
  • 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.

Liquidity buffers and yield wedge

The liquidity and yield build uses the same winning, ex-feeder fund-month population and the same three-category mapping. It first reduces every measure to one observation per fund-month, then writes one aggregate row for each (report month, category, segment, metric) cell. The public page queries only the segment = 'All' rows. No fund name, CIK, fund identifier or filing row is stored in this parquet or exposed in a browser, API or download.

Statistics. The P10, P25, median (P50), P75 and P90 are equally weighted cross-fund percentiles. A median therefore describes the median reporting fund, not the industry's aggregate dollar. The asset-weighted mean weights each fund's measure by its net assets. For liquidity metrics, n_within_5 and n_within_10 count funds less than 5 or 10 percentage points above the applicable minimum; dividing those counts by n_funds gives a fund-count share. The corresponding asset totals divided by cell net assets give a separate net-asset share. The page labels these statistics separately and does not compare a median fund with an asset-weighted mean as though they were the same quantity.

Rule 2a-7 thresholds. Daily liquid assets had to equal at least 10% of total assets and weekly liquid assets at least 30%. The SEC's 2023 reforms raised the minimums to 25% and 50%, with a compliance date of 2 April 2024. The higher thresholds therefore apply beginning with the April 2024 report month. The headroom charts subtract 10/30% before April 2024 and 25/50% from April 2024 onward. Tax-exempt funds are exempt from the daily-liquid-asset minimum, so their daily threshold and headroom are missing by definition, not zero.

June 2024 N-MFP form-regime break. Through the May 2024 report month, the N-MFP2 form reports four or five Friday snapshots of daily and weekly liquid assets, a month-end gross yield per fund, and a month-end net yield per share class. Beginning with the June 2024 report month, the revised N-MFP3 form moves those measures to daily tables: typically 21 business-day observations for liquidity and gross yield, with daily net yield by share class. We average the available observations within each fund-month in both regimes. The charts mark June 2024 because a change around that boundary can reflect observation frequency or form coverage rather than economics.

The retail/institutional flag also first appears on N-MFP3, so those segment cells begin in June 2024. They are not spliced onto pre-June all-fund rows, and missing earlier retail or institutional observations are not treated as zero. The current public histories deliberately use the unsplit All segment for a consistent category view.

Yield definitions. Gross seven-day yield is Item A.19. Net seven-day yield is Item B.8 at share-class level and is rolled up to the fund using class net assets. The expense wedge is gross yield minus net yield for a fund-month where both legs are reported and the difference is nonnegative. It can reflect expenses and fee waivers. It is an accounting wedge, not an investor return forecast. The public history shows gross yield, net yield and the expense wedge as labeled distributions or net-asset-weighted means, always from aggregate cells.

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-feederComputed hereSEC 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 count290290 (Table 1.1)
Feeder funds excluded3232 (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 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 starts in November 2010 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.