Tax models & smoothed price
Static, time-decay, volume-state and market-cap taxes, plus the separate tick average.
On this page
One model, directional parameters
A market uses one model for both directions, with separate buy and sell X, Y and Z. Bounds are 0 ≤ Y ≤ X ≤ 2,500 bps and Z ≥ 1. Static returns X. Dynamic models interpolate between X and Y using progress measured before the trade.
rate = Y + floor((X − Y) × (d − n) / d)| Model | Progress n | Denominator / bound |
|---|---|---|
| TimeDecay | min(seconds since opening, Z) | d = Z seconds; Z ≤ 86,400. |
| VolumeState | min(max(net buys, 0), Z) | d = Z raw backing units; Z ≤ opening market cap. |
| MarketCap | min(max(C − C0, 0), Z − C0) | d = Z − C0; C0 < Z ≤ 200,000 × C0. |
Volume state and market cap are not monotonic
Net buys are signed cumulative actual pool backing input minus output, before hook taxes. Include first buys and executed partial fills. Exclude recentering, reserve deposits, bucket movements and yield work. Keep negative values in state and clamp only model progress.
VolumeState and MarketCap taxes can rise again when net buys or market cap fall. MarketCap uses current canonical pool price and market-cap supply; it does not use a trailing volume total, a fixed launch supply after burns, the holder-outstanding ledger or the smoothed-average price.
The separate smoothed tick
next average = a + floor((tickBefore − a) × min(elapsed, 900) / 900)The average starts at opening tick and is stored with millionths-of-a-tick precision. It advances before the trade and rounds toward negative infinity. Two updates within one second do not move it. This is a time-dependent smoothing rule, not a trailing 15-minute TWAP window; update frequency affects its result.
The hook clamps the averaging/recentering input to funded liquidity boundaries. The average is used for sell-surcharge tests, floor-raise caps and applicable Sinjoh-token backing valuation; it is separate from the current executable trade quote.
What creators can change
Creators can lower static rates or switch a dynamic model permanently to static at rates no higher than the model’s current computed rates at execution. There is no unrestricted live dynamic-parameter editor. Switching to static ends the model’s future behavior; it does not need to preserve its old future minimum.
Skip to documentation