Marketing Analytics & Forecasting
Bass Diffusion Model Adoption Curve and Peak Time Formula
Forecast cumulative adopters N(t), peak sales timing t* = MAX(0, LN(q / p) / (p + q)), and peak adoption rate s(t*) = m * (p + q)^2 / (4 * q) using Frank Bass’s (1969) innovation-imitation model.
Dispel the 50% myth: Bass adoption ALWAYS peaks strictly BEFORE 50% market penetration!
In Frank Bass’s (1969) diffusion model, total market potential m adopts via spontaneous external innovation p > 0 (mass media / trial) and social word-of-mouth imitation q >= 0: cumulative adoption is N(t) = m * (1 - EXP(-(p + q)*t)) / (1 + (q / p) * EXP(-(p + q)*t)). When imitation exceeds innovation (q > p), annual adoption peaks at t_star = LN(q / p) / (p + q) with peak rate s_max = m * (p + q)^2 / (4 * q) and cumulative penetration N(t_star) = m * (0.5 - p / (2 * q)) — always strictly BELOW 50%!
Verify on m = 90,000 potential buyers (B2), innovation p = 0.04 (B3), and imitation q = 0.36 (B4, giving q / p = 9 and p + q = 0.40): peak timing occurs at t_star = LN(9) / 0.40 = 5.4931 years, peak adoption rate hits an exact s_max = 90,000 * (0.16 / 1.44) = 10,000.00 buyers/year, and cumulative penetration at the peak is 90,000 * (0.5 - 1/18) = 40,000.00 buyers (44.44% < 50%)! When q <= p (e.g., q = 0.02, weak word-of-mouth), adoption decays monotonically from launch t_star = 0 with initial rate m * p = 3,600.
| Bass Diffusion Benchmark (m=90,000, p=0.04, q=0.36) | Formula | Verified Output |
|---|---|---|
| Time to Peak Sales (t_star) | IF(q > p, LN(q/p)/(p+q), 0) | 5.4931 years |
| Peak Annual Adoption Rate (s_max) | IF(q > p, m*(p+q)^2/(4*q), m*p) | 10,000.00 adopters/yr |
| Cumulative Adopters at Peak N(t*) | m * (0.5 - p / (2*q)) (for q > p) | 40,000.00 (44.44% of m) |
Bass Cumulative Adopters N(t) at Horizon t Formula
Evaluate N(t) cleanly for any t >= 0, p > 0, and q >= 0 (including pure Fourt-Woodlock exponential diffusion when q = 0!).
=LET(m_pot, B2, p_in, B3, q_im, B4, t_yr, B5, IF(OR(m_pot <= 0, p_in <= 0, q_im < 0, t_yr < 0), "Invalid Bass Parameter", LET(ex_t, EXP(-(p_in + q_im) * t_yr), ROUND(m_pot * (1 - ex_t) / (1 + (q_im / p_in) * ex_t), 2))))Peak Adoption Rate s_max (Handling Both q > p Contagion and q <= p Launch-Peak) Formula
Branch on q > p so products with weak imitation (q <= p) correctly report launch-day peak rate m * p at t_star = 0 rather than a negative LN(q / p) time!
=LET(m_pot, B2, p_in, B3, q_im, B4, IF(OR(m_pot <= 0, p_in <= 0, q_im < 0), "Invalid Bass Parameter", IF(q_im > p_in, ROUND(m_pot * ((p_in + q_im)^2) / (4 * q_im), 2), ROUND(m_pot * p_in, 2))))Try the example
Use the original values or change them to test your understanding.