Adstock Configuration
Modeling Marketing Carryover Effects
Overview
Adstock (also called carryover or lagged effects) models how marketing impact persists beyond the initial exposure. When you see a TV ad today, it influences your behavior today AND tomorrow AND possibly next week. Adstock transformation captures this delayed and decaying effect.
Purpose: Transform marketing variables to account for lasting impact beyond immediate period
Where configured: Model Builder → Available Variables panel → Adstock Rate column
What is Adstock?
The Carryover Concept
Without adstock:
- TV spend in Week 1 only affects sales in Week 1 
- Unrealistic - ads have lasting impact 
- Underestimates total marketing effect 
With adstock:
- TV spend in Week 1 affects sales in Weeks 1, 2, 3, etc. 
- Effect decays over time 
- More realistic model of marketing impact 
Mathematical Formula
Adstock transformation:
Adstocked_Value_t = Current_Spend_t + (Adstock_Rate × Adstocked_Value_t-1)
Where:
- t = current time period 
- Adstock_Rate = decay rate (0 to 1) 
- Values from previous periods carry forward with decay 
Example with 70% adstock rate:
Week 1: Spend = $10,000
- Adstocked = $10,000 
Week 2: Spend = $5,000
- Adstocked = $5,000 + (0.70 × $10,000) = $12,000 
Week 3: Spend = $0
- Adstocked = $0 + (0.70 × $12,000) = $8,400 
Week 4: Spend = $0
- Adstocked = $0 + (0.70 × $8,400) = $5,880 
Key insight: Even with zero spend in weeks 3-4, adstocked value remains positive due to carryover from earlier spending.
Adstock Rate Explained
What the Rate Means
Adstock Rate = Percentage of effect that carries to next period
0% (No carryover):
- Effect completely disappears next period 
- Immediate impact only 
- Use for: Search, email, price changes 
50% (Moderate carryover):
- Half of effect persists to next period 
- Moderate lasting impact 
- Use for: Digital display, some radio 
70% (Strong carryover):
- 70% of effect persists to next period 
- Strong lasting impact 
- Use for: TV, brand campaigns 
90% (Very strong carryover):
- 90% persists - very slow decay 
- Extremely persistent impact 
- Use cautiously - may indicate trend, not carryover 
Typical Rates by Channel
TV Brand
60-80%
70%
TV Direct Response
40-60%
50%
Radio Brand
50-70%
60%
Radio Direct Response
30-50%
40%
Digital Display
30-50%
40%
Digital Video
40-60%
50%
Social Media Paid
20-40%
30%
Paid Search
0-20%
10%
0-10%
0%
60-80%
70%
Outdoor/OOH
70-90%
80%
Sponsorships
60-80%
70%
Note: These are starting points. Test empirically for your specific context.
How to Configure Adstock
In Model Builder Interface
Step 1: Select Variables to Add
Check boxes for variables you want to add to model
Step 2: Set Adstock Rate
For each selected variable:
- Locate "Adstock Rate" column 
- Enter value 0-100 (percentage) 
- Leave at 0 for no carryover 
Input format:
- Enter as whole number (0-100) 
- Example: Enter "70" for 70% carryover 
- System converts to decimal (0.70) internally 
Step 3: Add Variables
Click "Add Variables" button. System:
- Creates adstocked version of variable 
- Names it: - OriginalVariable_adstock_XX
- Adds to model automatically 
Example:
- Original: - TV_Spend
- With 70% adstock: - TV_Spend_adstock_70
Variable Naming Convention
Format: BaseVariable_adstock_XX
Where XX is the rate as whole number (00-99)
Examples:
- TV_Spend_adstock_70(70% rate)
- Radio_Spend_adstock_60(60% rate)
- Display_Impress_adstock_40(40% rate)
Both variables exist:
- Original variable still in dataset 
- Adstocked version created as separate variable 
- You choose which to include in model 
- Don't include both - perfect multicollinearity 
Selecting Optimal Adstock Rates
Method 1: Use Typical Rates
Quickest approach:
- Use industry standard rates from table above 
- Works well for initial models 
- Refine later if needed 
Method 2: Test Multiple Rates
In Variable Testing interface:
- Navigate to Variable Testing 
- Select Adstock Optimization 
- Choose variable to test 
- System tests rates: 0%, 10%, 20%, ..., 90% 
- Review results table: - Each rate shown with R² increase 
- Coefficient value 
- T-statistic 
- P-value 
 
- Select rate with highest R² and significance 
Interpretation:
- Best rate: Highest R² increase 
- Significant: P-value < 0.05 
- Reasonable coefficient: Positive for marketing spend 
Method 3: Theory-Based Selection
Consider channel characteristics:
Short carryover (0-30%):
- Direct response mechanism 
- Immediate call to action 
- Performance marketing 
- Instant gratification products 
Medium carryover (30-60%):
- Mix of brand and performance 
- Moderate consideration period 
- Some delayed response 
- Digital with retargeting 
Long carryover (60-90%):
- Brand building focus 
- Long consideration period 
- Awareness-driven 
- High-involvement categories 
When to Apply Adstock
Apply Adstock For:
✅ Media advertising:
- TV (brand or DR) 
- Radio 
- Digital display 
- Video ads 
- Print 
- Outdoor/OOH 
✅ Brand campaigns:
- Awareness building 
- Consideration driving 
- Long-term impact focus 
✅ Channels with lagged response:
- Word-of-mouth effects 
- Awareness accumulation 
- Delayed purchase decisions 
Don't Apply Adstock For:
❌ Immediate-effect channels:
- Paid search (high intent, instant click) 
- Email (open and act immediately) 
- Price promotions (buy today) 
- Flash sales 
❌ External factors:
- Weather 
- Holidays (use dummies instead) 
- Competitor actions 
- Economic indicators 
❌ Control variables:
- Price (contemporaneous effect) 
- Distribution 
- Product features 
Combining Adstock with Other Transformations
Transformation Order Matters
Correct order:
- First: Apply adstock 
- Second: Apply saturation curve 
Example:
- Original: - TV_Spend
- Step 1 (Adstock): - TV_Spend_adstock_70
- Step 2 (Curve): - TV_Spend_adstock_70|ICP_ATAN_a0.6_power1.8
Why this order:
- Adstock accumulates effect over time 
- Saturation applies to accumulated effect 
- Matches real-world behavior 
Wrong order:
- Curve then adstock 
- Doesn't match marketing reality 
- Can produce nonsensical results 
Creating Combined Variables
In Model Builder:
- Add variable with adstock rate 
- System creates: - TV_Spend_adstock_70
- Then use Curve Testing on the adstocked variable 
- Create: - TV_Spend_adstock_70|ICP_ATAN_a0.6_power1.8
- Add this final transformed variable to model 
In Variable Testing:
- Test adstock rates first 
- Select best rate 
- Then test saturation curves on adstocked variable 
- Combine both transformations 
Interpreting Adstock Results
Model Coefficients
For adstocked variables:
Sales = β₀ + β₁ × TV_Spend_adstock_70 + ...
Coefficient interpretation:
- β₁ = Effect of one unit increase in ADSTOCKED TV spend 
- Not the same as effect of one dollar of TV spend 
- Represents cumulative effect including carryover 
To get immediate effect:
- Multiply coefficient by (1 - adstock_rate) 
- Example: β₁ = 1000, rate = 70% 
- Immediate effect = 1000 × (1 - 0.70) = 300 
- Long-term cumulative effect = 1000 
ROI Calculation
Without adstock (underestimates):
- Simple: Coefficient × Spend / Sales 
- Ignores carryover 
- ROI appears lower than reality 
With adstock (accurate):
- Use decomposition analysis 
- Sums up total contribution over time 
- Captures full carryover effect 
- True ROI calculation 
Example:
- TV coefficient without adstock: 0.5 
- TV coefficient with adstock 70%: 1.2 
- Adstocked version shows true long-term impact 
Common Adstock Patterns
High Adstock (70-90%)
Characteristics:
- Slow decay 
- Effect lasts many periods 
- Persistent impact 
Typical for:
- Brand TV 
- Print advertising 
- Outdoor/OOH 
- Long-term brand building 
Business implication:
- Can reduce frequency without immediate sales drop 
- Investment today pays off for weeks 
- Build sustained pressure over time 
Medium Adstock (30-60%)
Characteristics:
- Moderate decay 
- Effect lasts several periods 
- Balanced immediate and delayed 
Typical for:
- Digital display 
- Radio 
- Video advertising 
- Mixed brand/performance 
Business implication:
- Balance burst and sustained campaigns 
- Some flexibility in scheduling 
- Monitor both short and medium-term effects 
Low/No Adstock (0-20%)
Characteristics:
- Rapid decay 
- Mostly immediate effect 
- Little carryover 
Typical for:
- Paid search 
- Email 
- Price promotions 
- Direct response 
Business implication:
- Must maintain continuous pressure 
- Can't "bank" effects 
- Immediate on/off relationship with sales 
Best Practices
Start Conservative
Initial models:
- Use typical rates from industry standards 
- Don't over-optimize initially 
- Refine in later iterations 
Avoid:
- Testing every rate 0-100% 
- Over-fitting to noise 
- Rates > 90% (likely capturing trend) 
Test Systematically
Structured approach:
- Build model without adstock 
- Note R² and coefficients 
- Add adstock using typical rates 
- Compare R² improvement 
- If significant improvement, keep 
- Fine-tune rates if needed 
Validate Business Logic
Check if rates make sense:
- TV at 70% reasonable? Yes 
- Search at 80% reasonable? No 
- Email at 60% reasonable? No 
Red flags:
- Rates that don't match channel behavior 
- All channels same rate (unlikely) 
- Rates changing dramatically in similar models 
Document Choices
Record in model documentation:
- Which variables have adstock 
- Rates chosen 
- Rationale (testing results, theory, expert input) 
- Date of decision 
Why document:
- Justify choices to stakeholders 
- Remember decisions in future models 
- Consistency across projects 
Troubleshooting
Adstock makes coefficient non-significant
Cause: Adstock rate too high or wrong rate
Solution:
- Test lower rates 
- Try without adstock 
- May not need carryover for this variable 
Model R² decreases with adstock
Cause: Wrong rate or channel doesn't have carryover
Solution:
- Remove adstock 
- Test different rates 
- Channel may have immediate-only effect 
Adstock variable name too long
Cause: Base variable name + adstock suffix exceeds limits
Solution:
- Shorten base variable name before adding adstock 
- Use abbreviations 
- Rename in Variable Workshop 
Can't add both original and adstocked version
Cause: Perfect multicollinearity
Solution:
- Choose one or the other 
- Usually choose adstocked version 
- Remove original from model 
Key Takeaways
- Adstock models marketing carryover effects beyond immediate period 
- Rate = percentage of effect that persists to next period 
- Typical rates: TV 70%, Digital 40%, Search 10%, Email 0% 
- Configure in Model Builder when adding variables 
- Always apply adstock BEFORE saturation curves 
- Test rates systematically using Adstock Optimization 
- Document rate choices and rationale 
- Validate that rates match channel behavior and business logic 
Last updated