Marketing Science & Dynamic Media Mix Modeling
Vidale-Wolfe Advertising Saturation & Decay Formula
Calculate Vidale & Wolfe’s Untapped Market Share (M - S)/M, Instantaneous Sales Drift dS/dt = r*A*(M - S)/M - lambda*S, Zero-Drift Maintenance Ad Spend, and Steady-State Equilibrium Sales.
Model diminishing ad returns near market saturation M alongside customer churn decay!
Linear ad-response spreadsheets absurdly imply that doubling media spend doubles revenue forever—even when a brand already holds 90% of addressable buyers! M.L. Vidale and H.B. Wolfe’s classic 1957 Operations Research empirical law captures two physical forces simultaneously: advertising converts ONLY the Untapped Market Fraction (M - S) / M at response constant r, while existing revenue S erodes at natural forgetting/churn rate lambda when unreinforced: dS/dt = r * A * ((M - S) / M) - lambda * S! Setting dS/dt = 0 yields both Maintenance Ad Spend A_maint = (lambda * S * M) / (r * (M - S)) required to defend current sales S and Long-Run Steady-State Sales S* = (r * A * M) / (r * A + lambda * M) under sustained spend A!
Test on Saturation_Ceiling M = $100M/qtr (B2), Current_Sales S = $60M/qtr (B3 -> Untapped Share = 40.0% in E2), Response_Constant r = 0.50 (B4), Current_Ad_Budget A = $20M/qtr (B5), and Decay_Rate lambda = 0.10/qtr (B6): Gross ad gain is 0.50 * 20 * 0.40 = +$4.00M while natural decay is 0.10 * 60 = -$6.00M, giving Net Sales Drift dS/dt = -$2.00M/qtr (E3); Maintenance Spend needed to halt erosion at $60M is (0.10 * 60 * 100) / (0.50 * 40) = $30.00M/qtr (E4); and Long-Run Steady-State Sales at $20M spend settles at (0.50 * 20 * 100) / (10 + 10) = $50.00M/qtr (E5)!
| Vidale-Wolfe Media Metric (M=$100M, S=$60M, r=0.50, A=$20M, lambda=0.10) | Formula | Verified Output |
|---|---|---|
| Untapped Addressable Share | (M - S) / M | 0.4000 (40.00% Uncaptured) |
| Net Sales Drift Rate dS/dt ($M) | r * A * ((M - S)/M) - lambda * S | -$2.00M/qtr ($0.00M @ A=$30M) |
| Maintenance Ad Budget A_maint | (lambda * S * M) / (r * (M - S)) | $30.00M/qtr |
| Steady-State Sales S* ($M/qtr) | (r * A * M) / (r * A + lambda * M) | $50.00M/qtr ($60.00M @ A=$30M) |
Vidale-Wolfe Steady-State Sales & Maintenance Spend Formula
Validate M > 0, 0 <= S < M (at S = M, zero untapped buyers remain so finite ad spend cannot prevent initial decay!), r > 0, A >= 0, and lambda > 0!
=LET(m_cp, B2, sl_0, B3, r_ad, B4, ad_s, B5, lm_d, B6, IF(OR(m_cp <= 0, sl_0 < 0, sl_0 >= m_cp, r_ad <= 0, ad_s < 0, lm_d <= 0), "Invalid Vidale-Wolfe Input", ROUND((r_ad * ad_s * m_cp) / (r_ad * ad_s + lm_d * m_cp), 2)))Maintenance Budget Equilibrium Check (Set A = $30M)
Raise Ad_Budget B5 from $20M to $30M (= A_maint): Net Sales Drift E3 hits 0.00 exactly and Steady-State Sales E5 locks onto current sales $60.00M!
=IF(ISTEXT(E5), E5, ROUND(B4 * B5 * E2 - B6 * B3, 2))Try the example
Use the original values or change them to test your understanding.