Skip to content
Curve Campaign

Mid curve pacing: shaping the spend once no single trade moves the quote

The middle of a curve is where size stops being the interesting decision and cadence takes over. The reserve is deep enough to absorb a normal trade without flinching, which means what a reader sees is no longer any individual fill but the shape the fills make together.

Parameter The Curve Campaign Desk 2559 words 12 min read Updated 13 August 2026
Phase P2, where the reserve has grown enough that a normal fill barely moves the quote.
Dominant field Interval and the pacing pattern the intervals are drawn from.
Second field Phase allocation, because pacing only exists once there is a total to shape.
Ends when Remaining curve capacity becomes small relative to the phase allocation.

Mid curve pacing is the decision about what shape a phase allocation takes across its window. By this depth the reserve absorbs a normally sized fill without visible complaint, so the campaign is no longer being read one trade at a time. It is being read as a pattern, and the pattern is produced by the interval policy rather than by the size band. Getting the size right is now table stakes; getting the cadence right is the actual work.

What changes in the middle of a curve

Two things move at once when a curve fills. The reserve behind the quote grows, so the same trade size produces less movement per fill, and the band the size can be drawn from widens because the impact ceiling has risen while the cost floor has stayed roughly where it was. Both changes push the campaign toward fewer, larger trades for the same allocation.

Fewer trades means longer gaps, and longer gaps mean the cadence becomes visible in a way it was not when fills were arriving every couple of minutes. This is the point where an operator who carried the early block forward starts to see a record that looks either frantic or mechanical: frantic because the trade count is far higher than the depth calls for, mechanical because a short base interval leaves little room for the gaps to differ from each other.

The third change is subtler. In the early phase the campaign was materially moving the mechanism it traded against, so the record and the effect were the same thing. In the middle, the campaign is mostly producing a record. That is not a criticism; it is a description of what the phase can and cannot do, and a plan that understands it will stop expecting the quote to respond to a cadence decision.

Pacing is a shape, not a rate

A rate is a single number: so many SOL per hour. A shape says where in the window that spend sits. Two phases with identical allocations, identical size bands and identical trade counts can produce completely different records depending on whether the fills are spread evenly, concentrated at the front, held for the end, or triggered by something happening elsewhere.

Most plans specify a rate and inherit a shape. The shape they inherit is flat, because that is what dividing a total by a duration produces, and flat is a legitimate choice that almost nobody makes deliberately. Writing the shape down as a named pattern is the cheapest improvement available to a mid-curve block, because it costs nothing and it turns an accident into a decision.

The other reason to name the shape is that it makes the phase markable. At the close you can ask whether the record matches the pattern that was drawn, which is a question with an answer. You cannot ask whether the record matches a rate, because a rate is satisfied by any arrangement of fills that adds up.

Four pacing patterns and what each is for

Pacing patterns, their objective and the failure each accepts
PatternHow the allocation is spreadObjective it suitsFailure it accepts
FlatEven spend per unit of time across the whole windowA steady presence in every observation intervalEvenness is itself a pattern, and a long flat run is the easiest shape to describe
Front-loadedA majority of the allocation in the first part of the window, tapering afterPresence concentrated where attention already isThe tail is quiet, and a quiet tail is where the phase gets judged
Back-loadedA light opening building toward the end of the windowArriving at a handover with activity rather than exhaustionIf the phase is cut short, most of the allocation was never deployed
Event-drivenBursts triggered by an observable condition rather than by the clockActivity that has a reason attached to itTrigger conditions can fail to fire, leaving the allocation unspent and the plan silent

Nothing in that table is a recommendation. Each row is a bet on which failure is cheaper for a particular objective, and the reason the failures are named is that a pattern chosen without knowing what it gives up is not a decision. Event-driven deserves a specific warning: it is the only pattern that can end a phase with a substantial unspent allocation, and a plan that chooses it needs a fallback written next to it.

Hybrids are normal and should still be named. A phase that runs flat for two thirds of its window and then hands to an event trigger is a legitimate design, and writing that sentence in the block is what lets the close say whether it happened.

Deriving the interval in five moves

  1. Fix the phase allocationFrom the campaign split, ring-fenced, with the cost of the trade count included rather than assumed away.
  2. Fix the average sizeFrom the band derived against current depth. The average matters here, not the extremes, because trade count depends on it directly.
  3. Derive the trade countAllocation divided by average size, rounded down, with the remainder noted rather than quietly absorbed.
  4. Derive the base intervalPhase length in seconds divided by trade count. This is the flat pattern by construction; any other pattern reshapes from here.
  5. Set the jitter policyAs a proportion of the base interval rather than as a fixed number of seconds, so it stays meaningful when the base interval changes.

The fifth move is the one most often skipped, and it is the one that produces the difference between a schedule and a metronome. Jitter expressed as a fixed number of seconds is nearly invisible when the base interval is long and dominant when it is short, which means a policy written once in the early phase will be wrong by the middle. Expressed as a proportion, it survives the handover.

Worked arithmetic: an allocation becomes a cadence

The figures below are illustrative arithmetic. They exist to show how the numbers chain, and they describe no real token or run.

Illustrative only

Phase allocation: 24 SOL. Phase length: 6 hours = 21,600 seconds.

Size band at current depth: 0.20 to 0.80 SOL, average 0.45.

Trade count: 24 / 0.45 = 53 fills.

Base interval, flat: 21,600 / 53 = 408 seconds, about 6.8 minutes.

Jitter policy: plus or minus 40 percent of base, so gaps fall between roughly 245 and 571 seconds.

Front-loaded variant: 60 percent of the allocation in the first 2 hours.

First 2 hours: 14.4 SOL / 0.45 = 32 fills over 7,200 seconds = 225 second base.

Last 4 hours: 9.6 SOL / 0.45 = 21 fills over 14,400 seconds = 686 second base.

The front-loaded variant is the same allocation and the same trade count producing two very different-looking stretches: a fill roughly every four minutes early, then one roughly every eleven minutes for twice as long. Whether that is the right shape depends on the objective, but it is at least now a shape somebody chose, with two base intervals and one jitter proportion that can be checked against the record afterwards.

It is also worth seeing what happens if the size band was not re-derived. Carrying the early-phase average of 0.09 SOL into this allocation gives 266 fills instead of 53, a base interval of 81 seconds instead of 408, and five times the fixed cost. The pacing field was never touched, and the cadence changed by a factor of five, which is the clearest possible demonstration that pacing is downstream of size.

Jitter, clustering and the gap distribution

What a reader perceives is not the mean gap. It is the regularity of the gaps and the shortest ones, because those are what stand out in a list sorted by time. A distribution that produces gaps of 400, 405, 398 and 402 seconds has a lovely average and reads as a machine. One that produces 250, 560, 310 and 480 has the same average and reads differently.

Two properties are worth setting deliberately. The spread, which is the jitter proportion, and the tendency to cluster, which is whether short gaps are allowed to follow each other. Real activity clusters; drawing every gap independently from the same range produces a sequence that is smoother than the thing it is imitating, which is a subtle way of standing out.

Neither property has a correct setting, and this desk is not going to invent one. What the block should carry is a stated spread, a stated position on clustering, and the acknowledgement that both are visible in the finished record. Reading the record back through a public explorer after a phase, rather than through the tool's own summary, is the cheapest way to find out what the policy actually produced, and per-account transaction history on the Solana explorer shows the gaps exactly as anyone else would see them.

Pacing against an observation window

Nobody reads a raw transaction list. Activity is read through windows: a chart interval, a rolling period on a data site, a screenshot taken at a particular moment. A pacing pattern that produces a satisfying total across six hours can produce almost nothing inside a five-minute interval, and if the objective was about what a five-minute interval contains, the phase failed while adding up correctly.

The fix is to write the window into the objective and then check the derivation against it. If the base interval is 408 seconds, a five-minute interval contains zero or one fill, and no amount of allocation changes that without changing the size band or the phase length. Discovering that during the derivation costs nothing. Discovering it at the close costs the phase.

This is also where the temptation to shorten the interval arrives, and it should be resisted unless the size band supports it. Cutting the interval without cutting the size means spending faster, not spending better, and a phase that empties its allocation in the first third of its window has replaced a pacing problem with a shorter one. Whether that trade is acceptable is exactly the sort of thing an automated Solana volume bot will execute either way, which is why the decision has to be settled in the block rather than at the console.

When to slow down, and how to write it

Slowing down is a decision the plan should be able to take without a conversation. Three conditions are worth writing in advance. The first is a capacity condition: when the remaining capacity in the curve falls below a stated multiple of the phase allocation, the mid phase has done its job and the approach block should take over, because continuing risks consuming the transition by accident.

The second is an execution condition. If the landed rate falls below what the derivation assumed, the schedule on paper has stopped matching the record on chain, and continuing at the planned rate makes the gap larger rather than smaller. The correct response is usually to pause and re-derive rather than to raise the offer indefinitely.

The third is a cost condition. If the fixed cost per fill has risen enough that the floor of the size band no longer holds, the band is invalid and the cadence built on it is invalid too. Writing this as a trigger means the phase stops on arithmetic rather than on somebody noticing. A Pump.fun volume bot tool that can hold a stop condition and act on it removes the need for anyone to watch, but the condition itself still has to be written by a person before the phase starts.

What a cadence costs

Every fill carries fixed cost, so trade count is a cost decision as much as a cadence decision. A phase that doubles its trade count to tighten its cadence has doubled the fixed component of its spend, and at a small average size that component is a meaningful share of the allocation rather than a footnote.

The arithmetic is worth doing explicitly in the block. Trade count multiplied by assumed fixed cost per fill gives a number; that number subtracted from the allocation gives what is actually available for notional flow. If the two differ by enough to change the trade count, iterate once. Most blocks converge after a single pass.

Fee structure and priority fee mechanics are protocol-level rather than tool-level, and the Solana documentation is the right place to read how the offer is expressed and what it competes with. Reading it once means the cost line in a block is derived from the model rather than from a habit.

The pacing checklist

  • The pattern is named, and it is one the plan chose rather than one the arithmetic produced.
  • Trade count was derived from allocation and re-derived average size, not carried from the previous phase.
  • The base interval came from phase length divided by trade count.
  • Jitter is expressed as a proportion of the base interval, not as a fixed number of seconds.
  • A position on clustering is stated, even if the position is that gaps are drawn independently.
  • The observation window the objective cares about is written down and checked against the base interval.
  • Fixed cost of the trade count was subtracted from the allocation before the notional flow was computed.
  • A slowdown condition exists for capacity, for landed rate and for cost.
  • The record will be read back from a public source at the close, not only from the tool's summary.
  • The phase exit condition refers to the state of the curve rather than to elapsed time.

The exit condition for the mid phase

The mid phase ends when the remaining capacity in the curve becomes small enough relative to the allocation that continuing at the current rate would consume the transition. That is a capacity condition, it is checkable, and it is deliberately conservative: the approach block is designed to handle the last stretch, and letting the mid block wander into it is how campaigns arrive at migration with nothing planned and nothing left.

Writing the condition requires knowing roughly how much capacity remains, which is an observation rather than a published number. It comes from the mechanism in front of you, and any figure this desk printed would be invented. What the desk can say is that the condition should be expressed as a ratio to the phase allocation, because that is the comparison that decides whether continuing is safe.

The fallback remains an allocation condition. A mid phase that spends out before the capacity condition fires has told you something useful about the split, and recording which of the two ended the phase is one of the four lines the phase writes at its close.

What pacing does not fix

Pacing cannot repair a size band derived against the wrong depth. If the average size is wrong, the trade count is wrong, and every interval computed from it is wrong in the same direction. Operators who reach for the interval field to fix a record that looks off are usually adjusting the downstream parameter and leaving the upstream one alone.

It also does not make a campaign look unplanned. A well-shaped pattern with a sensible jitter proportion is still a shape, and the funding structure behind the wallet set is still whatever it was. Pacing changes what the record looks like; it does not remove the fact that a record exists and is readable by anyone who wants to read it.

And it does not create attention. A cadence decides how a campaign's own flow is distributed, not whether anyone is watching the window it is distributed across. A phase that produces a well-shaped record nobody looked at has executed correctly and achieved nothing, which is a planning problem that lives in the objective rather than in the interval field.

The same questions, asked at this depth

What is the difference between pacing and interval?

The interval is the gap between two fills. Pacing is the shape those gaps make across the whole phase. A single interval number produces a flat pattern by default, which is a choice most plans make without noticing they made it.

Should intervals be random?

They should be drawn from a distribution with enough spread that consecutive gaps are rarely similar, which is not the same as uniform randomness. What a reader notices is the shortest gaps and the regularity, not the average.

Does a longer window always read better?

No. A run spread thin enough becomes indistinguishable from the mechanism doing nothing, which is its own failure. The window has to be short enough that a normal observation interval contains a meaningful amount of the flow.

How does pacing interact with swap size?

Through trade count. Allocation divided by average size fixes how many fills there are, and phase length divided by that count fixes the base interval. Change the size band and the cadence moves even though nobody touched the interval field.

When should a mid-curve phase slow down?

When the condition written before the phase says so. Useful conditions include the remaining curve capacity falling below a stated multiple of the phase allocation, or the landed transaction rate falling below what the derivation assumed.

Is a front-loaded pattern better than a flat one?

Neither is better in general. Front-loading concentrates the record into the early part of the window and leaves the tail quiet; flat spreads it evenly and produces a longer but shallower presence. The objective decides which failure is cheaper.

Filed under Parameters and written by The Curve Campaign Desk. Ranges on this page exist to show which direction a trade-off runs; the phase decides the value, and every figure inside a worked block is illustrative arithmetic that describes no real token. What this desk does and does not cover is set out on the desk page.

Read next