Token unlock schedule analysis and project treasury tracking — vesting cliffs, linear unlocks, team/investor/ecosystem token releases, treasury diversification, and sell pressure forecasting.
62
73%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./agent/src/skills/token-unlock-treasury/SKILL.mdTrack token vesting schedules, upcoming unlock events, and project treasury holdings to forecast sell pressure and assess project sustainability. Token unlocks are one of the most predictable and high-impact supply-side events in crypto — large unlocks consistently create short-term selling pressure.
Standard allocation categories:
| Category | Typical % | Lock Period | Vesting | Sell Pressure Risk |
|---|---|---|---|---|
| Team / Founders | 15-25% | 12-24 months cliff | 2-4 year linear | High (sell to fund lifestyle / diversify) |
| Investors (Seed) | 5-15% | 6-12 months cliff | 1-2 year linear | Very high (VC fund lifecycle: must return capital) |
| Investors (Series A+) | 10-20% | 6-12 months cliff | 1-2 year linear | Very high |
| Ecosystem / Community | 20-40% | Variable | Ongoing emissions | Medium (depends on incentive design) |
| Treasury / Foundation | 10-20% | None (discretionary) | DAO-governed | Low-medium (depends on governance) |
| Public Sale / Airdrop | 5-15% | None | Immediately liquid | Initial dump, then stabilizes |
| Advisors | 2-5% | 6-12 months cliff | 1-2 year linear | Medium |
Cliff unlock:
Linear / continuous unlock:
Milestone-based unlock:
def assess_unlock_impact(unlock_amount, circulating_supply, daily_volume, recipient_type):
"""
Assess the market impact of an upcoming token unlock.
"""
# Unlock as % of circulating supply
supply_pct = unlock_amount / circulating_supply * 100
# Unlock as multiple of daily volume
volume_multiple = unlock_amount / daily_volume
# Base impact score
if supply_pct > 10:
base_impact = "critical" # >10% of supply = very high impact
elif supply_pct > 5:
base_impact = "high"
elif supply_pct > 2:
base_impact = "medium"
elif supply_pct > 0.5:
base_impact = "low"
else:
base_impact = "negligible"
# Adjust for recipient type (who receives the tokens)
recipient_multiplier = {
"team": 0.7, # Team sells ~70% within 6 months historically
"investor_seed": 0.8, # VCs must return capital, sell aggressively
"investor_later": 0.6,
"ecosystem": 0.3, # Ecosystem tokens often re-staked or used
"treasury": 0.2, # Treasury rarely dumps (governance constraints)
"community": 0.5, # Mixed behavior
}
effective_sell_pressure = supply_pct * recipient_multiplier.get(recipient_type, 0.5)
# Volume absorption capacity
if volume_multiple > 5:
absorption = "illiquid" # Market cannot absorb easily
elif volume_multiple > 2:
absorption = "difficult"
elif volume_multiple > 0.5:
absorption = "manageable"
else:
absorption = "easily_absorbed"
return {
"supply_impact_pct": supply_pct,
"base_impact": base_impact,
"effective_sell_pct": effective_sell_pressure,
"volume_absorption": absorption,
}Empirical observations (2021-2025 data):
| Unlock Size (% of circ.) | Pre-unlock (7d) | Post-unlock (7d) | Post-unlock (30d) |
|---|---|---|---|
| >10% | -8 to -15% | -5 to -20% | -10 to -30% (often no recovery) |
| 5-10% | -3 to -8% | -3 to -10% | Mixed (depends on market regime) |
| 2-5% | -1 to -5% | -2 to -5% | Usually recovers within 30d |
| <2% | Minimal | -1 to -3% | Negligible long-term impact |
Key patterns:
Treasury assessment framework:
treasury_health = {
"total_value_usd": 500_000_000, # Total treasury value
"runway_months": 36, # Treasury / monthly burn
"diversification": {
"native_token_pct": 60, # % held in own token (risky)
"stablecoins_pct": 25, # USDC/USDT/DAI (safe)
"eth_btc_pct": 10, # Blue-chip crypto
"other_pct": 5, # Other assets
},
"monthly_burn_usd": 5_000_000, # Operating expenses per month
"revenue_coverage": 0.6, # Revenue / burn ratio
}
def treasury_signal(health):
# Runway assessment
if health["runway_months"] < 12:
runway_signal = "critical" # Less than 1 year of funding
elif health["runway_months"] < 24:
runway_signal = "concerning"
else:
runway_signal = "healthy"
# Diversification assessment
native_pct = health["diversification"]["native_token_pct"]
if native_pct > 80:
diversity_signal = "concentrated_risk" # Treasury value crashes with token price
elif native_pct > 50:
diversity_signal = "moderate_risk"
else:
diversity_signal = "diversified" # Healthy treasury management
# Revenue sustainability
if health["revenue_coverage"] > 1.0:
revenue_signal = "self_sustaining" # Revenue covers all expenses
elif health["revenue_coverage"] > 0.5:
revenue_signal = "partially_funded"
else:
revenue_signal = "treasury_dependent" # Fully reliant on treasury
return runway_signal, diversity_signal, revenue_signalRed flags in treasury management:
def emission_analysis(token):
"""Analyze ongoing token emission sustainability."""
# Monthly emission rate
monthly_new_tokens = token.monthly_unlock + token.staking_rewards + token.mining_rewards
monthly_emission_pct = monthly_new_tokens / token.circulating_supply * 100
# Inflation-adjusted real yield
staking_yield_nominal = token.staking_apy
inflation_rate = monthly_emission_pct * 12 # Annualized
real_yield = staking_yield_nominal - inflation_rate
# Assessment
if monthly_emission_pct > 5:
emission_verdict = "hyperinflation" # Unsustainable
elif monthly_emission_pct > 2:
emission_verdict = "high_inflation" # Significant dilution
elif monthly_emission_pct > 0.5:
emission_verdict = "moderate" # Manageable
else:
emission_verdict = "low_emission" # Minimal dilution
if real_yield < 0:
yield_verdict = "negative_real_yield" # Staking rewards < inflation = value destruction
else:
yield_verdict = "positive_real_yield"
return emission_verdict, yield_verdict, real_yieldTier 1 protocols to track:
| Protocol | Token | Key Unlock Events | Data Source |
|---|---|---|---|
| Solana | SOL | Foundation + early investor unlocks | Token Unlocks |
| Aptos | APT | Monthly investor/team unlocks | Token Unlocks |
| Arbitrum | ARB | Massive team + investor cliff (Mar 2025) | Token Unlocks |
| Sui | SUI | Investor and contributor unlocks | Token Unlocks |
| Celestia | TIA | Investor cliff unlock | Token Unlocks |
| Starknet | STRK | Large early investor vesting | Token Unlocks |
| Optimism | OP | Ongoing core contributor vesting | Token Unlocks |
| dYdX | DYDX | Trading rewards + team vesting | Token Unlocks |
Data sources:
## Token Unlock & Treasury Analysis — [Protocol/Token]
### Tokenomics Overview
- **Total supply**: X,XXX,XXX,XXX
- **Circulating supply**: X,XXX,XXX,XXX (X% of total)
- **Fully diluted valuation (FDV)**: $X.XB
- **Market cap / FDV ratio**: X.X% (lower = more future dilution)
### Upcoming Unlocks (next 90 days)
| Date | Amount | % of Circ. | Recipient | Impact |
|------|--------|-----------|-----------|--------|
| YYYY-MM-DD | X,XXX,XXX | X.X% | Team | High |
| YYYY-MM-DD | X,XXX,XXX | X.X% | Investor | Medium |
### Emission Rate
- **Monthly new supply**: X.X% of circulating
- **Annualized inflation**: X.X%
- **Staking nominal yield**: X.X%
- **Real yield (yield - inflation)**: X.X%
- **Verdict**: [hyperinflation / high / moderate / low]
### Treasury Health
- **Total value**: $XXX M
- **Composition**: X% native token, X% stablecoins, X% ETH/BTC
- **Monthly burn**: $X.X M
- **Runway**: XX months
- **Revenue coverage**: X.X%
- **Diversification risk**: [concentrated / moderate / diversified]
### Sell Pressure Forecast
- **Next 30 days**: [X tokens unlocking → $X.XM at current price → X days of volume]
- **Next 90 days**: [summary]
- **Absorption capacity**: [easily / manageable / difficult / illiquid]
### Signal
- **Short-term (pre-unlock)**: [avoid / reduce / hold / accumulate]
- **Medium-term (post-unlock)**: [recovery expected / persistent pressure / unclear]
- **Long-term (tokenomics health)**: [sustainable / concerning / unsustainable]8643fcd
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.