DNH20

How DNH Index 20 is built

A transparent, rules-based gauge of the largest crypto assets by US-dollar market capitalization.

  • 20 names, cap-weighted, stables out.
  • Genesis 1,000 on 2025-01-01; 1 point = $2.4B of basket cap.
  • Official print is the cap-weighted 20.
  • Thermometer — not a fund, not investment advice.

Official print and ex-BTC

The violet DNH20 line is the official print.

Dashed levels at 700, 900, 1,100 and 1,300 mark the official print. They are not a trade signal.

ex-BTC is a window-local overlay (basket minus BTC, rebased in-window). It is not a second official print.

Direction of the official print — SMA20, SMA50, and a five-print slope — is on the regime page. It is not a trade signal. Print regime

Governance: change policy, corrections, IOSCO self-assessment →

Index family (methodology v1.0)

DNH20 ex-BTC, DNH20 ex-BTC/ETH, DNH20 Capped 30/20 and DNH20 Equal were approved on 2026-10-07. They are separate from the official print and never change it.

  • Universe: the official locked 20. ex-BTC drops the Bitcoin sector, ex-BTC/ETH also the Ethereum sector (DNHCS, ID first). Capped 30/20 and Equal hold all 20.
  • Capped 30/20: market-cap weights with the largest constituent capped at 30% and every other at 20%; excess is redistributed pro rata to uncapped names until none exceeds its cap.
  • Daily rebalance: weights from the previous day's stored book (market cap, or 1/N for Equal); the level moves by the weighted price relative of names priced on both days.
  • Missing data: below 80% priced weight the level is carried unchanged, never interpolated.
  • Base 1,000 on the first day of the first run of 90 consecutive complete stored days. No level is published before that and nothing is reconstructed from today's weights.

Formula

Each name is weighted by its share of the basket’s combined US-dollar market capitalization.

Weight_i = MarketCap_i / Σ MarketCap

Index = (Σ MarketCap / BaseMarketCap) × 1000

Eligibility

  • The index holds exactly 20 names, cap-weighted.
  • Stablecoins (USDT, USDC, DAI, FDUSD, USDe and other fiat pegs) are excluded.
  • Wrapped and liquid-staking IOUs (WBTC, cbBTC, stETH, wstETH) are dropped when the underlying is already a member, so the same cap is not counted twice.

Implementation

  • Manual denylist (symbol or vendor id, case-insensitive): FIGR_HELOC, figure-heloc, HELOC*, RAIN (rain / rain-protocol), CC / Canton, YLDS. Denied ids are never filled back from cache.
  • When a vendor sends tags, drop stablecoin, wrapped-tokens, liquid-staking-tokens (if the underlying is already in the universe), tokenized-rwa, tokenized-products, tokenized-treasury, real-world-assets, private-credit, heloc, and mortgage.
  • Liquidity screen when 24h volume is reported: at least $25M and volume / market cap of at least 0.40%. Missing volume does not fail the name.
  • In: eligible rank ≤ 18 and market cap ≥ 115% of the current rank-20 cutoff. Out: eligible rank ≥ 23 or market cap ≤ 85% of cutoff. Ranks 19–22 keep the current member unless it loses its price quote or is excluded.

Base & divisor

Genesis is 2025-01-01. The index is scaled to 1,000 points using a fixed divisor of $2.4T (combined basket capitalization at base).

Reconstitution

Membership is reviewed at 00:00 UTC with 85/115 hysteresis. Between reviews, prices of the 20 fixed members are updated every 10 minutes.

Weights move during the day; members do not, unless one loses its price quote or is excluded.

Open the rebalance lab

Pipeline

  1. Prices and market caps come from CoinPaprika (primary). If it is unavailable, CoinGecko and then OKX are used as backups, in that fixed order.
  2. Stablecoins, wrapped duplicates, excluded names and illiquid assets are filtered out before ranking.
  3. At 00:00 UTC membership is reviewed with the 85/115 band. Every 10 minutes the index is recalculated on the fixed 20 members.
  4. If every source fails, the last published level stays on screen, marked as delayed; nothing is estimated.

Back to the indexGuideAPIPerformance