v0.2.0
Pre-release
Pre-release
Second release of ForecastOps — the experiment loop and diagnostics layer on top of the 0.1.0 capture/evaluate foundation.
Added
fops.backtest(...)— evaluate a rolling-origin forecast panel as one grouped backtest, with per-cutoff and aggregate (mean/std) metrics.- Experiment groups —
capture(group="...")tags related runs into a named group, with a Groups view and a group detail page showing per-metric mean ± std and stability across runs. - New metrics — sMAPE (scale-free ratio) and pinball/quantile loss (averaged over
yhat_p<level>columns). - Regime slicing — metrics sliced by any categorical columns kept via a schema's
extra_columns(region, holiday_flag, event_type, …), so error-by-regime breakdowns appear automatically. - Diagnostics cockpit on the run detail page — residual distribution, error by horizon, per-series worst offenders, and per-regime breakdowns.
Changed
- The Nixtla adapter parses
<model>-lo-<level>/<model>-hi-<level>prediction-interval columns into interval bounds and per-level quantile columns, so coverage, interval width, and pinball loss work for statsforecast/neuralforecast outputs.
Existing local stores are migrated in place to add the group columns. See CHANGELOG.md for details.
⚠️ Pre-release: still on the 0.x line; APIs may change.