Bitcoin ETF Flows · Methodology

How the Bitcoin ETF Flow Data Is Built

Where the numbers on the Bitcoin ETF flows tracker come from, when they update, how every total, streak and record is computed, and what changed when.

Last changed · Changelog · data.json · latest.json

What the data covers

One row per US trading session for every US spot Bitcoin ETF, starting with the first session on January 11, 2024. Each row carries the net flow across all the funds in US dollars, a per-fund breakdown, the funds' combined total net assets and a reference BTC/USD price. A net flow is the dollar value of shares created minus shares redeemed; a negative number is an outflow. A row with a net flow of zero and no per-fund split is treated as a market holiday.

Bitcoin futures ETFs, funds listed outside the US and companies holding bitcoin on their balance sheets are not included.

Sources

Daily totals
Net flow, total net assets and value traded come from SoSoValue. The sync calls SoSoValue's official Open API with TFTC's key and falls back to the keyless endpoint SoSoValue's own dashboard uses when the keyed call fails. Each call returns roughly the last 300 sessions.
Per-fund flows, July 2026 on
SoSoValue's keyed per-fund endpoint, which serves about the last month for each fund. The list of funds is read from SoSoValue on every run, so a newly listed fund appears without a code change.
Per-fund history, launch to mid-July 2026
Issuer disclosures as tabulated by Farside Investors, loaded once from an archived copy of Farside's table. The sessions from July 17 to July 24, 2026 were filled by hand from an archived snapshot before the keyed per-fund sync took over.
BTC/USD reference price
mempool.space's historical price nearest 21:00 UTC on each trading day, a reference mark for the cumulative chart.

Update schedule

The sync runs every day at 02:00 and 10:00 UTC. The evening run lands the session that just closed, after issuers report; the morning run picks up late filings and revisions. Every run re-reads SoSoValue's whole window of about 300 sessions, so a figure SoSoValue revises anywhere inside it replaces the stored one on the next run.

After each sync the hub, the current and previous month pages, any older month a revision touched and both JSON files are regenerated. Between syncs the hub is regenerated on a 30-minute window and the month pages on an hourly one.

How the sources are combined

Daily totals always take SoSoValue's newest figure. A per-fund breakdown, once stored, is never overwritten, which keeps the archived history exactly as it was published.

A new session's per-fund breakdown is stored only when the funds add up to within $5 million of that session's total. A bigger gap means issuers are still reporting, so the session keeps its total and waits for a later run to fill the split. Missing BTC prices are looked up again for the last 30 days on every run.

How the figures are computed

Cumulative net flow
The sum of every session's net flow since January 11, 2024.
Total net assets
The figure from the most recent session that reports one.
Streak
Consecutive sessions with net flows in the same direction, counted back from the newest session. Zero-flow rows are skipped: they neither extend nor break a streak.
Records
The biggest single-session inflow and outflow across the whole series, and the best and worst calendar months by summed net flow.
This week and month to date
This week runs from Monday through the newest session. Month to date covers the newest session's calendar month.
Per-fund totals
Each fund's daily flows summed over the window shown: the latest session, the past month (the last 21 rows of the daily series, holiday rows included), the year to date (the newest session's calendar year) and since launch. Sessions still waiting for their per-fund split are left out of fund totals, and a month page says so when that happens.
Month pages
Trading days count the sessions with a non-zero flow or a per-fund split. The biggest day is the session with the largest move in either direction; the daily average is the month's net flow divided by its trading days.

Update dates

Every page and file states one update date, taken from the data: the newest session it shows, stamped at 22:00 UTC that day, after the 4:00 pm Eastern close in both summer and winter time. The same value is the page's structured-data dateModified, its sitemap lastmod and the dateModified in both JSON files, where updatedThrough gives the bare session date. It moves only when a new session arrives.

The hub also shows when the sync last checked for revisions. That is the time of the last run, which can be later than the last change, so it is labelled as a check.

Known limitations

The newest session can move
Issuers report after the close and some smaller funds report a day late, so the latest total can change on the next sync.
Revisions older than the window
SoSoValue's window covers about 300 sessions. A revision to an older session is not picked up automatically.
Price gaps
A BTC price missing for more than 30 days stays missing until it is backfilled by hand.
A day behind the market
Flows are reported after the US close, so the data always runs at least one session behind live trading.
Hashdex's DEFI
DEFI counts in every total and in the per-fund leaderboard, but it has no column in the daily tables because it rarely reports a non-zero flow.

Corrections

Revisions published by SoSoValue flow in on the next sync without anyone touching them. Every change to sources, coverage or method is dated in the changelog below. If you find a number that looks wrong, tell us through the contact page with the session date.

License and how to cite

The data is free to quote, chart and republish under CC BY 4.0. Credit The Commoner Bitcoin ETF Tracker by TFTC with a link to the tracker:

Source: The Commoner Bitcoin ETF Tracker by TFTC (tftc.io/bitcoin-etf-flows), data through <date>.

The full series since launch is at /bitcoin-etf-flows/data.json, and the newest session with the last 5 sessions' totals is at /bitcoin-etf-flows/latest.json. Both are open to any origin and carry the license, the attribution, the sources and the update fields described above.

Changelog

Dated changes to the data, its sources and the method, newest first.

  1. One update date, a latest-session file, and this page

    Every page, the sitemap and both JSON files now state the same update date, taken from the newest session in the data instead of the time the sync ran. Added latest.json with the newest session and the last five sessions' totals, Dataset markup on every month page, and this methodology page. Search engines that use IndexNow are now told only when a sync adds or revises data.

  2. Named The Commoner Bitcoin ETF Tracker

    The tracker carries the name The Commoner Bitcoin ETF Tracker, by TFTC. The credit line, the open data and the structured data use the new name; the data and method are unchanged.

  3. Daily freshness check

    Each weekday morning an automated check compares the published data with the calendar and alerts TFTC if the newest session is more than four days old.

  4. Per-fund totals and weekly figures

    Added each fund's net flow over the latest session, the past month (the last 21 days in the daily series), the year to date and since launch, plus this week's and the month-to-date totals. Hashdex's DEFI counts in every total but has no column in the daily table.

  5. BTC price column repaired

    A query error had kept the reference BTC/USD price empty since the price column shipped on July 17, 2026. With the query fixed, each sync fills missing prices from the last 30 days instead of 10.

  6. Daily per-fund flows from SoSoValue

    The per-fund breakdown had come only from the one-time Farside archive load, which ended on July 16, 2026; July 17 to 24 were filled by hand from an archived snapshot. From this date the sync fills each new session's per-fund split from SoSoValue's keyed API, stores it only when the funds add up to within $5 million of the day's total, and never overwrites a split already stored.

  7. Tracker launched

    Daily net flows for every US spot Bitcoin ETF since the January 11, 2024 launch, with monthly archive pages and the full series as open JSON under CC BY 4.0. Aggregates come from SoSoValue, the per-fund history from issuer disclosures as tabulated by Farside Investors, and a reference BTC/USD price from mempool.space. The data syncs twice a day.