Token supply dynamics, vesting analysis, inflation modeling, and valuation frameworks for crypto tokens
Tokenomics — the study of token supply dynamics, distribution, and value accrual — is one of the most important factors in crypto asset analysis. Supply changes directly affect price: new tokens entering circulation create selling pressure, while burns and locks reduce it. Understanding these dynamics lets you estimate dilution risk, identify overvalued or undervalued tokens, and anticipate price-moving unlock events.
Price is a function of demand and supply. In crypto, supply is programmable and constantly changing:
total_supply = maximum tokens that will ever exist (or current total minted)
circulating_supply = tokens currently available for trading
locked_supply = total_supply - circulating_supply
circulating_pct = circulating_supply / total_supply * 100
market_cap = price * circulating_supply
fdv = price * total_supply
fdv_mcap_ratio = fdv / market_cap
The FDV/MCap ratio measures future dilution risk:
| FDV/MCap | Dilution Risk | Interpretation |
|---|---|---|
| 1.0-1.5 | Low | Most supply already circulating |
| 1.5-3.0 | Moderate | Significant supply still locked |
| 3.0-5.0 | High | Majority of supply not yet released |
| >5.0 | Very High | Token will face massive dilution |
annual_new_tokens = emissions + vesting_unlocks + rewards
annual_burned = fee_burns + buyback_burns
net_new_tokens = annual_new_tokens - annual_burned
net_inflation_rate = net_new_tokens / circulating_supply * 100 # percent per year
daily_emissions_usd = daily_new_tokens * token_price
percent_sold = 0.50 # assume 50% of new tokens are sold (conservative)
daily_sell_pressure = daily_emissions_usd * percent_sold
sell_pressure_ratio = daily_sell_pressure / daily_volume
# > 0.05 (5%) = significant selling pressure
# > 0.10 (10%) = heavy selling pressure
unlock_amount_tokens = 10_000_000
avg_daily_volume_tokens = 5_000_000
unlock_volume_ratio = unlock_amount_tokens / avg_daily_volume_tokens
# Impact assessment:
# < 1x daily volume: minor impact
# 1-5x daily volume: moderate impact, expect 2-5% drawdown
# 5-10x daily volume: major impact, expect 5-15% drawdown
# > 10x daily volume: severe impact, expect 10-30% drawdown
| Category | Typical Range | Red Flag |
|---|---|---|
| Team/Founders | 15-25% | >30% |
| Investors (Seed+Series) | 10-30% | >40% |
| Community/Ecosystem | 20-40% | <15% |
| Treasury/DAO | 10-20% | <5% |
| Public Sale | 5-20% | <2% |
| Advisors | 2-5% | >10% |
token-holder-analysis skill)def distribution_score(team_pct: float, investor_pct: float,
community_pct: float, cliff_months: int,
vesting_months: int) -> str:
"""Rate token distribution quality."""
score = 0
insider_pct = team_pct + investor_pct
if insider_pct < 30: score += 3
elif insider_pct < 50: score += 1
if community_pct > 30: score += 2
elif community_pct > 20: score += 1
if cliff_months >= 12: score += 2
elif cliff_months >= 6: score += 1
if vesting_months >= 36: score += 2
elif vesting_months >= 24: score += 1
if score >= 8: return "Excellent"
if score >= 6: return "Good"
if score >= 4: return "Moderate"
return "Poor"
# Price-to-Earnings (for fee-generating protocols)
pe_ratio = fdv / annualized_net_revenue
# Price-to-Sales
ps_ratio = fdv / annualized_total_volume
# Price-to-Fees
pf_ratio = fdv / annualized_protocol_fees
# Revenue Multiple (adjusted for token value accrual)
rev_multiple = fdv / (annualized_fees * fee_share_to_token_holders)
Typical ranges (crypto, highly variable):
# Network Value to Transactions (NVT)
nvt = market_cap / daily_transaction_volume_usd
# High NVT (>100): potentially overvalued or store-of-value
# Low NVT (<20): potentially undervalued or high activity
# Market Value to Realized Value (MVRV)
# realized_value = sum of each token at its last-moved price
mvrv = market_cap / realized_value
# MVRV > 3.0: historically overvalued zone
# MVRV < 1.0: historically undervalued zone
def comparable_analysis(target: dict, peers: list[dict]) -> dict:
"""Compare target token metrics against peer group.
Each dict has: name, fdv, revenue, tvl, users
Returns premium/discount percentages.
"""
peer_fdv_rev = [p["fdv"] / p["revenue"] for p in peers if p["revenue"] > 0]
peer_fdv_tvl = [p["fdv"] / p["tvl"] for p in peers if p["tvl"] > 0]
avg_fdv_rev = sum(peer_fdv_rev) / len(peer_fdv_rev) if peer_fdv_rev else 0
avg_fdv_tvl = sum(peer_fdv_tvl) / len(peer_fdv_tvl) if peer_fdv_tvl else 0
target_fdv_rev = target["fdv"] / target["revenue"] if target["revenue"] > 0 else 0
target_fdv_tvl = target["fdv"] / target["tvl"] if target["tvl"] > 0 else 0
return {
"fdv_rev_premium": (target_fdv_rev / avg_fdv_rev - 1) * 100 if avg_fdv_rev else None,
"fdv_tvl_premium": (target_fdv_tvl / avg_fdv_tvl - 1) * 100 if avg_fdv_tvl else None,
}
| Mechanism | Description | Valuation Impact |
|---|---|---|
| Fee sharing | Holders receive protocol revenue | Direct cash flow, use DCF |
| Governance | Voting rights on protocol | Hard to value, often overpriced |
| Utility | Required for protocol use | Demand scales with usage |
| Buyback & burn | Protocol buys and burns | Reduces supply, structural bid |
| Staking rewards | Yield from staking | Inflationary if from emissions |
| veToken model | Lock for boosted rewards + governance | Reduces circulating supply |
PumpFun tokens on Solana have simplified tokenomics:
Analysis focus for PumpFun tokens shifts from supply dynamics to:
token-holder-analysis)liquidity-analysis)| Skill | Integration |
|---|---|
defillama-api | Fetch TVL, revenue, fees for valuation metrics |
token-holder-analysis | Analyze holder concentration and whale behavior |
coingecko-api | Fetch supply data, market cap, FDV |
liquidity-analysis | Assess trading liquidity relative to supply |
risk-management | Supply dilution as risk factor |
position-sizing | Adjust size for dilution risk |
references/supply_analysis.md — Circulating supply tracking, inflation modeling, unlock analysis, burn mechanicsreferences/valuation_frameworks.md — Revenue-based valuation, NVT, MVRV, comparable analysis, value accrualscripts/tokenomics_analyzer.py — Fetch and analyze token supply metrics from CoinGecko, calculate dilution risk and basic valuationsscripts/supply_modeler.py — Project token supply over 12 months given emission and burn parameters, scenario analysis