Calculating Token Sell Pressure: The Math Founders Skip
The math every founder claims to know but few have actually computed.
“Sell pressure” is the most over-used and least-understood term in token-launch discourse. Every founder claims theirs is low. Almost none can derive the number. Here’s the math.
DEFINITION
The basic formula
For a single allocation in a single month, the unlocked-tokens value is:
unlocked(t) = totalSupply × (allocation.percent / 100)
× unlockFraction(allocation.vesting, t)Where unlockFraction(vesting, t) returns the fraction of the allocation cumulatively unlocked at month t. For a typical cliff + linear vest:
unlockFraction(vesting, t) {
const tge = vesting.tgeUnlock / 100; // 0.0 to 1.0
if (t <= 0) return tge;
if (t < vesting.cliffMonths) return tge;
if (vesting.durationMonths === 0) return 1; // fully vested at TGE
const sinceCliff = t - vesting.cliffMonths;
const linearProgress = Math.min(sinceCliff / vesting.durationMonths, 1);
return tge + (1 - tge) × linearProgress;
}So at any month t, you have a per-allocation cumulative unlocked token count. To get the incremental unlock for that month — the new tokens released between t-1 and t — you simply subtract:
incrementalTokens(allocation, t) = unlocked(allocation, t)
- unlocked(allocation, t - 1)Sum this across all allocations to get total tokens unlocking in month t. Multiply by your assumed launch price (typically targetFDV / totalSupply) to convert to dollars:
launchPrice = meta.targetFDV / meta.totalSupply
sellPressureUSD(t) = sum over all allocations of:
incrementalTokens(allocation, t) × launchPriceThat’s the formula the visual editor on this site computes for the live sell-pressure chart, and the same formula compute_sell_pressure runs in the MCP. You can call it yourself and inspect the per-month series.
Worked example: Arbitrum’s March 2024 cliff
ARB launched in March 2023 with a 12-month cliff on team (26.94%) and investors (17.53%). The cliff date was March 2024 — month 12. Let’s walk through what the formula predicts.
| Allocation | Percent | TGE % | Cliff (mo) | Linear (mo) | Tokens unlocked m13 |
|---|---|---|---|---|---|
| Team + future hires | 26.94% | 0 | 12 | 36 | ~75M ARB |
| Investors | 17.53% | 0 | 12 | 36 | ~49M ARB |
| DAO Treasury | 42.78% | 0 | 0 | 120 | ~36M ARB |
| Airdrop | 11.62% | 100 | 0 | 0 | 0 (already circulating) |
| Sub-total month 13 | ~160M ARB |
At a launch price of approximately $1.20 (close to the ARB 12-month price), 160M tokens × $1.20 = roughly $192M of paper sell pressure in month 13. That number sounds enormous. The reality was much smaller because most recipients didn’t sell — locked tokens often unlock to people who choose to keep holding. But the upper bound is the thing markets price in ahead of the date.
Sell pressure is an upper-bound stress-test number. The realised sell volume is almost always lower. But the market prices the upper bound, not the realised.
What the formula doesn’t capture
Three real-world dynamics this simple model misses, in rough order of importance:
1. Holder behaviour heterogeneity
Investor allocations sell more aggressively than team allocations (their return horizon is shorter). Airdrop recipients sell faster than locked recipients (no hurdle rate). Some recipients lock voluntarily into vote-escrow or staking. The simple model treats every unlocked token as equally likely to be sold, which is a useful upper bound but a poor central estimate.
2. Buyback / sink mechanisms
Protocols with active buyback programmes (Aerodrome, GMX’s ETH-paid fee rewards, MKR burn) reduce net sell pressure even as gross unlocks proceed. A protocol earning $100M/year in fees that buys back tokens with all of it has effectively zero net sell pressure as long as buyback ≥ unlock.
3. Voluntary holding by aligned recipients
Allocations to users behave differently from allocations to investors. A user-grant allocation (Worldcoin’s 75% to verified humans) is almost certain to be sold instantly because users have no asymmetric upside. An investor allocation in a project they believe in might be locked into staking for years.
The most useful refinement to the basic formula is a per-allocation sell-through ratio:
realisedSellPressureUSD(t) = sum over allocations of:
incrementalTokens(allocation, t)
× launchPrice
× sellThroughRatio(allocation.category)
// Indicative sell-through ratios:
// airdrop: 0.85 (most claimers sell immediately)
// public: 0.60 (sale buyers split holding/selling)
// investors: 0.50 (early-fund LPs need DPI; later funds hold)
// team: 0.30 (longer alignment, taxes paid quarterly)
// treasury: 0.10 (governance can decide not to sell)
// liquidity: 0.00 (already in LP, not sold)These ratios are not laws — they’re calibration parameters. Tune them to your project’s ecosystem (Solana NFT airdrops sell harder than EVM retroactive ones; Korean retail behaves differently from US institutional). The point is: two designs with identical gross unlocks can have wildly different realised sell pressure depending on who’s holding and why.
Finding the worst month
The single most useful output of this calculation is the answer to: what is the worst single month over the next 48 months, and why? In code:
const horizonMonths = 48;
let worst = { month: 0, usdValue: 0 };
for (let t = 1; t <= horizonMonths; t++) {
const usd = sellPressureUSD(t);
if (usd > worst.usdValue) worst = { month: t, usdValue: usd };
}
// Then: which allocation contributed most to that month?
// Almost always: the cliff-date for the largest insider allocation.For a typical 12 + 36 vesting profile, the worst month is almost always month 13 — the first post-cliff month, when the largest insider allocations begin distributing. The second-worst is usually the first treasury-emission month (often month 1, with a small TGE unlock).
Practical use: stress-testing your design
Run the calculation, find the worst month, then ask: does the protocol generate enough demand in that month to absorb the unlock? Three rough thresholds:
- Sell pressure < 1× monthly trading volume: easily absorbed. Price impact minimal even if every unlocked token sells.
- 1× to 5× monthly volume: meaningful price impact. Founders should plan for week-of-cliff volatility and likely a 20–40% drawdown that recovers over weeks.
- > 5× monthly volume: dangerous. Either the cliff is too large, the protocol hasn’t generated enough organic demand, or both. Either redesign the schedule or pre-arrange OTC blocks for major holders.
The MCP tool compute_sell_pressure returns the full per-month series plus the peak month, so an AI assistant or your own script can run this check without writing the math from scratch. The visual editor on this site runs the same calculation continuously while you edit.
Try the tool
Token Economics is the free designer behind every chart and computation in this article. Replicate any of 300+ real-world tokenomics, edit allocations, see live sell-pressure and health-score updates.
Open the editor→Building something similar?
3UILD is the web3 services team behind Token Economics. We audit tokenomics, deploy contracts, and advise on launches. 30-min review, no pitch.
Talk to 3UILD→Related reading
Vesting
The 12-Month Cliff: Origin, Math, and When It’s Wrong
A geeky deep dive into the most-copied vesting parameter in crypto.
Distribution
TGE Float Strategy: How Much Supply Should Circulate at Launch?
The single tokenomics number that decides whether your launch is called "low-float pump" or "dump-on-launch".
Distribution
The HHI of Tokenomics: Measuring Concentration Risk
How a 50-year-old antitrust metric became one of the better tokenomics tools.