Transaction Timing Patterns and Trade Size Signatures
Turnover tells you how much changed hands. Spacing tells you who was pressing the button. The gap between one trade and the next, together with the set of sizes those trades are drawn from, carries more information about the process behind a market than any volume figure does. This page reads both, and marks the point where each reading stops being evidence.
- Question
- What do the spacing and the sizes of trades reveal about whether the flow behind them was scheduled or spontaneous?
- Evidence used
- Signed transaction timestamps, the distribution of gaps between consecutive trades, the set of trade amounts in base units, slot numbers, and compute unit price settings.
- What it cannot show
- Timing never identifies an operator, an intent or a beneficiary. A regular cadence identifies a program, and a program can belong to anyone with any motive.
- Falsified by
- A gap distribution with a long tail and no repeated modal value, or a size set that spreads continuously across several orders of magnitude.
- Confidence
- Moderate. Cadence is a strong discriminator between automated and manual origin, and a weak one between honest automation and produced volume.
Why the gap carries the most information
The gap between one transaction and the next is the richest single signal in a trade record. Spontaneous flow arrives in bursts separated by long silences. Scheduled flow arrives with gaps drawn from a narrow band around a configured interval. That difference survives even when the two records show identical daily turnover, which is why spacing is read before size and long before totals.
The reason is structural. Turnover is a sum, and a sum discards the order and the spacing of the things it adds up. A gap distribution keeps both. Two markets can move the same value in a day while one did it in four frantic minutes and the other in eight hundred evenly spaced instalments. Only the second describes a machine, and a machine has no motive attached to it in the log. Cadence can say software. It cannot say why.
Irregular arrival versus scheduled arrival
Human-driven arrival is irregular in a specific way. Traders react to something they saw, so activity clumps around the trigger and then decays. A social post, a listing, a price move: each produces a burst, and between bursts the market is close to silent. The resulting gap distribution has a heavy tail, and no favourite value.
Scheduled arrival looks different because a scheduler has no attention to spend. It fires, waits, fires again. Even with jitter added, the gaps concentrate around the configured interval and the tail is truncated: there is a longest gap the schedule will ever produce, and the record does not exceed it. A firm ceiling on silence is unusual in a market driven by attention.
What a scheduler leaves behind
Gaps clustered around one or two modal values, with a ceiling on the longest silence. Activity that continues at a steady rate through hours when nothing at all was happening elsewhere in the market. Sizes drawn from a short list rather than a spread. A fee setting that does not move all session.
Sessions that begin and end on clean boundaries, run for a fixed span, and resume later with the same internal rhythm intact. Counterparty sets that stop growing once the window is wide enough. The record reads like a metronome that was switched on and later switched off again.
What a crowd leaves behind
Dense clusters around a trigger, then decay, then near silence for stretches at a time. Gaps spanning several orders of magnitude within a single day. Sizes scattered across odd amounts, with round numbers present in the mix but never occupying the whole distribution on their own.
Fee settings that differ wallet by wallet, because the wallets are running different software written by different people. Counterparty sets that keep growing as the window widens, since new participants keep arriving. The record reads like a room filling up and emptying out rather than a timer running.
It is worth being direct about why cadence is legible at all. Schedulers are not hidden infrastructure; they are openly sold products with configurable intervals, amount ranges and session lengths, and an automated Solana volume bot exposes those controls as ordinary settings. A finite set of dials produces a finite set of rhythms, and a finite set of rhythms is what a distribution can recognise.
What would falsify this
A gap distribution with a genuine long tail, no repeated modal value, and silences that keep getting longer as the window widens would end the scheduled reading. So would evidence that the apparent regularity came from a client retrying one intent rather than from distinct trades. Either observation returns the record to the spontaneous side.
An illustrative arrival-gap profile
The table below uses invented round numbers, describing no real pair, no real market and no real operator. It exists to show the shape of the comparison rather than to report a measurement. The buckets are the ones a first pass usually starts with, and the last column matters most, because it states each row's limit.
| Gap bucket | Spontaneous-looking session | Scheduled-looking session | What the difference does and does not imply |
|---|---|---|---|
| 0 to 2 seconds | 35 per cent | 5 per cent | Bursts point to reaction, or to a router splitting one order. Does not imply a crowd. |
| 2 to 10 seconds | 15 per cent | 70 per cent | Concentration here suggests one configured interval. Does not identify who configured it. |
| 10 to 60 seconds | 15 per cent | 15 per cent | The least informative band. Both processes pass through it. |
| 1 to 10 minutes | 20 per cent | 8 per cent | Cooling after a burst. Also consistent with a slow schedule, so it separates nothing. |
| Over 10 minutes | 15 per cent | 2 per cent | Long silences are the crowd signature. Their near absence suggests a ceiling on idle time, a machine property. |
Read the columns as shapes rather than as numbers. The scheduled column is concentrated and truncated; the spontaneous column is spread and open-ended. A real session producing the left column would carry weak timing evidence for automation whatever its turnover, and one producing the right column would carry evidence worth stating, at moderate confidence.
Illustrative arithmetic, invented figures
Take an invented session of 600 confirmed trades across four hours. Four hours is 14,400 seconds, so the mean gap is 24 seconds. If arrivals were memoryless, the share of gaps longer than 60 seconds would be roughly the exponential of minus 60 divided by 24, about 8 per cent.
Now suppose the observed record puts under 1 per cent of gaps above 60 seconds and none above 90. The mean is unchanged and the shape is not. That contrast, not the trade count, is the finding, and it is still consistent with a market maker on a refresh timer.
Size quantisation and narrow bands
Sizes are the second axis, and they quantise in two recognisable ways. The first is a short list of round values: the same handful of amounts repeating across many transactions, often in whole units rather than the odd fractions that fall out of a manual swap. The second is a tight band, where every amount sits between a floor and a ceiling, which is what a randomised range setting produces.
Both patterns are legible because sizes are stored in base units. An SPL token amount is an integer scaled by its decimals, and lamports are integer billionths of a SOL, so exact repeats are exact, not approximate. That makes an amount histogram cheap to build and hard to argue with. What it means is a separate question, handled below.
Round numbers alone prove nothing. People buy in round amounts constantly, and interfaces encourage it with preset buttons for a half or a whole unit. The informative case is not the presence of round values but the absence of everything else: a record where round values dominate and the scatter around them has gone. The same logic drives the clustering heuristics that group addresses behaving as one operator.
What would falsify this
A size distribution spanning several orders of magnitude with a continuous spread of odd amounts falsifies quantisation outright. So does a record where the repeated values match a published preset in a widely used interface, since the pattern then belongs to the software everyone uses. Either finding should retire the size argument rather than soften it.
Slot timing and what blockTime cannot resolve
Solana has its own timing structure and it shapes what timing analysis can claim. The network targets roughly 400 milliseconds per slot, and transactions confirm inside slots rather than at arbitrary instants, so the finest grain any on-chain clock offers is a slot boundary. The protocol basics are set out in the Solana documentation.
The practical consequence is resolution. The blockTime value returned by RPC and shown by explorers is an estimated wall-clock timestamp in whole seconds, not a precise instant. Two transactions in the same slot can share a timestamp, and two seconds apart can be reported closer together than they were. Any claim resting on sub-second differences is unsupported, and should be dropped rather than hedged.
Slot numbers are the better clock when precision matters. The distance between two slots is an exact integer even though the wall-clock length of each slot varies with network conditions. Measuring cadence in slots removes the estimation problem and introduces another, since a constant slot gap is not a constant time gap. Say which clock you used.
Moderate rather than High because cadence separates software from hands reliably, and honest automation from produced flow only weakly. Not Low, because the gap and size distributions are directly measurable from public data, reproducible by a second analyst, and stable under changes to the window. The band is set by what timing cannot see, not by measurement error.
Curve phase cadence and pool phase cadence
Launch venues add structure that a naive gap profile will misread. On a bonding curve, price is a function of supply along a fixed formula, so a run of small buys moves price in a smooth staircase and trades tend to land in dense early clusters while attention is highest. After migration to a standard pool, the same market prices against a reserve pair, and arrival changes with the participants.
That distinction matters for anyone comparing a launch window with a later one. Cadence during the curve phase is naturally faster and more clustered than pool phase cadence, and tooling built for the phase reflects it: a Pump.fun volume bot tool is configured around curve mechanics rather than pool depth. Spanning both phases without splitting them at migration produces a bimodal distribution belonging to the venue.
The correct handling is to cut the record at the migration point and profile each side separately. A single distribution across both phases will show two modes and invite the wrong conclusion. This does not prove that either phase was produced. It means the venue changed underneath the measurement, and a measurement that ignores that is measuring the venue.
Priority fees as a secondary timing signal
Fee settings sit alongside spacing and carry weaker, useful information. Solana charges a base fee of 5,000 lamports per signature, and a transaction may add a compute unit price to bid for earlier inclusion. That price is a client setting, which means it records a decision made once by whoever configured the sender rather than a market outcome.
A compute unit price that never varies across hundreds of transactions, through quiet periods and congested ones alike, suggests a fixed configuration. A price that tracks network conditions suggests a person watching, or a more capable client doing the watching. Neither observation decides anything, because ordinary wallets frequently keep a static fee setting.
Treat fee constancy as corroboration only. It is worth recording next to the gap profile because it arrives free with the same transaction fetch, and it occasionally separates two wallets that otherwise look identical. This desk would not raise a confidence band on fee constancy alone. The glossary keeps the field definitions used here.
The innocent explanations that defeat each reading
Every timing signature has a boring explanation that fits it perfectly, and a reading not tested against the list below is unfinished. These are not edge cases. They are the ordinary mechanics of how transactions reach a validator, and each manufactures the exact pattern a careless analyst would call produced volume.
- Retry and rebroadcast logic. Clients resend a transaction until it lands, and a failed leg may be retried after a fixed delay, stamping regular short gaps onto a record that had none.
- Cron-driven treasury operations. Scheduled rebalancing, payroll, buyback programmes and reward distributions all run on timers and all produce evenly spaced on-chain activity by design.
- Dollar-cost-averaging tools. A retail user splitting a purchase into fixed instalments produces textbook scheduled arrival with quantised sizes and no manipulation anywhere in the chain.
- Market maker quote refresh. A maker re-quoting on a timer produces two-sided flow at a steady cadence, which is exactly the shape a naive detector flags.
- Router leg splitting. An aggregator can break one user order into several venue legs that land within the same second, creating a burst that represents a single human decision.
Router behaviour deserves particular care because it inverts the count. Aggregators such as those documented at the Jupiter station route across multiple pools, so one intent becomes several trades. A gap profile built without collapsing legs into intents over-reports short gaps and under-reports silences, which biases the reading toward the automated column before the analysis has begun.
The desk does not publish guidance on making produced activity harder to detect, and the list above exists to protect readings from false positives rather than to be read backwards. Where a signature has an innocent explanation the data cannot exclude, the output is a lower confidence band, as in the round-trip analysis.
Reconstructing a gap profile from an explorer
A first-pass profile does not need custom infrastructure. A public explorer such as Solscan exposes enough to build one by hand for a modest window, which is the right scale for deciding whether a deeper pull is worth the effort. The sequence below is deliberately manual so every step can be checked.
- Fix the window first. Choose a start and end time before looking at any data, and write down why those boundaries were chosen. A window selected after seeing the pattern is not evidence.
- Pull confirmed trades only. Open the market or token page, filter to successful swaps, and discard failures. Failed attempts describe a client, not a market.
- Collapse legs into intents. Where several transfers or venue hops share one signature or land in the same slot from the same signer, treat them as one arrival.
- Record slot and timestamp together. Keep the slot number next to the blockTime for every arrival, so that fine spacing can be checked in slots when whole seconds are too coarse.
- Compute consecutive gaps. Sort by slot, subtract each arrival from the one before it, and bucket the results using the bands in the table above.
- Build the size histogram alongside. Tally trade amounts in base units and count exact repeats, since quantisation and cadence are stronger together than either alone.
- Write the falsifier before the conclusion. State the observation that would overturn the reading, check whether the data you hold contains it, and record the answer.
The output of that sequence is a profile and a caveat, not a verdict. If it points somewhere, the next step is a reproducible pull rather than a louder claim, and the method for that is in the evidence collection notes. A timing profile earns a hypothesis. Nothing here identifies anybody.
Questions this desk is asked
What is an inter-arrival gap and why does it matter more than volume?
An inter-arrival gap is the elapsed time between one trade in a market and the next. It matters more than turnover because turnover only counts value, while the gap describes the process that generated it. Spontaneous attention produces clustered bursts and long silences. A scheduler produces gaps drawn from a narrow band around a configured interval. The two shapes differ even when the daily totals match exactly.
Does a regular trade interval prove that volume was produced?
No. It shows that a program placed the orders, which is a different claim. Market makers refresh quotes on timers, treasuries run cron-driven operations, and retail accumulation tools split a purchase into fixed instalments. Every one of these leaves regular spacing. Regularity narrows the origin to software and leaves the purpose entirely open, so it should be reported as an automation finding rather than a manipulation finding.
What is size quantisation in trade data?
Size quantisation means the trade amounts come from a small set of values rather than a continuous spread. It shows up as repeated round figures, as amounts that recur exactly across many transactions, or as a tight band with a hard floor and ceiling. Human trading also produces round numbers, but it produces them alongside a wide scatter of odd amounts. A set with no scatter at all is the notable case.
How precise are Solana timestamps for this kind of analysis?
Solana targets roughly 400 milliseconds per slot, but the blockTime field exposed by RPC and explorers is an estimate expressed in whole seconds. That resolution is fine for separating a two second cadence from a four minute one and useless for sub-second claims. When precision below a second matters, slot numbers are the better clock, because slot distance is an exact count even though its wall-clock length varies.
Can retries and rebroadcasts create a false timing pattern?
Yes, and this is one of the most common sources of error. Solana clients often rebroadcast a transaction until it lands, and a wallet or router may retry a failed leg after a fixed delay. Both mechanisms stamp regular short gaps onto a record that had none. Before reading cadence, separate confirmed distinct trades from retries of the same intent, or the retry policy will be measured instead of the trader.
Do priority fees carry timing information?
They carry secondary information. A compute unit price that never changes across hundreds of transactions suggests a single configured value rather than a person reacting to congestion. A price that moves with network conditions suggests either a person watching or a more capable client. Neither reading is decisive, because plenty of ordinary wallets keep a fixed fee setting and plenty of schedulers adjust theirs dynamically.
What would make you drop a timing-based reading entirely?
A long-tailed gap distribution with no repeated modal value, sizes spread continuously across several orders of magnitude, and counterparties that do not reduce to a small funded group. Any one of those weakens the reading and all three together end it. A single instrumented feed showing that observed regularity came from client retry behaviour rather than distinct trades also ends it immediately.
Filed in Signatures by The Volume Forensics Desk. Patterns described here come from protocol design and public transaction data; every figure in an example is invented, labelled and describes no real pair. The evidence standard the desk works to is set out in stating confidence honestly, and the terms used are defined in the glossary.