Any statistic computed over a whale cohort is a statement about the wallets in it, and the first question in a review is never about the statistic. It is about the population. If the cohort contains wallets whose flow is not an expression of a view, the number you publish is a blend of two unrelated processes, and no amount of care in the estimator recovers the one you wanted.
Market makers and protocol treasuries are the two largest sources of that contamination. Neither is trying to be right about direction. A market maker is monetising spread and managing inventory. A treasury is executing a schedule that was decided by governance, a vesting contract, or an operations calendar. Both produce large, frequent, on-chain flow that satisfies every size threshold you might set, which is exactly why a naive size filter selects for them.
What an unfiltered cohort actually measures
Consider what these wallets do to each of the module's own published ranking inputs. Realised PnL over a period, for a market maker, is spread capture net of inventory drift, and it can be large and stable without containing a single directional opinion. Win rate is close to meaningless for a wallet whose position sign flips many times a day. Holding period distribution collapses toward the venue's cycle rather than the wallet's conviction. Sentiment score derived from open-position skew is the worst affected, because a market maker's open skew is a residual of order flow it did not choose.
The aggregate effect is predictable in direction. Non-directional wallets pull cohort mean return toward zero net of costs, they compress dispersion, and they inflate any volume-weighted measure because they trade far more than anyone with a view. A cohort that is one third market makers by wallet count can easily be two thirds market makers by notional, which means a volume-weighted cohort statistic is mostly describing them.
The observation budget makes this worse rather than better. At capture the feed reported 12.5 million dollars of whale volume over twenty four hours across 50 transactions. Fifty prints is the entire daily sample at that level. If a third of them come from wallets with no view, the directional cohort you are actually measuring is thin enough that a single wallet can move the statistic, and that is before you have split by asset or venue.

Test one, net-to-gross flow measured per asset
The cleanest discriminator is that a directional wallet is lopsided and a market maker is not. Compute, over a rolling window, the absolute net notional divided by gross notional for each wallet. A wallet that only accumulated scores 1.0. A wallet that bought and sold equal amounts scores near 0.0.
Two implementation details decide whether this test works. The first is that it must be computed per asset and then aggregated, never on the portfolio in one pass. A directional wallet that is long one asset and short another nets to something that looks two-sided at the portfolio level, and you will exclude exactly the wallet you were trying to find. The second is that the window has to be longer than the market maker's inventory cycle and shorter than a directional wallet's holding period. Those two horizons are observable from the cohort itself, so calibrate rather than assume, and record the window you chose alongside the results.
This test carries over to prediction-market wallets without modification, which is convenient given the coverage spans Polymarket and Opinion Trade. A market maker quoting a binary market holds both sides across the book. A wallet with a view holds one. The net-to-gross ratio computed across the two outcome legs of the same market separates them directly.
Test two, does the position revert or accumulate
Net-to-gross catches the obvious cases. The second test catches a wallet that is directional over a day and flat over a week, which is what inventory management looks like when the flow is uneven.
Take each wallet's position series per asset and measure the half-life of deviation from its own trailing mean. Market-maker inventory is mean reverting by construction, because reverting is the job. A directional position has no target level and its deviation series does not decay. Alongside the half-life, count sign flips per unit time and the fraction of gross flow that is round-tripped within the window. A wallet with a short half-life, frequent sign changes and high round-trip share is running inventory whatever its label says.
Treasury wallets fail a different way and need their own read. Their flow is one directional, often heavily so, which means the first test passes them straight through. What separates them is that the direction is scheduled rather than chosen. Look for near-constant intervals between transfers, amounts that repeat to the token, and a total that reconciles to a published allocation. A wallet distributing the same amount on the same day of each month is not forecasting anything.
Test three, counterparty concentration and structural fingerprints
The third test uses the graph rather than the position series, and it is the one that generalises best because it depends least on price.
Measure the entropy of the counterparty set. An operations or treasury wallet transacts with a small, stable set of addresses: a vesting contract, a multisig, one or two exchange deposit addresses. Its counterparty entropy is low and stays low. A market maker sits at the opposite end, with a very large counterparty set and a median transaction size far below its maximum, because it is quoting to everyone. Directional wallets fall between the two, and the shape of that distribution in your own cohort tells you where to place the cuts.
Contract evidence outranks all of it where it exists. A wallet that is a contract with an upgrade path, an owner, or an allowlist of withdrawal addresses is not a trader, and that fact is deterministic rather than inferred. Rank your evidence explicitly: on-chain contract properties first, venue-published identifiers second, behavioural tests third, third-party labels last and only with a date attached. When a behavioural test and a contract property disagree, the contract property wins, and the disagreement itself is worth logging because it usually means the wallet changed function.
What the exclusion costs and when it removes the signal
Every one of these tests is a behavioural classifier, not an identification, and the honest framing in a memo is that the wallet behaves like a market maker over the observed window. That distinction matters because the categories are not clean. A proprietary desk that also provides liquidity is genuinely both. A treasury that starts an unscheduled buyback is genuinely directional and is arguably the single most informative wallet on the chain that week, and a rule that excludes treasuries by class will delete it.
So run the statistic both ways and keep both. Never delete an excluded wallet from the dataset, flag it, so that the effect of the exclusion is itself measurable and a reviewer can reconstruct the unfiltered number. If cohort return changes materially when the flag is applied, the exclusion rule has become a driver of your result and needs to be defended on its own rather than treated as data hygiene.
Watch the sample size the filter leaves behind. Exclusion is cheap to justify and expensive in observations, and with fifty prints a day at the feed level an aggressive filter can leave a cohort statistic resting on a handful of wallets. Set a minimum count before a cohort number is publishable, and state it in the note rather than discovering it in a review.
Version the exclusion list with valid-from dates and join it to history as of the trade date, never as of today. A wallet reclassified this quarter must not silently restate last quarter's cohort statistics. That single storage decision is what separates a reproducible research artifact from a number that changes every time somebody reruns the notebook.