Skip to content
New Episodes on X & YouTube

Methodology

How the Bitcoin Treasury Tracker sources, verifies, corrects, and publishes corporate Bitcoin holdings. This page describes the pipeline as it actually runs today — not an aspiration — and changes whenever the pipeline does.

What counts as a primary source

A holdings figure is considered verified only when it traces to one of:

  • SEC filings — 10-K, 10-Q, and 8-K filings read from EDGAR, linked by their canonical EDGAR archive URL.
  • Home-exchange or home-regulator disclosures — for non-US issuers, the filing venue where the company actually reports (for example TDnet in Japan or HKEX in Hong Kong).
  • Issuer investor-relations publications — the company's own IR dashboard, press releases, or published holdings files.

Third-party aggregators are not primary sources and are never cited or named as a source anywhere in the public dataset — a build gate scans every public row field to enforce this. As of the 2026-10-26 snapshot, 46 of the 50 published rows (51 of 181 tracked) carry a per-row citation with the source link and its as-of date; rows that predate the citation program are being backfilled and are not presented as verified — each such row is labelled in words, "unverified — pre-citation", with its vintage (2026-08-14 or earlier).

These sources are not equal, and the dataset ranks them: tier 1 is a regulatory filing venue (EDGAR or the home-exchange system), tier 2 an issuer IR publication or dashboard, and tier 3 a press-release wire. Each row's citation is classified automatically from its URL and the tier ships in the CSV export. A tier-2 or tier-3 citation is legitimate only while no filing states the figure: a daily watch asks the filing venues whether a filing with an equal-or-later date exists for every such row, and a hit flags the row for re-pinning to the filing.

The filed figure is the default. Whenever a filing and any other source disagree, the tracker adopts the filed figure — taking the less favorable number when a filing offers more than one reading — and escalation is required to deviate from a filing, never to adopt it. A pending editorial question about a row does not keep a non-filing number on the page while it waits.

Refresh cadence

  • Daily (about 13:00 UTC): stock prices and share counts refresh, and every derived metric is recomputed. Market cap is always calculated as shares outstanding times stock price on a single share-count basis — a vendor-reported market cap is never used directly, so market cap, BTC per share, mNAV, and BTC/MCap % always agree.
  • Filing-driven holdings updates: holdings change when a filing or issuer disclosure is verified. Strive's and Strategy's weekly holdings 8-Ks, for example, are watched on EDGAR every five minutes through the weekday filing window (about 12:00–18:00 UTC, so a holiday-shifted filing day is covered without a calendar); a new filing is fetched, parsed, run through an automated guard suite, and applied only if every guard passes — a guard trip halts the update and raises an alert for human review instead.
  • Editorial corrections apply immediately: the tracker page merges the latest verified overrides when it loads, so a correction reaches readers before the next daily rebuild.

The exact timestamp of the data behind the page is shown beneath the table, and it is the data's own refresh stamp — not the page's render time — so a rebuild of unchanged data never masquerades as fresh holdings.

Corrections and manual overrides

When a tracker value is found to differ from what the issuer actually filed, an editor pins the corrected value as an override in a change-logged database. Override-pinned values take precedence over any automated feed, for one reason: each one is individually attested against a primary source, with the citation and its as-of date stored on the row. An automated feed value, however fresh, carries no such attestation.

The build enforces this: an override-pinned holdings value without its primary-source citation fails the build and cannot ship. Every applied correction is published in the public Reconciliation Ledger with before/after values, the reason, and the filing link — 46 value corrections and 18 removals to date.

Removed issuers (terminated SPACs, companies merged into another tracked issuer) are recorded in a permanent exclusion registry checked both when data is fetched and when the site builds, so a removed issuer cannot silently re-enter the dataset.

Accuracy gates

Five automated gates run against the committed data on every build and every refresh; any failure stops publication rather than shipping a suspect table:

  • Row-sum invariant — the individual rows must sum to the tracked category total (within 1 BTC) and the row count must match the tracked company count exactly; the published block (top rows by BTC held) must equal the re-derived top-N count and sum, and the sunset date must be present in the data.
  • Provenance — every editor-pinned holdings value must carry its primary-source citation and as-of date.
  • No aggregator naming — no third-party aggregator may appear as a source in any public field.
  • Percentage sanity — the published percentage of the 21 million supply must equal the recomputed value from the row data.
  • Exclusion registry — no removed issuer may reappear.

The same discipline applies to the page copy: every count, total, and percentage rendered on the tracker (including the summary paragraph and FAQ answers) is derived from the data at build time. There are no hand-typed figures to go stale.

Issuers report differently — we follow the filing

"BTC held" is not a standardized disclosure. Issuers genuinely differ in what their reported figure includes, and this tracker follows each issuer's own balance-sheet presentation rather than forcing a uniform definition:

  • Pledged, lent and receivable Bitcoin are counted as the issuer reports them. Bitcoin that an issuer has lent out, pledged as collateral, or recognizes as a receivable is counted as that issuer reports it. Where an issuer includes such bitcoin in its reported holdings, we include it; where the issuer derecognizes it, we do not. Because issuers account for these arrangements differently, each affected row states its basis in its footnote, citing the filing. We do not reclassify an issuer's balance sheet against its own accounting (ruling of 2026-09-24).
  • Consolidation conventions differ: where a subsidiary is separately listed, its holdings appear on its own row and are excluded from the parent's row to avoid double-counting — the affected rows carry a footnote (marked with an asterisk in the table).
  • Some issuers disclose composition details such as wrapped Bitcoin or lent balances; where a figure's basis is ambiguous across the issuer's own documents, the filed financial statements outrank presentations and decks.

Where a known holder discloses no unit count at all — only fiat carrying values — we do not infer one from third-party prices, blended multi-asset carrying values, or a cost basis. One narrow, defined exception exists: a unit count may be derived only when the issuer's own document states both a Bitcoin-isolated carrying value on a fair-value basis and the issuer's own valuation price for the same date, so that a reader can reproduce the arithmetic from that single document without any external price feed. Such a row is labelled as derived, with both inputs, their location in the document, the arithmetic, and any impairment caveat shown on the row itself — it is never presented as a filed unit count.

Encumbrances an issuer discloses — Bitcoin or other crypto pledged as collateral, held as restricted assets, or lent out — are reported on the row as the issuer states them, in the issuer's own terms (asset class and carrying value), and are not converted into a unit count unless the issuer states one. Whether such bitcoin sits inside or outside the row's total follows the issuer's own classification, per the rule above: for example, one issuer's filed total includes bitcoin it has lent out and carries as a loan receivable, while another derecognizes bitcoin posted as derivative collateral and reports it outside its holdings — both are shown as filed, each with its basis on the row.

Issuer announcements before a filing. When an issuer states a new holdings figure in its own official press release and no filing yet states it — for example a mid-quarter sale to fund a buyback that the issuer does not report on Form 8-K — the row may be pinned to that announcement. Such a row is cited to the issuer's release, classed as tier 3, and carries a visible "issuer announcement — not yet filed" label; it is never presented as a filed figure. The filing-upgrade watch then checks the issuer's EDGAR record every day, and when a filing that states the figure appears the announcement pin is replaced automatically by the filed figure and the filing citation. An announcement pin cannot go stale silently: if the filing's figure cannot be read unambiguously, the watch raises an alert for a human to re-pin instead.

Inclusion criteria

The main table lists publicly traded companies with a positive, disclosed Bitcoin position on their own balance sheet. Private companies, governments, ETFs and funds, and DeFi protocols are tracked as category aggregates (shown in the chart above the table) but do not get table rows. A row whose remaining value cannot be substantiated against issuer disclosure is excluded from the table.

Published rows. The public table shows the 50 largest holders by BTC held — a row count, not a holdings floor — out of the 181 public companies the dataset tracks. Every tracked row keeps updating and the ranking is live, so companies move into and out of the published set as their holdings change. Rows below the line are tracked but not public; the exports carry the cited rows within the published set.

Why a row count rather than a BTC floor. A fixed holdings floor would cut the table at a rank that shifts with every holdings change, adding and dropping rows from week to week. A fixed row count is stable: the set was sized (ruling 2026-09-09) so that, on the ruling date, the line fell some way below the 1,000-BTC mark, leaving a buffer of smaller balance sheets under it so that ordinary movement near the line does not churn the table. The published set is a row count only. It is not a materiality threshold and makes no claim about which holdings sizes it covers — where the line falls is a property of the data on each snapshot. As of the 2026-10-26 snapshot, the smallest published holding is 527 BTC.

Sunset for uncited rows. Any row still without a per-row primary-source citation on 2026-12-31 is removed from the public table (66 days from the 2026-10-26 snapshot). Until then those rows carry the "unverified — pre-citation" label and their shared vintage of 2026-08-14.

Announced-but-unclosed vehicles are not counted: Bitcoin that never reached a public company's balance sheet (for example, a terminated SPAC combination) is carried nowhere on this tracker.

What this tracker does not include yet

Capital-structure metrics — debt outstanding and preferred equity — are not shown on the tracker today. They are part of a planned expansion; when they ship, preferred equity will be reported as its own line, separate from debt, because the two carry different obligations and conflating them misstates leverage. Until those columns exist on the page, we make no capital-structure claims here.

Cost basis appears for issuers that disclose it and is otherwise blank — it is never estimated.

Staleness monitoring

Freshness is watched from two independent directions. Inside the pipeline, a gate reads the override log that every holdings change passes through — hand pins, the weekly 8-K ingest, the corroborated Strategy sync — and fails the daily refresh when no holdings activity has been recorded for longer than the weekly filers' cadence plus grace (nine days); it also lists any row whose own vintage has aged past its cadence threshold. Outside the pipeline, an external monitor reads the live page: it alarms when the data date lags more than two days, and separately when the page reports any row past its per-row vintage threshold. That second trigger is deliberately keyed to individual rows rather than to "the last time anything changed" — two weekly filers moving every Monday must never mask rows that have not moved in months. When either trigger fires, the tracker shows a notice that holdings are being verified against the latest filings rather than presenting a silently stale table.

Staleness is also tracked per row, because a page-level date can be fresh while an individual holding is months old. Every cited row shows its own as-of date and age in the table's "As of" column and in the CSV export. Each row's staleness threshold follows its issuer's disclosure cadence — 14 days for weekly filers, 140 days for quarterly filers (a quarter plus the filing window), 245 days for half-year filers and 490 days for annual-only filers — and is set at the age where a fresher filing must exist. A row past its threshold is marked amber in the table and flagged in the refresh pipeline's daily summary.

Prices have their own freshness rule. The holdings figure and the market price behind a row's market cap are different inputs with different clocks, so a holdings figure inside its filer cadence says nothing about the price beside it. Each row records the trading date of the last market-data quote actually applied to it. Market cap, BTC/market-cap and every other price-derived value are shown only while that quote is at most 7 days old; past that, or where no vendor quote has ever been received for the listing, those fields are left blank and the row footnote says since when. The blanking reverses itself the day a quote arrives. Prices are never estimated, carried forward silently, or converted from another currency to fill the gap.

The tracker no longer ingests any bulk third-party holdings feed. Holdings movement comes only from the filing-driven paths described above — the weekly 8-K ingest, verified corrections, and editor-pinned overrides — while prices and share counts continue to refresh daily. Rows that predate the citation program keep the last value recorded for them and carry a shared vintage of 2026-08-14 (the last date any bulk value changed) until they are cited from a primary source or retired; that vintage ages against the same cadence thresholds as every other row, so an uncited row cannot look fresher than it is.

Questions or discrepancies

If a figure here disagrees with an issuer's own filing, use the "suggest an update" form on the tracker page. Corrections that survive verification against the primary source are applied and published in the Reconciliation Ledger.

True North is for informational and educational purposes only. Nothing presented should be considered investment advice or an offer of any security or investment product. Consult your own investment and tax advisors. Full disclaimer.