Repository navigation
Releases
NeoProphet 1.6.0
pip install --upgrade neoprophetNew
- A much fuller dashboard:
result.dashboard("forecast.html")(orprophet.visuals.dashboard_html) now has a section for each part of the model, a sticky navigation bar and a list of key findings at the top. Still one self-contained file that works offline (needsplotly).- Accuracy: the held-back test with misses by distance from the cutoff and the largest misses; pass
cv=with the output ofcross_validationfor error and coverage by horizon. - Trend: changepoints and how the pace changed at each, growth rate over time, and a year-over-year comparison with a table per year.
- Seasonal patterns: how much each component moves the forecast, the peak and low of each pattern, a month by weekday (or weekday by hour) heatmap and a day-by-day calendar.
- Holidays: the effect of each holiday, holidays through time and the holidays inside the forecast window.
- Model diagnostics: misses over time, their spread, the pattern left in them, interval coverage, misses against the fitted level and a calendar of systematic misses.
- Data: missing timestamps and gaps, repeated or missing values, and the forecast table with Download CSV and Copy CSV.
- Model settings: every setting in plain words, with code that recreates the model.
- Accuracy: the held-back test with misses by distance from the cutoff and the largest misses; pass
- Dashboard options:
sections=["forecast", "trend", ...]chooses and orders the sections, andtheme="light","dark"or"auto"sets the starting theme. A toggle on the page switches theme and recolours every chart; the choice is remembered, and printing is always light. - Optuna search:
forecast(df, horizon="12 months", tune="optuna")ortune(df, param_grid=space, search="optuna")searches continuous ranges (FloatRange,IntRange) and categorical choices with Optuna, scored on the same cross-validation windows as the grid. Install withpip install "neoprophet[optuna]".tune=Truestill runs the grid.
Changes
- Dashboard section headings are shorter ("Forecast", "Components"), and Components no longer repeats the trend and holiday charts when those sections are shown.
- On narrow screens, chart legends move under the plot and the chart toolbar is hidden.
result.dashboard()passes its backtest to the page, so the accuracy section can draw it.- Dates in sentences drop the leading zero ("5 Mar 2014"), in the dashboard and the one-page report.
Fixes
- In the dashboard, with
skip_days, the weekly components text no longer names a day the data never has. - Extra regressors are ranked by their effect in the units of the data, so a multiplicative regressor is no longer under-ranked.
- An observed holiday ("Christmas Day (observed)") keeps its own name in the dashboard's components text.
NeoProphet 1.5.1
Everything from 1.5.0, whose wheel builds failed before reaching PyPI, plus the fixes below.
pip install --upgrade neoprophetNew
- Local temperature as a regressor:
forecast(df, horizon="60D", weather="London")(orweather=(51.5, -0.13)) fetches temperature from Open-Meteo, free and without an API key: recorded values for the history, the weather forecast for the next 16 days, then climatology (the average for that day of year over the previous 5 years). Responses are cached on disk and every value keeps its source. Open-Meteo's free API is for non-commercial use; see its terms. - Easier regressors:
regressors=["promo", "price"]for columns in your data (future values viafuture=), a dict of Series or a DataFrame, withregressor_options=for mode and prior scale. Missing future values fail with the exact timestamps that are missing. - Skipped days and hours:
skip_days="weekends"(or"Sat",5, ...) andskip_hours=range(0, 8)drop closed periods from training, the forecast and every chart; charts join Friday to Monday with no empty gap. - New outputs on every
forecast()result and inprophet.visuals:result.plot_backtest(): the forecast against what actually happened on a held-out period, with the accuracy in plain English.result.plot_regressor_effects(): how much each regressor moves the forecast, labelling weather forecast versus climatology.result.report(): one A4 page with the forecast, key numbers, components, regressor effects and backtest accuracy; save it as PDF.result.dashboard("forecast.html"): an interactive, self-contained HTML dashboard that works offline (needsplotly).
Fixes
- The "80% interval" label no longer crosses the forecast boundary in narrow charts.
- Plotly component charts show compact percentage ticks.
Fixes in 1.5.1
- A plotly-only test now skips when plotly is not installed; it failed every 1.5.0 wheel build.
- CI type checks pass without the optional mlx extra, and the MLX install hint names
neoprophet[mlx]. - CI uses standard macOS runners.
NeoProphet 1.5.0
pip install --upgrade neoprophetNew
- Local temperature as a regressor:
forecast(df, horizon="60D", weather="London")(orweather=(51.5, -0.13)) fetches temperature from Open-Meteo, free and without an API key: recorded values for the history, the weather forecast for the next 16 days, then climatology (the average for that day of year over the previous 5 years). Responses are cached on disk and every value keeps its source. Open-Meteo's free API is for non-commercial use; see its terms. - Easier regressors:
regressors=["promo", "price"]for columns in your data (future values viafuture=), a dict of Series or a DataFrame, withregressor_options=for mode and prior scale. Missing future values fail with the exact timestamps that are missing. - Skipped days and hours:
skip_days="weekends"(or"Sat",5, ...) andskip_hours=range(0, 8)drop closed periods from training, the forecast and every chart; charts join Friday to Monday with no empty gap. - New outputs on every
forecast()result and inprophet.visuals:result.plot_backtest(): the forecast against what actually happened on a held-out period, with the accuracy in plain English.result.plot_regressor_effects(): how much each regressor moves the forecast, labelling weather forecast versus climatology.result.report(): one A4 page with the forecast, key numbers, components, regressor effects and backtest accuracy; save it as PDF.result.dashboard("forecast.html"): an interactive, self-contained HTML dashboard that works offline (needsplotly).
Fixes
- The "80% interval" label no longer crosses the forecast boundary in narrow charts.
- Plotly component charts show compact percentage ticks.
NeoProphet 1.4.0
First release of NeoProphet on PyPI: a drop-in fork of Facebook Prophet that is easier to use, clearer to read and faster at scale.
pip install neoprophet # or: uv add neoprophet
pip install "neoprophet[mlx]" # adds the MLX backend on Apple SiliconNeoProphet installs the prophet import package, so existing code keeps working. Uninstall upstream prophet first and do not install both in one environment.
Highlights
- One-call forecasting:
forecast(df, horizon="12 months")accepts any date and value columns or a Series with a DatetimeIndex, detects the frequency and explains bad input with specific errors. - Charts that explain themselves: a new default style for every matplotlib and plotly chart, with data-derived plain-English titles, history and forecast zones and changepoint callouts. Switch the extras off with
title=False, annotate=False. - Built-in tuning:
forecast(..., tune=True)orprophet.tune(df)chooses the prior scales and seasonality mode by parallel cross-validation and returns ranked scores. - Many series on Apple Silicon (experimental):
prophet.mlx_backend.fit_many(dfs)fits 100 series in 1.3 s, 25x faster than fitting them one by one with upstream Prophet, with forecasts within 0.6% of the data range of the CmdStan fits. Linear and flat growth, MAP only. - Faster predictions: predict with uncertainty is about 17% faster and cross-validation 13 to 22% faster, with bit-for-bit identical results for a fixed seed.
Fixes
plot_plotlyno longer crashes onassert m.history, which tested a DataFrame for truthiness.- macOS wheels link with header padding so the bundled TBB library can be relocated.
Benchmarks against upstream Prophet 1.5.0
On the 8 example datasets, default NeoProphet forecasts are identical to upstream. Tuning beat untuned Prophet defaults on 4 datasets and was worse on 2, and hand-chosen settings still won on most, so validate tuned models on a holdout. Full results are in notebooks/benchmark_vs_upstream.ipynb.
Prophet was created by Sean J. Taylor and Ben Letham at Facebook. NeoProphet is released under the MIT licence.