Skip to content

Cross-validation and choosing settings benchmarks ​

15 of 15 cases match Python Prophet.

Rolling-origin cross-validation, metrics, baselines, settings search and a final holdout check, 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.
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 ​

Rolling-origin cross-validation, metrics, baselines, settings search and a final holdout check. All linear growth benchmarks →

CaseInputEffect outputPython outputLargest differenceTimed stepEffect timePython time
Cross-validation and metrics96 rows108.5823108.5823< 0.0001%Cross-validate9.52 ms75.7 ms
Cross-validation with ranges96 rows108.5823108.5823< 0.0001%Cross-validate with ranges9.74 ms76.9 ms
Choosing settings and a final holdout96 rows108.5823108.5823< 0.0001%Search settings20.5 ms164 ms
Search with a failing candidate96 rows108.5823108.5823< 0.0001%Search settings20.5 ms156 ms
Cross-validation with repeated timestamps96 rows15.522115.5221< 0.0001%Cross-validate5.76 ms60.4 ms

Flat growth ​

Rolling-origin cross-validation, metrics, baselines, settings search and a final holdout check on flat models. All flat growth benchmarks →

CaseInputEffect outputPython outputLargest differenceTimed stepEffect timePython time
Cross-validation and metrics96 rows24.074624.0746< 0.0001%Cross-validate6.50 ms46.1 ms
Cross-validation with ranges96 rows24.074624.0746< 0.0001%Cross-validate with ranges7.10 ms60.1 ms
Choosing settings and a final holdout96 rows24.074624.0746< 0.0001%Search settings13.1 ms150 ms
Cross-validation, eight months256 rows34.993034.9930< 0.0001%Cross-validate6.39 ms39.8 ms
Cross-validation with ranges, eight months256 rows34.993034.9930< 0.0001%Cross-validate with ranges8.02 ms46.5 ms

Logistic growth ​

Rolling-origin cross-validation, metrics, baselines, settings search and a final holdout check on logistic models. All logistic growth benchmarks →

CaseInputEffect outputPython outputLargest differenceTimed stepEffect timePython time
Cross-validation and metrics96 rows59.134559.1345< 0.0001%Cross-validate16.6 ms60.2 ms
Cross-validation with ranges96 rows59.134559.1345< 0.0001%Cross-validate with ranges18.5 ms64.8 ms
Choosing settings and a final holdout96 rows59.134559.1345< 0.0001%Search settings36.8 ms123 ms
Cross-validation, eight months256 rows88.536788.52140.034%Cross-validate14.2 ms42.2 ms
Cross-validation with ranges, eight months256 rows88.536788.52140.034%Cross-validate with ranges16.1 ms56.8 ms

Inspired by Prophet from Meta. Not affiliated with Meta.