Skip to content

Seasonality, events and regressors benchmarks ​

35 of 35 cases match Python Prophet.

Custom and switchable seasonal patterns, events with windows, extra regressors, and additive and multiplicative effects together, on every trend type.

Each case runs the same input through Effect Prophet and Python Prophet 1.4.0, then compares every forecast row, the trend, each component and the fitted noise. A case matches when all of them agree within its tolerances, and only matching cases are timed.

Each case's dot shows its result: matches, matches with internal differences flagged, intentional difference, doesn't match. Hover over a dot for details.

How to read the tables:

  • Effect output and Python output are each library's final forecast value. Open a case to see every row side by side.
  • Largest difference is the biggest gap between the two forecasts, as a share of the input data's range.
  • Effect time and Python time are the median time for the timed step, usually fitting and predicting. Open a case for every step, including first-run and save/load times.
  • Flagged cases match, but the two libraries stopped their fitting search at slightly different points. The case page shows the internal numbers.
About these runs

Each trend's cases come from that trend's own run.

Linear growth

  • Run 2026-10-20T170110-379Z-27b7ec98 on 2026-10-20, commit 27b7ec9
  • Both libraries ran in linux/arm64 containers on Apple M4 Pro
  • effect-prophet 0.0.0
  • effect 4.0.0
  • prophet 1.4.0
  • Full benchmark report

Flat growth

  • Run 2026-10-20T171807-628Z-27b7ec98 on 2026-10-20, commit 27b7ec9
  • Both libraries ran in linux/arm64 containers on Apple M4 Pro
  • effect-prophet 0.0.0
  • effect 4.0.0
  • prophet 1.4.0
  • Full benchmark report

Logistic growth

  • Run 2026-10-20T174321-690Z-27b7ec98 on 2026-10-20, commit 27b7ec9
  • Both libraries ran in linux/arm64 containers on Apple M4 Pro
  • effect-prophet 0.0.0
  • effect 4.0.0
  • prophet 1.4.0
  • Full benchmark report

Timings come from one machine and describe this workload only. They are not a general speed ranking. Where Python is faster, it is often because Python runs Stan's optimizer as compiled C++, while Effect Prophet runs the same algorithm as WebAssembly with narrower vector instructions. The gap is widest for Newton's method on short histories with many parameters.

Linear growth ​

Custom and switchable seasonal patterns, events with windows, extra regressors, and additive and multiplicative effects mixed together. All linear growth benchmarks →

CaseInputEffect outputPython outputLargest differenceTimed stepEffect timePython time
Weekly pattern on irregular dates192 rows108.5119108.5118< 0.0001%Fit and predict1.49 ms11.3 ms
Two switchable weekly patterns256 rows139.4380139.43530.0028%Fit and predict3.11 ms15.7 ms
Events with windows96 rows54.282154.2821< 0.0001%Fit and predict6.77 ms33.1 ms
Four regressors256 rows138.7457138.74260.0032%Fit and predict2.96 ms13.6 ms
Everything at once, small24 rows21.202521.2025< 0.0001%Fit and predict1.65 ms16.6 ms
Everything at once, two years768 rows54.270654.26570.015%Fit and predict12.9 ms43.1 ms
Additive and multiplicative together96 rows44.518344.5183< 0.0001%Fit and predict4.91 ms31.8 ms
Repeated timestamps with features96 rows18.219118.22000.017%Fit32.6 ms112 ms

Flat growth ​

Weekly patterns, events and regressors on a flat trend: with a switchable multiplicative weekly pattern at full length and cut to the history lengths cross-validation uses, with every effect additive, and with regressors that move almost or exactly in step with the level or the yearly pattern. All flat growth benchmarks →

CaseInputEffect outputPython outputLargest differenceTimed stepEffect timePython time
Weekly pattern, absmax scaling96 rows35.003935.0039< 0.0001%Fit155 ms603 ms
Weekly pattern, minmax scaling96 rows35.003935.0039< 0.0001%Fit4.23 ms20.4 ms
Mixed effects, minmax scaling96 rows35.028335.0283< 0.0001%Fit and predict1.41 ms12.4 ms
Mixed effects, absmax scaling96 rows35.012735.0127< 0.0001%Fit1.58 ms7.92 ms
Mixed effects, eight months, minmax scaling256 rows19.530519.5305< 0.0001%Fit and predict2.23 ms13.7 ms
Additive effects, minmax scaling96 rows35.012735.0127< 0.0001%Fit and predict4.67 ms26.9 ms
Additive effects, eight months, minmax scaling256 rows28.919628.9196< 0.0001%Fit and predict2.12 ms13.3 ms
Mixed effects, both libraries on default settings96 rows35.001235.01270.073%Fit and predict3.17 ms48.4 ms
Regressors that track other effects730 rows56.975356.9753< 0.0001%Fit and predict5.42 ms29.6 ms
Mixed effects, eight months, absmax scaling256 rows28.919628.9196< 0.0001%Fit3.82 ms8.99 ms
First 63 days, absmax scaling63 rows24.082624.0826< 0.0001%Fit2.24 ms7.62 ms
First 63 days, minmax scaling63 rows7.17987.1798< 0.0001%Fit2.21 ms7.61 ms
First 70 days, absmax scaling70 rows24.079524.0795< 0.0001%Fit2.10 ms7.44 ms
First 70 days, minmax scaling70 rows7.17187.1718< 0.0001%Fit2.04 ms7.85 ms
First 77 days, absmax scaling77 rows24.074624.0746< 0.0001%Fit2.52 ms7.51 ms
First 77 days, minmax scaling77 rows7.15947.1594< 0.0001%Fit2.16 ms8.16 ms
First 225 days, absmax scaling225 rows34.996034.9960< 0.0001%Fit3.48 ms8.67 ms
First 225 days, minmax scaling225 rows34.989134.9891< 0.0001%Fit3.17 ms8.79 ms
First 232 days, absmax scaling232 rows34.993034.9930< 0.0001%Fit2.98 ms8.86 ms
First 232 days, minmax scaling232 rows34.980734.9807< 0.0001%Fit3.20 ms8.89 ms

Logistic growth ​

Each supported effect on its own, then all of them together: a weekly pattern, a switchable weekly pattern, an event with a window, and additive and multiplicative regressors. All logistic growth benchmarks →

CaseInputEffect outputPython outputLargest differenceTimed stepEffect timePython time
Weekly pattern96 rows105.2764105.2764< 0.0001%Fit15.6 ms27.5 ms
Switchable weekly pattern96 rows105.2763105.2763< 0.0001%Fit16.2 ms28.3 ms
Event with a window96 rows105.2751105.2751< 0.0001%Fit9.09 ms17.9 ms
Additive regressor96 rows105.2753105.2753< 0.0001%Fit7.94 ms15.8 ms
Multiplicative regressor96 rows105.2751105.2751< 0.0001%Fit11.3 ms18.6 ms
Everything at once, absmax scaling96 rows105.8453105.8453< 0.0001%Fit29.0 ms46.6 ms
Everything at once, minmax scaling96 rows105.8453105.8453< 0.0001%Fit25.3 ms44.0 ms

Inspired by Prophet from Meta. Not affiliated with Meta.