Skip to main content

Table Overview

All tables live in the allium_identity.geo schema. For enum/field-value definitions see the Field Values Reference.
Chain values differ across tables. master_list and coverage_summary use per-chain values (ethereum, polygon, …). addresses_geography and addresses_timezones collapse all EVM chains into evm, so their chain is one of evm / solana / tron. Joining these tables on chain requires mapping EVM chains to evm — see Joining.

1. Master List

Table: allium_identity.geo.master_list The canonical classification for every address across the 12 supported chains: eligibility (measurability), wallet type (hosted vs unhosted), and — for hosted local/regional exchanges — an operating country. Grain: One row per (chain, address). Chain values: per-chain.
not_measurable is a small hard-excluded set (~0.06% of rows: contracts, tokens, infra, genesis). The large “unattributed” population is potentially_measurable addresses with no confident country yet — absent from addresses_geography, not flagged here.
Example — measurability breakdown by chain:

2. Addresses Geography

Table: allium_identity.geo.addresses_geography Country-level attribution for addresses with a confident signal. Combines label-derived country signals with flow-based wallet-relatedness propagation. Grain: One row per (chain, address). Chain values: evm, solana, tron. Coverage: ~20M addresses.
Filter on confidence (the conviction tier), not on a numeric score threshold.
Example — top countries at high conviction:

3. Addresses Timezones

Table: allium_identity.geo.addresses_timezones Timezone inference from transaction-timing patterns, percentile-rank calibrated. Requires ≥ 10 transactions; CEX, MEV, manual-labeled, and contract addresses are excluded. Grain: One row per (chain, address). Chain values: evm, solana, tron. Rows: ~166M. Conviction thresholds are percentile-based: Very High ≈ top 1%, High ≈ top 5%, Moderate ≈ top 20%, Low ≈ top 40%, else Very Low.
Timezone ≠ country: use addresses_geography for country attribution.

4. Coverage Summary

Table: allium_identity.geo.coverage_summary Pre-aggregated measurability statistics by chain, wallet type, and hosted subtype. Grain: One row per (chain, measurability, wallet_type, hosted_subtype). Chain values: per-chain.

5. Exchange Country Attribution

Table: allium_identity.geo.exchange_country_attribution Per-exchange operating-country attribution for local/regional exchanges, blending SimilarWeb web traffic, on-chain counterparty flows, and the exchange registry. Global exchanges are excluded here — their geography is a distribution, served by exchange_gravity_weekly. Grain: One row per exchange. Count: 365 exchanges. Example — exchanges by operating country:

6. Exchange Gravity Weekly

Table: allium_identity.geo.exchange_gravity_weekly Weekly geographic distribution of flows for global exchanges (top_global + major_global, ~30 exchanges including Binance, Coinbase, OKX, Bybit). These exchanges have no single operating country, so instead of one top_country this model exposes the full country distribution per exchange, direction, and week, derived purely from on-chain flows via a gravity model: each measurable counterparty pulls a slice of the exchange’s volume toward its country. Grain: One row per (week_start, exchange, direction, country). History: from 2026-01-01.
Counterparty buckets: geo_attributed (numerator), unattributed_addressable (denominator only), not_measurable and other_exchange (dropped from the denominator so contracts and CEX-to-CEX settlement don’t distort coverage), unknown (noise).
Example — where are Binance deposits coming from? (latest week):

7. Entity Flows Weekly

Table: allium_identity.geo.entity_flows_weekly Weekly USDC/USDT entity-to-entity flow matrix. Every adjusted-volume USDC/USDT transfer has its sender and receiver resolved to an entity, then aggregated. Country attribution is intentionally absent here — entities are directly known. Grain: One row per (week_start, token, from_entity, to_entity, classification). History: from 2020-01-01.
Entity resolution order (first non-null wins): raw_entity label → wallet-classification behavioral segment (Consumer/Institutional/…) → hosted/unhosted wallet_typeunattributed. Only adjusted-volume transfers are included; dust, mint_burn, and infra_automation are dropped.
Example — top CEX → DeFi USDC flows (last 8 weeks):

8. Country Corridors Weekly

Table: allium_identity.geo.country_corridors_weekly Weekly USDC/USDT country-to-country flow matrix, exact attribution only. Each transfer leg gets a country from the best exact signal; global-exchange legs are carried as global_cex (not distributed — see table 9). Grain: One row per (week_start, token, from_country, to_country). History: from 2020-01-01. Per-leg country resolution (first match wins): global CEX → global_cex; hosted local/regional → operating country; unhosted → addresses_geography country; else unattributed. Example — top cross-border USDT corridors (last 12 weeks):

9. Country Corridors Distributed Weekly

Table: allium_identity.geo.country_corridors_distributed_weekly Country corridors with global-exchange legs redistributed across counterparty countries using exchange_gravity_weekly. This is the expected-value view: a global_cex leg is fanned out by that exchange’s weekly gravity shares (withdrawal shares for a from-leg, deposit shares for a to-leg). Shares sum to 1.0, so total volume is conserved. Grain: One row per (week_start, token, from_country, to_country). History: from 2020-01-01.
Transfer counts are not distributed (a transfer can’t be split), so this view has no transfer_count. Use country_corridors_weekly for exact corridors and counts; use this view for total country-to-country volume including global-exchange flows.
Example — net USDT flow balance per country (last 8 weeks):

Data Freshness

Next Steps

Example Queries

Compliance, regional analysis, exchange gravity, and cross-border flow recipes

Field Values Reference

Data dictionary, data quality, and best practices