Skip to main content
On-chain concentration data for our stablecoin universe.

What is it?

The Holder Concentration Index (HCI) measures how much of a token’s circulating supply is held by a small group of wallets. When a handful of addresses control most of the supply, you face amplified depeg risk if those holders sell simultaneously. For each token, you get data across two cohorts: Each cohort gives you three fields:
  • index — a Herfindahl-style score (0–1): sum of squared fractional holdings. Higher = more concentrated.
  • topSharePct — the linear percentage of supply held by those wallets (0–100). This is not index × 100; the two measure different things.
  • riskBand — categorical classification based on threshold derivation (see below).

Risk Bands

riskBand is derived from the Herfindahl index field: You’ll find the derivation thresholds in every API response as meta.riskBandThresholds, so you can verify classification without consulting external docs.
HCI and depeg risk are complementary signals. A token can have a low Depeg Monitor score (price is stable today) but an extreme HCI (a single holder controls 60%+ of supply). The HCI surfaces latent structural risk that depeg price metrics miss until it materialises.

How HCI Affects the Risk Rating

HCI feeds directly into the Structural risk component (30% of the Risk Rating). For non-fiat tokens, the Risk Rating uses topSharePct — the linear supply share — to apply risk adjustments:
HCI adjustments are exempt for fiat_reserve tokens (USDC, USDT, etc.). Fiat-backed holders redeem at $1 with the issuer — there is no exit-dump amplification risk. Crypto-collateral, delta-neutral, and algo tokens face real cascade risk from concentrated exits.
Note the distinction: the API’s riskBand is computed from the Herfindahl index (a non-linear concentration measure), while the Risk Rating adjustment uses topSharePct (a linear supply share). A token can sit in the medium Herfindahl band while still crossing the 30% topSharePct threshold that triggers a Risk Rating risk adjustment — and vice versa.

Filters and Sorting

byRiskBand counts

meta.byRiskBand is always computed before the riskBand filter. This lets you display the full ecosystem breakdown (how many tokens are extreme right now?) even when you are viewing a filtered subset. meta.totalUnfiltered gives you the unfiltered record count for the same reason.

Common Use Cases