Arte SheetsLearn. Try. Understand.

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)FormulaVerified 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.

Further reading