> ## 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><code>project\_id</code></td><td>STRING</td><td>Project the accounts are attributed to, such as an exchange running hot wallets.</td></tr>
    <tr><td><code>chain\_family</code></td><td>STRING</td><td><code>evm</code> or <code>svm</code>; joins <code>dimensions.chains</code>.</td></tr>
    <tr><td><code>expected\_band</code></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 <a href="/docs/catalog/accounts/registry">Accounts ▸ Registry</a>'s <code>region</code>.</td></tr>
    <tr><td><code>region\_confidence</code></td><td>STRING</td><td><code>high</code>, <code>medium</code> or <code>low</code>, or null when no tier was met, the confidence tier the row's accounts were measured at.</td></tr>
    <tr><td><code>accounts</code></td><td>INT64</td><td>Attributed accounts for that project, chain family and confidence tier with a known expected band.</td></tr>
    <tr><td><code>hits</code></td><td>INT64</td><td>Of those, the accounts whose derived <code>region</code> matched <code>expected\_band</code>.</td></tr>
    <tr><td><code>hit\_rate</code></td><td>FLOAT64</td><td><code>hits</code> divided by <code>accounts</code>, from <code>safe\_divide</code>.</td></tr>
  </tbody>
</table>

## Sample queries

<Tabs>
  <Tab title="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
    ```
  </Tab>

  <Tab title="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
    ```
  </Tab>

  <Tab title="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
    ```
  </Tab>
</Tabs>
