Blog
Cold Start: Pacing a Campaign With No History
A brand-new line item has a goal, a budget, and zero history. The pacing controller has to make real decisions from the first second — before it knows anything about how this campaign behaves. Here's how a bidder paces from a cold start without overreacting or going dark.
- Author
- Ad360 engineering
- Discipline
- Platform engineering
Every campaign has a first second. At that moment, a line item has everything it needs to be ambitious — a goal, a budget, a deadline — and nothing it needs to be smart. It has no history: no idea how much matching supply exists, what win rates to expect, how volatile the hour will be, or how this campaign behaves. And yet the pacing controller cannot wait. Auctions are arriving now. It has to make real participation decisions immediately, on no information.
This is the cold-start problem, and it is one of the quiet tests of a serious pacing system. Overreact, and a new line item burns its budget on the first supply spike before it learns anything. Be too timid, and it falls behind on day one and never catches up. The art is making sane decisions while learning — converging toward good behavior without doing damage on the way there.
Why t=0 is genuinely hard
The difficulty is that pacing is a feedback system, and at the start there is no feedback. A controller normally steers by observing the gap between actual and expected delivery and adjusting participation. At cold start there is no observed delivery, no measured QPS, no acceptance history. Every estimate the controller relies on has to start somewhere, and wherever it starts is, by definition, a guess.
The two failure modes are symmetric and both bad:
- Overconfidence. Assume supply is plentiful and bid aggressively, and a single early burst of cheap inventory can drain the budget before the controller realizes the hour won't sustain it.
- Over-caution. Assume the worst and barely participate, and the line item accumulates a deficit immediately, forcing an uncomfortable catch-up later.
A good cold start threads between them: participate enough to make progress and gather signal, but within bounds that cap the cost of being wrong.
The mechanisms that make cold start safe
Cold start is handled by specific machinery, the same primitives that govern steady-state pacing, applied at the moment of maximum ignorance:
- Cold-start protection. The controller has explicit handling for the no-history case, rather than treating a brand-new line item as if it had mature estimates.
- Base-floor gating. When a line item is new (or behind), participation is gated against a base floor — bounded, not unbounded — so early aggression is capped.
- Pacing memory with smoothing. The controller carries smoothed estimates of submission rate, current acceptance probability, and a QPS estimate, updated across calls with exponential (ALPHA-weighted) smoothing. This is the key: estimates evolve gradually as evidence arrives, so the controller adapts toward reality without lurching on the first few noisy data points.
- The trickle floor. A minimum participation level ensures a new line item never sits completely idle while it finds its feet — and protects against the degenerate case of zero or invalid goals.
Together these mean a cold start is a managed convergence: bounded participation, gradually refined estimates, never fully dark, never fully unleashed.
Smoothing is the heart of it
The single most important idea is the smoothing. Exponential (ALPHA-weighted) smoothing means each new observation nudges the controller's estimate rather than replacing it. Early on, this prevents a couple of unusual auctions from convincing the controller that supply is either infinite or absent. As real observations accumulate, the smoothed estimates track actual conditions more and more closely. The controller is, in effect, suspicious of early data and increasingly confident with experience — which is exactly the right posture when you start from nothing.
This is why a cold-started line item doesn't oscillate wildly in its first minutes. The smoothing damps the noise that is loudest precisely when the sample is smallest.
Cold start beyond pacing
Pacing is not the only place cold start bites. A per-line-item model architecture faces the same problem: a brand-new line item has too little data to train a model of its own. The same philosophy applies — lean on a sensible prior (a pooled or default model) at the start, and graduate to a campaign-specific model as data accrues. Cold start is a general discipline in adtech: make defensible decisions on thin evidence, and let specificity grow with data. Pacing just happens to face it on every single new flight.
Common misconceptions
- "A new campaign should just spend its even share from minute one." With no supply knowledge, a fixed share over- or under-spends the moment reality deviates.
- "Cold start means waiting until you have data." The controller can't wait — auctions are live; it must act and learn simultaneously.
- "Early data should drive big adjustments." The opposite: small samples are noisy, so smoothing should damp early moves.
- "Cold start is a one-time event." Every new line item — and every reset — is a cold start; it's a recurring discipline, not a launch-day quirk.
What good operation looks like
- Expect bounded participation at launch — neither a burst nor a freeze.
- Trust smoothed convergence; resist manual overrides in the first noisy minutes.
- Treat early under-delivery on a new line item as normal warmup, not a defect, while watching it converge.
- Where models are involved, start from a prior and graduate to specificity as data accrues.
Open questions
- What is the right base-floor and smoothing (ALPHA) for different campaign types and supply profiles?
- Can a new line item borrow priors from similar past campaigns to warm up faster?
- How should the system detect when warmup has converged versus when a campaign is genuinely struggling?
A cold start is the moment a campaign is most ambitious and least informed. The instinct to either go hard or hold back are both traps. A real pacing controller does neither: it participates within bounds, carries gradually-smoothed memory of what it's seeing, keeps a minimum pulse, and converges toward good behavior as evidence arrives. Making sane decisions on no information, and getting smarter every second — that's the cold-start discipline.