Data and code for: Economic risk certification for fixed day-ahead battery storage schedules under price uncertainty

Published: 8 September 2026| Version 1 | DOI: 10.17632/5hhdyg9jb9.1
Contributors:
, Li Zhang

Description

This record accompanies the manuscript “Economic risk certification for fixed day-ahead battery storage schedules under price uncertainty”. The study develops economic risk certificates for fixed battery schedules by combining state-of-charge-coupled regret caps with economically weighted online calibration. The method accounts for power limits, conversion efficiency, intertemporal energy balance, and terminal inventory. The market studies cover the Australian National Electricity Market, NYISO, Germany-Luxembourg, and Spain. The German-Luxembourg and Spanish studies use historical market data. Retrospective SOC-constraint ablations and algebraic certificate decompositions are distinguished from held-out evaluations. Reported improvements concern reductions in regret-certificate bounds for fixed schedules. The underlying market observations originate from AEMO, NYISO, Bundesnetzagentur | SMARD.de, and OMIE.

Files

Steps to reproduce

1. Extract the repository archive into a new directory. Read README.md, THIRD_PARTY_NOTICES.md, and reproduction/TRAINING.md. Run "python reproduce.py verify" to check all manifest-listed files. 2. Create isolated Python environments using requirements-replay.txt and requirements-legacy-reporting.txt. The separate legacy environment is required to reproduce the inherited Matplotlib 3.9.2 figures with their original renderer. 3. Run "python reproduce.py tests --output checks_tests". Inspect the test report, including any explicitly recorded optional-dependency or platform-specific skips. 4. The operational-case figure requires observed NYISO prices, which are excluded from the repository archive. Run "python reproduce.py hydrate-nyiso --raw-dir recovered/nyiso_cases --download", or supply the two official monthly ZIP files manually. The source archives and reconstructed observed-price array must match the recorded hashes. 5. Run "python reproduce.py reports --output checks_figures --legacy-python PATH_TO_LEGACY_PYTHON", replacing PATH_TO_LEGACY_PYTHON with the interpreter in the legacy environment. This regenerates the manuscript figures, graphical abstract, and five generated tables in a separate work directory. Inspect REPORTING_AUDIT.json for pixel, file-hash, and table comparisons. 6. For European numerical replay, use a separate extraction and run "python scripts/replay_europe_recorded.py --reconstruct-inputs". This retrieves the recorded official sources, verifies their hashes, and replays historical results without modifying the original locks. 7. Follow reproduction/TRAINING.md for the other markets, fixed-prediction certificate replay, and optional neural retraining. Always use new output directories. The documentation records input exclusions and a historical NEM helper-source hash discrepancy. Reporting and fixed-input replay must not be described as complete end-to-end neural retraining or new independent validation.

Institutions

Categories

Energy Storage, Stationary Power Systems

Licence