deviant/Parameters/PriceAnalysis/stablecoin-report.html
walerikus 35076606c7 chore: checkpoint in-flight work across shell, contracts, and docs
Snapshot of the shared working tree's outstanding changes (multiple
concurrent workstreams), excluding generated runtime state files
(.football-tote-state.json, .tote-platform-state.json, .usdm-historical-chart.html).

Spans: wallet shell (connect/, keystore MultiKeyStore+vault, screens,
currency picker, sign-message), verify artifacts, new Potidaea/DRA/tote
contracts + regtest suites, cross-chain/T6 + WalletConnect Parameters,
a telegram-orderbook subproject, design mockups, and docs. See
shells/app/WALLET-COORDINATION.md for the per-file ownership split.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 02:02:05 +02:00

361 lines
No EOL
43 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>Stablecoins — Supply, Reserves &amp; the Dollar on Crypto Rails</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.js"></script>
<link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
<style>
:root{
--bg:#0b1019;--panel:#121b2c;--panel2:#0f1726;--line:#23304a;
--ink:#e9eef7;--muted:#8a98b2;--faint:#5a6884;
--tether:#26a17b;--circle:#2775ca;--grey:#5a6884;
--crypto:#f0a93b;--synth:#8b7ff0;--flag:#ec5a3c;--ok:#3fb98a;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Inter",system-ui,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased}
.mono{font-family:"JetBrains Mono",monospace;font-variant-numeric:tabular-nums}
.wrap{max-width:1060px;margin:0 auto;padding:0 24px}
h1,h2,h3{font-family:"Space Grotesk",sans-serif;line-height:1.14;letter-spacing:-0.02em;font-weight:700}
header{padding:72px 0 38px;border-bottom:1px solid var(--line)}
.eyebrow{font-family:"JetBrains Mono",monospace;font-size:12px;letter-spacing:0.28em;text-transform:uppercase;color:var(--faint);margin-bottom:18px}
h1{font-size:clamp(32px,5.6vw,56px);margin:0 0 18px}
.lede{font-size:clamp(17px,2.4vw,21px);color:var(--muted);max-width:660px;margin:0}
.bignum{display:flex;gap:34px;margin-top:34px;flex-wrap:wrap}
.bignum div{font-family:"JetBrains Mono",monospace}
.bignum .n{font-size:30px;font-weight:700;display:block}
.bignum .l{font-size:12px;color:var(--faint);letter-spacing:0.06em;text-transform:uppercase}
.bignum .green{color:var(--tether)} .bignum .blue{color:var(--circle)}
section{padding:54px 0;border-bottom:1px solid var(--line)}
.snum{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--faint);letter-spacing:0.2em;display:block;margin-bottom:8px}
h2{font-size:clamp(23px,3.4vw,32px);margin:0 0 10px}
.sub{color:var(--muted);max-width:700px;margin:0 0 26px}
p{max-width:700px;color:#c3cde0}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px 22px 14px;margin:22px 0}
.chartbox{position:relative;height:360px}
.cap{font-size:13px;color:var(--muted);margin:14px 2px 4px}
table{width:100%;border-collapse:collapse;margin:8px 0;font-size:14px}
caption{text-align:left;font-family:"Space Grotesk";font-weight:500;color:var(--muted);padding:6px 2px 12px;font-size:14px}
th,td{padding:10px 12px;text-align:right;border-bottom:1px solid var(--line)}
th:first-child,td:first-child{text-align:left}
td:nth-child(2),th:nth-child(2){text-align:left}
thead th{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:0.05em;text-transform:uppercase;color:var(--faint);font-weight:500}
tbody td.num{font-family:"JetBrains Mono",monospace}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:8px;vertical-align:baseline}
.big{font-weight:700;color:var(--ink)}
.legend{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:4px 2px 0}
.legend span{display:inline-flex;align-items:center}
.legend i{width:10px;height:10px;border-radius:2px;margin-right:7px;display:inline-block}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px}
.card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:20px 22px}
.card h3{font-size:15px;margin:0 0 8px;display:flex;align-items:center;gap:9px}
.card p{font-size:13.5px;color:var(--muted);margin:0}
.card .pill{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:20px;border:1px solid var(--line)}
.flag .pill{color:var(--flag);border-color:var(--flag)}
.ok .pill{color:var(--ok);border-color:var(--ok)}
footer{padding:44px 0 80px;color:var(--faint);font-size:13px}
footer p{color:var(--faint);max-width:780px}
footer b{color:var(--muted)}
@media(max-width:720px){.cards{grid-template-columns:1fr}.chartbox{height:300px}.bignum{gap:22px}header{padding:48px 0 28px}th,td{padding:8px 6px;font-size:12.5px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
</style>
</head>
<body><div class="wrap">
<header>
<div class="eyebrow">Stablecoins · supply · reserves · 2014 — 2026</div>
<h1>The dollar, minted<br>on crypto rails.</h1>
<p class="lede">Roughly $300 billion of dollar-pegged tokens now circulate — a settlement layer larger than most national money supplies. Two issuers hold ~88% of it. Here is who they are, what actually backs each coin, and where the reserve claims have failed before.</p>
<div class="bignum">
<div><span class="n">~$300B</span><span class="l">total supply, Jun 2026</span></div>
<div><span class="n green">63%</span><span class="l">USDT — Tether</span></div>
<div><span class="n blue">25%</span><span class="l">USDC — Circle</span></div>
<div><span class="n">~98%</span><span class="l">in the top ~12 coins</span></div>
</div>
</header>
<section>
<span class="snum">01 / GROWTH</span>
<h2>Eleven years of supply</h2>
<p class="sub">From near-zero in 2015 to ~$270B across the established coins by 2026 (the full market, including newer entrants, is ~$300B). Two surges stand out: the 2020–21 DeFi boom and the 2024–26 ramp after the GENIUS Act gave US issuers a federal framework.</p>
<div class="panel">
<div class="chartbox"><canvas id="growth"></canvas></div>
<div class="legend"><span><i style="background:var(--tether)"></i>USDT</span><span><i style="background:var(--circle)"></i>USDC</span><span><i style="background:var(--grey)"></i>DAI · BUSD · TUSD</span></div>
<div class="cap">Monthly market cap, $B. Source: Coin Metrics. Excludes 2024–26 newcomers (USDe, USDS, USD1, PYUSD, RLUSD ≈ $30B).</div>
</div>
</section>
<section>
<span class="snum">02 / CONCENTRATION</span>
<h2>The coins that cover ≥98%</h2>
<p class="sub">After the two giants, no stablecoin tops $6B. Nine named coins reach 97.4% of supply; adding the next tier (USDP, TUSD, GUSD, United Stables) clears 98.8%.</p>
<table>
<caption>Top stablecoins by supply — mid-June 2026 (approx.)</caption>
<thead><tr><th>#</th><th>Coin / issuer</th><th>Supply</th><th>Share</th><th>Cumulative</th><th>Backing model</th></tr></thead>
<tbody id="topbody"></tbody>
</table>
<p class="mono" style="font-size:12px;color:var(--faint)">USDT + USDC alone = ~88%. The "long tail" is 200+ coins, none individually material.</p>
</section>
<section>
<span class="snum">03 / RESERVES</span>
<h2>Reserves vs. supply</h2>
<p class="sub">Fiat-backed coins aim for 1:1; Tether reports a small excess buffer; the <b>CDP coins (DAI, USDS)</b> over-collateralize each <em>debt position</em> — not the token's reserves — and today blend crypto vaults with USDC and tokenized Treasuries; USDe is "synthetic" — backed by crypto plus a short-futures hedge rather than dollars in a bank.</p>
<div class="panel">
<div class="chartbox"><canvas id="rvs"></canvas></div>
<div class="legend"><span><i style="background:var(--circle)"></i>Circulating supply</span><span><i style="background:var(--tether)"></i>Reported reserves / collateral</span></div>
<div class="cap">Reported figures, $B. Backing ratio labelled above each pair. For DAI/USDS the &gt;100% is <b>per-vault collateral ÷ debt</b> (a lending-mechanism buffer), <em>not</em> a reserve surplus — and ~78% of that collateral is itself USDC or tokenized Treasuries (see §04C).</div>
</div>
<div class="cards">
<div class="card"><h3><span class="dot" style="background:var(--tether)"></span>USDT — attested, never audited</h3><p>~85% cash &amp; equivalents (mostly US T-bills, repos, MMFs), plus Bitcoin, gold and secured loans. Quarterly BDO Italia attestations — limited assurance, point-in-time, <b>not</b> a full audit. No Big Four firm has ever audited Tether.</p></div>
<div class="card"><h3><span class="dot" style="background:var(--circle)"></span>USDC — cash + T-bills, monthly</h3><p>Held in the BlackRock-managed Circle Reserve Fund plus cash at regulated US banks. Monthly Deloitte attestations; GENIUS-Act compliant; Circle (CRCL) went public June 2025.</p></div>
<div class="card"><h3><span class="dot" style="background:var(--synth)"></span>USDe — synthetic, no bank reserves</h3><p>Ethena backs USDe with staked crypto and an offsetting short-futures position (delta-neutral), earning yield from staking and funding rates. Risk lives in negative funding and exchange counterparties, not a vault of dollars.</p></div>
<div class="card"><h3><span class="dot" style="background:var(--crypto)"></span>DAI / USDS — CDP, but mostly USDC + T-bills</h3><p>Sky (ex-MakerDAO) mints these against over-collateralized <em>vaults</em> — but the overcollateralization is on each borrower's debt, not the token. The actual backing is now a blend: <b>~40% tokenized Treasuries, ~38% USDC via the PSM, ~22% crypto</b>. So ~78% rests on USDC or T-bills — which is why DAI depegged alongside USDC in the 2023 SVB event.</p>
</div>
</section>
<section>
<span class="snum">04 / TETHER RESERVES</span>
<h2>Real dollars vs. everything else</h2>
<p class="sub">"Backed 1:1 by the dollar" is the perception. The Q1 2026 attestation (Mar 31) shows USDT is backed by a <em>mix</em>: genuine dollar instruments (US Treasuries + cash) cover about 79 cents of every token; the rest of the backing is gold, Bitcoin and secured loans. Tether holds a small surplus on top.</p>
<div class="cards" style="margin-bottom:6px">
<div class="card"><div style="font-family:'JetBrains Mono';font-size:30px;font-weight:700;color:var(--tether)">79%</div><h3 style="margin:6px 0 6px">Real-dollar backing</h3><p>~$145B in US Treasuries + cash against $183.5B of USDT. Each token is backed by ~79¢ of true dollar instruments.</p></div>
<div class="card"><div style="font-family:'JetBrains Mono';font-size:30px;font-weight:700;color:var(--circle)">1.26×</div><h3 style="margin:6px 0 6px">Supply ÷ real USD</h3><p>USDT supply divided by dollar-instrument reserves. (Against <em>cash &amp; deposits only</em>, the ratio is ~41×.)</p></div>
<div class="card"><div style="font-family:'JetBrains Mono';font-size:30px;font-weight:700;color:var(--flag)">~$46B</div><h3 style="margin:6px 0 6px">Non-dollar assets</h3><p>Gold ($20B), secured loans ($15B), Bitcoin ($7B) and other ($4B) — ~25% of supply, in price-volatile or less-liquid assets.</p></div>
<div class="card"><div style="font-family:'JetBrains Mono';font-size:30px;font-weight:700;color:var(--ink)">$8.2B</div><h3 style="margin:6px 0 6px">Excess buffer</h3><p>Reserves ($191.8B) exceed liabilities ($183.5B) by Tether's reported surplus — the cushion that absorbs gold/BTC swings.</p></div>
</div>
<div class="panel">
<div class="chartbox" style="height:260px"><canvas id="tether"></canvas></div>
<div class="legend"><span><i style="background:var(--tether)"></i>US Treasuries</span><span><i style="background:#5ec9a0"></i>Cash &amp; deposits</span><span><i style="background:var(--crypto)"></i>Gold</span><span><i style="background:var(--flag)"></i>Secured loans</span><span><i style="background:#f7931a"></i>Bitcoin</span><span><i style="background:var(--grey)"></i>Other</span></div>
<div class="cap">The green portion of the reserve bar is the only part that is actually dollars/T-bills — it falls <b>short</b> of the USDT supply bar. Gold, loans and BTC make up the difference. $B, Q1 2026.</div>
</div>
<table>
<caption>USDT reserve composition — Q1 2026 attestation (BDO Italia, Mar 31 2026)</caption>
<thead><tr><th>Asset</th><th>Type</th><th>Amount</th><th>% of reserves</th></tr></thead>
<tbody>
<tr><td>US Treasuries (direct + repo + MMF)</td><td style="text-align:left;color:var(--tether)">dollar</td><td class="num big">$141.0B</td><td class="num">73.5%</td></tr>
<tr><td>Cash &amp; bank deposits</td><td style="text-align:left;color:var(--tether)">dollar</td><td class="num">$4.5B</td><td class="num">2.3%</td></tr>
<tr><td>Gold (physical + XAUT)</td><td style="text-align:left;color:var(--flag)">non-dollar</td><td class="num">$20.0B</td><td class="num">10.4%</td></tr>
<tr><td>Secured loans</td><td style="text-align:left;color:var(--flag)">non-dollar</td><td class="num">$15.0B</td><td class="num">7.8%</td></tr>
<tr><td>Bitcoin</td><td style="text-align:left;color:var(--flag)">non-dollar</td><td class="num">$7.0B</td><td class="num">3.7%</td></tr>
<tr><td>Other investments + corp bonds</td><td style="text-align:left;color:var(--flag)">non-dollar</td><td class="num">$4.3B</td><td class="num">2.2%</td></tr>
<tr style="border-top:2px solid var(--line)"><td><b>Total reserves</b></td><td></td><td class="num big">$191.8B</td><td class="num">vs $183.5B supply</td></tr>
</tbody>
</table>
<p class="tight">Three tiers answer "how much is real dollars," depending on how strict you are: <b>cash &amp; deposits only</b> ≈ $4.5B (just 2.5% of supply — a ~41× ratio); <b>all dollar instruments</b> (adding T-bills, repo, money-market) ≈ $145B (~79% of supply, the 1.26× ratio); <b>total reserves</b> $191.8B (104% of supply, but a quarter of that is gold, BTC and loans, not dollars).</p>
<p class="tight" style="font-size:13px;color:var(--muted)">Why it matters: gold and Bitcoin are price-volatile, and secured loans are the line Tether pledged to eliminate by end-2023 but instead grew to ~$15B. In a redemption rush the dollar instruments are what redeem at par instantly; ~21% of backing would have to be sold into the market. For context, the CFTC found USDT was fully fiat-backed only 27.6% of the time in 2016–2018, and reserves were ~40–50% commercial paper (incl. Chinese-bank paper) until late 2022. A first full KPMG audit reportedly began in Q1 2026.</p>
<h3 style="font-size:18px;margin:30px 0 8px">Every reserve type — and the supply it backs — over time</h3>
<p>The same categories tracked across quarterly attestations, 2021 → Q1 2026. The total height is Tether's reserves (≈ USDT supply), so this is the reserve mix <em>and</em> the supply growth in one view. The defining shift is the <b>commercial-paper-to-Treasuries</b> switch — CP (brown) was roughly half the reserve in early 2021 and gone by late 2022 — followed by the recent climb of the gold and Bitcoin bands.</p>
<div class="panel">
<div class="chartbox tall"><canvas id="tetherTime"></canvas></div>
<div class="legend"><span><i style="background:var(--tether)"></i>US Treasuries</span><span><i style="background:#b07a3a"></i>Commercial paper</span><span><i style="background:#5ec9a0"></i>Cash &amp; deposits</span><span><i style="background:var(--flag)"></i>Secured loans</span><span><i style="background:var(--crypto)"></i>Gold</span><span><i style="background:#f7931a"></i>Bitcoin</span><span><i style="background:var(--grey)"></i>Other</span></div>
<div class="cap">Reserve composition by quarter, $B; total ≈ USDT supply (grew ~$41B → ~$184B). Compiled from Tether / BDO quarterly attestations; intermediate quarters are approximate.</div>
</div>
</section>
<section>
<span class="snum">04B / USDC RESERVES</span>
<h2>USDC: supply and reserves over time</h2>
<p>USDC's reserve is far simpler than Tether's — essentially <b>cash + short-dated US Treasuries</b>. But it wasn't always: a May 2021 attestation revealed only <b>61% cash</b>, with the rest in Yankee CDs (13%), commercial paper (9%), corporate bonds (5%) and a little muni/agency paper. Under regulatory scrutiny Circle pledged in Aug 2021 to hold reserves <b>100% in cash and short-duration Treasuries</b>, reflected from the September 2021 attestation onward. Today it's ~80% in the BlackRock-managed Circle Reserve Fund (Treasuries + overnight repo) and ~20% bank cash — the same stacked-total-equals-supply view as Tether above.</p>
<div class="panel">
<div class="chartbox tall"><canvas id="usdcTime"></canvas></div>
<div class="legend"><span><i style="background:var(--circle)"></i>US Treasuries (incl. Reserve Fund / repo)</span><span><i style="background:#6fa8e0"></i>Cash &amp; deposits</span><span><i style="background:#b07a3a"></i>CDs / commercial paper / corp bonds (2021)</span></div>
<div class="cap">USDC reserve composition by quarter, $B; total ≈ USDC supply (~$4B → ~$74B, via a 2022 peak of ~$54B). Note the 2022–23 decline: UST/Luna fallout, then the <b>March 2023 SVB depeg</b> — ~$3.3B of cash reserves briefly stranded at Silicon Valley Bank, USDC to $0.87. Compiled from Circle / Grant Thornton &amp; Deloitte attestations; intermediate quarters approximate.</div>
</div>
</section>
<section>
<span class="snum">04C / CDP STABLECOINS</span>
<h2>The CDP line: DAI &amp; USDS, drawn apart from fiat</h2>
<p>The market's two <b>CDP</b> (collateralized-debt-position) coins — DAI and its successor USDS, both from Sky (ex-MakerDAO) — work differently from every fiat coin above. A user locks collateral in a <em>vault</em> and mints the stablecoin against it at a 145–175% ratio. <b>That over-collateralization is on the borrower's debt position, not on the token's reserves</b> — it's a liquidation buffer for a loan, not a claim that Sky holds $1.40 in a vault per circulating dollar. And the collateral itself is no longer mostly crypto: as of Q1 2026 it's <b>~40% tokenized US Treasuries, ~38% USDC (held in the Peg-Stability Module), and only ~22% crypto</b>. So ~78% of "decentralized" DAI/USDS ultimately rests on USDC or T-bills — the reason DAI tracked USDC down during the March 2023 SVB depeg.</p>
<div class="panel">
<div class="chartbox tall"><canvas id="cdpTime"></canvas></div>
<div class="legend"><span><i style="background:var(--ok)"></i>RWA / tokenized Treasuries</span><span><i style="background:var(--circle)"></i>USDC (Peg-Stability Module)</span><span><i style="background:var(--synth)"></i>Crypto vaults (ETH, wstETH, wBTC)</span></div>
<div class="cap">CDP backing by type, $B; total height = <b>combined DAI + USDS supply</b> (the CDP segment's total). Watch the mix flip: crypto-only in 2020, <b>USDC-PSM surges to a majority by 2022</b> (the dependence that broke DAI's peg at SVB), then <b>RWA Treasuries ramp from 2023</b> to become the largest slice. DAI peaked ~$9.2B in 2022, contracted, then the USDS launch (Aug 2024) revived the total to ~$13B. Compiled from MakerBurn / Sky disclosures &amp; attestations; intermediate quarters approximate.</div>
</div>
<p class="tight" style="margin-top:14px"><b>The line between stablecoins and CDP, in scale:</b> the entire CDP segment is ~<b>$13B</b> — DAI ~$4.4B + USDS ~$8.7B. Set against the fiat giants (USDT ~$190B, USDC ~$74B), all CDP stablecoins combined are only about <b>4–5% of the ~$300B market</b>. The decentralized model is the conceptually distinct one, but it's a small corner of the supply — and, via the PSM and RWA, increasingly plumbed into the same Treasuries and USDC that back the centralized coins.</p>
</section>
<section>
<span class="snum">05 / WHEN BACKING FAILED</span>
<h2>The fractional-reserve record</h2>
<p class="sub">"Pegged to $1" is a claim about reserves, not a guarantee. The regulatory record shows the claim has broken before — most consequentially at the largest issuer.</p>
<div class="cards">
<div class="card flag"><h3><span class="pill">CFTC 2021</span>Tether — backed 27.6% of the time</h3><p>The CFTC found that across a 26-month sample (2016–2018) Tether held sufficient fiat reserves to fully back USDT on only <b>27.6% of days</b>, included undisclosed receivables and non-fiat assets, and was not "fully-backed" the majority of the time. $41M penalty.</p></div>
<div class="card flag"><h3><span class="pill">NYAG 2021</span>Tether — $850M lent to Bitfinex</h3><p>Tether extended a credit line of up to $900M from its reserves to sister exchange Bitfinex to cover a shortfall; ~$700M was drawn while users believed USDT was fully cash-backed. $18.5M settlement; barred from New York.</p></div>
<div class="card flag"><h3><span class="pill">2018</span>Tether — fired its auditor</h3><p>Tether engaged Friedman LLP for an audit in 2017, then parted ways in January 2018 with the books unpublished. As of 2026 a Big Four audit is still "pending" — the quarterly attestation regime began as an NYAG settlement requirement.</p></div>
<div class="card flag"><h3><span class="pill">SVB · Mar 2023</span>USDC — $3.3B stranded</h3><p>$3.3B of USDC reserves sat at Silicon Valley Bank when it failed; USDC briefly depegged to ~$0.87 until US regulators backstopped depositors. Reserves were real but exposed to a single bank — a location risk, not a shortfall.</p></div>
</div>
<p style="margin-top:20px">The policy response was the <b>GENIUS Act</b> (signed July 2025), the first US federal stablecoin framework: it mandates 1:1 reserves, regular audits, and licensing for US issuers. USDC, PYUSD and RLUSD are built to it; Tether, offshore in El Salvador, is neither GENIUS- nor MiCA-compliant and faces EU delistings — yet still dwarfs every compliant rival.</p>
</section>
<section>
<span class="snum">06 / PARALLEL</span>
<h2>Bitcoin price vs. stablecoin supply</h2>
<p class="sub">Plotted together since 2013: Bitcoin's price (log scale, left) against total stablecoin supply (right). Stablecoin supply is the "dry powder" of the crypto economy — it tends to swell into and through Bitcoin's advances and plateau or drain in its winters.</p>
<div class="panel">
<div class="chartbox" style="height:400px"><canvas id="overlay"></canvas></div>
<div class="legend"><span><i style="background:var(--ink)"></i>BTC price (log, left)</span><span><i style="background:var(--tether)"></i>Stablecoin supply $B (right)</span></div>
<div class="cap">Monthly. Sources: Coin Metrics (BTC PriceUSD; stablecoin market cap). Stablecoin supply ≈ established coins; full market ~$300B.</div>
</div>
<p>The relationship is suggestive, not mechanical: supply climbed from ~$5B (2019) to ~$150B at the 2021 top, held through the 2022–23 bear instead of collapsing with price, then resumed growth to ~$300B even as BTC peaked and rolled over in 2025–26. Stablecoins have become a structural dollar rail that no longer fully ebbs with Bitcoin's cycle — they keep growing on payments and yield demand, not just speculation.</p>
<h3 style="font-size:18px;margin:30px 0 8px">Supply growth, phase by phase — and the 2025 divergence</h3>
<p>Measured across each Bitcoin phase, the pattern that mattered for years was simple: <b>stablecoin supply expands violently into BTC up-trends</b> — it grew <b>+543%</b> ($22B→$139B) through the 2020–21 bull and <b>+87%</b> ($141B→$264B) through the 2023–25 bull, amplifying each advance as fresh dollars entered. The 2021–22 bear then produced the <b>first-ever sustained contraction</b> in stablecoin history — supply fell <b>−21%</b> from a $165B peak (Mar 2022) to a $131B trough (May 2023) as capital fled and Terra/FTX imploded. The break in the pattern is <em>now</em>: through the current −52% BTC decline, supply has stayed essentially <b>flat (~$264→$270B)</b> rather than contracting — the clearest sign yet that stablecoin demand has decoupled from BTC speculation.</p>
<div class="panel">
<div class="chartbox" style="height:320px"><canvas id="phase"></canvas></div>
<div class="legend"><span><i style="background:var(--crypto)"></i>BTC price change</span><span><i style="background:var(--tether)"></i>Stablecoin supply change</span></div>
<div class="cap">Percent change over each phase (peak-to-peak / peak-to-trough). In both bulls, supply growth ran with or ahead of BTC; in 2022 it contracted for the first time; in 2025–26 it held flat while BTC roughly halved.</div>
</div>
<p class="tight">Monthly correlation between BTC returns and supply growth is weak (~0.15) and slightly positive — supply doesn't track BTC tick-for-tick. The signal is in the <em>regime</em>: supply growth averages <b>+6.0%/mo in BTC up-months vs +5.0%/mo in down-months</b>, and supply expansions have historically <em>led</em> rallies (the dry-powder reading). The 2025–26 flat-supply-amid-falling-price is the anomaly worth watching: either dry powder waiting to redeploy, or proof that stablecoins are now a payments rail first and a crypto-beta proxy second.</p>
</section>
<footer>
<p><b>Data.</b> Historical supply &amp; BTC price: Coin Metrics community data (market cap / PriceUSD), monthly, through May 2026. Current rankings, reserve composition and enforcement history: DefiLlama, CoinGecko, CFTC order (Oct 2021), NY AG settlement (Feb 2021), Tether/Circle transparency pages and BDO/Deloitte attestations, and 2026 market reporting. Current figures are approximate mid-June 2026 snapshots and move daily.</p>
<p style="margin-top:10px"><b>Note.</b> A "$1 peg" is a reserve claim, not a law of nature. Attestations confirm a figure on one day; audits test controls over a period. This is an informational overview, not financial advice.</p>
</footer>
</div>
<script>
const D={"slabels": ["2015-01", "2015-02", "2015-03", "2015-04", "2015-05", "2015-06", "2015-07", "2015-08", "2015-09", "2015-10", "2015-11", "2015-12", "2016-01", "2016-02", "2016-03", "2016-04", "2016-05", "2016-06", "2016-07", "2016-08", "2016-09", "2016-10", "2016-11", "2016-12", "2017-01", "2017-02", "2017-03", "2017-04", "2017-05", "2017-06", "2017-07", "2017-08", "2017-09", "2017-10", "2017-11", "2017-12", "2018-01", "2018-02", "2018-03", "2018-04", "2018-05", "2018-06", "2018-07", "2018-08", "2018-09", "2018-10", "2018-11", "2018-12", "2019-01", "2019-02", "2019-03", "2019-04", "2019-05", "2019-06", "2019-07", "2019-08", "2019-09", "2019-10", "2019-11", "2019-12", "2020-01", "2020-02", "2020-03", "2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09", "2020-10", "2020-11", "2020-12", "2021-01", "2021-02", "2021-03", "2021-04", "2021-05", "2021-06", "2021-07", "2021-08", "2021-09", "2021-10", "2021-11", "2021-12", "2022-01", "2022-02", "2022-03", "2022-04", "2022-05", "2022-06", "2022-07", "2022-08", "2022-09", "2022-10", "2022-11", "2022-12", "2023-01", "2023-02", "2023-03", "2023-04", "2023-05", "2023-06", "2023-07", "2023-08", "2023-09", "2023-10", "2023-11", "2023-12", "2024-01", "2024-02", "2024-03", "2024-04", "2024-05", "2024-06", "2024-07", "2024-08", "2024-09", "2024-10", "2024-11", "2024-12", "2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12", "2026-01", "2026-02", "2026-03", "2026-04", "2026-05"], "usdt": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.03, 0.02, 0.06, 0.06, 0.13, 0.25, 0.33, 0.33, 0.44, 0.47, 0.8, 1.42, 2.24, 2.28, 2.58, 2.58, 2.83, 3.07, 3.08, 3.08, 3.07, 2.56, 2.53, 2.58, 2.56, 2.57, 2.57, 3.33, 3.5, 3.82, 4.38, 4.21, 4.25, 4.64, 4.68, 4.75, 4.76, 4.87, 6.57, 8.1, 9.45, 10.25, 11.2, 13.71, 15.78, 17.13, 19.54, 21.4, 27.18, 35.72, 42.46, 53.5, 64.46, 64.45, 64.58, 67.62, 72.34, 72.36, 77.37, 82.57, 79.89, 81.97, 85.26, 85.45, 79.37, 68.25, 67.91, 68.88, 69.88, 71.86, 72.87, 72.82, 72.86, 73.86, 82.87, 84.88, 85.87, 85.47, 86.48, 85.26, 86.29, 87.53, 92.49, 94.44, 99.39, 101.52, 107.66, 112.84, 114.84, 115.75, 116.91, 120.11, 121.2, 122.05, 137.15, 141.03, 142.45, 143.36, 147.73, 151.42, 155.97, 159.68, 167.59, 172.55, 178.9, 185.72, 186.68, 189.34, 189.06, 187.76, 188.55, 192.94, 192.76], "usdc": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.13, 0.18, 0.25, 0.31, 0.24, 0.25, 0.29, 0.33, 0.37, 0.44, 0.45, 0.43, 0.46, 0.46, 0.52, 0.44, 0.45, 0.69, 0.73, 0.73, 0.99, 1.08, 1.48, 2.53, 2.94, 2.97, 3.91, 5.91, 9.04, 11.15, 14.8, 22.81, 25.23, 27.42, 27.43, 31.56, 33.09, 38.53, 43.06, 50.3, 53.66, 52.19, 50.01, 54.43, 56.45, 55.16, 53.12, 48.94, 46.24, 46.85, 48.42, 46.35, 46.46, 36.76, 34.81, 33.14, 31.66, 30.75, 30.5, 29.43, 29.07, 28.73, 28.28, 30.23, 28.56, 32.21, 32.8, 32.02, 31.67, 32.58, 34.06, 34.87, 33.87, 39.11, 42.95, 52.4, 54.89, 58.18, 59.45, 58.27, 59.15, 61.82, 69.66, 72.31, 73.55, 74.97, 73.4, 67.7, 73.16, 74.4, 73.92, 72.54], "other": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.06, 0.07, 0.1, 0.17, 0.19, 0.21, 0.21, 0.2, 0.2, 0.21, 0.24, 0.21, 0.21, 0.2, 0.21, 0.21, 0.21, 0.23, 0.23, 0.26, 0.38, 0.4, 0.43, 0.42, 0.56, 0.78, 1.51, 1.62, 1.67, 2.43, 3.51, 5.01, 6.74, 11.76, 14.34, 16.72, 18.93, 19.5, 20.48, 22.59, 23.51, 24.64, 25.96, 29.06, 28.01, 27.5, 25.81, 25.02, 26.02, 26.89, 28.18, 27.65, 28.2, 22.37, 22.14, 16.67, 14.71, 12.94, 11.86, 11.5, 10.81, 10.31, 9.49, 9.06, 8.25, 6.98, 5.21, 4.97, 3.77, 3.73, 3.8, 3.71, 3.74, 3.74, 3.63, 3.78, 4.08, 3.92, 4.06, 3.82, 3.74, 4.09, 4.54, 4.15, 4.29, 5.11, 5.12, 5.22, 4.97, 4.77, 4.87, 4.71, 4.92, 4.93, 4.87], "total": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.03, 0.02, 0.06, 0.06, 0.13, 0.25, 0.33, 0.33, 0.44, 0.47, 0.8, 1.42, 2.24, 2.28, 2.58, 2.58, 2.83, 3.07, 3.14, 3.15, 3.18, 2.86, 2.91, 3.03, 3.08, 3.0, 3.02, 3.83, 4.08, 4.4, 5.03, 4.86, 4.89, 5.31, 5.35, 5.49, 5.44, 5.58, 7.65, 9.23, 10.61, 11.66, 12.84, 15.96, 19.82, 21.69, 24.18, 27.75, 36.59, 49.77, 60.34, 80.07, 101.61, 106.4, 110.92, 114.55, 124.39, 128.04, 139.42, 150.27, 156.14, 164.69, 165.45, 162.97, 159.61, 149.72, 149.08, 148.89, 147.0, 145.75, 147.92, 143.61, 141.36, 136.99, 134.33, 132.63, 130.87, 128.64, 128.04, 126.07, 125.21, 125.66, 129.47, 129.7, 134.82, 135.05, 143.64, 149.37, 150.66, 151.13, 153.23, 157.92, 159.7, 159.7, 180.34, 187.9, 198.91, 202.07, 209.65, 214.95, 218.78, 222.98, 233.69, 247.32, 256.34, 264.5, 266.62, 267.5, 261.63, 265.63, 267.86, 271.79, 270.18], "btc_labels": ["2013-01", "2013-02", "2013-03", "2013-04", "2013-05", "2013-06", "2013-07", "2013-08", "2013-09", "2013-10", "2013-11", "2013-12", "2014-01", "2014-02", "2014-03", "2014-04", "2014-05", "2014-06", "2014-07", "2014-08", "2014-09", "2014-10", "2014-11", "2014-12", "2015-01", "2015-02", "2015-03", "2015-04", "2015-05", "2015-06", "2015-07", "2015-08", "2015-09", "2015-10", "2015-11", "2015-12", "2016-01", "2016-02", "2016-03", "2016-04", "2016-05", "2016-06", "2016-07", "2016-08", "2016-09", "2016-10", "2016-11", "2016-12", "2017-01", "2017-02", "2017-03", "2017-04", "2017-05", "2017-06", "2017-07", "2017-08", "2017-09", "2017-10", "2017-11", "2017-12", "2018-01", "2018-02", "2018-03", "2018-04", "2018-05", "2018-06", "2018-07", "2018-08", "2018-09", "2018-10", "2018-11", "2018-12", "2019-01", "2019-02", "2019-03", "2019-04", "2019-05", "2019-06", "2019-07", "2019-08", "2019-09", "2019-10", "2019-11", "2019-12", "2020-01", "2020-02", "2020-03", "2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09", "2020-10", "2020-11", "2020-12", "2021-01", "2021-02", "2021-03", "2021-04", "2021-05", "2021-06", "2021-07", "2021-08", "2021-09", "2021-10", "2021-11", "2021-12", "2022-01", "2022-02", "2022-03", "2022-04", "2022-05", "2022-06", "2022-07", "2022-08", "2022-09", "2022-10", "2022-11", "2022-12", "2023-01", "2023-02", "2023-03", "2023-04", "2023-05", "2023-06", "2023-07", "2023-08", "2023-09", "2023-10", "2023-11", "2023-12", "2024-01", "2024-02", "2024-03", "2024-04", "2024-05", "2024-06", "2024-07", "2024-08", "2024-09", "2024-10", "2024-11", "2024-12", "2025-01", "2025-02", "2025-03", "2025-04", "2025-05", "2025-06", "2025-07", "2025-08", "2025-09", "2025-10", "2025-11", "2025-12", "2026-01", "2026-02", "2026-03", "2026-04", "2026-05", "2026-06"], "btc_close": [20.5, 33.4, 93.9, 139.1, 127.8, 89.5, 98.0, 128.4, 126.1, 203.3, 1119.3, 729.6, 803.2, 551.3, 455.4, 448.9, 627.9, 638.9, 582.0, 478.5, 389.3, 337.2, 378.7, 320.7, 217.3, 254.9, 244.7, 236.3, 229.5, 263.9, 284.6, 230.7, 236.7, 314.1, 377.4, 429.7, 366.3, 437.8, 416.0, 449.9, 530.9, 674.3, 624.8, 572.3, 608.9, 698.9, 742.2, 969.0, 968.5, 1188.4, 1081.7, 1382.0, 2299.4, 2452.7, 2862.6, 4740.4, 4334.5, 6428.5, 9996.7, 13921.5, 10050.1, 10307.0, 6922.3, 9228.7, 7478.7, 6375.5, 7725.1, 7025.1, 6604.5, 6306.3, 3973.3, 3687.2, 3410.1, 3792.9, 4094.3, 5266.6, 8556.2, 10842.6, 10059.0, 9605.0, 8282.4, 9155.3, 7556.2, 7167.4, 9357.3, 8582.1, 6432.4, 8652.4, 9433.9, 9144.0, 11338.2, 11678.3, 10772.4, 13807.2, 19664.4, 29022.7, 33157.8, 45359.5, 58792.2, 57741.4, 37313.0, 35065.5, 41793.3, 47219.2, 43781.5, 61433.0, 57097.0, 46355.1, 38462.7, 43179.3, 45562.2, 37714.1, 31831.4, 19332.9, 23356.2, 20024.7, 19435.2, 20490.9, 17176.9, 16524.2, 23130.1, 23145.9, 28514.7, 29362.1, 27217.7, 30484.5, 29219.8, 25954.9, 26977.7, 34636.4, 37712.7, 42217.2, 42589.5, 61394.8, 71227.5, 60636.3, 67377.8, 62763.3, 64690.6, 58959.9, 63260.0, 70367.1, 96463.6, 93389.7, 102263.0, 84243.8, 82461.4, 94236.7, 104709.0, 107153.1, 115848.3, 108316.4, 113971.7, 109554.2, 90607.7, 87517.0, 78702.4, 66965.6, 68214.9, 76299.6, 76619.9, 61000.0], "stot": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.03, 0.02, 0.06, 0.06, 0.13, 0.25, 0.33, 0.33, 0.44, 0.47, 0.8, 1.42, 2.24, 2.28, 2.58, 2.58, 2.83, 3.07, 3.14, 3.15, 3.18, 2.86, 2.91, 3.03, 3.08, 3.0, 3.02, 3.83, 4.08, 4.4, 5.03, 4.86, 4.89, 5.31, 5.35, 5.49, 5.44, 5.58, 7.65, 9.23, 10.61, 11.66, 12.84, 15.96, 19.82, 21.69, 24.18, 27.75, 36.59, 49.77, 60.34, 80.07, 101.61, 106.4, 110.92, 114.55, 124.39, 128.04, 139.42, 150.27, 156.14, 164.69, 165.45, 162.97, 159.61, 149.72, 149.08, 148.89, 147.0, 145.75, 147.92, 143.61, 141.36, 136.99, 134.33, 132.63, 130.87, 128.64, 128.04, 126.07, 125.21, 125.66, 129.47, 129.7, 134.82, 135.05, 143.64, 149.37, 150.66, 151.13, 153.23, 157.92, 159.7, 159.7, 180.34, 187.9, 198.91, 202.07, 209.65, 214.95, 218.78, 222.98, 233.69, 247.32, 256.34, 264.5, 266.62, 267.5, 261.63, 265.63, 267.86, 271.79, 270.18, 0.0], "top": [["USDT", "Tether", 190.0, "Fiat \u2014 T-bills, repos, BTC, gold, loans"], ["USDC", "Circle", 74.0, "Fiat \u2014 T-bills + cash"], ["USDe", "Ethena", 5.5, "Synthetic \u2014 crypto + short hedge"], ["USDS", "Sky", 8.7, "CDP \u2014 crypto + USDC-PSM + RWA"], ["USD1", "World Liberty Fin.", 4.7, "Fiat \u2014 T-bills + cash"], ["DAI", "Sky", 4.4, "CDP \u2014 crypto + USDC-PSM + RWA"], ["PYUSD", "PayPal / Paxos", 3.8, "Fiat \u2014 T-bills + cash"], ["FDUSD", "First Digital", 3.0, "Fiat \u2014 cash & equivalents"], ["RLUSD", "Ripple", 1.8, "Fiat \u2014 T-bills + cash"], ["USDP/TUSD/GUSD/U\u2026", "Paxos / others", 4.3, "Mixed"]], "total_market": 300.0, "rvs": [["USDT", 190.0, 197.0, 104], ["USDC", 74.0, 74.2, 100], ["USDe", 5.5, 5.6, 101], ["USDS", 5.4, 7.6, 141], ["USD1", 4.7, 4.7, 100], ["DAI", 4.0, 5.6, 140], ["PYUSD", 3.8, 3.8, 100], ["FDUSD", 3.0, 3.0, 100]]};
const css=getComputedStyle(document.documentElement),c=n=>css.getPropertyValue(n).trim();
const reduce=window.matchMedia('(prefers-reduced-motion: reduce)').matches;
Chart.defaults.font.family="'JetBrains Mono', monospace";
Chart.defaults.color=c('--muted');
Chart.defaults.animation=reduce?false:{duration:700};
const grid=c('--line');
const usdB=v=>v>=1000?'$'+(v/1000).toFixed(1)+'k':'$'+v+'B';
// table
const tb=document.getElementById('topbody');let cum=0;
D.top.forEach((t,i)=>{cum+=t[2];const sh=t[2]/D.total_market*100, cm=cum/D.total_market*100;
const tr=document.createElement('tr');
tr.innerHTML=`<td class="num">${i+1}</td><td><b>${t[0]}</b> <span style="color:var(--faint)">${t[1]}</span></td>`+
`<td class="num">$${t[2].toFixed(1)}B</td><td class="num">${sh.toFixed(1)}%</td>`+
`<td class="num big">${cm.toFixed(1)}%</td><td style="text-align:left;color:var(--muted);font-size:12.5px">${t[3]}</td>`;
tb.appendChild(tr);});
// 01 growth stacked area
new Chart(growth,{type:'line',
data:{labels:D.slabels,datasets:[
{label:'USDT',data:D.usdt,borderColor:c('--tether'),backgroundColor:c('--tether')+'cc',fill:true,stack:'s',pointRadius:0,borderWidth:1,tension:.2},
{label:'USDC',data:D.usdc,borderColor:c('--circle'),backgroundColor:c('--circle')+'cc',fill:true,stack:'s',pointRadius:0,borderWidth:1,tension:.2},
{label:'Other',data:D.other,borderColor:c('--grey'),backgroundColor:c('--grey')+'cc',fill:true,stack:'s',pointRadius:0,borderWidth:1,tension:.2},
]},
options:{maintainAspectRatio:false,interaction:{mode:'index',intersect:false},
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label+': $'+x.parsed.y.toFixed(1)+'B'}}},
scales:{y:{stacked:true,grid:{color:grid},ticks:{callback:usdB}},x:{grid:{display:false},ticks:{maxTicksLimit:8,maxRotation:0}}}}});
// 03 reserves vs supply
new Chart(rvs,{type:'bar',
data:{labels:D.rvs.map(r=>r[0]),datasets:[
{label:'Supply',data:D.rvs.map(r=>r[1]),backgroundColor:c('--circle'),borderRadius:4},
{label:'Reserves',data:D.rvs.map(r=>r[2]),backgroundColor:c('--tether'),borderRadius:4},
]},
options:{maintainAspectRatio:false,
plugins:{legend:{display:false},tooltip:{callbacks:{
label:x=>x.dataset.label+': $'+x.parsed.y.toFixed(1)+'B',
afterbody:items=>{const i=items[0].dataIndex;return 'backing '+D.rvs[i][3]+'%';}}}},
scales:{y:{type:'logarithmic',grid:{color:grid},ticks:{callback:usdB}},x:{grid:{display:false}}}}});
// 05 overlay dual axis
new Chart(overlay,{type:'line',
data:{labels:D.btc_labels,datasets:[
{label:'BTC',data:D.btc_close,yAxisID:'y',borderColor:c('--ink'),borderWidth:1.5,pointRadius:0,tension:.15},
{label:'Stablecoin supply',data:D.stot.map(v=>v||null),yAxisID:'y1',borderColor:c('--tether'),backgroundColor:c('--tether')+'22',borderWidth:1.5,pointRadius:0,tension:.15,fill:true},
]},
options:{maintainAspectRatio:false,interaction:{mode:'index',intersect:false},
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label==='BTC'?'BTC $'+Math.round(x.parsed.y).toLocaleString():'Stablecoins $'+x.parsed.y.toFixed(0)+'B'}}},
scales:{
y:{type:'logarithmic',position:'left',grid:{color:grid},ticks:{callback:v=>'$'+(v>=1000?(v/1000)+'k':v)}},
y1:{position:'right',grid:{display:false},ticks:{callback:v=>'$'+v+'B'}},
x:{grid:{display:false},ticks:{maxTicksLimit:9,maxRotation:0}}}}});
// 04 Tether reserves vs supply (horizontal stacked)
(function(){
const rows=['Reserves $191.8B','USDT supply $183.5B'];
const seg=[
['US Treasuries',141.0,c('--tether')],
['Cash & deposits',4.5,'#5ec9a0'],
['Gold',20.0,c('--crypto')],
['Secured loans',15.0,c('--flag')],
['Bitcoin',7.0,'#f7931a'],
['Other',4.3,c('--grey')],
];
const ds=seg.map(s=>({label:s[0],data:[s[1],0],backgroundColor:s[2],borderWidth:0,stack:'x'}));
ds.push({label:'USDT supply',data:[0,183.5],backgroundColor:c('--circle'),borderWidth:0,stack:'x'});
new Chart(document.getElementById('tether'),{type:'bar',
data:{labels:rows,datasets:ds},
options:{indexAxis:'y',maintainAspectRatio:false,
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label+': $'+x.parsed.x+'B'}}},
scales:{x:{stacked:true,grid:{color:grid},ticks:{callback:v=>'$'+v+'B'}},
y:{stacked:true,grid:{display:false}}}}});
})();
// Tether reserves by type over time (stacked area = supply growth)
(function(){
const L=['Q1 ’21','Q2 ’22','Q1 ’23','Q1 ’24','Q4 ’24','Q2 ’25','Q3 ’25','Q1 ’26'];
const cats=[
['US Treasuries',[2,40,63,90,113,126.8,135,141],c('--tether')],
['Commercial paper',[20.3,8,0,0,0,0,0,0],'#b07a3a'],
['Cash & deposits',[8.7,5,5,8,5,0.5,4.9,4.5],'#5ec9a0'],
['Secured loans',[5.1,6,5.5,5,8.2,8.8,14.6,15],c('--flag')],
['Gold',[2,3,3.4,3.6,5,6.5,12.9,20],c('--crypto')],
['Bitcoin',[0.7,1.5,1.6,2.9,7,8,9.9,7],'#f7931a'],
['Other',[2.1,2.5,1.5,0.8,5.5,12,3.9,4.3],c('--grey')],
];
new Chart(document.getElementById('tetherTime'),{type:'line',
data:{labels:L,datasets:cats.map(x=>({label:x[0],data:x[1],borderColor:x[2],backgroundColor:x[2]+'dd',fill:true,stack:'r',pointRadius:0,borderWidth:1,tension:0.15}))},
options:{maintainAspectRatio:false,interaction:{mode:'index',intersect:false},
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label+': $'+x.parsed.y+'B'}}},
scales:{y:{stacked:true,grid:{color:grid},ticks:{callback:v=>'$'+v+'B'},title:{display:true,text:'reserves ≈ supply ($B)',color:c('--faint')}},x:{grid:{display:false}}}}});
})();
// USDC reserves by type over time (stacked area = supply growth)
(function(){
const L=['Q4 ’20','Q2 ’21','Q4 ’21','Q2 ’22','Q4 ’22','Q1 ’23','Q4 ’23','Q4 ’24','Q2 ’25','Q1 ’26'];
const cats=[
['US Treasuries',[0.4,3,24.1,33.4,34.4,26.8,22.3,34,47.1,59.4],c('--circle')],
['Cash & deposits',[3.5,15.3,19,21,14,10,6,9,12,15],'#6fa8e0'],
['CDs / CP / corp bonds',[0,6.7,0,0,0,0,0,0,0,0],'#b07a3a'],
];
new Chart(document.getElementById('usdcTime'),{type:'line',
data:{labels:L,datasets:cats.map(x=>({label:x[0],data:x[1],borderColor:x[2],backgroundColor:x[2]+'dd',fill:true,stack:'r',pointRadius:0,borderWidth:1,tension:0.15}))},
options:{maintainAspectRatio:false,interaction:{mode:'index',intersect:false},
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label+': $'+x.parsed.y+'B'}}},
scales:{y:{stacked:true,grid:{color:grid},ticks:{callback:v=>'$'+v+'B'},title:{display:true,text:'reserves ≈ supply ($B)',color:c('--faint')}},x:{grid:{display:false}}}}});
})();
// CDP (DAI+USDS) backing by type over time = CDP segment total supply
(function(){
const L=['Q4 ’20','Q2 ’21','Q4 ’21','Q1 ’22','Q4 ’22','Q2 ’23','Q4 ’23','Q4 ’24','Q2 ’25','Q1 ’26'];
const cats=[
['RWA / Treasuries',[0,0,0,0.5,0.76,1.75,1.5,2.8,3.9,5.2],c('--ok')],
['USDC (PSM)',[0,2.05,4.9,5.0,2.5,1.5,1.4,2.6,3.6,5.0],c('--circle')],
['Crypto vaults',[1.16,3.1,4.0,3.7,1.8,1.1,0.8,1.5,2.1,2.9],c('--synth')],
];
new Chart(document.getElementById('cdpTime'),{type:'line',
data:{labels:L,datasets:cats.map(x=>({label:x[0],data:x[1],borderColor:x[2],backgroundColor:x[2]+'dd',fill:true,stack:'r',pointRadius:0,borderWidth:1,tension:0.15}))},
options:{maintainAspectRatio:false,interaction:{mode:'index',intersect:false},
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label+': $'+x.parsed.y+'B'}}},
scales:{y:{stacked:true,grid:{color:grid},ticks:{callback:v=>'$'+v+'B'},title:{display:true,text:'DAI + USDS supply ($B)',color:c('--faint')}},x:{grid:{display:false}}}}});
})();
// BTC phase vs stablecoin supply growth
(function(){
const L=['Bull 2020–21','Bear 2021–22','Bull 2023–25','Decline 2025–26'];
new Chart(document.getElementById('phase'),{type:'bar',
data:{labels:L,datasets:[
{label:'BTC price change',data:[314,-70,374,-52],backgroundColor:c('--crypto'),borderRadius:4},
{label:'Stablecoin supply change',data:[543,-21,87,2],backgroundColor:c('--tether'),borderRadius:4},
]},
options:{maintainAspectRatio:false,
plugins:{legend:{display:false},tooltip:{callbacks:{label:x=>x.dataset.label+': '+(x.parsed.y>0?'+':'')+x.parsed.y+'%'}}},
scales:{y:{grid:{color:grid},ticks:{callback:v=>(v>0?'+':'')+v+'%'},title:{display:true,text:'% change over phase',color:c('--faint')}},x:{grid:{display:false}}}}});
})();
</script>
</body></html>