> ## Documentation Index
> Fetch the complete documentation index at: https://tokenterminal.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To query the Token Terminal data catalog, read https://tokenterminal.com/docs/catalog/agents-manual.md first. It is the whole catalog as one page: table naming grammar, key columns, partition and cluster rules, units, additivity, and the tables that are documented but not served yet.
> Never query a catalog table on a time bound alone. Also filter its cluster key, which you read from INFORMATION_SCHEMA.COLUMNS; an empty result means the object is a view, whose pruning contract is on its page. Compute is billed to the caller's own Google Cloud project.

# Region hit rate

> Region accuracy for attributed accounts whose band is known in advance.

One row per project, chain family, expected region and confidence tier. `hit_rate` is `hits` divided by `accounts`, the share of that project's accounts on that chain family whose derived `region` matched `expected_band`. Every combination is reported regardless of size, but the automated modal-band check behind this table only asserts on a (project, chain family) pair once it has at least five accounts with a resolved region band -- below that, the pair passes vacuously rather than being judged on too little evidence.

## Columns

<table>
  <thead>
    <tr>
      <th width="200">Column</th>
      <th width="120">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr><td>`project_id`</td><td>STRING</td><td>Project the accounts are attributed to, such as an exchange running hot wallets.</td></tr>
    <tr><td>`chain_family`</td><td>STRING</td><td>`evm` or `svm`; joins `dimensions.chains`.</td></tr>
    <tr><td>`expected_band`</td><td>STRING</td><td>Region band the account is expected to fall in, known in advance rather than derived from activity. One of the same seven UTC-offset bands as [Accounts ▸ Registry](https://tokenterminal.com/docs/catalog/accounts/registry.md)'s `region`.</td></tr>
    <tr><td>`region_confidence`</td><td>STRING</td><td>`high`, `medium` or `low`, or null when no tier was met, the confidence tier the row's accounts were measured at.</td></tr>
    <tr><td>`accounts`</td><td>INT64</td><td>Attributed accounts for that project, chain family and confidence tier with a known expected band.</td></tr>
    <tr><td>`hits`</td><td>INT64</td><td>Of those, the accounts whose derived `region` matched `expected_band`.</td></tr>
    <tr><td>`hit_rate`</td><td>FLOAT64</td><td>`hits` divided by `accounts`, from `safe_divide`.</td></tr>
  </tbody>
</table>

## Sample queries

**One project's hit rate by confidence**

Filtering to one `project_id` shows whether the hit rate rises with `region_confidence`, the pattern the tier thresholds are meant to produce.

```sql theme={null}
select
    chain_family,
    region_confidence,
    accounts,
    hits,
    hit_rate
from `reports_accounts.region_hit_rate`
where project_id = 'coinbase'
order by region_confidence
```

**Hit rate across every project, at high confidence**

Summing `hits` and `accounts` before dividing avoids averaging an average across projects of very different sizes.

```sql theme={null}
select
    project_id,
    sum(hits) as hits,
    sum(accounts) as accounts,
    safe_divide(sum(hits), sum(accounts)) as hit_rate
from `reports_accounts.region_hit_rate`
where region_confidence = 'high'
group by project_id
order by hit_rate desc
```

**Project name alongside the hit rate**

`project_id` joins `dimensions.projects` for the display name.

```sql theme={null}
select
    projects.name,
    rate.chain_family,
    rate.region_confidence,
    rate.hit_rate
from `reports_accounts.region_hit_rate` as rate
join `dimensions.projects` as projects
    using (project_id)
where rate.region_confidence = 'high'
order by rate.hit_rate desc
limit 50
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.