Run the MultiTask forecasting pipeline and return predictions.
Wraps the standard pipeline sequence into a single call. For the "clean" task only the cache directory is wiped and an empty DataFrame is returned. For all other tasks the full sequence
prepare_data -> detect_outliers -> impute ->
build_exogenous_features -> run
is executed and the aggregated future predictions are returned as a DataFrame.
Available tasks: "lazy", "defaults", "optuna", "spotoptim", "predict", "clean". The auto-tuning tasks "optuna" and "spotoptim" are available here (unlike in the spotforecast2-safe runner, which rejects them).
A PipelineConfig-conforming object (typically ConfigMulti). When None, a fresh ConfigMulti() is constructed with default fields. Outlier bounds and aggregation agg_weights are domain-specific calibrations and must be supplied explicitly on ConfigMulti.
Input time-series data. Must contain a datetime column matching config.index_name and at least one numeric target column. Optional for "clean", required otherwise.
Whether to render the optional outlier-visualisation step between detect_outliers and impute. Available in spotforecast2 (the figure is shown); the same flag raises NotImplementedError in spotforecast2-safe.
Forwarded to config.set_params(**overrides) — a convenience for one-line tweaks (e.g. predict_size=24, n_trials_optuna=25) without building a fresh config. Unknown keys raise ValueError. Mutates the caller’s config object.
WeightFunction: all sample weights for the requested index are zero (the window falls entirely within gap-penalty zones). Returning None so ForecasterRecursive uses uniform weighting.
columns: ['forecast']
rows: 12
forecast
2019-12-21 20:00:00+00:00
6396.025408
2019-12-21 21:00:00+00:00
2213.850600
2019-12-21 22:00:00+00:00
3561.499049
2019-12-21 23:00:00+00:00
-2798.778044
2019-12-22 00:00:00+00:00
-241.052416
Remove all cached models and artefacts for a project ("clean" task). Returns an empty DataFrame:
result = run(task="clean", project_name="demo10_run", cache_home=tempfile.mkdtemp())print("empty:", result.empty)