Organic and manufactured volume look identical in a headline figure and different in the raw transaction set. The separating evidence is structural: how many independent funding sources produced the trades, how regularly they arrived, how tightly their sizes clustered, and whether anyone finished the period holding a different position. None of these tests establishes intent, and every one of them has an innocent explanation.
That last sentence is the reason this note is written carefully rather than confidently. The observable signatures of automated volume generation are the same signatures produced by market makers, arbitrage bots, treasury rebalancing and ordinary retail trading applications. What follows describes what can be measured and states plainly what each measurement does not support. No token, project or address is being described here.
Two shapes in the raw data
Start from what a transaction set actually contains. For each swap you can read the signer, the pool, the input and output mints, the amounts, the slot, the block time, and the instruction structure. From the account history you can read where the signer's balance came from. That is the complete evidence base. Everything analytical is a statistic computed over those fields.
Broad participation tends to produce a ragged data set. Funding sources are numerous and unrelated. Intervals between trades are irregular and cluster around waking hours in populated timezones. Sizes span several orders of magnitude, with a long tail of very small trades and a handful of large ones. Direction is mixed and net positions at the end of the window differ widely across wallets.
Programmatic flow tends to produce a regular data set. Funding traces back to a small number of sources. Intervals are tight or drawn from a narrow distribution. Sizes fall within a bounded band. Direction alternates and net position across the group is close to flat. The word tends is doing real work in both paragraphs, because plenty of legitimate activity is programmatic and some genuinely broad markets look surprisingly tidy.
Wallet distribution and funding graphs
Unique wallet count is the weakest widely quoted participation metric. Creating an address on Solana costs almost nothing, and a token account is a small rent-exempt allocation. One operator can therefore present as hundreds of addresses without difficulty. Counting addresses measures the cost of address creation, not the number of participants, and it is the first figure to discard.
The standard refinement is the funding graph. Walk each trading wallet backwards through its balance history to whatever funded it, then again to whatever funded that, until you reach a source you cannot attribute further. Wallets sharing a source within a short window are grouped and treated as one participant for structural purposes. The output is a cluster count and a distribution of volume share across clusters.
This is better, and it is still imperfect in a specific way worth stating. Many wallets are funded from centralised exchange withdrawal addresses, which are shared by thousands of unrelated users. A naive walk merges genuinely independent traders into one apparent cluster. Serious implementations maintain exclusion lists for known shared sources, and those lists are incomplete by construction. Every funding-graph figure carries that uncertainty and should be published with it attached.
Timing regularity
Take the intervals between consecutive trades in the set and look at their distribution. Human-driven flow produces a heavy-tailed interval distribution with long gaps and bursts around news. Automated flow produces a narrow distribution, sometimes with a visible floor at the operator's configured minimum delay. A histogram of intervals is often the fastest read available on a transaction set.
Solana's roughly 400 millisecond slot target puts a granularity floor under this analysis. Intervals cannot be resolved more finely than the block time, and during congestion the mapping between intended submission time and landing slot loosens considerably. An operator submitting at a fixed cadence will appear less regular than they are whenever inclusion is delayed, which biases this test towards missing automation rather than inventing it.
The interpretation is where discipline is required. Regularity is evidence of automation, and automation is entirely ordinary. Arbitrage bots, liquidation keepers, scheduled rebalancers, and consumer trading applications with recurring buys all produce regular intervals. The finding is that a program placed the trades. It says nothing about why, and it is not a finding about legitimacy.
Trade-size clustering
Plot the distribution of trade sizes on a logarithmic axis. Broad participation usually produces something close to a smooth heavy-tailed shape, with a large number of small trades and progressively fewer large ones. Programmatic flow frequently produces a bounded band, sometimes with visible mass at round numbers where a configured minimum and maximum sit.
Two artefacts are worth separating. Round-number clustering can indicate a configured amount, but it also arises from humans typing round numbers, which they do constantly. A hard ceiling in the distribution is more informative: it suggests something imposed a maximum, and one common reason to impose a maximum is to keep price impact per trade below a threshold. That is a mechanical inference from the constant-product cost curve, not a claim about motive. It is also the setting an operator is most likely to have touched deliberately, since any Solana trading volume bot that lets you cap order size will leave that cap visible in the distribution, which is why the ceiling is a more useful read than the clustering itself.
The complementary reading is the top of the distribution. A market with genuine large participants shows occasional trades far above the median, because someone eventually takes a real position. A distribution with a clean ceiling and nothing above it describes flow that was never willing to move the price much, whatever produced it. Both readings depend on having the raw trade set rather than an aggregated total, a distinction developed in how DEX volume is counted.
Round trips and net position change
The most structurally informative test is also the simplest to state. For each wallet, and then for each funding cluster, compute the net change in token balance across the window and compare it to the gross volume the wallet or cluster produced. A wallet that traded heavily and finished holding almost exactly what it started with performed round trips rather than accumulation.
Round-trip ratio is the pairing of these two figures: gross volume over the absolute net position change. A high ratio means a lot of value moved through a wallet that ended up where it began. This is a precise, reproducible statistic computed entirely from public data, and it is the one figure that survives most of the objections raised against the softer signals. It is also, on its own, not an accusation.
Because market making is exactly the activity of trading heavily while holding a roughly neutral position. So is arbitrage. So is a treasury operation converting between assets and back. A high round-trip ratio identifies a class of activity that includes both manufactured volume and several entirely conventional market functions, and no field in the transaction set distinguishes them. Applying this measurement to a specific campaign window is covered in measuring a volume campaign.
Signals and their honest limits
| Observable signal | What it is consistent with | What it does NOT prove | How to check it |
|---|---|---|---|
| Few funding sources behind many wallets | One operator running several addresses | Common ownership; shared exchange withdrawal addresses produce the same graph | Walk each wallet's balance history back to its first inbound transfer and group by source |
| Narrow interval distribution | Automated submission at a configured cadence | Anything about purpose; keepers, arbitrage bots and recurring-buy apps look identical | Histogram the gaps between consecutive trades and look for a floor |
| Trade sizes bounded above and below | A configured minimum and maximum per fill | Manufactured flow; risk limits and impact caps produce the same ceiling | Plot sizes on a log axis and check for a hard upper edge |
| High gross volume, near-zero net position | Round-trip cycling of the same balance | Wash intent; market making and arbitrage are defined by neutral inventory | Compare gross volume to absolute balance change per wallet and per cluster |
| Alternating buy and sell within short windows | A cycle that returns the wallet to its starting state | Coordination; two unrelated wallets can trade against each other by chance | Order each wallet's fills by slot and measure the interval between opposing pairs |
| Volume concentrated in one pool of several | A route pinned to a single venue | Anything improper; single-venue routing is common and often just cheaper | Group executions by pool address and compare shares against the pool's depth |
| Activity starting and stopping abruptly | A process with a defined start and end | The reason for either boundary; listings, unlocks and news do this too | Bucket volume by hour and look for step changes rather than ramps |
Ten evidence tests
The following are the specific measurements worth computing before forming any view. Each produces a number or a distribution, not a verdict, and each is reproducible by anyone with the same transaction set.
- Funding cluster countGroup every trading wallet by the source that funded it and report how many independent clusters produced the window's volume.
- Largest cluster shareReport the fraction of gross volume attributable to the single largest funding cluster, since a headline figure carried by one cluster describes a narrow market.
- Round-trip ratioDivide gross volume by absolute net position change, per wallet and per cluster, and report the distribution rather than the mean.
- Interval floorHistogram the gaps between consecutive trades per wallet and note whether a minimum delay is visible.
- Size ceilingCheck whether the trade-size distribution has a hard upper edge, and compare that edge to the size at which price impact on the pool becomes material.
- Round-number massMeasure what proportion of trades fall on round amounts, remembering that humans also type round amounts constantly.
- Direction alternation rateFor each wallet, measure how often a buy is followed by a sell rather than another buy, and compare against the set as a whole.
- Counterparty overlapCheck whether wallets in one funding cluster are repeatedly on opposite sides of the same pool within short intervals.
- Depth-relative sizingExpress each trade as a fraction of the pool reserve at that slot, because a fixed notional means different things as reserves change.
- Boundary sharpnessBucket volume by hour and record whether the series starts and stops in steps or ramps, noting that listings and unlocks also produce steps.
Why the distinction matters
For someone reading a chart, the distinction changes what the figure predicts. Volume produced by many independent participants is weak evidence that a further participant can transact at a similar size, because the flow implies willing counterparties arriving on their own. Volume produced by one cluster cycling a balance implies nothing about a new participant's ability to transact at all, because the counterparty was the same operator each time.
The exit question makes it concrete. If a figure came from broad flow, exiting a position means finding one of many buyers. If it came from a single cluster, exiting means finding a buyer where previously there was only an operator. The reserves are the same in both cases; what differs is whether anyone external was ever willing to take the other side.
None of this makes manufactured flow inherently deceptive. Some of it is disclosed market making. Some of it is a project maintaining a quotable market on a venue that would otherwise be untraded. The reader's problem is not that the activity exists but that the published figure does not distinguish it, which is a reporting gap rather than a moral one, and the same gap described in the anatomy of Solana trading volume.
The grey zone nobody can remove
It should be stated as directly as possible: professional market making produces almost every signature on the list above. A market maker runs automated software at a regular cadence, sizes fills within configured bounds, funds from a single treasury, trades both directions continuously, and targets a flat inventory. If you built a classifier from these heuristics it would flag every market maker in the market, correctly on the structure and uselessly on the question anyone cares about.
Arbitrage is the same. A bot equalising a price between two venues trades in both directions, in tight sizes, at machine intervals, from one funding source, and ends flat. Treasury operations converting between assets, index products rebalancing on a schedule, and liquidity managers rotating positions all sit in the same region of the feature space. The structure is shared because the economic function is similar, not because the intent is.
There is no field in a Solana transaction that records purpose. Ownership is not recorded. Coordination is not recorded. Agreements between parties are not recorded. Every inference beyond the arithmetic is a construction placed on the data by the analyst, and readers deserve to be told which parts of a published analysis are measurements and which parts are interpretation.
What none of this proves
These tests do not establish intent. They do not establish that any two addresses have the same owner. They do not establish that a trade was uneconomic for the party who placed it, since fees and impact are visible but the trader's broader position is not. They do not establish that a project commissioned anything, and they do not establish that any conduct broke a rule.
What they do establish is narrower and still useful. They establish how concentrated the funding graph behind a figure is. They establish whether the flow was automated. They establish whether anyone finished the window with a different position. Those are facts about market structure, and they are exactly what a headline volume figure omits.
The honest way to publish is to report the measurements with their definitions, list the ordinary explanations alongside them, and decline to name anyone. Public transaction history is available through standard explorers such as Solscan, and the account model that makes this reconstruction possible is documented in the Solana documentation. Anyone can reproduce the arithmetic. Nobody can reproduce an intent.
Follow-up questions on method
How many funding clusters count as a broad market?
There is no threshold that survives scrutiny, and publishing one would be inventing precision. The useful practice is to report the cluster count and the largest cluster's volume share as raw figures next to the headline number, and let the reader judge whether the concentration matters for their purpose.
Can these tests be run on historical data?
Yes. Everything described here is computed from settled transactions, so the analysis is straightforwardly retrospective. The practical constraint is data access: reconstructing funding graphs over long periods requires substantial history, and most convenient interfaces limit how far back they will serve.
Does a project disclosing its market maker change the analysis?
It changes the interpretation, not the measurement. The structural figures are the same either way. Disclosure tells a reader that a known party accounts for part of the flow, which is precisely the information the structural tests cannot supply on their own.
Why avoid naming tokens when the data is public?
Because the data supports structural statements and readers convert structural statements into accusations. A finding that one funding cluster produced most of a window's volume is a fact; a headline attaching that fact to a name reads as a charge the evidence does not support.
Is there any single test that settles the question?
No, and treating any of them as decisive is the most common analytical error in this area. The tests are jointly informative and individually weak. The correct output is a profile across several measurements with the alternative explanations stated, not a binary label.
What is the minimum honest presentation of this analysis?
The window and its boundaries, the venue set, the funding-cluster count and largest share, the round-trip ratio distribution, the interval and size distributions, and an explicit statement that automation, market making and arbitrage produce the same signatures. Anything shorter overstates what the data carries.
Filed under Measurement. Corrections and method questions go to the desk; our sourcing rules are on the editorial policy page.