One formula per bag
For a position worth P at its last print, with sell-to-half depth Q and organic daily volume V from pools quoted in real assets:
S = min( rho · V , m · Q_fast ) what can be sold per day T = P / S days to exit ttl = S · (1 − λ) · (1 − e^(−κ·T)) / κ time-to-liquidate value cap = min( P · (1 − λ) , c · Q_slow ) floor = P · R / (P + R) instant exit into the aggregate reserve R value = min( cap , max( floor , ttl ) )
In words: work out how much of the bag could be sold per day without moving the price, discount what is left over a thirty-day horizon, then cap it at what the pools would absorb and floor it at what an instant sale would fetch. R is the quote-side reserve of the pools that count; Q is the part of it a sale could take before halving the price, about 29% of R net of fees.
Depth falls instantly and is believed slowly: Q_fast is the current depth or its 7-day mean, whichever is lower; Q_slow uses the 30-day mean. Nothing an attacker adds today lifts a saturated bag by more than a thirtieth per day.
| Parameter | Default | Concentrated | Meaning |
|---|
What counts as real
A pool contributes to depth, volume and the floor only when the other side of it is a whitelisted quote asset, matched by contract address, never by symbol. A pool quoted in another memecoin, a tokenised stock, or a token calling itself USDC is not depth.
Why so few: depth is only worth what the other side can be sold for. A pool quoted in another memecoin can be filled for free by whoever minted both, and a token that names itself USDC is just a name. So the quote side has to be something with an independent price and a real exit, matched by address. pump.fun and PumpSwap pools quote in SOL and count in full; fomo.family markets on Robinhood Chain quote in USDG and WETH.
Big memecoins can qualify too. A token becomes a quote asset in its own right once it has at least $1M of depth of its own against the whitelist, across two or more pools older than seven days. Pools quoted in it then count, credited up to what that token could itself be sold for. That is how a book holding a coin paired only with the chain's biggest memecoin still gets real depth, and why a fresh pair between two new coins does not.
Pools younger than seven days count toward the instant-exit floor only, weighted by their age over a day. A token whose oldest real pool is younger than seven days is young: it is marked at the floor and blends up to full value over the following week.
Organic volume is the median of the last seven complete days, where each day counts at most fifty depths of turnover and is scaled by unique sellers over 200. A day of wash trading between three wallets counts for almost nothing.
Broad flow is trusted further. A token's volume is believed in proportion to the smallest of three ratios: unique daily sellers over 500, aged real pools over 10, holders over 10,000. At full credibility the cap rises from 20 to 80 depths, daily capacity from 5 to 10 depths and the turnover cap from 50 to 150. Nothing else moves: a token with one pool, a few hundred holders or a handful of sellers keeps the brakes in full.
Regimes, first match wins
- No real pool
- Worth nothing, whatever the print says. This is what removes airdrop spam from a wallet.
- The holder is the market
- Fifty percent or more of the circulating float, or a token with fewer than 500 holders: marked at what the pools would pay right now.
- Young
- No pool older than seven days: floor, blending to full value over the next seven days.
- Concentrated
- Ten percent or more of the float: five percent participation and one depth a day instead of ten percent and five.
- Liquid
- The pools absorb the whole position in a day: spot less a one percent impact cost.
- Sold over time
- Real flow, days to exit: the thirty-day discounted value of that flow.
- Thin
- Thirty days of flow would say more than twenty depths: capped at twenty depths (eight with a single pool, six when concentrated).
- Instant exit
- Thirty days of flow would say less than the pools pay right now: the floor.
Worked example, live
Loading the biggest account on the board…
When the mark moves
Every change of a mark is attributed. A holding's move is a price move, a depth re-measurement, or a flow. Flows are neutral by construction, because a token that enters or leaves a wallet is booked against a cash line at its marked value, so deposits, withdrawals and airdrops cannot move a mark. What is left of a flow is real: a trader's slippage, fees, or the proceeds of selling a bag for more than it was marked.
Loading recent moves…
Data and cadence
| Quantities | fomo.family account balance sheets for fomo traders; every wallet read in full for pump.fun traders. Re-read every two to six minutes depending on how many markets are listed. Trades seen on the public tape apply within five seconds. |
| Prices | Re-marked every five seconds from the venue's own price where fresh, cross-checked across Defined, DexScreener and Jupiter. A print that jumps fivefold in one tick must repeat before it is believed. |
| Depth, volume, holders | Mobula's pool list for the token (every pool with its liquidity, age, fee take, day volume, sellers and holder count), with Defined's listing as the fallback. Measured for every holding worth $2,000 or more at spot, refreshed daily, and re-measured at once when the token's price has moved 30% since the last measurement. Between measurements the dollar figures follow the token's price: an AMM's sell-side depth in dollars grows with the square root of the price, the market cap linearly, so a capped bag moves with its token instead of sitting at a stale dollar cap. Once the implied depth drifts more than 4x above or below the last measurement, the token is measured again. |
| Readiness | A market is priced only when every holding has a price and every holding worth $2,000 or more has a depth measurement. New listings measure their largest holdings before the opening mark, so a junk wallet never lists at the print of its junk. |
| Tradeability | An account is not a trading account when it is worth under $50k at the mark, when less than a quarter of its prints are backed by real pools, or when one token is 95% of it. A market whose holdings are still being measured, or whose mark has not updated for ten minutes, is reduce-only until it catches up. Auto-listing skips the first two kinds altogether. |
| Leverage | Follows concentration: the ceiling is one over the largest holding's share of the mark, rounded down to a half, 1x when one holding is more than 60% of the account, never above 5x. An account that is 46% one token trades at up to 2x. |
| Status | … |
What the on-chain venue adds
The full specification does more, and the on-chain venue does it before real money is involved. Five refinements the beta leaves to it:
- verify pools on-chain or walk concentrated-liquidity ticks; depth is the constant-product approximation of each pool's reported liquidity;
- simulate a sale to detect honeypots, sell taxes and blacklists;
- subtract liquidity the trader's own wallets provide;
- track provenance lot by lot: a received token that happens to have a real pool is marked to market once priced;
- value tokens still on a pump.fun bonding curve (they count as zero until they graduate).
For listed traders
If your account is marked below what your venue shows, the difference is one of three things: a bag the pools cannot absorb at its print, a token that has no pool quoted in a real asset, or a token whose pools are too young or too closely held to count in full. Each holding on your market page carries the sentence that says which. The rules are the same for every account, they are published here, and they never look at who you are.
Contesting a valuation
Any holding on any market can be contested from the terminal: open Why? next to the mark and press Contest on the holding. Contested valuations are reviewed against the rules above and listed here with the numbers as they stood when the flag was raised.
Loading…