Crypto Barometer
Which assets moved on their own, once the market move is taken out. Daily, at the UTC close, with the false-alarm share controlled and every figure traced to its endpoint and formula.
20260920T231754Z_e61a mode v1 · generated 2026-09-20T23:22:18Z · 150 assets in the universe, 146 with a z Movers abnormal volume z across, abnormal return z up; red = mover, orange = passes BH only, grey = the rest
Dotted lines at z = +2 and -2, the dashed line at abnormal volume z = 1 (the volume confirmation). Hover a point for its figures. 146 of 146 assets have both a z and a volume z today.
Ranked by |z| z first; the percent return is context, never the ranking
4 of 146 assets pass Benjamini-Hochberg at q = 0.1, so about 0.4 of them are expected false discoveries; 4 also carry volume confirmation and count as movers. Base rates (forward 7, 30 and 90-day residual returns of past flags) accumulate from the first live run and are not shown yet.
| # | Asset | z | 1d | 7d | vol z | p | dir | flag |
|---|---|---|---|---|---|---|---|---|
| 1 | CELR | 15.40 | +45.8% | +54.6% | 12.69 | <0.0001 | ▲ | mover |
| 2 | AVAX | 12.58 | +23.0% | +36.5% | 3.01 | 0.0002 | ▲ | mover |
| 3 | SKL | 6.12 | +15.5% | +24.4% | 5.30 | 0.0020 | ▲ | mover |
| 4 | ZAMA | 5.50 | +37.3% | +70.2% | 3.49 | 0.0021 | ▲ | mover |
| 5 | XTZ | 5.16 | +24.2% | +38.0% | 4.14 | 0.0045 | ▲ | |
| 6 | ONE | 3.87 | +94.9% | +482.7% | 4.01 | 0.0111 | ▲ | |
| 7 | JOE | 3.42 | +11.3% | +13.4% | 2.93 | 0.0107 | ▲ | |
| 8 | ENA | 3.40 | +21.3% | +43.3% | 1.34 | 0.0143 | ▲ | |
| 9 | MANTA | 3.30 | +7.9% | +9.2% | 1.81 | 0.0156 | ▲ | |
| 10 | ZIL | 3.19 | +15.3% | +32.2% | 1.66 | 0.0174 | ▲ | |
| 11 | BANK | 3.12 | +30.2% | +40.4% | 5.12 | 0.0046 | ▲ | |
| 12 | STG | -3.05 | -8.0% | -8.3% | 3.01 | 0.0196 | ▼ | |
| 13 | INJ | 3.04 | +18.7% | +32.5% | 2.78 | 0.0202 | ▲ | |
| 14 | G | 2.99 | +39.5% | +178.7% | 3.15 | 0.0141 | ▲ | |
| 15 | FET | -2.63 | -4.7% | +5.7% | 1.12 | 0.0352 | ▼ | |
| 16 | CTSI | 2.62 | +12.5% | +18.7% | 2.50 | 0.0116 | ▲ | |
| 17 | F | -2.49 | -19.6% | +23.3% | 3.97 | 0.0242 | ▼ | |
| 18 | AR | 2.44 | +21.1% | +71.3% | 4.22 | 0.0309 | ▲ | |
| 19 | AGLD | 2.44 | +9.5% | +15.0% | 2.95 | 0.0322 | ▲ | |
| 20 | U | 2.43 | +0.1% | +0.0% | -0.24 | 0.0443 | ▲ |
Showing the top 20 of 146 by |z|; the CSV twin at /data/movers.csv holds every row with its run id.
New listings under 90 days of history in this dataset: no z, no place in the BH list
| Asset | days | first close | close | 1d | 7d |
|---|---|---|---|---|---|
| MARSCOIN | 16 | 2026-09-04 | 0.0990693 | -12.3% | -14.8% |
| 牛来 | 11 | 2026-09-09 | 0.10777661 | -9.9% | -20.1% |
| GRAM | 80 | 2026-07-02 | 1.38157192 | +0.5% | -0.2% |
Breadth the cross-section a single mover is read against
Persistence at 7, 30 and 90 days (Spearman rho with its 95 percent interval): -0.123 [-0.28, 0.04], N 149 · -0.073 [-0.23, 0.09], N 148 · -0.055 [-0.22, 0.11], N 144. An interval that straddles zero means the ranking of the last window says nothing about the next.
Flows where the measured dollars went; ribbons only for flows a document or a chain records
Ribbons are dollars a document or a chain records: stablecoin issuance, per-chain stablecoin balances, ETF creations, exchange flows. The box is revaluation: market caps and USD TVL move with price, so they are never drawn as a flow.
30 days 2026-08-20 to 2026-09-19, UTC days, USD bn with 2 decimals
Measured entries stablecoin net issuance +3.07 bn · US spot BTC ETF net flow +1.76 bn · US spot ETH ETF net flow +1.28 bn · 3.43 bn of BTC left exchanges
- Revaluation, not money in, same window
- BTC market cap +165.54 bn (price 73,071 to 81,262)
- TVL in USD: Ethereum +6.20 bn, Solana +1.07 bn, Base +0.86 bn; USD TVL mixes deposits and price
- Total market cap 2.77 tn, BTC 59 percent, ETH 12 percent, USDT+USDC 9 percent (CoinGecko global, snapshot at fetch time, not a window figure)
7 days 2026-09-12 to 2026-09-19, UTC days, USD bn with 2 decimals
Measured entries stablecoin net issuance -0.22 bn · US spot BTC ETF net flow +0.01 bn · US spot ETH ETF net flow -0.14 bn · 0.44 bn of BTC left exchanges
- Revaluation, not money in, same window
- BTC market cap +80.79 bn (price 77,252 to 81,262)
- TVL in USD: Ethereum +2.30 bn, Solana +0.41 bn, Base +0.31 bn; USD TVL mixes deposits and price
- Total market cap 2.77 tn, BTC 59 percent, ETH 12 percent, USDT+USDC 9 percent (CoinGecko global, snapshot at fetch time, not a window figure)
last day 2026-09-18 to 2026-09-19, UTC days, USD bn with 3 decimals
Measured entries stablecoin net issuance +0.498 bn · US spot BTC ETF net flow n/a · US spot ETH ETF net flow n/a · 0.121 bn of BTC left exchanges
- Revaluation, not money in, same window
- BTC market cap +6.423 bn (price 80,944 to 81,262)
- TVL in USD: Ethereum +2.443 bn, Solana +0.409 bn, Base +0.314 bn; USD TVL mixes deposits and price
- Total market cap 2.77 tn, BTC 59 percent, ETH 12 percent, USDT+USDC 9 percent (CoinGecko global, snapshot at fetch time, not a window figure)
Flow figures from /data/flows.json, run 20260920T231754Z_e61a. Basis per figure in the Basis block below, keyed flows_30d, flows_7d and flows_1d.
BTC, 365 daily closes 2025-09-20 to 2026-09-19, USD
Last close 81,234 USD on 2026-09-19; 7-day change +5.1%.
Basis every figure family above, its endpoint and its formula in words
- prices_btc
- BTC slice of prices_daily, canonical close per day (Coinbase > Kraken > Coin Metrics > Bitstamp > Binance; site file for days no venue covers), running candle dropped
- prices
- canonical close: coinbase > kraken > coinmetrics > bitstamp > binance (bitstamp first before 2016-01-01); Coinbase Exchange GET /products/{id}/candles granularity=86400: [time, low, high, open, close, volume]; day = UTC date of time; volume_usd = base volume x close
- runs
- one row per daily or backfill publish from data/runs.jsonl, newest first, last 30 (demo rows excluded)
- share_above_sma50
- share of the universe whose close is above its 50-day simple moving average
- share_above_sma200
- share of the universe whose close is above its 200-day simple moving average
- mean_pairwise_corr_30d
- mean off-diagonal correlation of the last 30 daily log returns across the universe
- dispersion_7d
- cross-sectional standard deviation of 7-day simple returns (engine column d7); the daily log-return dispersion is d_daily in breadth_daily
- persistence
- rho[t, w] = Spearman(rank ln(P[t-w] / P[t-2w]), rank ln(P[t] / P[t-w])) on today's universe restricted to the assets with a close at t-2w, t-w and t (survivors; point-in-time snapshots are not yet 2w old); 95 percent Fisher CI tanh(atanh(rho) +- 1.96 / sqrt(N - 3)); w = 7, 30, 90
- altseason
- share of the point-in-time CoinGecko top 50 (ex stablecoins, wrapped) with 90-day log return above BTC; needs the snapshot stored 90 days before as_of, TBC until then
- abnormal_return_z
- two-factor model r = a + b m + b2 f2 + e, m = r_BTC, f2 = equal-weight alt index ex BTC, stablecoins and wrapped; Huber RLM on [t-90, t-1], |b| and |b2| capped at 3; z = e / sqrt(s2), s2 = 0.94 s2[t-1] + 0.06 e[t-1]^2
- scar7
- sum of e over 7 days / sqrt(sum of s2 over the same days)
- scar30
- sum of e over 30 days / sqrt(sum of s2 over the same days)
- abnormal_volume_z
- av = (ln(1 + V_usd) - 30-day mean) / 30-day std, lagged, min 20 obs; av is null when the 30-day median USD volume is under 100k USD; avm = av - cross-sectional median
- p_value
- two-sided Student-t p with (nu, loc, scale) fitted on the asset's trailing 365 z, nu in [3, 10]
- bh_flag
- Benjamini-Hochberg step-up at q = 0.1; Benjamini-Yekutieli when the mean pairwise 30-day residual correlation is above 0.3
- mover
- BH-significant and avm >= 1
- expected_false_discoveries
- q x number of BH-significant assets, q = 0.1
- new_listings
- assets with under 90 days of history in this dataset (first close or first snapshot sighting across every collected venue), no z, listed apart from the movers table; a venue listing date is not collected yet, so an asset older than the archive can appear here
- engine_inputs
- close of prices_daily (canonical venue per day) and volume_usd of prices_sources from one venue per asset (binance 149, coinbase 1; column vol_source), 2025-03-19 to 2026-09-19, 150 assets incl. BTC; USDT quotes already scaled by the DefiLlama USDT price in the price tables (flag usdt_scaled, or usdt_unscaled with factor 1.0 on days without a DefiLlama point), so the engine applies no second scaling
- engine_e
- r - a - b m - b2 f2; m = BTC log return, f2 = leave-one-out equal-weight mean log return of the other alts ex BTC, stablecoins, wrapped, tokenised equities (149 alt columns in the panel, 105 names on the exclusion lists; 149 constituents on 2026-09-19, min 50 and max 149 over the frame, no fit under 20 others); statsmodels RLM HuberT(1.345) on [t-90, t-1], min 60 obs, returns winsorised at 1/99 pct in the window; loadings clipped to [-3, 3] (capped flag); refit every 7 days per asset, residual daily on the raw return
- engine_z
- e / sqrt(s2); s2[t] = 0.94 s2[t-1] + 0.06 e[t-1]^2 (RiskMetrics, half-life 11.2 days); no z under 90 days of history and none before 30 consecutive residual days (EWMA burn-in); z_hist_n = finite z in the trailing 365 ending t-1, quality = ok, short_z_history, no_loadings or new_listing
- engine_scar
- scar_k = sum_{t-k+1..t} e / sqrt(sum s2), k in 7, 30
- engine_av
- v = ln(1 + V_usd); av = (v - mean30) / std30 with the baseline ending t-1 (min 20 obs); NaN when the lagged 30-day median volume is under 100k USD; avm = av - cross-sectional median; s = z x clip((avm + 1) / 3, 0, 1)
- engine_p
- Student t fitted on the asset's trailing 365 z ending t-1 (scipy.stats.t.fit), nu in [3, 10], nu = 4 under 365 z (loc, scale fitted from 60 z, else 0, 1); p = 2 T.sf(|z - loc| / scale)
- engine_fdr
- statsmodels multipletests step-up at q = 0.10, fdr_bh, or fdr_by when the mean pairwise 30-day residual correlation is above 0.3 (BY dates: none); family = assets with z, 90 days of history and no capped loading; mover = flagged and avm >= 1; expected false discoveries = q x flagged
- engine_breadth
- b50, b200 share of assets with a defined SMA above it; rho_bar mean off-diagonal correlation from the Ledoit-Wolf (2004) shrinkage covariance of the last 30 daily log returns (complete columns); d cross-sectional std of daily log returns; d7 std of 7-day simple returns; dres std of e; ar top ceil(N/5) eigenvalues over all, 90-day sample covariance
- engine_persistence
- rho_w = Spearman(rank ln(P[t-w]/P[t-2w]), rank ln(P[t]/P[t-w])) on today's universe restricted to the assets with a close at t-2w, t-w and t (survivors; point-in-time snapshots are not yet 2w old), Fisher CI tanh(atanh(rho) +- 1.96/sqrt(N-3)), w in 7, 30, 90
- engine_altseason
- NULL until universe_snapshots holds a top-50 list 90 days old (T8b)
- prices_daily
- canonical close: coinbase > kraken > coinmetrics > bitstamp > binance (bitstamp first before 2016-01-01); Coinbase Exchange GET /products/{id}/candles granularity=86400: [time, low, high, open, close, volume]; day = UTC date of time; volume_usd = base volume x close
- usdt_scaling
- Binance GET /api/v3/klines interval=1d: [openTime, o, h, l, c, v, closeTime, quoteVolume, ...]; USDT prices and quoteVolume multiplied by the DefiLlama USDT price of the day (coins.llama.fi chart coingecko:tether)
- reconciliation
- max pairwise |a - b| / ((a + b) / 2) x 100 over the USD closes of every source for the asset and day; tbc when above 1 percent (report section 2, task T2)
- volume_venue
- one venue per asset for the whole volume series: the collected venue (binance, coinbase, kraken, bitstamp) with the largest median USD volume over the 30 days ending the day before as_of, ties by the canonical order; the close keeps its own canonical venue
- yahoo_site_file
- read-only site file barda-ma/research/btc-cycle-forecast/data/btc_usd_yahoo.csv (Yahoo Finance BTC-USD daily close), used only for days no venue covers
- universe_universe_snapshots
- CoinGecko GET /coins/markets vs_currency=usd order=market_cap_desc per_page=250: rank = market_cap_rank, mcap_usd = market_cap, volume_usd = total_volume (24 h); date = UTC fetch day | Binance GET /api/v3/exchangeInfo USDT spot pairs with status TRADING, ranked by GET /api/v3/ticker/24hr quoteVolume descending; volume_usd = quoteVolume x DefiLlama USDT price (1.0 when none); no market cap; date = UTC fetch day | Coinbase Exchange GET /products quote USD, status online, trading enabled, ranked by GET /products/stats stats_24hour.volume x stats_24hour.last descending; no market cap; date = UTC fetch day
- universe_assets
- first_seen and last_seen = earliest and latest UTC day the asset appears in any universe snapshot or prices_daily row; flags from the exclusion lists (stablecoins, wrapped, leveraged suffix or name, tokenised equity: equity or ETF stem plus a venue suffix B, x or on, or an xStock name)
- universe_universe_at
- top n by the source's rank from the snapshot stored on the date asked for, or the latest earlier one, never a later one unless the run states a look-ahead (no snapshot at or before the date: the earliest later snapshot is used and lookahead_days is printed); stablecoins, wrapped, leveraged and tokenised-equity tokens removed when exclude is on
- universe_new_listings
- assets with under 90 days of history in this dataset at the date (first close or first snapshot sighting across every collected venue, first day inclusive); no venue listing date is collected yet, so the pane reads 'under 90 days in this dataset'
- universe_membership
- scored 2026-09-19: top 250 of the binance snapshot of 2026-09-20 (250 after exclusions); stated look-ahead: the snapshot was taken 1 day(s) after the scored date because no earlier snapshot exists (the 24 h ticker window of the snapshot day ranks the membership)
- flows_30d.stablecoin_net_issuance_usd
- DefiLlama stablecoins.llama.fi/stablecoincharts/all totalCirculatingUSD.peggedUSD, point on or before 2026-09-19 minus point on or before 2026-08-20 (306,942,863,690 to 310,016,997,435)
- flows_30d.stablecoin_change_by_chain_usd
- DefiLlama stablecoincharts/{chain} totalCirculatingUSD.peggedUSD for 12 of 12 chains, point on or before 2026-09-19 minus point on or before 2026-08-20; a chain's change mixes new issuance and bridging, so the Sankey absorbs net issuance pro rata into the gaining chains and bridges the rest from the losing chains
- flows_30d.us_spot_btc_etf_net_flow_usd
- Farside farside.co.uk/btc/ (month page merged with the all-data page) Total column summed over 20 trading days 2026-08-21 to 2026-09-18 (USD millions x 1e6); weekends and holidays have no row
- flows_30d.us_spot_eth_etf_net_flow_usd
- Farside farside.co.uk/eth/ (month page merged with the all-data page) Total column summed over 20 trading days 2026-08-21 to 2026-09-18 (USD millions x 1e6); weekends and holidays have no row
- flows_30d.btc_exchange_net_inflow_usd
- Coin Metrics community timeseries/asset-metrics btc FlowInExUSD minus FlowOutExUSD summed over 2026-08-21 to 2026-09-19 (positive = coins moved onto exchanges); 30 of 30 rows flash (preliminary, Coin Metrics revises them)
- flows_30d.btc_market_cap_change_usd
- Coin Metrics CapMrktCurUSD point on or before 2026-09-19 minus point on or before 2026-08-20; PriceUSD 73,071 to 81,262 on the same dates; revaluation, not money in
- flows_30d.chain_tvl_change_usd
- DefiLlama api.llama.fi/v2/historicalChainTvl/{chain} for 12 of 12 chains, point on or before 2026-09-19 minus point on or before 2026-08-20; USD TVL mixes deposits and price revaluation, so it is not a flow until decomposed and never a ribbon
- flows_30d.total_market_cap_usd
- CoinGecko api.coingecko.com/api/v3/global, snapshot at fetch time 2026-09-20T23:22:18Z, not a window figure
- flows_7d.stablecoin_net_issuance_usd
- DefiLlama stablecoins.llama.fi/stablecoincharts/all totalCirculatingUSD.peggedUSD, point on or before 2026-09-19 minus point on or before 2026-09-12 (310,233,106,315 to 310,016,997,435)
- flows_7d.stablecoin_change_by_chain_usd
- DefiLlama stablecoincharts/{chain} totalCirculatingUSD.peggedUSD for 12 of 12 chains, point on or before 2026-09-19 minus point on or before 2026-09-12; a chain's change mixes new issuance and bridging, so the Sankey absorbs net issuance pro rata into the gaining chains and bridges the rest from the losing chains
- flows_7d.us_spot_btc_etf_net_flow_usd
- Farside farside.co.uk/btc/ (month page merged with the all-data page) Total column summed over 5 trading days 2026-09-14 to 2026-09-18 (USD millions x 1e6); weekends and holidays have no row
- flows_7d.us_spot_eth_etf_net_flow_usd
- Farside farside.co.uk/eth/ (month page merged with the all-data page) Total column summed over 5 trading days 2026-09-14 to 2026-09-18 (USD millions x 1e6); weekends and holidays have no row
- flows_7d.btc_exchange_net_inflow_usd
- Coin Metrics community timeseries/asset-metrics btc FlowInExUSD minus FlowOutExUSD summed over 2026-09-13 to 2026-09-19 (positive = coins moved onto exchanges); 7 of 7 rows flash (preliminary, Coin Metrics revises them)
- flows_7d.btc_market_cap_change_usd
- Coin Metrics CapMrktCurUSD point on or before 2026-09-19 minus point on or before 2026-09-12; PriceUSD 77,252 to 81,262 on the same dates; revaluation, not money in
- flows_7d.chain_tvl_change_usd
- DefiLlama api.llama.fi/v2/historicalChainTvl/{chain} for 12 of 12 chains, point on or before 2026-09-19 minus point on or before 2026-09-12; USD TVL mixes deposits and price revaluation, so it is not a flow until decomposed and never a ribbon
- flows_7d.total_market_cap_usd
- CoinGecko api.coingecko.com/api/v3/global, snapshot at fetch time 2026-09-20T23:22:18Z, not a window figure
- flows_1d.stablecoin_net_issuance_usd
- DefiLlama stablecoins.llama.fi/stablecoincharts/all totalCirculatingUSD.peggedUSD, point on or before 2026-09-19 minus point on or before 2026-09-18 (309,519,353,146 to 310,016,997,435)
- flows_1d.stablecoin_change_by_chain_usd
- DefiLlama stablecoincharts/{chain} totalCirculatingUSD.peggedUSD for 12 of 12 chains, point on or before 2026-09-19 minus point on or before 2026-09-18; a chain's change mixes new issuance and bridging, so the Sankey absorbs net issuance pro rata into the gaining chains and bridges the rest from the losing chains
- flows_1d.us_spot_btc_etf_net_flow_usd
- Farside farside.co.uk/btc/: no trading-day row between 2026-09-18 (exclusive) and 2026-09-19 (weekend, holiday or not yet published), last Farside row 2026-09-18 (433.0 mn) is counted in the longer windows that contain it
- flows_1d.us_spot_eth_etf_net_flow_usd
- Farside farside.co.uk/eth/: no trading-day row between 2026-09-18 (exclusive) and 2026-09-19 (weekend, holiday or not yet published), last Farside row 2026-09-18 (143.7 mn) is counted in the longer windows that contain it
- flows_1d.btc_exchange_net_inflow_usd
- Coin Metrics community timeseries/asset-metrics btc FlowInExUSD minus FlowOutExUSD summed over 2026-09-19 to 2026-09-19 (positive = coins moved onto exchanges); 1 of 1 rows flash (preliminary, Coin Metrics revises them)
- flows_1d.btc_market_cap_change_usd
- Coin Metrics CapMrktCurUSD point on or before 2026-09-19 minus point on or before 2026-09-18; PriceUSD 80,944 to 81,262 on the same dates; revaluation, not money in
- flows_1d.chain_tvl_change_usd
- DefiLlama api.llama.fi/v2/historicalChainTvl/{chain} for 12 of 12 chains, point on or before 2026-09-19 minus point on or before 2026-09-18; USD TVL mixes deposits and price revaluation, so it is not a flow until decomposed and never a ribbon
- flows_1d.total_market_cap_usd
- CoinGecko api.coingecko.com/api/v3/global, snapshot at fetch time 2026-09-20T23:22:18Z, not a window figure
Source health, this run source and HTTP status (the counts per status when a source's fetches disagree)
| Source | Status |
|---|---|
| coinmetrics | 200 |
| defillama | 200 |
| coinbase | 200 |
| kraken | 200 |
| bitstamp | 200 |
| fred | 200 |
| polymarket | 200 |
| alternative_me | 200 |
| cftc | 200 |
| sec | 200 |
| coingecko | skipped:no_key |
| binance | 200 |
| defillama_flows | 200 |
| coinmetrics_flows | 200 |
| farside | 200 |
| coingecko_global | 200 |
Attribution
- Coin Metrics community data, CC BY-NC 4.0 (coinmetrics.io)
- CoinGecko (coingecko.com), Demo plan, personal use with attribution
- alternative.me Crypto Fear and Greed index, attribution required
- DefiLlama (defillama.com), open data
- Polymarket (polymarket.com), public Gamma, CLOB and Data APIs
- Coinbase Exchange public market data (api.exchange.coinbase.com)
- Binance spot public market data (api.binance.com), laptop runs only
Last 10 runs at /data/runs.json; twins for Power BI at movers.csv, breadth.csv, prices_btc.csv, runs.csv. Latest breadth through /api/barometer-latest.