OpenSTEF
A Python package which is used to make short term forecasts for the energy sector.
https://github.com/OpenSTEF/openstef
Category: Energy Systems
Sub Category: Load and Demand Forecasting
Keywords
data-science energy energy-forecasting forecasting machine-learning python time-series
Keywords from Contributors
lfenergy openstef
Last synced: about 8 hours ago
JSON representation
Repository metadata
Automated Machine Learning pipelines. Builds the Open Short Term Energy Forecasting package.
- Host: GitHub
- URL: https://github.com/OpenSTEF/openstef
- Owner: OpenSTEF
- License: mpl-2.0
- Created: 2021-02-09T08:48:47.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2026-08-10T04:49:03.000Z (4 days ago)
- Last Synced: 2026-08-12T14:24:22.575Z (1 day ago)
- Topics: data-science, energy, energy-forecasting, forecasting, machine-learning, python, time-series
- Language: Python
- Homepage: https://openstef.github.io/openstef
- Size: 477 MB
- Stars: 159
- Watchers: 6
- Forks: 54
- Open Issues: 44
- Releases: 337
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Citation: CITATION.cff
- Codeowners: .github/CODEOWNERS
README.md
OpenSTEF
What is OpenSTEF
OpenSTEF (Open Short-Term Energy Forecasting) is an open-source, model-agnostic Python framework for creating short-term forecasts in the energy sector. It provides complete machine learning pipelines for data preprocessing, feature engineering, model training, probabilistic forecasting, and evaluation. Version 4.0.0 introduces a complete architectural refactor with enhanced modularity, full type safety, and modern Python development practices.
For more information, visit the OpenSTEF project page at LF Energy.
Monorepo Overview
OpenSTEF 4.0.0 is organized as a monorepo with specialized packages under the packages/ directory:
| Package | Purpose |
|---|---|
| openstef | Meta-package installing all core components |
| openstef-core | Core utilities, dataset types, shared types and base models |
| openstef-models | ML models, feature engineering, data processing |
| openstef-beam | Backtesting, Evaluation, Analysis, and Metrics |
| openstef-meta | Meta models for OpenSTEF |
How to Install
Requirements: Python ≥3.12, 64-bit OS (Windows, macOS, Linux)
# Minimal-but-runnable convenience layer (core + models with CPU XGBoost)
pip install openstef
# Everything, CPU flavour
pip install "openstef[all]"
# Or install individual packages
pip install openstef-models
pip install openstef-beam
pip install openstef-core
# Optional feature extras (additive)
pip install "openstef-models[lgbm]"
pip install "openstef-models[tuning]"
pip install "openstef-beam[all]"
Compute runtimes (pick one per package). Packages with a heavy runtime ship
mutually exclusive CPU and GPU builds as conflicting extras — install one, not both:
# Foundation models (Chronos-2): CPU everywhere, GPU on CUDA Linux/Windows
pip install "openstef-foundation-models[cpu]"
pip install "openstef-foundation-models[gpu]"
# XGBoost models: CPU or GPU
pip install "openstef-models[xgb-cpu]"
pip install "openstef-models[xgb-gpu]"
The openstef meta-package always ships the CPU builds; for GPU, install the
component package directly with its [gpu] extra.
Using uv (recommended for development):
uv add openstef
For the complete installation guide including troubleshooting, see the Installation Documentation.
Examples
Tutorials and usage examples are available in the examples/ folder. See the examples folder's own README.md for an overview of available examples including:
- Forecasting quickstart
- Feature engineering
Additional tutorials are available in the online documentation.
License
Mozilla Public License Version 2.0 - see LICENSE.md for details.
This project includes third-party libraries licensed under their respective Open-Source licenses. SPDX-License-Identifier headers show applicable licenses. License files are in the LICENSES/ directory.
Contributing
We welcome contributions to OpenSTEF 4.0!
Read our Contributing Guide - documentation for contributors including:
- How to report bugs and suggest features
- Documentation improvements and examples
- Code contributions and development setup
- Sharing datasets and real-world use cases
Quick Development Setup
# Clone and set up for development (one command installs the full CPU dev env)
git clone https://github.com/OpenSTEF/openstef.git
cd openstef
uv sync
# Run tests and quality checks
uv run poe all
GPU dev env (CUDA; Linux/Windows):
uv sync --no-default-groups --group dev-gpu.
Do not use--all-groups/--all-extras— the CPU and GPU runtimes conflict.
Code of Conduct: We follow the Contributor Code of Conduct to ensure a welcoming environment for all contributors.
Citations
If you use OpenSTEF in your research or publications, please cite the project. Refer to the CITATION.cff file in this repository for the preferred citation format, or use:
Contributors to the OpenSTEF project. OpenSTEF — Open Short-Term Energy Forecasting. LF Energy, 2017–2025. Available at: https://github.com/OpenSTEF/openstef
Contact
- Slack: LF Energy Slack
- Email: openstef@lfenergy.org
- Community meeting: OpenSTEF four-weekly community meeting
- Issues: GitHub Issue Tracker
- Support Guide: How to get help
Citation (CITATION.cff)
# SPDX-FileCopyrightText: 2017-2025 Contributors to the OpenSTEF project <openstef@lfenergy.org>
#
# SPDX-License-Identifier: MPL-2.0
cff-version: 1.2.0
message: "If you are using OpenSTEF in your research work, please consider citing our library as below."
title: "OpenSTEF/openstef"
url: "https://github.com/OpenSTEF/openstef"
doi: "10.5281/zenodo.15316405"
license: "MPL-2.0"
authors:
- family-names: "Kreuwel"
given-names: "Frank"
email: "Frank.Kreuwel@Alliander.com"
affiliation: "Alliander"
- family-names: "Es"
name-particle: "van"
given-names: "Daan"
email: "Daan.van.Es@Alliander.com"
affiliation: "Alliander"
- family-names: "Doorn"
name-particle: "van"
given-names: "Jan Maarten"
email: "JanMaarten.vanDoorn@Sigholm.se"
affiliation: "Sigholm"
- family-names: "Pleiter"
given-names: "Bart"
email: "Bart.Pleiter@Alliander.com"
affiliation: "Alliander"
- family-names: "Stoel"
given-names: "Willem Frederik"
email: "wfstoel@outlook.com"
- family-names: "Bogaard"
name-particle: "van den"
given-names: "Jonas"
email: "Jonas.van.den.Bogaard@Alliander.com"
affiliation: "Alliander"
- family-names: "Fortin"
given-names: "Maxime"
email: "maxime.fortin@rte-france.com"
affiliation: "RTE"
- family-names: "Smet"
name-particle: "de"
given-names: "Clara"
email: "Clara.de.Smet@Alliander.com"
affiliation: "Alliander"
- family-names: "Dmitriev"
given-names: "Egor"
email: "Egor.Dmitriev@Alliander.com"
affiliation: "Alliander"
- family-names: "Schilders"
given-names: "Lars"
email: "Lars.Schilders@Alliander.com"
affiliation: "Alliander"
- family-names: "Harmsen"
given-names: "A. W."
email: "Bram.Harmsen@Alliander.com"
affiliation: "Alliander"
- name: "Contributors to the OpenSTEF project"
contact:
- name: "Team mailbox OpenSTEF"
email: "openstef@lfenergy.org"
Owner metadata
- Name: OpenSTEF
- Login: OpenSTEF
- Email:
- Kind: organization
- Description: Open Short Term Energy Forecaster project
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/93986058?v=4
- Repositories: 6
- Last ynced at: 2024-05-29T13:39:40.773Z
- Profile URL: https://github.com/OpenSTEF
GitHub Events
Total
- Release event: 40
- Delete event: 164
- Member event: 6
- Pull request event: 182
- Fork event: 8
- Issues event: 70
- Watch event: 30
- Issue comment event: 54
- Push event: 743
- Pull request review comment event: 300
- Pull request review event: 305
- Create event: 190
Last Year
- Release event: 8
- Delete event: 127
- Member event: 2
- Pull request event: 91
- Fork event: 5
- Issues event: 62
- Watch event: 16
- Issue comment event: 31
- Push event: 492
- Pull request review event: 158
- Pull request review comment event: 154
- Create event: 121
Committers metadata
Last synced: 1 day ago
Total Commits: 2,579
Total Committers: 50
Avg Commits per committer: 51.58
Development Distribution Score (DDS): 0.846
Commits in past year: 242
Committers in past year: 20
Avg Commits per committer in past year: 12.1
Development Distribution Score (DDS) in past year: 0.595
| Name | Commits | |
|---|---|---|
| bump_version | a****n@g****m | 397 |
| Jan Maarten van Doorn | 5****n | 380 |
| Frank Kreuwel | f****l@a****m | 265 |
| Frank Kreuwel | f****l@g****m | 227 |
| Bram Harmsen | b****n@a****m | 224 |
| Enrico Schmitz | 2****z | 191 |
| David Swinkels | d****s@a****m | 131 |
| Egor Dmitriev | e****v@a****m | 121 |
| Charlotte Cambier van Nooten | c****n@a****m | 88 |
| bhardier | b****r@p****m | 86 |
| Lars Schilders | 1****s | 62 |
| Alexis Mignon | a****n@p****m | 52 |
| Martijn Cazemier | m****r@a****m | 34 |
| Bart Pleiter | b****r@a****m | 32 |
| Frederik Stoel | 6****l | 31 |
| Maria Manoli | m****m@g****m | 27 |
| gfsdekoning | g****g@g****m | 25 |
| dependabot[bot] | 4****] | 24 |
| Marnix van Lieshout | 4****t | 23 |
| David Swinkels | D****s | 21 |
| Jonita Ruiter | 1****r | 21 |
| Jonas van den Bogaard | j****o@g****m | 18 |
| Augustin Touron | a****n@r****m | 13 |
| Clara De Smet | 1****t | 13 |
| Denise | d****k@a****m | 12 |
| MentReeze | m****e@a****m | 10 |
| thomasnijsen | 6****n | 6 |
| Fleur Petit | f****t@a****m | 4 |
| Rajveer* | i****0@g****m | 4 |
| ylvab | 4****b | 4 |
| and 20 more... | ||
Committer domains:
- alliander.com: 11
- rte-france.com: 2
- rwth-aachen.de: 1
- me.com: 1
- reserver.acs-lab.eonerc.rwth-aachen.de: 1
- meeuwis.se: 1
- eonerc.rwth-aachen.de: 1
- outlook.it: 1
- proabyes.com: 1
- probayes.com: 1
- github.com: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 151
Total pull requests: 729
Average time to close issues: 8 months
Average time to close pull requests: 9 days
Total issue authors: 30
Total pull request authors: 44
Average comments per issue: 0.85
Average comments per pull request: 0.88
Merged pull request: 589
Bot issues: 0
Bot pull requests: 42
Past year issues: 33
Past year pull requests: 109
Past year average time to close issues: 2 months
Past year average time to close pull requests: 5 days
Past year issue authors: 8
Past year pull request authors: 16
Past year average comments per issue: 0.73
Past year average comments per pull request: 0.72
Past year merged pull request: 65
Past year bot issues: 0
Past year bot pull requests: 20
Top Issue Authors
- egordm (26)
- FrankKr (22)
- BenoitHardier (18)
- JanMaartenvanDoorn (18)
- AlexisMignon (17)
- bremme (10)
- lschilders (10)
- bartpleiter (4)
- Sander3003 (3)
- maxi-fort (2)
- charlottecvn (2)
- MvLieshout (1)
- whoisroop (1)
- Ale0x78 (1)
- majidkhoshrou (1)
Top Pull Request Authors
- FrankKr (141)
- JanMaartenvanDoorn (84)
- egordm (73)
- lschilders (50)
- dependabot[bot] (42)
- Davidswinkels (42)
- bartpleiter (30)
- clara-de-smet (28)
- EnricoASchmitz (28)
- wfstoel (20)
- MvLieshout (19)
- bremme (18)
- JonitaRuiter (16)
- BenoitHardier (13)
- ThomasNijsen (12)
Top Issue Labels
- OpenSTEF 4.0 (40)
- feature (21)
- good first issue (19)
- ready-to-implement (17)
- fix (12)
- chore (11)
- sklearn (10)
- to refine (8)
- feature engineering (4)
- localization (3)
- help wanted (2)
- enhancement (2)
- dependencies (1)
Top Pull Request Labels
- feature (139)
- fix (130)
- chore (90)
- dependencies (42)
- OpenSTEF 4.0 (21)
- python:uv (15)
- python (6)
- OpenSTEF-Meta (2)
- github-actions (1)
Package metadata
- Total packages: 8
-
Total downloads:
- pypi: 46,614 last-month
- Total docker downloads: 13
- Total dependent packages: 1 (may contain duplicates)
- Total dependent repositories: 3 (may contain duplicates)
- Total versions: 946
- Total maintainers: 1
proxy.golang.org: github.com/OpenSTEF/openstef
- Homepage:
- Documentation: https://pkg.go.dev/github.com/OpenSTEF/openstef#section-documentation
- Licenses: mpl-2.0
- Latest release: v4.2.2+incompatible (published 6 days ago)
- Last Synced: 2026-08-12T13:39:39.564Z (1 day ago)
- Versions: 251
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/openstef/openstef
- Homepage:
- Documentation: https://pkg.go.dev/github.com/openstef/openstef#section-documentation
- Licenses: mpl-2.0
- Latest release: v4.2.2+incompatible (published 6 days ago)
- Last Synced: 2026-08-12T13:42:53.262Z (1 day ago)
- Versions: 251
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
pypi.org: openstef
Open Short Term Energy forecasting library
- Homepage: https://lfenergy.org/projects/openstef/
- Documentation: https://openstef.github.io/openstef/index.html
- Licenses: MPL-2.0
- Latest release: 4.2.2 (published 6 days ago)
- Last Synced: 2026-08-12T13:32:59.322Z (1 day ago)
- Versions: 248
- Dependent Packages: 1
- Dependent Repositories: 3
- Downloads: 9,569 Last month
- Docker Downloads: 13
-
Rankings:
- Dependent packages count: 3.244%
- Average: 7.681%
- Downloads: 8.11%
- Stargazers count: 8.539%
- Dependent repos count: 9.143%
- Forks count: 9.37%
- Maintainers (1)
pypi.org: openstef-foundation-models
Foundation model support for OpenSTEF
- Homepage: https://lfenergy.org/projects/openstef/
- Documentation: https://openstef.github.io/openstef/index.html
- Licenses: MPL-2.0
- Latest release: 4.2.2 (published 6 days ago)
- Last Synced: 2026-08-12T13:36:43.285Z (1 day ago)
- Versions: 6
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 7,988 Last month
-
Rankings:
- Dependent packages count: 6.967%
- Average: 23.191%
- Dependent repos count: 39.415%
- Maintainers (1)
pypi.org: openstef-meta
Meta models for OpenSTEF
- Homepage: https://lfenergy.org/projects/openstef/
- Documentation: https://openstef.github.io/openstef/index.html
- Licenses: MPL-2.0
- Latest release: 4.2.2 (published 6 days ago)
- Last Synced: 2026-08-12T13:35:08.197Z (1 day ago)
- Versions: 31
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 5,884 Last month
-
Rankings:
- Dependent packages count: 7.716%
- Average: 25.672%
- Dependent repos count: 43.628%
- Maintainers (1)
pypi.org: openstef-models
Core models for OpenSTEF
- Homepage: https://lfenergy.org/projects/openstef/
- Documentation: https://openstef.github.io/openstef/index.html
- Licenses: MPL-2.0
- Latest release: 4.2.2 (published 6 days ago)
- Last Synced: 2026-08-12T13:34:16.843Z (1 day ago)
- Versions: 53
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 8,297 Last month
-
Rankings:
- Dependent packages count: 8.285%
- Average: 27.557%
- Dependent repos count: 46.829%
- Maintainers (1)
pypi.org: openstef-core
Core functionality for OpenSTEF, a framework for short-term energy forecasting.
- Homepage: https://lfenergy.org/projects/openstef/
- Documentation: https://openstef.github.io/openstef/index.html
- Licenses: MPL-2.0
- Latest release: 4.2.2 (published 6 days ago)
- Last Synced: 2026-08-12T13:32:58.029Z (1 day ago)
- Versions: 53
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 8,641 Last month
-
Rankings:
- Dependent packages count: 8.285%
- Average: 27.557%
- Dependent repos count: 46.829%
- Maintainers (1)
pypi.org: openstef-beam
Backtesting, Evaluation, Analysis and Metrics (BEAM) library for OpenSTEF
- Homepage: https://lfenergy.org/projects/openstef/
- Documentation: https://openstef.github.io/openstef/index.html
- Licenses: MPL-2.0
- Latest release: 4.2.2 (published 6 days ago)
- Last Synced: 2026-08-12T13:36:00.323Z (1 day ago)
- Versions: 53
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 6,235 Last month
-
Rankings:
- Dependent packages count: 8.285%
- Average: 27.557%
- Dependent repos count: 46.829%
- Maintainers (1)
Dependencies
- actions/checkout v2 composite
- ammaraskar/sphinx-action master composite
- TimonVS/pr-labeler-action v3 composite
- actions/checkout 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 composite
- github/codeql-action/analyze 411c4c9a36b3fca4d674f06b6396b2c6d23522c6 composite
- github/codeql-action/init 411c4c9a36b3fca4d674f06b6396b2c6d23522c6 composite
- openstef-core [benchmark]
- openstef-models [xgb-cpu]
- pydantic-settings >=2.14,<3
- joblib >=1,<2
- numpy >=2.3.2,<3
- pandas >=2.3.1,<3
- pyarrow >=21
- pydantic >=2.12.4,<3
- pydantic-extra-types >=2.10.5,<3
- huggingface-hub >=1.2.2
- openstef-beam >=4,<5
- openstef-core >=4,<5
- openstef-models >=4,<5
- openstef-beam >=4,<5
- openstef-core >=4,<5
- openstef-models [lgbm]>=4,<5
- actions/checkout 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 composite
- dieghernan/cff-validator 54c8e737314b948f25c0e5524a9d8ae3f39b207b composite
- actions/checkout 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 composite
- ad-m/github-push-action 881a6320fdb16eb5318c5054f31c218aec2b324c composite
- astral-sh/setup-uv fac544c07dec837d0ccb6301d7b5580bf5edae39 composite
- openstef-core >=4,<5
- plotly >=6.3
- pyyaml >=6.0.2
- tqdm >=4.67.1
- SonarSource/sonarqube-scan-action 713881670b6b3676cda39549040e2d88c70d582e composite
- actions/checkout 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 composite
- astral-sh/setup-uv fac544c07dec837d0ccb6301d7b5580bf5edae39 composite
- actions/checkout 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 composite
- astral-sh/setup-uv fac544c07dec837d0ccb6301d7b5580bf5edae39 composite
- huggingface-hub >=1.2.2
- ipython >=9.4
- jupyter-cache >=1
- jupytext >=1.16
- kaleido >=0.2.1,<0.3,!=0.2.1.post1
- matplotlib >=3.10.5
- myst-nb >=1.2
- openstef *
- openstef-beam *
- openstef-core *
- openstef-foundation-models *
- openstef-models *
- optuna >=4.7
- pydata-sphinx-theme >=0.16.1
- sphinx >=8.2.3
- sphinx-autobuild >=2024.10.3
- sphinx-autodoc-typehints >=3.2
- sphinx-copybutton >=0.5.2
- sphinx-design >=0.6.1
- sphinx-gallery >=0.19
- sphinx-prompt >=1.10
- sphinx-pyproject >=0.3
- sphinxcontrib-mermaid >=0.9.2
- holidays >=0.79
- mlflow-skinny >=3,<4
- openstef-beam >=4,<5
- openstef-core >=4,<5
- pvlib >=0.13
- pycountry >=24.6.1
- scikit-learn >=1.7.1,<1.8
- scipy >=1.16.3,<2
- 401 dependencies
- openstef *
- openstef-beam *
- openstef-core *
- openstef-models *
Score: 19.97529270846702