Skip to content

Valuation Lab

How much Intents volume would have to grow for buybacks and burn to cover issuance, and how likely that is if volume keeps behaving as it has. Conditional on stated assumptions; not a forecast.

Required annual growth of Intents volume

To reach CR = 1 in three years at 2.5% issuance, 30-day volume would have to grow 96.5% a year on the buyback basis; under the HSP-029 rate of 1.6% it would be 68.9%.

IssuanceTake rate basisV* per day1 year3 years5 years
2.5%Buyback wallet$989.9M+659%+97%+50%
2.5%All revenue$654.3M+402%+71%+38%
1.6% (HSP-029)Buyback wallet$628.3M+382%+69%+37%
1.6% (HSP-029)All revenue$415.3M+218%+47%+26%

From a 30-day average of $130.4M per day; take rates 3.62 bp (buyback wallet) and 5.48 bp (all revenue) held at their current values.

Query and model

Computed by valuation.reverse_table (src/capture/models/valuation.py) from the tables below.

supply_daily (sql/supply_daily.sql)

-- supply_daily: end-of-day total supply and gas burn, in NEAR (yocto / 1e24).
-- Params: @start_date, @end_date (inclusive).
-- burnt_near = tokens_burnt of execution outcomes + receipt_conversion_tokens_burnt of transactions
-- (DATA_AUDIT.md check 2). Values are FLOAT64 in the source: ~15 significant digits.
WITH blk AS (
  SELECT
    block_date,
    MAX(block_height) AS block_height,
    MAX_BY(total_supply, block_height) AS total_supply
  FROM `bigquery-public-data.crypto_near_mainnet_us.blocks`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
),
eo AS (
  SELECT block_date, SUM(tokens_burnt) AS burnt_receipts
  FROM `bigquery-public-data.crypto_near_mainnet_us.execution_outcomes`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
),
tx AS (
  SELECT block_date, SUM(receipt_conversion_tokens_burnt) AS burnt_conversion
  FROM `bigquery-public-data.crypto_near_mainnet_us.transactions`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
),
circ AS (
  SELECT
    block_date,
    MAX_BY(circulating_tokens_supply, computed_at_block_height) AS circulating_supply
  FROM `bigquery-public-data.crypto_near_mainnet_us.circulating_supply`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
)
SELECT
  block_date AS `date`,
  block_height,
  total_supply / 1e24 AS total_supply_near,
  (burnt_receipts + burnt_conversion) / 1e24 AS burnt_near,
  burnt_receipts / 1e24 AS burnt_receipts_near,
  burnt_conversion / 1e24 AS burnt_conversion_near,
  circulating_supply / 1e24 AS circulating_supply_near
FROM blk
LEFT JOIN eo USING (block_date)
LEFT JOIN tx USING (block_date)
LEFT JOIN circ USING (block_date)
ORDER BY 1

fee_wallet_inflows_daily (sql/fee_wallet_inflows_daily.sql)

-- fee_wallet_inflows_daily (raw balances): end-of-day liquid NEAR balance of the revenue wallets.
-- Params: @start_date, @end_date (inclusive), @wallets (ARRAY<STRING>).
-- ft_balances_daily has no block_date column; its partition column is epoch_date, so the date
-- filter is on epoch_date (documented exception to CLAUDE.md rule 2). liquid is in NEAR units.
-- Daily changes are derived in Python (capture.extract.fee_wallets).
SELECT
  epoch_date AS `date`,
  account_id AS wallet,
  'NEAR' AS token,
  liquid AS balance_end
FROM `bigquery-public-data.crypto_near_mainnet_us.ft_balances_daily`
WHERE epoch_date BETWEEN @start_date AND @end_date
  AND account_id IN UNNEST(@wallets)
ORDER BY 1, 2

price_daily (HTTP API)

https://api.coingecko.com/api/v3/coins/near/market_chart/range

defillama_intents_daily (HTTP API)

https://api.llama.fi/summary/dexs/near-intents; https://api.llama.fi/summary/fees/near-intents; https://api.llama.fi/summary/fees/near-intents?dataType=dailyRevenue; https://api.llama.fi/summary/fees/near-intents?dataType=dailyHoldersRevenue
  • supply_daily.parquet · BigQuery public dataset · 2025-05-10 to 2026-11-01 · pulled 2026-11-02T03:40:33Z · sha256 382b732b
  • fee_wallet_inflows_daily.parquet · BigQuery public dataset · 2025-11-07 to 2026-10-31 · pulled 2026-11-02T03:40:35Z · sha256 b32041f1
  • price_daily.parquet · CoinGecko API · 2025-11-04 to 2026-11-01 · pulled 2026-11-02T03:43:33Z · sha256 48afd3b4
  • defillama_intents_daily.parquet · DefiLlama API · 2024-12-10 to 2026-10-30 · pulled 2026-11-02T03:43:25Z · sha256 ae50ca9a

Monte Carlo of the coverage ratio, 60 months

If volume keeps its historical volatility but stops trending (flat), 28% of 10,000 paths have CR ≥ 1 in month 60 at 2.5% issuance. The other two scenarios carry the launch-phase growth and imply far larger volumes, shown under each panel.

Inflation path
Price held at
Flat: no drift, historical volatility
P(CR≥1), m12
9%
P(CR≥1), m36
21%
P(CR≥1), m60
28%
Volume implied, m12
$118.8M/d (0.9x)
Volume implied, m36
$136.1M/d (1.0x)
Volume implied, m60
$145.3M/d (1.1x)

Median first month with CR ≥ 1: month 59

Decay: historical drift, halving every 12 months
P(CR≥1), m12
33%
P(CR≥1), m36
59%
P(CR≥1), m60
61%
Volume implied, m12
$651.4M/d (5.0x)
Volume implied, m36
$2.67B/d (20.5x)
Volume implied, m60
$3.93B/d (30.1x)

Median first month with CR ≥ 1: month 15

Historical: growth as in the sample (launch-driven)
P(CR≥1), m12
45%
P(CR≥1), m36
96%
P(CR≥1), m60
99.7%
Volume implied, m12
$1.18B/d (9.0x)
Volume implied, m36
$131.94B/d (1011.8x)
Volume implied, m60
$13.8T/d (105813.6x)

Median first month with CR ≥ 1: month 12

Growth sample: 16 monthly changes from 2025-07, drawn in 3-month blocks (14 blocks). Mean monthly log growth 0.191; from 2025-12 on it is 0.006 (11 months). The historical scenario is driven by the launch phase.

Month-0 check: at the latest price the model starts at CR 0.144; at the mean price of the same 30 days ($4.92) it gives 0.121, against a measured 0.122. The gap is the price move inside the window.

Query and model

Computed by valuation.run_scenarios (block bootstrap, seed in config) from the tables below.

supply_daily (sql/supply_daily.sql)

-- supply_daily: end-of-day total supply and gas burn, in NEAR (yocto / 1e24).
-- Params: @start_date, @end_date (inclusive).
-- burnt_near = tokens_burnt of execution outcomes + receipt_conversion_tokens_burnt of transactions
-- (DATA_AUDIT.md check 2). Values are FLOAT64 in the source: ~15 significant digits.
WITH blk AS (
  SELECT
    block_date,
    MAX(block_height) AS block_height,
    MAX_BY(total_supply, block_height) AS total_supply
  FROM `bigquery-public-data.crypto_near_mainnet_us.blocks`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
),
eo AS (
  SELECT block_date, SUM(tokens_burnt) AS burnt_receipts
  FROM `bigquery-public-data.crypto_near_mainnet_us.execution_outcomes`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
),
tx AS (
  SELECT block_date, SUM(receipt_conversion_tokens_burnt) AS burnt_conversion
  FROM `bigquery-public-data.crypto_near_mainnet_us.transactions`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
),
circ AS (
  SELECT
    block_date,
    MAX_BY(circulating_tokens_supply, computed_at_block_height) AS circulating_supply
  FROM `bigquery-public-data.crypto_near_mainnet_us.circulating_supply`
  WHERE block_date BETWEEN @start_date AND @end_date
  GROUP BY block_date
)
SELECT
  block_date AS `date`,
  block_height,
  total_supply / 1e24 AS total_supply_near,
  (burnt_receipts + burnt_conversion) / 1e24 AS burnt_near,
  burnt_receipts / 1e24 AS burnt_receipts_near,
  burnt_conversion / 1e24 AS burnt_conversion_near,
  circulating_supply / 1e24 AS circulating_supply_near
FROM blk
LEFT JOIN eo USING (block_date)
LEFT JOIN tx USING (block_date)
LEFT JOIN circ USING (block_date)
ORDER BY 1

fee_wallet_inflows_daily (sql/fee_wallet_inflows_daily.sql)

-- fee_wallet_inflows_daily (raw balances): end-of-day liquid NEAR balance of the revenue wallets.
-- Params: @start_date, @end_date (inclusive), @wallets (ARRAY<STRING>).
-- ft_balances_daily has no block_date column; its partition column is epoch_date, so the date
-- filter is on epoch_date (documented exception to CLAUDE.md rule 2). liquid is in NEAR units.
-- Daily changes are derived in Python (capture.extract.fee_wallets).
SELECT
  epoch_date AS `date`,
  account_id AS wallet,
  'NEAR' AS token,
  liquid AS balance_end
FROM `bigquery-public-data.crypto_near_mainnet_us.ft_balances_daily`
WHERE epoch_date BETWEEN @start_date AND @end_date
  AND account_id IN UNNEST(@wallets)
ORDER BY 1, 2

price_daily (HTTP API)

https://api.coingecko.com/api/v3/coins/near/market_chart/range

defillama_intents_daily (HTTP API)

https://api.llama.fi/summary/dexs/near-intents; https://api.llama.fi/summary/fees/near-intents; https://api.llama.fi/summary/fees/near-intents?dataType=dailyRevenue; https://api.llama.fi/summary/fees/near-intents?dataType=dailyHoldersRevenue
  • supply_daily.parquet · BigQuery public dataset · 2025-05-10 to 2026-11-01 · pulled 2026-11-02T03:40:33Z · sha256 382b732b
  • fee_wallet_inflows_daily.parquet · BigQuery public dataset · 2025-11-07 to 2026-10-31 · pulled 2026-11-02T03:40:35Z · sha256 b32041f1
  • price_daily.parquet · CoinGecko API · 2025-11-04 to 2026-11-01 · pulled 2026-11-02T03:43:33Z · sha256 48afd3b4
  • defillama_intents_daily.parquet · DefiLlama API · 2024-12-10 to 2026-10-30 · pulled 2026-11-02T03:43:25Z · sha256 ae50ca9a

Assumptions and their sources

price
The NEAR price in USD is held constant at its latest value in every run. This isolates volume, take rate and inflation; it is not a forecast and no price level is predicted. The 0.5x and 2x runs are sensitivities to that assumption.
volume
Start: the 30-day average daily Intents volume (DefiLlama). Each month multiplies it by exp(growth); growth is bootstrapped from monthly log changes of the monthly average since 2025-06, in blocks of 3 months.
Take rate
Buyback take rate (buyback wallet inflow / Intents volume, the basis of CR_float), one value per path drawn uniformly between the lowest and highest observed monthly value.
inflation
Two annual rates: 2.5 % constant (observed net supply growth is about 2.5 %, DATA_AUDIT.md Check 6), and the HSP-029 proposal: 2.5 % held for a 90-day grace period, then lowered to 1.6 % over 24 months and held. The proposal steps down every epoch; a linear monthly ramp approximates it. HSP-029 went to a vote in October 2026 and its result is not confirmed in our sources (data/reference/parameters.csv, events.csv).
supply
Total supply is held at its latest value, as in V*; real supply grows.
burn
Gas burn is held at its 30-day average in NEAR per day.
Scenarios
historical: bootstrapped growth as drawn (its drift is the history's)decay: zero-mean draws plus the historical drift, which halves every 12 monthsflat: zero-mean draws: no drift, historical volatility
  • Results are conditional on the stated assumptions, not forecasts; no price is predicted.
  • The growth sample is short and dominated by the launch phase: see growth.n_months, growth.mean_all and growth.mean_after_launch.
  • The historical and decay scenarios inherit a mean growth set by the launch phase; volume_p50_usd_per_day shows the volume each run implies. A probability close to 1 there rests on that volume, not on observed behaviour after the launch.
  • The tau range is the lowest to highest of a few complete months and the latest month is its maximum, so the drawn tau is below the current one on average and the flat scenario's median CR starts below the measured CR.
  • The buyback take rate has few complete months and was rising; its range is crude.
  • Real supply grows with issuance, which lowers CR slightly: the runs are a bit optimistic.
  • Buybacks are not burns (CLAUDE.md rule 6): CR is the float view, buyback plus gas burn.
  • Month 0 at the latest price differs from the measured CR_float because the buyback is USD converted at that price; at the mean price of the same 30 days the model reproduces it (start.cr_model_month0_at_window_price). CR in every run is therefore price-dependent.