Advertising Adstock – Concept & Formula

Adstock Example

Advertising adstock is a term used to measure the memory effect of advertising carried over from start of advertising.  For example, if a company advertises at a certain level in week 1, week 2 will have a portion of week 1 level. Week 3, in turn, will have a portion of week 2 level.  In other words, adstock is a percentage term that measures the decaying effect of advertising throughout the weeks.

The term that comes up often in response models where we try to measure the effect of advertising on sales or on purchase intent.  The models are usually regression based but are often published under names like Marketing Mix Models (MMM), Marketing Mix Optimization (MMO), Network-Effects and Hierarchical models.

The theory behind adstock is that marketing exposures build awareness in consumers’ minds.  That awareness doesn’t disappear right after the consumers see the ad but rather remains in their memory.  Memory decays over the weeks and hence the decay portion of adstock.

The formula for advertising adstock is At = Xt + adstock rate * At-1.

The files below show a simple implementation of advertising adstock transformation:
• Excel Adstock Transformation
• SAS Adstock Transformation
• R Adstock Transformation
• Python Adstock Transformation – coming soon

21 thoughts on “Advertising Adstock – Concept & Formula

  1. Reza

    Thanks Gabriel. You explained ad stock calculation in a simple way. Could you please describe how to estimate the ad stock rate? I am looking for the formula to estimate it.. This rate is supposed to depend on parameters like awareness/sales/media clutter etc., isn’t it?

  2. Pingback: Advertising Adstock with Maximum Period Decay | Gabriel Mohanna's Blog

  3. Pingback: Marketing Mix Modeling Explained – With R | Gabriel Mohanna's Blog

  4. nauris

    This formula is one of the first versions of Adstock (I guess from 1979 paper). Check S. Broadbent book “Accountable Advertising” (1997) (Section 8.2.4 p.159 & Table6 p.281). There is very well explained how to calculate correctly Adstock with examples and formulas. Its not logical that Adstock effect can be bigger than advertising itself.

    1. analyticsartist Post author

      I ordered the book and looking forward to reading that chapter. What I did notice from industry experience is that marketers are always asking to understand their advertising effect and they refuse to accept any model that doesn’t show a really big effect. I guess the phrase, “It is difficult to get a man to understand something, when his salary depends upon his not understanding it!” is appropriate over here.

    2. AnalyticsArtist Post author

      I looked at the book and the only difference in the new formula he proposed is to have the first week contain only half of the initial advertising. The idea is that we don’t know when advertising was aired during the week so we’ll assume it occurred half way through. Unfortunately, this will only effect the first few weeks and the rest will have 99% correlation with the initial adstock formula. So we go through immense increase in calculation complexity and not find a meaningful difference.

  5. JMB

    One thing to note: if you want your adstocked variable to sum-up to the original, you need to apply the multiplier [sum(advertising)/sum(adstock)] to the adstocked variable. In this way, you preserve the original spend or impression levels.

  6. Pingback: Advertising Diminishing Returns & Saturation | Gabriel Mohanna's Blog

  7. IS

    So, I have a mock dataset and it is weekly activity for the last 2 years and let us say I only had 3 media that I spend my marketing budget every week.
    Let us say we have TV impressions, Email spend and Display spend every week in this dataset. Let us also assume that my response variable is revenue so revenue is also a variable in this dataset.
    I saw your article which I thought was very good/simple/useful for what I am trying to do – adstock transformation for these media activity because I suspect there is some residual effect of those media activity and I want to capture them in my model.
    I plan to run a regression model once I have captured these effects.
    Without the adstock transformation terms, my model could look like this:
    Revenue ~ intercept + b1 * TV imp + b2 * Email spend + b3 * Display spend + error term

    1. What would my model look like if I add the adstock transformation terms?
    2. I want to know how many weeks I should capture these effects – is there a rule of thumb for it?
    3. How many additional adstock transformation terms should I create in my model given the above scenario?

    1. AnalyticsArtist Post author

      I’ll answer question 2 first. The standard adstock formula is infinite decay. However, after few weeks the effect size is close to zero. If you want to try an absolute zero then look at Advertising Adstock with Maximum Period Decay. You can experiment with few values to get the best model.

      Your model after adding adstock transformation would look as follows. You can pass that down to nls function.

      Revenue ~ intercept + b1 * adstock(TV imp, a1) + b2 * adstock(Email spend, a2) + b3 * adstock(Display spend, a3)

      You need to have defined an adstock function:

      adstock <- function(x, rate=0){
          return(as.numeric(filter(x=x, filter=rate, method="recursive")))

      I often times found display advertising has zero adstock value though so you can skip that transformation. However, it doesn’t hurt to try it.

      1. Keval Shah

        Thanks for this post. I have been attempting to implement adstock for our advertising campaign and it was my understanding that AdStock is very relevant to Display Advertisements or visuals as those tend to stick with people when they see them and then it decays over time. Based on your above / last comment, you mention zero adstock for display. Would like to hear your thoughts behind that. Any reason that would help explain zero adstock value for display.

      2. AnalyticsArtist Post author

        I would say video tends to stick more with people than display images. Repeated video is even more stick, which is the case of TV. Digital search advertising would be the lowest in case of stickiness, i.e. adstock.

      3. IS

        I also thought that Display ads had adstock effect as when we used to run tests at the agency I worked, we would continue to look at test results for a month even after the Display campaign ended. I will have to try this technique on my data that I have currently to see if the adstock effect exists or not for Display campaigns.

      4. IS

        Thanks. So regarding the adstock rate when we define the adstock function, what does it mean when the value is 0? And, how do we know what would be the optimal adstock rate?

  8. Preetha

    Fantastic article. As a newcomer to Marketing Mix Models, I found this really useful.

    Could you possibly write an article about Adbank transformations?


Leave a comment

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s