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>
361 lines
No EOL
43 KiB
HTML
361 lines
No EOL
43 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Stablecoins — Supply, Reserves & 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 >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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & Deloitte attestations; intermediate quarters approximate.</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section>
|
||
<span class="snum">04C / CDP STABLECOINS</span>
|
||
<h2>The CDP line: DAI & 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 & 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 & 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> |