Skip to main content

Narrow-GA Belgium portfolio scheduling, revision, audit, and operational integration for European BESS workflows.

Project description

euroflex_bess_lab

Public release Canonical path Python 3.12 Package

euroflex_bess_lab is a commercial-grade benchmarking, scheduling, revision, and audit framework for European BESS workflows. It is designed to help an operator or optimizer answer one narrow but real question with a trustworthy public-core tool:

Given the information visible at decision time, how should a Belgium battery portfolio behind a shared POI be scheduled, revised, reconciled, and handed off to an operator?

Canonical Belgium demo

The demo below validates the canonical Belgium config, runs a portfolio schedule revision, reconciles expected versus realized outcomes, and exports operator plus bid-planning handoff files.

This public release is the open-core base for operator-facing benchmarking, scheduling support, revision, audit, and downstream handoff in European BESS workflows. Commercial integration, managed deployment, and market-specific adapters are available separately from the public core.

Narrow GA Promise

The first intentionally narrow GA promise is:

  • Market: Belgium
  • Scope: portfolio / shared POI
  • Workflow: schedule_revision
  • Base workflow: da_plus_afrr
  • Forecast paths: persistence, csv
  • Operator path: validate-config -> validate-data -> backtest -> reconcile -> export-schedule --profile operator -> export-bids --profile bid_planning
  • Canonical config: examples/configs/canonical/belgium_full_stack.yaml

Everything else is explicitly tiered:

  • perfect_foresight: oracle-only benchmark surface
  • custom_python: stable integration point for trusted local forecast code
  • Netherlands: supported secondary surface, not part of the GA promise
  • live submission / EMS control: out of scope
flowchart LR
    A["Visible inputs at checkpoint<br/>day-ahead, reserve curves, SoC, availability"] --> B["Forecast layer<br/>persistence | csv | custom_python"]
    B --> C["Pyomo optimizer<br/>Belgium portfolio + shared POI + locked aFRR commitments"]
    C --> D["Operator handoff<br/>schedule exports + bid-planning exports"]
    D --> E["Realized settlement<br/>reconcile, update SoC, attribute deltas"]
    E --> A

Who This Is For

  • BESS owners, operators, and optimizers evaluating Belgium-first scheduling and revision workflows
  • flexibility aggregators and VPP teams benchmarking site or portfolio value stacking behind shared constraints
  • trading, scheduling, and dispatch support teams that need operator-ready exports and bid-planning handoff
  • developers, diligence teams, and revenue modelers benchmarking market-entry assumptions or private forecast models
  • internal teams that want a rule-aware execution layer without rebuilding market logic from scratch

Why It Matters

  • turns visible public or private forecast inputs into auditable benchmark schedules
  • keeps market rules, locked commitments, portfolio constraints, and export discipline explicit
  • produces operator-ready schedule and bid-planning artifacts with manifest metadata and reconciliation
  • reduces the time and integration cost of rebuilding market-specific BESS workflow logic
  • separates forecast IP from deterministic market-execution logic so quantitative teams can focus on forecast alpha

Where It Fits

  • a public-core foundation for benchmark, scheduling support, revision, reconciliation, and audit workflows
  • suitable for internal evaluation, PoCs, enterprise integration, and operator-facing support tooling
  • intended to sit upstream of approval workflows, execution routers, and market-specific submission adapters
  • not a turnkey all-market deployment surface without company-specific process and IT integration

5-minute Canonical Run

Local dl environment

conda env update -f environment.yml
conda activate dl
euroflex validate-config examples/configs/canonical/belgium_full_stack.yaml
euroflex validate-data examples/configs/canonical/belgium_full_stack.yaml
euroflex backtest examples/configs/canonical/belgium_full_stack.yaml --market belgium --workflow schedule_revision
euroflex reconcile artifacts/examples/<run_id> examples/configs/canonical/belgium_full_stack.yaml
euroflex export-schedule artifacts/examples/<run_id> --profile operator
euroflex export-bids artifacts/examples/<run_id> --profile bid_planning

Docker

docker build -t euroflex-bess-lab .
docker run --rm -v "$PWD/artifacts:/app/artifacts" euroflex-bess-lab \
  euroflex validate-config examples/configs/canonical/belgium_full_stack.yaml
docker run --rm -v "$PWD/artifacts:/app/artifacts" euroflex-bess-lab \
  euroflex backtest examples/configs/canonical/belgium_full_stack.yaml \
  --market belgium \
  --workflow schedule_revision

Notebook-first

docker compose up notebooks
euroflex batch examples/batches/canonical_belgium_full_stack.yaml

What It Is

  • A market-rule encoder for Belgium-first BESS portfolio scheduling and revision
  • A shared-POI optimizer for multi-battery sites
  • A checkpoint-based revision and reconciliation engine
  • A human-in-the-loop export layer with benchmark, operator, bid_planning, and submission_candidate profiles
  • A local service wrapper and run-registry layer for human-in-the-loop operational integration
  • A stable extension point for private forecast code through custom_python

What It Is Not

  • A live trading engine
  • A live reserve-submission stack
  • An EMS / SCADA controller
  • A guarantee of realized market revenue
  • A plug-and-play deployment for every market, operator, or energy company workflow

Docs

Start with:

Public example surface

The curated public examples are intentionally small:

Everything else needed for tests and non-promoted scenarios lives under tests/fixtures/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

euroflex_bess_lab-1.1.0.tar.gz (126.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

euroflex_bess_lab-1.1.0-py3-none-any.whl (115.9 kB view details)

Uploaded Python 3

File details

Details for the file euroflex_bess_lab-1.1.0.tar.gz.

File metadata

  • Download URL: euroflex_bess_lab-1.1.0.tar.gz
  • Upload date:
  • Size: 126.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for euroflex_bess_lab-1.1.0.tar.gz
Algorithm Hash digest
SHA256 4deba674769a7be5e7cb5183b2a14ad62a790eb0605f2bc1956220efe60e50e1
MD5 e66670784c471768901f727f9faf05db
BLAKE2b-256 9aaa653ec206b8568e7a21df0abec18c031f066f7b274a072ec44bf709fb1d08

See more details on using hashes here.

File details

Details for the file euroflex_bess_lab-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for euroflex_bess_lab-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14c796c563cb75d579c850019176776eaabaa53cba917815f79b058ed8aad323
MD5 91d0c3d7ea6ada2cf2eb16051d97bb00
BLAKE2b-256 8143cb322e8830dcf8b4d4f49097a246805b80f56be3bc3cc3adea5988816df0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page