Arte SheetsLearn. Try. Understand.

Marketing Mix Modeling & Econometrics

Broadbent Adstock Decay & Hill Saturation Formula

Model marketing carryover A_t = X_t + lambda * A_{t-1}, adstock half-life -LN(2) / LN(lambda), steady-state stock X / (1 - lambda), and Hill S-curve diminishing returns.

Separate lagged ad carryover (Adstock) from diminishing marginal returns (Hill saturation)!

Modern Marketing Mix Models (MMM) avoid attributing 100% of TV, video, or upper-funnel paid-social spend to the exact week an impression airs. Simon Broadbent (1979) introduced Geometric Adstock A_t = X_t + lambda * A_{t-1} with retention decay parameter 0 < lambda < 1, implying Memory Half-Life t_half = -LN(2) / LN(lambda) periods and Sustained Steady-State Adstock A_ss = X / (1 - lambda) under constant weekly spend X! Feeding Adstock A_t into a Hill Saturation Response Lift_t = L_max * (A_t^s) / (K^s + A_t^s) (with half-saturation inflection K > 0 and slope s >= 1) captures both S-curve threshold effects and saturation!

Verify on Weekly_Spend X = 100 ($k, B2), Adstock_Decay lambda = 0.60 (B3), Max_Incremental_Lift L_max = 50.00 ($k, B4), Half_Saturation_Adstock K = 250.00 (B5), and Hill_Slope s = 2.0 (B6): Adstock Half-Life is -LN(2) / LN(0.60) = 1.3569 weeks; Sustained Steady-State Adstock is 100 / (1 - 0.60) = 250.00 (2.5x weekly spend!); and Steady-State Weekly Incremental Lift at A_ss = K = 250 hits exact half-maximum 50 * (250^2) / (250^2 + 250^2) = 25.00 ($k, Marginal ROAS = 0.25)!

MMM Adstock & Hill Metric (X=100, lambda=0.60, L_max=50, K=250, s=2)FormulaVerified Output
Carryover Half-Life (Weeks)-LN(2) / LN(lambda)1.3569 weeks
Steady-State Adstock Pool (A_ss)X / (1 - lambda)250.00 (vs 100 Weekly Spend)
Steady-State Hill Incremental LiftL_max * A_ss^s / (K^s + A_ss^s)25.00 ($k — Exact Half-Max!)
Single-Burst Week-1 Lift (A_1 = 100)50 * 100^2 / (250^2 + 100^2)6.90 ($k Before Carryover Builds)

Broadbent Adstock Half-Life & Sustained Steady-State Pool Formula

Validate 0 < lambda < 1 (when lambda = 0 there is zero carryover; when lambda >= 1 memory never decays).

=IF(OR(B3 <= 0, B3 >= 1), "Require 0 < lambda < 1", ROUND(-LN(2) / LN(B3), 4))

Hill Saturation Incremental Lift at Steady-State Adstock Formula

In a shared Arte Sheets MMM planning workbook, let media-agency contributors propose alternative channel decay rates lambda via Suggester mode and compare steady-state lift before approving budget reallocations.

=LET(x_sp, B2, lm_d, B3, l_mx, B4, k_hs, B5, s_hl, B6, IF(OR(x_sp < 0, lm_d < 0, lm_d >= 1, l_mx <= 0, k_hs <= 0, s_hl <= 0), "Invalid MMM Input", LET(a_ss, x_sp / (1 - lm_d), ROUND(l_mx * (a_ss ^ s_hl) / ((k_hs ^ s_hl) + (a_ss ^ s_hl)), 2))))

Try the example

Use the original values or change them to test your understanding.

Further reading