corpstacking/corporate-crypto-treasuries
Corporate Crypto Treasury Holdings Every company, government and ETF known to hold Bitcoin, Ethereum or Solana on its balance sheet, with the primary source document behind each figure. 359 positions across 297 entities in 39 countries. 358 of the 359 carry a link to the filing or disclosure the number came from. Maintained by CorpStacking. What makes this different from a price feed Most crypto datasets are market data. This one is balance-sheet data read out of… See the full description on the dataset page: https://huggingface.co/datasets/corpstacking/corporate-crypto-treasuries.
Corporate Crypto Treasury Holdings
Every company, government and ETF known to hold Bitcoin, Ethereum or Solana on its balance sheet, with the primary source document behind each figure.
359 positions across 297 entities in 39 countries. 358 of the 359 carry a link to the filing or disclosure the number came from.
Maintained by CorpStacking.
What makes this different from a price feed
Most crypto datasets are market data. This one is balance-sheet data read out of primary filings, and every row is traceable:
citation_urlpoints at the actual document — an SEC filing, a Japanese TDnet disclosure, a Korean DART filing, a Canadian SEDAR+ document, a Hong Kong HKEX announcement, or the fund administrator's own page.source_verified_onis the date a human or an automated check last confirmed the figure against that document.encumbered_amountrecords coin that is pledged as collateral or otherwise locked. No other public treasury dataset carries this column, and it materially changes what a position means — 17 positions here are encumbered.
Coverage is deliberately not US-only: 212 of the 359 positions are outside the United States, which is where most aggregators stop.
Columns
Composition
- By token: BTC 238 · ETH 70 · SOL 51
- By type: public company 226 · ETF 111 · private 15 · government 7
- Outside the US: 212 positions across 38 non-US jurisdictions
Caveats worth reading before you use it
- A position is a point-in-time disclosure, not a live balance. Companies report on their own cadence — quarterly for most SEC filers, monthly for some miners, daily for ETFs.
source_verified_ontells you how fresh each row is. Treat a stale row as stale, not as a current holding. - `avg_cost_usd` and `total_cost_usd` are blank where the issuer never disclosed them. They are not zero. ETFs generally do not report a cost basis at all, so most of the 111 ETF rows are blank here by nature.
- Amounts are as disclosed, which is sometimes rounded by the issuer. Where a company publishes "approximately 3,670 bitcoin", that is what this records.
- Out-of-scope tokens are absent, not missing. Only BTC, ETH and SOL are tracked. An entity whose main treasury is another asset will still appear if it also holds one of these three, and its position here will look small relative to that company — that is the scope of the dataset, not an error in it.
- This is disclosed-holdings data, not investment advice.
Loading
from datasets import load_dataset
ds = load_dataset("corpstacking/corporate-crypto-treasuries", split="train")
# Sovereign holders
ds.filter(lambda r: r["entity_type"] == "government")
# Everything outside the US, largest first
(ds.filter(lambda r: r["country"] != "US")
.sort("amount", reverse=True))
# Positions with coin pledged as collateral
ds.filter(lambda r: r["encumbered_amount"] is not None
and r["encumbered_amount"] > 0)Updates
Regenerated from the live database. Corrections are welcome — every row links to the document it came from, so a disagreement can be settled by reading it.
Licence
CC BY 4.0. Use it commercially, modify it, redistribute it; please credit CorpStacking and link back to <https://www.corpstacking.com>.
