Skip to content

Glossary of terms used in the experiment pages

This page defines each term that the experiment pages and the theme Summary pages use without redefining. Every definition gives its source: the experiment that introduced the term, or the code or contract that fixes its meaning. Terms appear in alphabetical order. The data-processing page has its own short list of terms for the processing steps it describes.

Terms

14-day correction

The 14-day correction adds the mean error of the last 14 days to every forecast quantile. The error is the observed power minus the forecast median, taken over the half-hours whose power was already observed when the forecast was issued, and the correction is zero when fewer than 3 days of errors exist (experiment 19 and its scoring script).

Abnormal running arrangement (ARA) and normal running arrangement (NRA)

The normal running arrangement (NRA) is the electricity network as it is when no load transfer is on, and an abnormal running arrangement (ARA) is the period while an operator has closed a normally open switch, so that one Primary substation carries load that belongs to a neighbour. An "NRA forecast" predicts the demand that the substation would have drawn under the NRA (experiment 88, experiment 89).

Base margin

A base margin is a starting prediction that an XGBoost model receives for each row, in place of the single base score that XGBoost otherwise estimates from the training labels. The wind models use the power that the turbine power curve gives at the forecast wind speed. The solar offset of the Primary models uses the forecast output of the unmetered solar panels behind the substation (experiment 80, experiment 87).

Best guess

The best guess is the forecasting recipe assembled in experiment 33. For Primary substation demand it is N1 with the 14-day correction and a spread factor of 1.15, which is the stack without its half-life (experiment 19's stack_minus_h arm, rebuilt in experiment 33 as n1_cs). For bulk and grid supply points it is N1 alone. For solar and wind farms it is a mixture, over the 51 ENS members, of XGBoost models trained on ERA5 weather, with a spread factor and, for wind, a power-curve base margin.

BG2

BG2 is the second best-guess recipe, assembled in experiment 87 from the best earlier ideas. For Primary substations it is a quantile blend of five members, with a solar offset at the five Primaries that have a clean solar capacity estimate. The members are a weekly-refitted XGBoost model, a monthly-refitted XGBoost model, an analogue model (the experiment's summary does not state its type), a model pooled by substation type, and the stack. For bulk and grid supply points it is the weekly-refitted XGBoost model with no correction. Experiment 97 recalibrates only the stored weekly-refitted forecast and calls it BG2. Production does not run BG2: it serves xgboost_baseline, which scored 10.536 points on the Primary quantile score in experiment 87, against 5.260 for BG2.

Bulk supply point and grid supply point

A grid supply point (GSP) is a substation where the transmission network feeds NGED's distribution network, and a bulk supply point (BSP) is a substation one step further down. NGED's GSPs step voltage from 400 kV or 275 kV to 132 kV, and its BSPs step from 132 kV to 33 kV or 66 kV (NGED's network and its data). A Primary substation sits below a BSP. The trial area holds two GSPs and two BSPs, and the experiments report them together as "supply points" or "BSP and GSP". The data-processing page says not to treat them as clean demand.

Capacity and points of capacity

Capacity in the experiment scores is the effective capacity of a series: the 99th percentile of the absolute power over the series' whole observed history, in the series' own unit (MW or MVA). The EffectiveCapacity contract fixes this definition for version 0.1 (packages/contracts/src/contracts/power_schemas.py), and the experiment scripts divide power and forecast by effective_capacity_mw. A point of capacity is 1% of that value, so a score of 5.26 points on a series of 20 MW capacity is an error of about 1.05 MW. A lower score is better.

Climatology

climatology is a baseline forecaster that predicts each half-hour from past power in the same calendar cell. A cell is a series, a local month, a local half-hour of the day, and a weekday-or-weekend flag, smoothed over the neighbouring months and half-hours. The forecaster stores 51 equiprobable quantiles per cell and consumes no weather (packages/baseline_forecasters/src/baseline_forecasters/climatology.py).

Control member

The control member is the one ENS run that starts from ECMWF's unperturbed analysis of the current weather. The other 50 of the 51 ENS members start from perturbed analyses (ENS horizons). N1 is trained on the control member and then applied to all 51 members, and the 51 sets of quantiles are pooled (experiment 13).

Coverage

The coverage of a forecast quantile is the share of observed values at or below it. A correct q05 covers 0.05 and a correct q95 covers 0.95. The coverage of the 5% to 95% range is the share of observed values between q05 and q95, which is 90% for a correct forecast (experiment 19 reports it as "5% to 95% coverage").

CRPS

The continuous ranked probability score (CRPS) scores a whole forecast distribution against the observed value, and the experiments approximate it from the forecast quantiles. The approximation is twice the probability-mass-weighted sum of the pinball losses, which is the quantile score (studies.cross_validation.crps). Experiments 2, 16, and 20 report it under the name CRPS, and experiments 13 and 33 say that the quantile score is its estimate.

D codes

A D code (D1 to D22) is the anonymised label of one of the 22 demand-side series in fold A: 16 Primary substations, 4 bulk or grid supply points, and a battery and a biofuel generator. The labels are defined in experiment 3 and are used with the same meaning in the pages checked (experiments 5, 27, 46, 51, 53, 64, and 74 and the data-processing page), for example D1 is a grid supply point and D9, D10, D11, D14, and D16 are the five Primaries with a clean solar capacity estimate. A D code and a substation name are different labels. D codes are not the same as the detector names D0, D0M, D1, and D2 (see Detectors D0, D0M, D1, and D2), nor the labels P12 and P13 of experiment 101. Generators carry separate anonymous labels such as "Solar farm A", assigned by studies.anonymise.

Detectors D0, D0M, D1, and D2

In the switching experiments, D0, D0M, D1, and D2 are names of detectors, not series. D0 is the single-series detector. D0 raises an alarm when the average residual over a window steps by more than a threshold. D0M is D0 with its threshold chosen by the same search that sets D2's threshold and with no veto; at the 24-hour window it uses 4.0 noise units and ends each alarm interval with a level tracker that stops after 60 days. D0 at the thresholds of experiment 43 (6.0 noise units at the 4-hour window and 4.0 at the 24-hour window) is a separate arm, although the search returned those same thresholds. D1 is the neighbour-balance detector of experiment 37, which also requires a neighbouring substation to step the opposite way (thresholds 3.75 at the 4-hour window and 2.5 at the 24-hour window). D2 is D0M plus a neighbour veto (experiment 37, experiment 43, experiment 55, experiment 58, experiment 66). Experiment 49 also uses D0 as the label of a spread-factor contrast, and experiment 87 uses D1 and D4 as labels of decisions.

ENS, ERA5, and CAMS

ENS is the European Centre for Medium-Range Weather Forecasts (ECMWF) ensemble forecast with 51 members, and ERA5 and the Copernicus Atmosphere Monitoring Service (CAMS) irradiance are estimates of past weather. ENS is a forecast issued before the weather happens, and the live forecast is given ENS. ERA5, the fifth-generation ECMWF reanalysis, arrives about 5 days late (experiment 10), so a result that uses ERA5 as a forecast input is a ceiling and not a usable product. CAMS is a satellite-based estimate of sunlight (experiment 7). An XGBoost model trained on ERA5 or CAMS learns from weather that was not forecast.

Frozen XGBoost model

A frozen XGBoost model is trained once, on data up to the start of the validation year, and is not refitted during that year. In experiment 87, the frozen forecast without the 14-day correction scores 6.927 for Primary substations (S1), and the frozen forecast with the correction is the stack (S2, 5.543).

Half-life

A half-life of 0.5 years gives a training row a weight of 0.5 raised to the power of the row's age in years divided by 0.5. The weight therefore halves for every 0.5 years of age (ml-experiments/00017-training-window-and-retraining-rule-drift-demand/e00017_fit.py, experiment 17).

Injected and real load transfers

A load transfer is a switching operation that moves part of one Primary substation's demand (the donor) onto neighbouring substations for hours or days. An injected transfer is a synthetic transfer that the experiment adds to the real power readings, so its start, end, and size are known. A real transfer is one of the 66 hand-labelled operations of experiment 41, of which 35 last over 1 day. A transfer is "large" when it moves at least 25% of the receiving substations' load.

Interval-level convention

Each interval states its level, and the level depends on how many contrasts the experiment planned. An experiment that plans one contrast reports a 95% interval. An experiment that plans N contrasts divides the 5% error rate across them with a Bonferroni correction, so nine contrasts give a 99.44% interval (1 minus 0.05 divided by 9). Intervals resample whole calendar months (.claude/skills/ml-experiment/SKILL.md, experiment 19).

manual_heuristic

manual_heuristic is a baseline forecaster that predicts each half-hour as an ensemble of the power observed at the same weekday and time of day in earlier weeks and years. Under its configuration the 13 ensemble members are the same time in each of the last 6 weeks and the same time 49 to 55 weeks earlier; a lag that would not yet have been observed at the forecast origin is absent. The forecaster consumes no weather (packages/baseline_forecasters/src/baseline_forecasters/manual_heuristic.py).

MW and MVA

A series is metered in MW (signed active power, which can be negative when the substation exports) or in MVA (apparent power, which is never negative). The unit is the units column of the metadata table. Eight of the 16 trial Primaries are metered only in MVA, so solar output behind such a Primary appears as demand in daylight. See the data-processing page and experiments 56 and 79.

N1

N1 is the single-stage XGBoost quantile model, one per series, that is trained on the ENS control member with recent power as inputs. It receives power lags measured from the forecast origin and weather columns from the ENS member, and its output quantiles are pooled across the 51 ENS members (experiment 13).

Noise unit

One noise unit is 1.4826 times the median absolute deviation of a substation's 24-hour residual step on odd-numbered months. A step of 4.0 noise units is therefore four times the usual size (experiment 66).

NWP

NWP is numerical weather prediction: a physical weather model run forward from the current state of the atmosphere. ENS is the NWP product that the live forecast consumes. Other NWP products in the experiments include the Met Office UKV and NOAA's GEFS.

PF14

PF14 is the benchmark end rule of the switching experiments, written after seeing results. It ends each alarm interval at the first opposite step that is at least half the onset step (and at least 1.5 noise units) within 14 days, takes the largest step back within one window after that, and keeps the tracked end when no step qualifies (experiment 66, experiment 69).

Pooled mixture

A pooled mixture applies the XGBoost quantile model to each of the 51 ENS members and pools the resulting quantiles as equal-weight points. The forecast quantiles are the weighted quantiles of the pooled values (experiment 13, experiment 2).

Pre-registration, decision rule, and verdict words

An experiment pre-registers its hypothesis, prediction, and decision rule in a result.md that is committed with status planned before any code runs. The decision rule states which interval and threshold make each verdict, so the verdict follows from the numbers and not from the author's reading. The verdicts are supported, partly supported, small gain (the interval excludes zero in the predicted direction but misses the threshold), not supported, refuted, inconclusive, invalid, and failed. See How an experiment is recorded and .claude/skills/ml-experiment/SKILL.md. A write-up marks a verdict that its decision rule does not cover as not pre-registered, as experiment 13 does.

Primary substation

A Primary substation steps voltage down from 33 kV or 66 kV to 11 kV. NGED operates 1,161 Primary substations (NGED's network and its data), and 16 of the 32 trial series are Primaries. A Primary is fed from a bulk supply point, which is a higher-voltage substation (see Bulk supply point and grid supply point).

Quantile score and pinball loss

The quantile score is twice the probability-mass-weighted mean of the pinball losses over the forecast quantile levels, in points of capacity. The pinball loss of a quantile at level τ is τ times the shortfall of the forecast below the observation, or (1 − τ) times the excess of the forecast above it. Each level's weight is the probability mass between the mid-points to its neighbouring levels, so the score is not a plain mean over the levels. Experiments 33, 34, and 48 use nine levels (0.05, 0.10, 0.25, 0.40, 0.50, 0.60, 0.75, 0.90, and 0.95), and experiment 87 and later use 11 levels (those nine plus 0.01 and 0.99) (pinball_quantile_score in ml-experiments/00087-bg2-best-guess-assembled-with-drop-one-ablations/e00087_common.py). Scores from experiments with different levels, row sets, or series cannot be compared.

Recall (MW-weighted)

MW-weighted recall is the share of the moved megawatts that sit in found transfers. A detector finds a transfer when it raises an alarm starting within 2 hours of the transfer's start and places the end within the larger of 6 hours and 10% of the transfer's duration (experiment 66, experiment 101).

Refit and rolling refit

A refit retrains the XGBoost model on newer data at a scheduled interval, such as weekly or monthly. A rolling refit (P-roll) retrains monthly on a rolling 12-month window with 150 boosting rounds (experiment 34). Weekly refits are the cadence of BG2.

Research default

A research default is the fixed forecast of one target family, against which every change experiment is measured. Each version has a name made of the family, the words "research default", and a number, such as "Primary demand research default 1" (the GAM stack A+H+S). An adopted change makes the next version. A research default is not what production serves: production serves xgboost_baseline, and "champion" and "promote" are production words (rule, log).

Residual

In the switching experiments, the residual is the measured power minus the forecast of an XGBoost demand model trained on ERA5 weather that uses no past power. The detectors look for steps in the residual (experiment 66).

RO-NC

RO-NC is the refit-offset neighbour-count detector. RO-NC is PF14 with two changes. The step is taken from whichever of two residual models, refitted half a month apart, did not refit within 24 hours. The candidates are scored by a logistic regression that includes the count of neighbours stepping the same way as the alarming substation (experiment 82, experiment 101). X is the refit-offset detector alone. The experiment scripts under ml-experiments/ still name RO-NC XL in code, for example in the arm names lagmw_xl and mask_xl of experiment 86, so a search of the code for XL finds the RO-NC detector.

Season-year

A season-year is a 12-month period, and its start month depends on the series of work. In the solar-disaggregation experiments it runs from September to August, such as 2019/20 (experiment 39). In the differentiable-physics series it runs from July to June (FIRST_SEASON_MONTH in src/studies/dp_calendar.py).

Skill

Skill is 100 times (1 minus the best guess's quantile score divided by manual_heuristic's quantile score), pooled over the series being compared. A positive skill means the best guess beats manual_heuristic (experiment 56).

Spread factor

The spread factor scales each forecast quantile's distance from the median. A quantile q becomes the median plus the factor times (q minus the median), so a factor of 1.15 widens the band by 15% and a factor below 1 narrows it (experiment 19). For solar and wind farms the factor is fitted on earlier cases to bring the 5% to 95% coverage near its target (experiment 33).

Stack

The stack is N1 with the 14-day correction and a spread factor of 1.15, and the experiments differ on the half-life. The stack of experiment 19 weights older training rows with a half-life of 0.5 years. The stacks of experiments 33, 34, and 48 use a half-life of 2 years, and are trained once. The experiment 87 scripts use the same 2-year weighting for its stack, which its write-up does not state, and there the stack is the frozen forecast plus the 14-day correction.

Stages 0, 1a, and 2

Stage 1a is an XGBoost quantile model per series, trained on analysis weather (ERA5 and CAMS), with no power lags and no lead time. Stage 0 maps ENS weather toward the weather that stage 1a trained on (a quantile mapping in experiments 16 and 20). Stage 2 is a calibrator, a second XGBoost model that corrects the stage 1a quantiles and can use lagged power (staged probabilistic forecast).

Tail coverage

Tail coverage is the coverage of a quantile in the tails: the share of observed values below the 0.01 and 0.05 quantiles or above the 0.95 and 0.99 quantiles. A correct forecast has a tail coverage equal to the quantile's level on the lower tail, and equal to one minus the level on the upper tail. Experiment 87 reports it at those four levels beside the pinball loss there (experiment 87).

xgboost_baseline

xgboost_baseline is the production-style forecast: the stored forecast of the XGBoost model that the project's production recipe produced. The experiments read it from the power_forecasts Delta table for the fold mid_2025_to_mid_2026. Experiment 87 did not confirm whether the local Dagster cross-validation assets or S3 wrote that table, so none of the experiments we read confirms that the stored forecast matches the deployed one (experiment 13, experiment 87).