{"id":17736211,"url":"https://github.com/skforecast/skforecast","last_synced_at":"2026-10-19T12:40:20.280Z","repository":{"id":37760959,"uuid":"337705968","full_name":"skforecast/skforecast","owner":"skforecast","description":"Python library for time series forecasting using scikit-learn compatible models, statistical methods, and foundation models","archived":false,"fork":false,"pushed_at":"2026-10-18T07:27:38.000Z","size":1342905,"stargazers_count":1537,"open_issues_count":25,"forks_count":205,"subscribers_count":14,"default_branch":"main","last_synced_at":"2026-10-18T15:15:08.567Z","etag":null,"topics":["arima","backtesting-forecasters","catboost","data-science","deep-learning","exogenous-predictors","forecasting","foundation-models","lightgbm","machine-learning","multi-series-forecasting","multi-step-forecasting","prediction-intervals","probabilistic-forecasting","python","sarimax","scikit-learn","time-series","time-series-forecasting","xgboost"],"latest_commit_sha":null,"homepage":"https://skforecast.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skforecast.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","accessibility":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","claude":"CLAUDE.md","gemini":null,"cursor":null,"copilot":".github/copilot-instructions.md","dco":null,"cla":"CONTRIBUTOR_LICENSE_AGREEMENT.md","disclosure":null},"funding":{"open_collective":"skforecast","github":["JoaquinAmatRodrigo","JavierEscobarOrtiz"],"buy_me_a_coffee":"skforecast","custom":["https://skforecast.org/latest/more/funding.html","https://www.paypal.com/donate/?hosted_button_id=D2JZSWRLTZDL6"]}},"created_at":"2021-02-10T11:40:34.000Z","updated_at":"2026-10-14T21:19:05.000Z","dependencies_parsed_at":"2026-10-11T11:14:05.955Z","dependency_job_id":null,"html_url":"https://github.com/skforecast/skforecast","commit_stats":{"total_commits":3368,"total_committers":17,"mean_commits":"198.11764705882354","dds":0.6303444180522566,"last_synced_commit":"88da967670344453cdc1ab775e4c228cdc394617"},"previous_names":["skforecast/skforecast","joaquinamatrodrigo/skforecast"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/skforecast/skforecast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skforecast%2Fskforecast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skforecast%2Fskforecast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skforecast%2Fskforecast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skforecast%2Fskforecast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skforecast","download_url":"https://codeload.github.com/skforecast/skforecast/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skforecast%2Fskforecast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38341143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arima","backtesting-forecasters","catboost","data-science","deep-learning","exogenous-predictors","forecasting","foundation-models","lightgbm","machine-learning","multi-series-forecasting","multi-step-forecasting","prediction-intervals","probabilistic-forecasting","python","sarimax","scikit-learn","time-series","time-series-forecasting","xgboost"],"created_at":"2024-10-26T00:05:00.768Z","updated_at":"2026-10-19T12:40:20.274Z","avatar_url":"https://github.com/skforecast.png","language":"Python","funding_links":["https://opencollective.com/skforecast","https://github.com/sponsors/JoaquinAmatRodrigo","https://github.com/sponsors/JavierEscobarOrtiz","https://buymeacoffee.com/skforecast","https://skforecast.org/latest/more/funding.html","https://www.paypal.com/donate/?hosted_button_id=D2JZSWRLTZDL6","https://www.buymeacoffee.com/skforecast"],"categories":["Python"],"sub_categories":["General-Purpose Machine Learning"],"readme":"\u003ch1 align=\"left\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/skforecast/skforecast/blob/main/images/banner-landing-page-skforecast-dark.png?raw=true\"\u003e\n    \u003cimg src=\"https://github.com/skforecast/skforecast/blob/main/images/banner-landing-page-skforecast.png?raw=true\" alt=\"skforecast\"\u003e\n  \u003c/picture\u003e\n\u003c/h1\u003e\n\n\n| | |\n| --- | --- |\n| Package | ![Python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue) [![PyPI](https://img.shields.io/pypi/v/skforecast)](https://pypi.org/project/skforecast/) [![Conda](https://img.shields.io/conda/v/conda-forge/skforecast?logo=Anaconda)](https://anaconda.org/conda-forge/skforecast) [![Total downloads](https://static.pepy.tech/personalized-badge/skforecast?period=total\u0026units=INTERNATIONAL_SYSTEM\u0026left_color=BLACK\u0026right_color=GREEN\u0026left_text=total%20downloads)](https://pepy.tech/projects/skforecast) [![PyPI monthly downloads](https://img.shields.io/pypi/dm/skforecast?color=blue\u0026label=pypi%20downloads)](https://pypistats.org/packages/skforecast) |\n| Meta | [![License](https://img.shields.io/github/license/skforecast/skforecast)](https://github.com/skforecast/skforecast/blob/main/LICENSE) [![DOI](https://zenodo.org/badge/337705968.svg)](https://zenodo.org/doi/10.5281/zenodo.8382787) [![NumFOCUS Affiliated](https://img.shields.io/badge/NumFOCUS-Affiliated%20Project-orange.svg?style=flat\u0026colorA=E1523D\u0026colorB=007D8A)](https://numfocus.org/sponsored-projects/affiliated-projects) [![GC.OS Affiliated](https://img.shields.io/badge/GC.OS-Affiliated%20Project-orange.svg?style=flat\u0026colorA=0eac92\u0026colorB=2077b4)](https://gc-os-ai.github.io/) |\n| Testing | [![Build status](https://github.com/skforecast/skforecast/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/skforecast/skforecast/actions/workflows/unit-tests.yml) [![codecov](https://codecov.io/gh/skforecast/skforecast/branch/main/graph/badge.svg)](https://codecov.io/gh/skforecast/skforecast) |\n| Community | [![!discord](https://img.shields.io/static/v1?logo=discord\u0026label=discord\u0026message=chat\u0026color=lightgreen)](https://discord.gg/3V52qpNkuj) [![!linkedin](https://img.shields.io/static/v1?logo=linkedin\u0026label=LinkedIn\u0026message=news\u0026color=lightblue)](https://www.linkedin.com/company/skforecast/) [![Forecasting Python](https://img.shields.io/static/v1?logo=readme\u0026logoColor=white\u0026label=Blog\u0026labelColor=%23333333\u0026message=Forecasting%20Python\u0026color=%23ffab40)](https://cienciadedatos.net/en/forecasting-python) |\n\n\n## About skforecast\n\n**Time series forecasting, from prototype to production.** Skforecast is a Python library for time series forecasting using scikit-learn compatible models, statistical methods, and foundation models. It works with any estimator compatible with the scikit-learn API, such as LightGBM, XGBoost, CatBoost or Keras.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/skforecast/skforecast/blob/main/images/skforecast-backtesting-comparison.png?raw=true\" alt=\"Backtesting of LightGBM, Chronos-2 and ARIMA with skforecast on daily electricity demand\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003csub\u003eBacktesting of LightGBM, Chronos-2 and ARIMA on daily electricity demand, with temperature and holidays as exogenous variables. Real skforecast outputs, from the animation on [skforecast.org](https://skforecast.org).\u003c/sub\u003e\n\n\n## Installation\n\n```bash\npip install skforecast\n```\n\nAlso available on conda-forge (`conda install -c conda-forge skforecast`). Optional dependencies for statistical models, plotting and deep learning are listed in the [installation guide](https://skforecast.org/latest/quick-start/how-to-install.html).\n\n\n## Quick example\n\n```python\nfrom lightgbm import LGBMRegressor\nfrom skforecast.recursive import ForecasterRecursive\nfrom skforecast.datasets import load_demo_dataset\n\n# Download demo dataset\ny = load_demo_dataset()\n\n# Create and fit the forecaster using the last 15 observations as features\nforecaster = ForecasterRecursive(\n                 estimator = LGBMRegressor(random_state=123, verbose=-1),\n                 lags      = 15\n             )\nforecaster.fit(y=y)\n\n# Predict the next 12 months\npredictions = forecaster.predict(steps=12)\npredictions.head()\n# 2008-07-01    0.976355\n# 2008-08-01    1.038296\n# 2008-09-01    1.108676\n# 2008-10-01    1.163778\n# 2008-11-01    1.169646\n# Freq: MS, Name: pred, dtype: float64\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSame workflow with a foundation model (Chronos-2, zero-shot)\u003c/b\u003e\u003c/summary\u003e\n\n```python\n# pip install chronos-forecasting\nfrom skforecast.foundation import FoundationModel, ForecasterFoundation\nfrom skforecast.datasets import load_demo_dataset\n\n# Download demo dataset\ny = load_demo_dataset()\n\n# Create the forecaster: fit only stores the context, there is no training\nforecaster = ForecasterFoundation(\n                 estimator = FoundationModel(\"autogluon/chronos-2-small\")\n             )\nforecaster.fit(series=y)\n\n# Predict the next 12 months\npredictions = forecaster.predict(steps=12)\npredictions.head()\n#            level      pred\n# 2008-07-01     y  1.002536\n# 2008-08-01     y  1.030961\n# 2008-09-01     y  1.083664\n# 2008-10-01     y  1.184066\n# 2008-11-01     y  1.170530\n```\n\n\u003c/details\u003e\n\n\n## Features\n\n### One API for every kind of model\n\n- **[Machine learning](https://skforecast.org/latest/user_guides/autoregressive-forecaster.html)**: any scikit-learn compatible regressor, such as LightGBM, XGBoost or CatBoost, with lags, rolling and calendar features. Recursive or direct strategies, for one series or thousands.\n- **[Foundation models](https://skforecast.org/latest/user_guides/foundation-forecasting-models.html)**: zero-shot forecasting with pre-trained models such as Chronos-2, TimesFM, Moirai-2 or TabPFN-TS, without training them.\n- **[Statistical models](https://skforecast.org/latest/user_guides/forecasting-statistical-models.html)**: ARIMA, SARIMAX, ETS and ARAR, with automatic model selection.\n- **[Deep learning](https://skforecast.org/latest/user_guides/forecasting-with-deep-learning-rnn-lstm.html)**: recurrent neural networks (RNN, LSTM) built with Keras.\n\nTrain, predict, tune and backtest the same way, whatever the model.\n\n### Built for production\n\n- **[Backtesting](https://skforecast.org/latest/user_guides/backtesting.html)** that reproduces how the model will be used: refits, gaps, fold strides, fixed or expanding windows.\n- **[Probabilistic forecasting](https://skforecast.org/latest/user_guides/probabilistic-forecasting-overview.html)** with bootstrapping, conformal prediction and quantiles, evaluated with CRPS and coverage.\n- **[Hyperparameter tuning](https://skforecast.org/latest/user_guides/hyperparameter-tuning-and-lags-selection.html)** with grid, random and Bayesian search (Optuna), including the number of lags.\n- **[Feature engineering](https://skforecast.org/latest/user_guides/window-features-and-custom-features.html)**: rolling statistics, calendar features, exogenous and categorical variables, and differentiation.\n- **[Global models](https://skforecast.org/latest/user_guides/global-forecasting-overview.html)** that forecast many series with one model, even with different lengths, exogenous variables and missing values.\n- **[Explainability](https://skforecast.org/latest/user_guides/explainability.html) and [monitoring](https://skforecast.org/latest/user_guides/drift-detection.html)**: feature importances and SHAP values, feature selection and drift detection.\n\n\n## Forecasters\n\nAll forecasters share the same API for training, prediction, backtesting and probabilistic forecasting.\n\n| Forecaster | Estimator | Series | Strategy | Exog | Window features | Differentiation |\n|:--|:--|:--:|:--:|:--:|:--:|:--:|\n|[ForecasterRecursive]| scikit-learn regressor | single | recursive | ✓ | ✓ | ✓ |\n|[ForecasterDirect]| scikit-learn regressor | single | direct | ✓ | ✓ | ✓ |\n|[ForecasterRecursiveMultiSeries]| scikit-learn regressor | multiple | recursive | ✓ | ✓ | ✓ |\n|[ForecasterDirectMultiVariate]| scikit-learn regressor | multiple | direct | ✓ | ✓ | ✓ |\n|[ForecasterFoundation]| pre-trained, zero-shot | single or multiple | multi-output | ✓ | | |\n|[ForecasterStats]| Arima, Sarimax, Ets, Arar | single | recursive | ✓ | | |\n|[ForecasterRnn]| Keras model (RNN/LSTM) | single or multiple | multi-output | ✓ | | |\n|[ForecasterRecursiveClassifier]| scikit-learn classifier | single | recursive | ✓ | ✓ | |\n|[ForecasterEquivalentDate]| Rule-based (baseline) | single | recursive | | | |\n\n[ForecasterRecursive]: https://skforecast.org/latest/user_guides/autoregressive-forecaster.html\n[ForecasterDirect]: https://skforecast.org/latest/user_guides/direct-multi-step-forecasting.html\n[ForecasterRecursiveMultiSeries]: https://skforecast.org/latest/user_guides/independent-multi-time-series-forecasting.html\n[ForecasterDirectMultiVariate]: https://skforecast.org/latest/user_guides/dependent-multi-series-multivariate-forecasting.html\n[ForecasterFoundation]: https://skforecast.org/latest/user_guides/foundation-forecasting-models.html\n[ForecasterStats]: https://skforecast.org/latest/user_guides/forecasting-statistical-models.html\n[ForecasterRnn]: https://skforecast.org/latest/user_guides/forecasting-with-deep-learning-rnn-lstm.html\n[ForecasterRecursiveClassifier]: https://skforecast.org/latest/user_guides/autoregressive-classification-forecasting.html\n[ForecasterEquivalentDate]: https://skforecast.org/latest/user_guides/forecasting-baseline.html\n\n\n## Documentation\n\nThe full documentation is available at **https://skforecast.org**.\n\n| Documentation                           |     |\n|:----------------------------------------|:----|\n| :book: [Introduction to forecasting]    | Forecasting concepts and how to choose a forecaster |\n| :rocket: [Quick start]                  | Install skforecast and train your first model |\n| :hammer_and_wrench: [User guides]       | Detailed guides on every feature |\n| :mortar_board: [Examples and tutorials] | Practical examples, in English, Spanish and Chinese |\n| :question: [FAQ and tips]               | Answers and tips about forecasting |\n| :books: [API Reference]                 | Reference for all functions and classes |\n| :memo: [Releases]                       | What changed in each version |\n\n[Introduction to forecasting]: https://skforecast.org/latest/introduction-forecasting/introduction-forecasting.html\n[Quick start]: https://skforecast.org/latest/quick-start/quick-start-skforecast.html\n[User guides]: https://skforecast.org/latest/user_guides/table-of-contents.html\n[Examples and tutorials]: https://skforecast.org/latest/examples/examples_english.html\n[FAQ and tips]: https://skforecast.org/latest/faq/table-of-contents.html\n[API Reference]: https://skforecast.org/latest/api/forecasterrecursive.html\n[Releases]: https://skforecast.org/latest/releases/releases.html\n\n\n## AI and tools\n\n[![Skforecast AI](https://img.shields.io/badge/Skforecast%20AI-Documentation-f79939?logo=readthedocs)](https://ai.skforecast.org/) [![PyPI](https://img.shields.io/pypi/v/skforecast-ai)](https://pypi.org/project/skforecast-ai/) [![GitHub](https://img.shields.io/badge/GitHub-skforecast--ai-181717?logo=github)](https://github.com/skforecast/skforecast-ai) [![MCP server](https://img.shields.io/badge/MCP-server-blue?logo=modelcontextprotocol\u0026logoColor=white)](https://ai.skforecast.org/stable/user-guides/mcp-server.html) [![Skforecast Studio](https://img.shields.io/badge/Skforecast%20Studio-Launch%20App-f79939?logo=rocket)](https://studio.skforecast.org/) [![llms.txt](https://img.shields.io/badge/llms.txt-available-blue)](https://skforecast.org/latest/llms-full.txt) [![Claude Code plugin](https://img.shields.io/badge/Claude_Code-plugin-d97757)](https://skforecast.org/latest/quick-start/ai-assisted-forecasting.html#install-skforecast-context-in-your-agent)\n\n- **AI-assisted coding**: skforecast publishes machine-readable context files so AI assistants (ChatGPT, Claude, Copilot and others) generate accurate code. Paste `https://skforecast.org/latest/llms-full.txt` into any LLM, or install the workflow skills in your coding agent: as a Claude Code plugin (`/plugin marketplace add skforecast/skforecast`) or with `npx skills add skforecast/skforecast/skills` for Cursor, Copilot, Codex and others. Learn more in [AI-assisted forecasting](https://skforecast.org/latest/quick-start/ai-assisted-forecasting.html).\n- **[skforecast-ai](https://ai.skforecast.org/)**: an AI forecasting assistant that pairs a deterministic engine, powered by skforecast, with an LLM reasoning layer. Install it with `pip install skforecast-ai`. It also brings skforecast to coding agents such as Claude Code or VS Code through an [MCP server](https://ai.skforecast.org/stable/user-guides/mcp-server.html): ask in plain language and get the forecast, its backtesting metrics and the skforecast script that produced them.\n- **[Skforecast Studio](https://studio.skforecast.org/)**: a no-code application to build forecasting models visually, which generates production-ready Python code.\n\n\n## Contributing\n\nBug reports, feature requests, code, tests, documentation and examples are all welcome. Open an issue on [GitHub Issues](https://github.com/skforecast/skforecast/issues) or read the [Contribution Guide](https://github.com/skforecast/skforecast/blob/main/CONTRIBUTING.md) to get started.\n\nskforecast is created and maintained by [Joaquín Amat Rodrigo](https://github.com/JoaquinAmatRodrigo) and [Javier Escobar Ortiz](https://github.com/JavierEscobarOrtiz), together with everyone who has contributed to it ([about the project](https://skforecast.org/latest/more/about-skforecast.html)).\n\n\u003ca href=\"https://github.com/skforecast/skforecast/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=skforecast/skforecast\" alt=\"skforecast contributors\"\u003e\n\u003c/a\u003e\n\n\n## Citation\n\nIf you use skforecast in a scientific publication, please cite the version you used: each version has its own DOI and ready-made citations on [Zenodo](https://doi.org/10.5281/zenodo.8382787). To cite skforecast in general, use the DOI that always resolves to the latest release.\n\n**APA**:\n\n```\nAmat Rodrigo, J., \u0026 Escobar Ortiz, J. skforecast [Computer software]. https://doi.org/10.5281/zenodo.8382787\n```\n\n**BibTeX**:\n\n```bibtex\n@software{skforecast,\n  author  = {Amat Rodrigo, Joaquin and Escobar Ortiz, Javier},\n  title   = {skforecast},\n  license = {BSD-3-Clause},\n  url     = {https://skforecast.org/},\n  doi     = {10.5281/zenodo.8382787}\n}\n```\n\nThe citation metadata is also in [CITATION.cff](https://github.com/skforecast/skforecast/blob/main/CITATION.cff) (GitHub's \"Cite this repository\" button). skforecast is used in 70+ scientific publications: [see them on Google Scholar](https://scholar.google.com/scholar?q=%22skforecast%22).\n\n\n## Sponsorship and funding\n\nskforecast is free, open-source software supported by the [Sovereign Tech Fund](https://www.sovereign.tech/tech/skforecast) and by the organizations that sponsor it. If your company relies on skforecast, see **[Sponsorship and funding](https://skforecast.org/latest/more/funding.html)** for sponsorship tiers, support agreements, feature sponsorship and training.\n\nIndividuals can support the project through Open Collective, Buy Me a Coffee, GitHub Sponsors ([Joaquín Amat Rodrigo](https://github.com/sponsors/JoaquinAmatRodrigo), [Javier Escobar Ortiz](https://github.com/sponsors/JavierEscobarOrtiz)) or [PayPal](https://www.paypal.com/donate/?hosted_button_id=D2JZSWRLTZDL6).\n\n\u003cp\u003e\n  \u003ca href=\"https://opencollective.com/skforecast\"\u003e\u003cimg src=\"https://github.com/skforecast/skforecast/blob/main/images/opencollective_button.png?raw=true\" alt=\"Support skforecast on Open Collective\" height=\"40\"\u003e\u003c/a\u003e\u0026nbsp;\n  \u003ca href=\"https://www.buymeacoffee.com/skforecast\"\u003e\u003cimg src=\"https://github.com/skforecast/skforecast/blob/main/images/buymeacoffee_button.png?raw=true\" alt=\"Buy Me a Coffee\" height=\"40\"\u003e\u003c/a\u003e\u0026nbsp;\n  \u003ca href=\"https://skforecast.org/latest/more/funding.html\"\u003e\u003cimg src=\"https://github.com/skforecast/skforecast/blob/main/images/github_sponsor_button.png?raw=true\" alt=\"Sponsor skforecast on GitHub\" height=\"40\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n## License\n\n**Skforecast software**: [BSD-3-Clause License](https://github.com/skforecast/skforecast/blob/main/LICENSE)\n\n**Skforecast documentation**: [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)\n\n**Trademark**: The trademark skforecast is registered with the European Union Intellectual Property Office (EUIPO) under the application number 019109684. Unauthorized use of this trademark, its logo, or any associated visual identity elements is strictly prohibited without the express consent of the owner.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskforecast%2Fskforecast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskforecast%2Fskforecast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskforecast%2Fskforecast/lists"}