Skip to main content
Geo-measurability works in two stages. First, master_list marks whether an address is even eligible for attribution (measurability). Second, addresses_geography records which eligible addresses actually received a country, and with what conviction. This page explains both, and why hosted and unhosted wallets require different methods.

Two-stage measurability

Stage 1 — eligibility (master_list.measurability). Almost every address is eligible:
measurabilityMeaningShare
potentially_measurableAn organic wallet that could be attributed~99.9%
not_measurableExcluded infrastructure (see reasons below)~0.06%
Only a small set is hard-excluded, via not_measurable_reason:
not_measurable_reasonWhat it flags
contractSmart-contract addresses
tokenToken / token-blacklist contracts
infrastructureBridges, chain/system addresses, other infra
genesisGenesis / burn addresses (0x0…0, 0x…dead, etc.)
Stage 2 — attribution coverage (addresses_geography). Being eligible does not guarantee a country. Only ~25% of addresses (~20M of ~80M) end up with a row in addresses_geography. The remaining ~75% are eligible but lack sufficient signal — they are not “missing data,” they simply have no confident attribution yet.
When you read “~25% coverage,” the denominator is all classified addresses, and the ~75% without a country are mostly unlabeled self-custody wallets whose counterparties/timing don’t yield a confident signal — not the hard-excluded not_measurable set (which is tiny).

Hosted vs Unhosted Wallets: Why They’re Different

master_list.wallet_type splits attributable wallets into hosted (custodial) and unhosted (self-custody) because they require completely different methods.

Hosted Wallets (Custodial)

Definition: Addresses controlled by a centralized entity (exchange, custodian) that holds funds on behalf of users. In master_list, hosted wallets are exchange-labeled addresses. Why they’re easier to measure:
  1. Declared operating country — exchanges disclose their headquarters / primary jurisdiction
  2. Regulatory footprint — license requirements reveal operating countries
  3. Web traffic signals — SimilarWeb shows where their users are located
  4. Single attribution — one local/regional exchange wallet maps to one country
Hosted subtypes (master_list.hosted_subtype):
SubtypeDescriptionGeo attribution
global_exchangeMajor CEX serving many countriesNo single country — distribution served by exchange_gravity_weekly
local_exchangeSingle-country CEXDirect country assignment from the registry
regional_exchangeMulti-country regional CEXPrimary operating region
These are the only three hosted subtypes produced today. hosted_geo_country is populated for local exchanges; hosted_geo_region for local and regional exchanges. Global-exchange wallets carry no per-wallet country.

Unhosted Wallets (Self-Custody)

Definition: Addresses where the user holds their own keys — MetaMask, Ledger, smart-contract wallets, general EOAs. This is the bulk of the population (~58M addresses). Why they’re harder to measure:
  1. No declared country — users don’t register with a jurisdiction
  2. Pseudonymous — no KYC
  3. Indirect signals only — geography must be inferred from counterparties, transaction timing, and wallet-relatedness clusters
  4. Multi-country usage — one wallet may be used from several countries (VPN, travel)
Attribution method (multi-stage inference):
  1. Direct labels — a labeled wallet with a known country
  2. Flow-based propagation — a wallet related to labeled wallets (via direct two-way transfers, shared funders, or shared CEX deposit wallets) inherits their country, weighted by relatedness
  3. Timezone inference — hour-of-day activity distribution suggests a region (supporting signal; see addresses_timezones)
The addresses_geography.reasoning column records, in plain language, exactly which signals drove each attribution (e.g. “Propagated from 20 related wallet(s) via shared funders within a 24-72h window.”).

Conviction, not probability

Attribution quality is expressed as a conviction level, not a 0–1 probability. addresses_geography.confidence (and addresses_timezones.conviction_level) use a five-tier scale:
ConvictionUse it for
Very High ConvictionCompliance / KYC (strongest signal)
High ConvictionCompliance and high-trust analysis
Moderate ConvictionRegional analysis
Low ConvictionExploration only
Very Low ConvictionExploration only; treat as weak
addresses_geography.score is a raw attribution strength (higher = stronger; it is not bounded to 0–1). Filter on the confidence conviction tier rather than on a numeric score threshold.

Why This Matters for Your Analysis

  • Understand the denominator. ~75% of addresses lack a country because they lack a confident signal — not because the data is broken. Smart contracts, infra, and burn addresses are separately flagged not_measurable in master_list.
  • Choose the right conviction floor. Compliance → High/Very High Conviction; regional sizing → Moderate and up; research → include all tiers but stratify.
  • Don’t mix hosted and unhosted. A country tied to a local exchange wallet is an operating jurisdiction; a country tied to an unhosted wallet is an inferred user location. They answer different questions.

Next Steps

Table Reference

Full column-level schema for every table

Geographic Intelligence

Back to the geographic intelligence overview