How to calculate adstock rates to unlock marketing ROI
Analytical Alley Team
Marketing Analytics Experts

Does your advertising impact vanish the moment a campaign ends? Most marketers recognize the carryover effect, yet few quantify it accurately. Mastering adstock rates allows you to move beyond gues...
Does your advertising impact vanish the moment a campaign ends? Most marketers recognize the carryover effect, yet few quantify it accurately. Mastering adstock rates allows you to move beyond guessing and finally calculate the true incremental contribution of every marketing euro.

Understanding the carryover effect in B2C marketing
In econometrics, adstock represents the prolonged impact of advertising on consumer behavior. When you run a campaign, the influence does not disappear instantly. Instead, it decays over time as consumers retain the message in their memory. This is particularly vital for B2C brands where brand equity and awareness drive sales weeks after the initial exposure.
By applying an adstock transformation, you account for this memory effect within accurate marketing mix modeling. Without this transformation, your model will likely over-attribute sales to the baseline and under-report the true value of top-funnel channels. A campaign that seems inefficient on a last-click basis often reveals its true power when you account for the sales it generates in subsequent weeks.
The geometric adstock formula
The most common way to model decay is the geometric adstock function. This approach assumes that the highest impact occurs immediately and then diminishes at a constant rate. The mathematical formula is expressed as $A_t = X_t + \theta \times A_{t-1}$. In this equation, $A_t$ represents the adstock value at time $t$, while $X_t$ is the marketing spend or impressions for that specific period. The decay rate, or theta ($\theta$), typically ranges from 0 to 1, and $A_{t-1}$ accounts for the accumulated adstock value from the previous period.
Choosing the right decay rate is a critical step in marketing mix modeling data science because it defines the half-life of your media impact. For instance, a $\theta$ of 0.6 means that 60% of the previous week's advertising effect carries over to the current week. Based on industry benchmarks for European markets, digital channels like paid search usually have low decay rates between 0.1 and 0.4. Conversely, offline channels such as TV often see higher rates between 0.4 and 0.8 due to their lasting brand-building nature.
Advanced decay through Weibull adstock
While geometric decay is simple to implement, it cannot model delayed peaks in effectiveness. TV or YouTube campaigns often reach their maximum impact two weeks after the air date, a phenomenon that a simple constant decay model misses. For these complex scenarios, practitioners use the Weibull distribution.
The Weibull transformation utilizes two distinct parameters: the shape (k) and the scale ($\lambda$). The shape parameter determines if the decay is accelerated, constant, or if it features a delayed peak. The scale parameter controls the speed of that decay. Using Weibull transformations allows your models to capture more complex consumer journeys that are common in retail and e-commerce, ensuring that your budget allocation reflects when consumers actually convert.
Bayesian vs Frequentist implementation
There are two primary methodologies for estimating these rates within your model, each offering different levels of insight for decision-makers.
The Frequentist approach
Frequentist models often utilize grid search or non-linear least squares to identify the specific adstock rate that minimizes the error in your sales forecast. This methodology results in a single point estimate. For example, the model might conclude that your Facebook adstock rate is exactly 0.25. While this is straightforward, it does not easily account for the uncertainty inherent in noisy marketing data, which can lead to overconfidence in a single number.
The Bayesian approach
Modern Bayesian MMM frameworks are widely considered the standard for C-suite leaders who require risk-aware forecasts. Instead of a single number, Bayesian models provide a probability distribution of likely outcomes. By using libraries like PyMC, you can set priors based on domain knowledge. If you know from previous tests that TV typically has high carryover, you can set a prior that steers the model toward a theta between 0.5 and 0.8. This prevents the model from producing implausible results, such as 0% or 100% decay, when data is sparse or correlated with other factors.
Practical code implementation
When implementing adstock in Python or R, the workflow involves transforming your raw spend data before feeding it into the regression model. In a Robyn MMM implementation, these parameters are often optimized automatically using evolutionary algorithms to find the best fit for your specific business outcomes.
A basic Python implementation for geometric adstock looks like this:
import numpy as np
def geometric_adstock(spend, theta):
adstock = np.zeros_like(spend)
for t in range(1, len(spend)):
adstock[t] = spend[t] + theta * adstock[t-1]
return adstock
# Example for a TV channel with 0.7 decay
tv_spend = [1000, 0, 0, 0]
tv_adstocked = geometric_adstock(tv_spend, 0.7)
# Result: [1000, 700, 490, 343]
This simple loop demonstrates how a single burst of spend continues to provide value for several weeks, gradually tapering off as the decay rate is applied repeatedly.
Validating your adstock choices
Choosing an adstock rate is not a static task. You must validate these rates to ensure they reflect reality through several diagnostic checks. Residual analysis is a primary tool here: if your model residuals show a pattern where the model consistently under-predicts sales in the weeks following a large spend, your adstock rate is likely too low.
You should also use incrementality vs ROAS results from geo-lift tests to calibrate your model. If a physical holdout test shows a two-week halo effect but your model assumes a 0.1 adstock, you need to recalibrate to align with ground truth. Finally, perform a plausibility check on your coefficients. If a model suggests a 0.9 adstock for a tactical flash sale email, it is likely picking up a seasonal trend rather than a true carryover effect.
Optimizing for long-term growth
Accurate adstock rates prevent you from making the classic mistake of over-investing in short-term activation channels while starving the brand-building activities that fuel your baseline sales. When you combine these decay rates with a diminishing returns curve, you can calculate the true lifetime value of every euro spent.
Modeling these carryover effects also enables a more sophisticated cross-channel synergy analysis. This allows you to identify how the adstock of a TV campaign might amplify the efficiency of your paid search during the following weeks.
Mastering adstock allows you to move beyond basic attribution and toward a predictive media strategy. Analytical Alley helps European organizations implement these technical frameworks through our mAI-driven media strategy, which runs millions of simulations to ensure your decay rates and budget allocations are optimized for maximum growth. Reach out to our team to refine your measurement stack and eliminate ad waste.
Get Marketing Analytics Insights
Monthly briefings on marketing mix modeling, budget optimisation and what's actually moving the needle for European brands.


