Skip to content

Releases

NeoProphet 1.6.0

Choose a tag to compare

@CodeWithBehnam CodeWithBehnam released this 12 Oct 08:47
pip install --upgrade neoprophet

New

  • A much fuller dashboard: result.dashboard("forecast.html") (or prophet.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 (needs plotly).
    • Accuracy: the held-back test with misses by distance from the cutoff and the largest misses; pass cv= with the output of cross_validation for 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.
  • Dashboard options: sections=["forecast", "trend", ...] chooses and orders the sections, and theme="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") or tune(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 with pip install "neoprophet[optuna]". tune=True still 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

Choose a tag to compare

@CodeWithBehnam CodeWithBehnam released this 11 Oct 08:00

Everything from 1.5.0, whose wheel builds failed before reaching PyPI, plus the fixes below.

pip install --upgrade neoprophet

New

  • Local temperature as a regressor: forecast(df, horizon="60D", weather="London") (or weather=(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 via future=), a dict of Series or a DataFrame, with regressor_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, ...) and skip_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 in prophet.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 (needs plotly).

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

Choose a tag to compare

@CodeWithBehnam CodeWithBehnam released this 10 Oct 22:51
pip install --upgrade neoprophet

New

  • Local temperature as a regressor: forecast(df, horizon="60D", weather="London") (or weather=(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 via future=), a dict of Series or a DataFrame, with regressor_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, ...) and skip_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 in prophet.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 (needs plotly).

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

Choose a tag to compare

@CodeWithBehnam CodeWithBehnam released this 10 Oct 20:50

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 Silicon

NeoProphet 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) or prophet.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_plotly no longer crashes on assert 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.