Skip to main content
Cover/03 · Test window
M Measurement Field Guide All topics
03
Figure 03 · Test design

A test runs in four phases — pre-test, ramp-up, measurement, cool-down — each one attribution window long. The cool-down lift adds back.

Pre-test. Ramp. Measure. Cool. The cool-down adds back.

Ad stock and the attribution window are two lenses on the same process; they must align, and the test window must contain them. Read the lift only after the ramp settles, and credit the cool-down to the in-test investment.

In the math below, p = peak incremental revenue (value) per day, s = spend per day, w = one attribution window in days. So p/s has units of revenue per dollar — incremental ROAS (iROAS). The figure uses w for each phase as a teaching convenience — "cool-down" here is the same thing the adstock literature calls decay, carryover, or tail.

Timeline · pre-test, ramp, measure, cool
Marketing test · the response shape
Spend is on during ramp-up and measurement, then off during cool-down. Lift builds while ad stock accumulates, plateaus at steady state, then decays back to baseline. Control stays flat throughout.
Pre-test Ramp-up · lift building Measurement · steady state Cool-down · lift decaying Post-test Control · holdout (flat) Treatment · marketing on ▼ spend on ▼ spend off peak baseline D0 D14 D28 D42 calendar day · attribution window = 14d · ramp + measurement + cool-down each = 1 attribution window
Treatment (spend on D0 → D28) Control · holdout (flat) Lift response (rises, plateaus, decays)
Idealization

The triangular ramp and cool-down are a teaching idealization. Real adstock follows exponential carryover: lift(t) = λ · lift(t−1) + s with carryover coefficient λ ∈ (0,1). Ramp and cool-down become equal in area only when the ramp has fully saturated — typically when w ≥ 3 × adstock half-life. Below that, cool-down accumulates more than ramp delivered, and the geometric symmetry argument tightens but doesn't hold exactly. The "phase = attribution window" framing is also a teaching choice; real ramp duration is set by adstock half-life, not by the attribution rule.

Why both phases matter · the symmetry

With ad-stock decay, the ramp triangle and the cool-down triangle are mirror images — same area. Together with the steady-state plateau, the response integrates to exactly twice the measurement-window lift.

Ramp-up Measurement Cool-down ↔ mirror images · equal area p 0 ½wp wp ½wp w (1 attr-window) w w spend on · 2w · 2ws total spend off total lift = ½wp + wp + ½wp = 2wp · total spend = 2ws
True iROAS 2wp / 2ws = p / s — same answer if you read the steady-state alone (wp / ws = p/s).
Option A · ✓
Full integral · count everything
Include the ramp lift and the cool-down lift; divide by the spend that produced them. The ramp's pre-saturation deficit and the cool-down's post-spend tail balance out.
iROAS (ramp + measurement + cool-down lift) / (ramp + measurement spend) = 2wp / 2ws = p / s
ramp measure cool-down
Spend window: ramp + measurement
Option B · ✓
Steady-state only · let symmetry cancel
Read the lift only inside the measurement window, divide by the measurement-window spend. Discard ramp and cool-down. Same answer — they cancel exactly.
iROAS measurement lift / measurement spend = wp / ws = p / s
out of window measure out of window
Spend window: measurement only
✗ Don't mix sides
The hybrid breaks symmetry. Excluding ramp lift while still counting ramp spend, then adding cool-down lift on top, gives 1.5wp / 2ws = 0.75 p/s — a 25% undercount. Excluding ramp from both spend and lift but still adding cool-down gives 1.5wp / ws = 1.5 p/s — a 50% overcount. Whichever side you keep, keep it on both legs.
Variance trade-off

Options A and B give the same expected iROAS but different precision. Option A integrates 3w of daily DiD data; Option B integrates w. Which one has the tighter confidence interval depends on the per-day signal-to-noise of the ramp and cool-down days — not on the integrated "area." More days usually tighten the estimate, but low-signal edge days can add noise without adding much lift. The reason most weekly reports use Option B isn't precision — it's timing: at the moment you ship a report, the cool-down data hasn't arrived yet.

Test crossover

The cool-down of test A bleeds into the pre-test of test B if you run them back-to-back. Test B's "no-marketing baseline" is contaminated by A's residual lift. Either separate consecutive tests by ≥ 1 cool-down (one attribution window in this model, longer with high adstock), or explicitly model A's decay as a covariate in B's analysis.

Takeaway Ad stock and the attribution window are two lenses on the same process — they must align, and the test window must contain them. Two consistent ways to compute iROAS: integrate over ramp + measurement + cool-down (the full picture) or read steady-state only (available sooner, before cool-down lands). They have the same expected value by symmetry; which is more precise depends on the data, not on which has less area. Don't keep half of one side and drop the other.

Computing this from a real test: at daily granularity, compute lift(d) = treatment(d) − control(d) — which is causal only if the two cells would have moved together absent the test (parallel trends, the assumption a clean randomization buys you). Sum over the phases your chosen option includes; divide by spend over the same phases; bootstrap or use cluster-robust standard errors for the CI. Default to Option B in operational reporting because cool-down hasn't landed yet; switch to Option A in retrospective analyses where you have the full window. And remember — the triangle is a model. Channels with near-instant response (branded paid search) are closer to a rectangle; channels with long carryover (TV, programmatic display) need a measurement window of weeks, not days, before the symmetry argument is anywhere near exact.

Methods note

Numbers throughout are illustrative. The triangular ramp and cool-down, the equal-area phases (½wp · wp · ½wp), and the per-phase window w are an idealization that surfaces the shape; real response curves vary by channel, creative, and adstock.

Further reading
  • Localized Shift vs Overall Causal Impact
  • Adstock & attribution window considerations
  • Test Design · Power, α, p-value, tails
  • Superiority vs Non-inferiority