Khepri — Nordic per-zone carbon intensity (NO1-NO5 + SE1-SE4)
Abstract
Per-zone carbon-intensity signal for nine Nordic electricity bidding zones (NO1–NO5 and SE1–SE4), for carbon-aware computing. Production-based, derived deterministically from ENTSO-E actual generation per production type weighted by IPCC AR5 Annex III lifecycle emission factors. Replaces the uniform 18.0 gCO2eq/kWh placeholder used by tools such as CodeCarbon for both Norwegian and Swedish zones. Includes multi-year drift analysis and 96-hour per-zone forecasts in the CarbonCast/EnsembleCI evaluation convention, with a full ADR chain (0001–0009 and 0013). v1.1 adds SE1–SE4. Per-zone Nordic carbon intensity is not new: Clauß et al. (2019, doi:10.3390/en12071345) cover the Norwegian zones, Engstam et al. (2023, doi:10.1016/j.enconman.2023.117458) and Papageorgiou et al. (2020, doi:10.1016/j.apenergy.2020.114981) the Swedish ones. What this artifact adds is an archived, versioned and independently recomputable series on a freely available factor base, covering 2021–2025. SE cross-zone spread 5.6–8.0 gCO2eq/kWh; SE3 nuclear-dominant (14.5 gCO2eq/kWh); SE4 structurally drifting (ADR-0007, pre-registered threshold). Forecast H0 (heavy ML does not beat simple baselines) not rejected for SE. License: data and documentation under CC-BY-4.0; code under Apache-2.0. v1.2 aligns the archived artifact with the submitted manuscript (IPCC AR5 Annex III citation; NO4 placeholder error stated as 2.2×), adds per-bidding-zone SE drift results, translates code docstrings to English, pins dependencies, and makes the dual licensing explicit (Apache-2.0 code; CC-BY-4.0 data and documentation). v1.3 documents the basis used for the codecarbon delivery: an ENTSO-E→codecarbon category mapping, a named parameter that carries unfactored generation in the denominator at zero (ADR-0009), a fix for coverage and mix shares returning NaN when any type had a NaN, and regression tests pinning all nine zones on both the AR5 and the codecarbon factor bases. No published AR5 figure changes. Version 1.5 corrects three things found while preparing the journal revision (Environmental Data Science, EDS-2026-0107). (1) Forecast implementation: the gradient-boosting model had been trained on 34 daily origins instead of 365, and in the Swedish split 2024 was not loaded as history; forecast.py now loads every year from the first training year through the test year, trains on the last 365 daily origins ending 96 h before the end of the training period, and logs and counts any SARIMA fallback. On the corrected runs the gradient-boosting model has lower mean MAPE than SARIMA in NO1–NO3 and SE1–SE4 and higher in NO4 and NO5, so the forecast statement above (heavy ML does not beat simple baselines) is superseded. (2) Drift: the mix arm of the pre-registered criterion is applied as registered (any material production type, year over year and first year against last); the simultaneous reservoir to run-of-river shift in all five Norwegian zones on 27 October 2021 is reported as an unconfirmed observation. (3) Missing data: the cause of the 2025 coverage loss (pumped-storage pumping hours reported as missing) and the corrected bound of the materiality threshold are recorded in a dated addendum to ADR-0002; ADR-0017 (Proposed) reads pumping hours as zero generation from version 2. The CI values are unchanged: the nine 2025 per-zone values are bit-identical to version 1.4 (baseline SHA256 a86d8dd2351760d52c61d1398f1d97436089572e6f2e9a22ea7cfd2fe5eb9ae8). All corrections are dated blocks and addenda; the version 1.4 text is kept beneath them.