{
 "name": "electricity flow at unmetered low-voltage feeders: recalibrated physics with memory vs calibrated physics vs a learned model",
 "registered": "2026-10-10",
 "data": {
  "source": "FeederBW v1.1 (Netze BW and KIT; Treutlein et al., Scientific Data 13, 1283, 2026), Zenodo doi 10.5281/zenodo.19550073, CC BY 4.0",
  "development_read": "feeder_metadata.csv (md5 d93ced868ce0c9600ec8bce6b0df196c), weather_data.parquet (md5 6f4263241741e2b59722f024f17bbacf), feeder_measurement_data_001-040/041-080/081-120/121-160.zip (md5 9aeb811da458e9137e7318f918b74b30, c9d616dc746943a5f72e4175911170c2, 6979a158742641310cbe1c480b59f1d2, 773df953e799e3ce9b84463b001df3f8), rows before 2024-03-31 22:00 UTC only",
  "holdout": "feeders 161-200 (feeder_measurement_data_161-200.zip, md5 c237f9a0ccb3cb3ff09bb59caaf529b7 per Zenodo, not downloaded before this registration), 2024-03-31 22:00 UTC to 2025-03-31 22:00 UTC. Feeders 1-160 in the same year are sensors: their measurements are inputs at each step and are never scored or fitted."
 },
 "task": "for each holdout feeder and each 15-minute step, predict the mean active power at the feeder head (kW, positive drawn from the grid) from its metadata, the weather, the time and the measurements of feeders 1-160 at that step; its own measurements are never an input",
 "training": "every coefficient and tree is fitted on feeders 1-160 before 2024-03-31 22:00 UTC only (model.run with fit_before)",
 "arms": {
  "physics": "features.py terms with 15 global non-negative coefficients calibrated on the training rows",
  "dynamic": "the same physics recalibrated at every step from the sensors at that step (ridge towards the calibration, LAM 0.01); diagnostic, not in the bar",
  "learned": "LightGBM (400 rounds, 63 leaves, lr 0.05) on calendar, weather, metadata per size, log size and the sensors' per-size flow at that step (all, five most similar, same substation); no physics",
  "living": "dynamic + 0.5 x (learned - dynamic); GAMMA 0.5 fixed in development",
  "learned_pair": "two learned models with different seeds averaged; diagnostic for how much of a gain is averaging, not in the bar"
 },
 "metric": "per feeder: RMSE of the 15-minute flow over that feeder's mean absolute measured flow (nRMSE), steps with at least 10 of 15 one-minute readings",
 "bar": {
  "statement": "met only if all hold: (1) living's mean nRMSE over the holdout feeders is below physics and below learned; (2) one-sided Wilcoxon signed-rank tests over feeders of living < physics and living < learned both give p < alpha; (3) in each of winter (Dec-Feb), spring, summer and autumn, living's mean nRMSE is below both physics and learned",
  "alpha": 0.05,
  "min_valid_share": 0.5
 },
 "development": {
  "split": "feeders 1-160, April 2023 to March 2024, five folds by substation (seed 20261010)",
  "result": "mean nRMSE physics 0.7155, dynamic 0.5519, learned 0.5313, living 0.5162; living below learned on 99 of 160 feeders, Wilcoxon p 1.4e-4; below both in every season"
 },
 "run": "experiment/infrastructure/run_registered.sh, once; result.json is committed whatever it says",
 "code_commit": "3397f9d7d7e6b1571f1254a0c56f895afb492ed8"
}
