{"adoption": {"forks": 198, "observed_at": "2026-08-28T04:04:58.482730+00:00", "stars": 1527}, "canonical_url": "https://ross.abutalabs.com/products/skforecast", "card": {"archived": false, "artifact_type": "library", "description": "Python library for time series forecasting using scikit-learn compatible models, statistical methods, and foundation models", "domain": ["machine-learning", "data-science", "time-series"], "enriched": true, "function": ["machine-learning", "data-science", "benchmarking"], "health_score": 100, "homepage": "https://skforecast.org", "language": "Python", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["skforecast/skforecast"], "name": "skforecast/skforecast", "platform": ["python"], "pushed_at": "2026-08-26T12:09:52+00:00", "repo": "skforecast/skforecast", "stars": 1527, "tags": ["forecasting", "time-series-forecasting", "scikit-learn", "backtesting", "probabilistic-forecasting", "exogenous-variables", "multi-step-forecasting", "arima", "sarimax", "lightgbm", "xgboost", "catboost", "prediction-intervals"], "topics": ["forecasting", "scikit-learn", "machine-learning", "python", "data-science", "exogenous-predictors", "time-series", "multi-series-forecasting", "multi-step-forecasting", "backtesting-forecasters", "arima", "sarimax", "lightgbm", "probabilistic-forecasting", "xgboost", "catboost", "deep-learning", "foundation-models", "prediction-intervals", "time-series-forecasting"], "urls": [], "use_cases": ["forecast future values of a time series with machine learning models", "predict sales or demand across multiple related time series", "backtest forecasting models with walk-forward validation", "estimate prediction intervals for probabilistic forecasts", "include exogenous variables like weather or holidays in forecasts", "forecast multiple steps ahead with recursive or direct strategies", "compare statistical models like SARIMAX against gradient boosting forecasters"], "what_it_is": "Skforecast is a Python library for time series forecasting that turns any scikit-learn compatible estimator (LightGBM, XGBoost, CatBoost, Keras, etc.) into a forecaster, alongside statistical methods like ARIMA/SARIMAX and foundation models. It provides multi-series and multi-step forecasting, exogenous variable support, backtesting, and probabilistic forecasting with prediction intervals.", "when_to_avoid": ["you need deep learning sequence models like N-BEATS or TFT as first-class citizens", "you want automated forecasting with zero configuration like Prophet or Nixtla AutoML", "your project is not in Python"], "when_to_choose": ["you want scikit-learn compatible regressors for time series forecasting", "you need backtesting, hyperparameter tuning, and prediction intervals in one library", "you forecast many related series with exogenous predictors", "you want a well-documented, actively maintained Python forecasting library"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/skforecast", "repo": "skforecast/skforecast", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:58.482730+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:31:34.631087+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "905ce7f8925725aa6c14030c1a7918c03b5771b16dac91bd681339586e5bcaab", "fetched_at": "2026-08-28T04:04:58.482730+00:00", "kind": "readme", "missing": false, "url": "https://github.com/skforecast/skforecast"}, {"content_hash": "36c6c3c2e4f9f7e35fb7fea86ea9bfd1cf7fe7061016698b1a017ae1cc7f4a36", "fetched_at": "2026-08-29T11:34:07.921518+00:00", "kind": "homepage", "missing": false, "url": "https://skforecast.org"}, {"content_hash": "03f754410cac0b03bd5fe0b22885e1142a3780464fb44ea94449b2499c533938", "fetched_at": "2026-08-29T11:34:07.930556+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/skforecast/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2030, "days_push": 7, "days_rel": 9, "gap_med": 44, "n_releases_24m": 14}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}