Arte SheetsLearn. Try. Understand.

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)FormulaVerified Output
Untapped Addressable Share(M - S) / M0.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.

Further reading