Skip to content

LSC detectors: experiments

This page lists every experiment tried in the theme, newest first. An experiment that belongs mainly to another theme but bears on this one is marked "also relevant".

Experiment Hypothesis Verdict Production status Take-home message Relevance
00369 d8-cross-site-step-rate-against-stack-gap The best-guess stack trails BG2 most at the Primaries that show the most generator-like steps, so D8's gap is part of a pattern across Primaries and not only a property of D8's residual. If the hypothesis holds, a step detector's rate is a cheap flag for the Primaries where the stack's uncertainty bands need widening. inconclusive not-for-production The test was inconclusive. A simple step counter at a fixed 1.5 MW does not flag the Primaries where the best-guess forecast trails the production-style forecast, but a counter scaled to each site's capacity does correlate with the gap (post hoc, 14 sites). Shuffled copies of the readings show as many steps as the real ones either way, so the counter mostly measures how volatile demand is, and a step-based explanation needs a detector that survives its placebo. also relevant
00361 d8-step-catalogue-detector-injection-and-gam-stack D8 (Marsh Lane) is a Primary substation whose demand carries on/off steps of about 4 MW and multi-day drops of about 2.7 MW that look like a dispatchable generator. A plain, as-of step detector finds such components, and a GAM stack fitted on a training target with the detected steps removed scores better at D8 than the same stack fitted on the raw target, with the removed component returning through the own-residual band as the chance that the generator is running. not supported not-for-production A plain step detector finds injected 3 MW and 4 MW generator-like spells most of the time and 2 MW spells about half the time. Removing the steps it finds from D8's training target does not improve D8's forecast, so this test gives no support for building a particle filter that separates the generator. A detector that rejects ordinary demand swings, and a longer record of the generator's own output, would be the next things to try. also relevant
00332 lsc-curtailment-cost-of-label-free-mask Treating as missing the readings that a label-free load shift detector flags (arm A of experiment 327) lowers curtailment cost during and after load shifts, against no mask (arm C), without raising it on ordinary half-hours. not supported not-for-production Masking the load shifts that a label-free detector finds lowers curtailment cost by about a third when the forecast is judged against the normal running arrangement. Judged against the power the electricity network actually carried, which is what a curtailment instruction responds to, the mask changes cost by -3.0% with an interval from -24% to +30%, and it costs 1.3% more on ordinary half-hours. Adding the true moved megawatts to the true spans lowered cost during a shift, but adding them to the label-free mask did not, so this result cannot say what a live service needs. primary
00331 primary-demand-recency-weights-on-gam-and-kalman When the additive (GAM) model with a Kalman filter on its daily residual is refitted monthly, giving older training rows exponentially less weight forecasts the next month better than equal weights on the full history, and no worse than training on the last 24 months only. not supported not-for-production Training the monthly refit mostly on recent data improves the next month's forecast by about 0.025 points of capacity, but a plain 24-month window gets the same gain, so smooth recency weights add nothing and no weights should go into the research default. Half of the gain comes from one Primary substation whose demand shifted in 2023. Giving extra weight to rows from the same time of year in earlier years gave a further 0.012 points and is worth its own test. This is a lab result on past weather with a Kalman filter that already adapts to level changes. also relevant
00328 lsc-regime-changes-detect-then-model-part-1 A permanent change in the configuration of an electricity network (a large new generator, a new factory) can be found offline from a Primary's own history, and a forecast that keeps the effects of the old behaviour fitted on the full history and adds new effects that exist only from the change onward scores better after the change than the same forecast refitted on a recent window only. not supported not-for-production Adding effects for a detected permanent change does not forecast better than refitting the additive model on the last 24 months, in a lab setting where the model is given past weather. The detectors find a 10% step of a Primary's load within 60 days only 26% of the time at an acceptable false-alarm rate, so there is little time after the alarm for the extra effects to help. On this base, handling a regime change comes down to how often the model is refitted. The rolling-GAM detector might still help when building substation cards, which this experiment did not test. primary
00327 lsc-label-free-detect-mask-train-pipeline A forecast of the normal running arrangement (NRA) can be trained and corrected on power with the load shifts set to missing, where a label-free detector finds the load shifts. The detector reads only how unusual the observed power is inside the predictive bands of a demand model that uses no lagged power, and no NGED switching label enters any threshold, mask, or training row. partly supported candidate A forecast of the normal running arrangement recovers faster after a load shift when the readings that a label-free detector flags are treated as missing: during and after injected shifts the 95% pinball loss falls from 1.79 to 1.04 points of capacity. On ordinary days the masked forecast is no worse, and slightly better. Without one site (D11) the gain shrinks to 0.30 points, and retraining the demand model on masked power adds nothing beyond masking the filter. primary
00315 lsc-neighbour-residual-filter A real load shift moves load between neighbouring Primary substations, so the 24-hour mean residuals at the two substations have opposite signs, while weather and forecast error give the same sign at neighbours. Keeping a 24-hour mean residual alarm only when a neighbour does not contradict it therefore cuts the alarms per matched shift at equal recall. small gain not-for-production Checking whether neighbouring substations' residuals contradict an alarm removes about a third of the 24-hour residual detector's false alarms and loses none of the real load shifts it found. The gain in alarms per found shift is about a quarter, which is a real but modest improvement, and the two substations that raise 17% to 20% of its false alarms (D8 and D9) keep the same number. The filter is usable for event labels for NGED, but it does not change the detector's accuracy much. primary
00312 lsc-how-good-must-a-detector-be-against-the-band-head A load shift detector that is far from perfect can still beat the best forecast that uses no detector, so a detector need not be near-perfect to be worth building. The one detector-based arm in experiment 297 that beat that forecast was the one that subtracts the true megawatts from the readings during a shift and adds them back to the forecast. This experiment degrades that arm one axis at a time to find where it stops beating the no-detector forecast. It also asks whether the surprise of recent readings against GAM_ONLY's residual bands (band position), or perfect knowledge of a shift, added as inputs to the no-detector quantile head, improves the head. This is question 3 of the LSC decision program, redefined by the Discuss ruling of 2026-10-23. not supported not-for-production A load shift detector does not need to be near-perfect to improve on the best forecast that uses no detector: with the true megawatts added back, finding half the shifts, learning of each up to 3 days late, or misjudging the megawatts by half still lowers curtailment cost against that forecast. The detector tested earlier (RO-NC) finds only a third of the shifts, below the break-even of one half (measured with every other property perfect). The surprise of recent readings against the forecast's bands (band position) found more, 37% of shifts on even months, but still under one half and with about 90% of its alarms false, so the next step is a detector that finds more shifts. primary
00309 lsc-two-forecast-gap-choosing-without-truth NGED sees two forecasts and not the true switching state. A forecast with no lagged power (GAM_ONLY) forecasts the normal running arrangement, and a forecast with lags (K0) forecasts what will flow while an abnormal arrangement lasts. A rule that reads only the gap between the two forecasts, how long it has lasted, and a neighbour check can choose between them nearly as well as knowing the truth. This experiment is part 2 of the brief briefs/sw_lsc_two_forecasts_divergence_and_selection_brief.md, and it builds on experiment 308. not supported not-for-production NGED cannot pick between the two forecasts from the gap alone. A rule on the gap, or on the 24-hour mean of measured power minus the no-lag forecast, did no better than always using the no- lag forecast in the injected worlds, and worse than always using the forecast with lags in the real record. An oracle that knows the true switching state gained little, except in the 72 hours after a real shift ended, so the most promising signal to test next is a flag for the end of a shift. The gap is a filtered copy of the measured-power residual, so it adds no information that the measured power lacks. primary
00308 lsc-two-forecast-gap-as-a-detector The gap between the forecast with lags (K0, the Kalman filter on recent power) and the forecast without lags (GAM_ONLY, which forecasts the normal running arrangement) at a forecast origin already works as a load shift detector. NGED cannot see the true switching state, so this gap is the only signal it has. This is part 1 of the brief briefs/sw_lsc_two_forecasts_divergence_and_selection_brief.md. supported not-for-production The gap between the two forecasts flagged 11 of 35 real load shifts while they were still on, about as many as the learned score (10) when both thresholds are set to the same false alarm rate on odd months. The median alarm came 41 hours after the onset. On the held-out even months the gap raised about twice the learned score's false alarms (1.21 against 0.55 per Primary-year). A 24-hour mean of recent forecast error flagged 20 of 35. Experiment 309 tests whether the gap can choose between the two forecasts. primary
00302 lsc-learned-score-without-nged-labels Experiment 227's carried alarm source (the re-ranker of experiment 195 at a budget of 20 unexplained odd-month candidates, "LR_b20") uses NGED labels twice: its training negatives drop every logged or labelled span, every D8 drop, and the 17 block days, and its threshold counts "unexplained" candidates, which means no logged closure within 24 hours. A re-ranker trained on every real candidate as a negative, and thresholded by a rule that reads no label, still matches about as many of the 35 logged load shifts lasting over 1 day at about the same number of alarms per match, with ordinary-day harm inside the limit. not supported not-for-production A learned load-shift alarm trained without NGED labels matched 14 of the 35 logged load shifts, against 20 to 21 with labels, so the pre-registered test failed. The whole loss sits (post hoc) in load shifts that start in the months the score trained on, because every real candidate there, real load shifts included, was taught as a negative. On the 20 load shifts in months the score never saw, the label-free score found 13 to 14, against 13 for the labelled one, a difference too small to resolve with 20 load shifts. The next test should score a label-free score only on months it never trained on, with more than 20 load shifts. primary
00298 lsc-long-deep-detector-and-refit-cleaning A trivial detector on the daily mean residual of the lagless convex additive model (GAM_ONLY) finds load shifts that last days to weeks and cover at least 10% of a Primary substation's load, which the existing hour-scale detectors miss, and excluding the days it flags from the monthly refit stops the forecast learning those shifts as the normal pattern. not supported not-for-production A simple detector on the daily mean error of the forecast that uses no recent power finds about as many of the long, deep real load shifts as the learned score LR_b20 (10 to 12 of 19 for four of the six variants). The cumulative-sum variant B also finds 27 of the 29 multi-day drops at D8, which are probably a gas engine and not load shifts; variant C finds 11. Leaving the days a detector flags out of the monthly refit cuts the share of a 30-day transfer that the forecast learns as normal from about 19% to about 10% to 13%. Excluding the true shift days instead cuts the share to 2.8%. The detectors recover less because each needs 1 to 3 days to fire and misses about 40% of long injected transfers and over half of the real ones. Tell NGED that transfers of 14 days or more are partly learned as normal, and try a detector that fires on the first day next. primary
00297 lsc-need-a-detector-no-detector-arms-against-the-mask A forecast that never learns which readings are load shifts can match a forecast that uses a detector, because its bands and its recent-power correction can be made to tell a load shift from ordinary variation by themselves. This is question 2 of the LSC decision program. not supported not-for-production A forecast with no detector that recalibrates its bands and reads how far the recent-power correction has moved scores better than the RO-NC detector near load shifts, so with RO-NC a detector is not shown to be needed. Perfect knowledge with the true megawatts added back still lowers curtailment cost by 6.5% (3.9 to 9.2) against that forecast, so the next step is to run the better LSC detector (LR_b20) on the same simulated shifts and judge it against a forecast that has the recalibrated bands. primary
00296 lsc-benefit-by-event-class-long-deep-versus-small-shifts Load shifts of at least 2 days and at least 10% of a Primary substation's load carry most of the benefit of knowing every load shift exactly, and shifts that are shorter than 12 hours or under 10% of load carry little. This is the question behind the "long-and-deep" detector of the LSC decision program. supported not-for-production A detector that finds only load shifts of at least 2 days and at least 10% of a substation's load would deliver about 96% of the upper-tail forecast benefit and about 90% of the curtailment-cost benefit of knowing every shift, if it were perfect. Detecting shifts from 6 hours to 2 days would add 3% to 8% more, and detecting shifts down to 5% of load would add 1% to 2%. The next step is to weight these shares by how often a real long-and-deep detector finds each class, which waits for Part 1 of the long-deep detector experiment. primary
00295 regime-segmentation-part-b-persistent-regimes-without-labels A segmentation of a Primary's whole history with hindsight, using only changes in the distribution of the residual of a lagless convex additive model (GAM), finds regime changes without labels. A regime is the whole period, without gaps, during which one configuration holds. For D8's gas engine, the regime is the whole period in which the engine is installed and included in the meter, including the spells when the engine is off. Whether the engine is running, and whether a load shift is in force, are states inside a regime. A boundary is a regime change when the distribution does not return to its earlier form and no neighbouring Primary shows the opposite change, and a state change otherwise. not supported not-for-production Looking only at the residual of a forecast that uses no recent power, a segmentation finds a lasting change of 25% of a Primary's load and dates it with a median error of 0 days, but it misses about half of 10% changes and cannot reliably tell a 14 to 60 day load shift from a lasting change. At D8 it finds the 2023-08-15 break exactly, but only at penalties that also find 2.5 or more regime changes per Primary-year at the other Primaries. An offset for the latest regime lowers the forecast error after a step by 2.2 points of capacity, but a plain 60-day mean residual does as well, so the segmentation is not worth adding for that purpose. primary
00294 regime-aware-model-at-d8-engine-state-term D8's metered power excludes a gas engine's output (experiment 194) while the engine, which runs in spells (experiment 291), takes net load below what the weather and calendar predict. A single model trained across those spells has no way to know which half-hours the engine ran, so its forecast and its bands carry the engine as noise. A model that keeps the calendar, weather, and solar shapes shared across the whole history but adds one regime-specific term, an offset per half-hour the engine runs (non-negative, taking power off net load), forecasts D8 better than the single model. The offset is estimated from the data, and its size is not assumed. not supported not-for-production Telling the forecast when D8's gas engine is running would make it much better when the state is read at the half-hour being forecast, but the detector builds that state from the very reading being forecast. With only the state of the last settled day, the engine term made the forecast 10% worse; trained on that stale state, it gained only 3%, no better than widening the bands from past residuals. A forecast of whether the engine runs, or NGED's own record of its running hours, would be the data to test next. also relevant
00291 d8-drops-engine-spells-load-shift D8's 29 multi-day drops (experiment 159) are spells in which a gas engine of up to three units runs, and D8's own metered power no longer includes the engine's output (experiment 194). If so, the engine detector of experiment 196 flags the drops' half-hours far more often than matched windows elsewhere on D8, the drops' depths cluster at multiples of one engine unit, and most of D8's load-shift alarms that fall inside drops are engine edges. partly supported not-for-production D8's multi-day drops coincide with the engine detector's running states, which is consistent with the gas engine running: the detector flags 27 of the 28 drops that began after the engine left D8's reading, against about 1 in 5 comparable stretches of D8, and it flags almost nothing at three other Primaries on the same dates. This cannot be called proved, because the drops and the detector both read D8's residual, and the depths of the drops do not fall at whole multiples of the engine's 1.97 MW unit. D8's drops should be flagged as a probable generator regime and reported apart from the load-shift scoring until NGED confirms the engine's running hours, and the next step is a forecast model for D8 that is told when the engine is running. primary
00290 lsc-long-shift-cut-date-robustness The 19% of a 30-day transfer that experiment 274 found learned as normal is stable across fit-cut dates, so that the share learned lies within 15% to 25% at every cut date. not supported not-for-production The forecast with no recent power learns about a fifth of a 30-day load transfer as normal, but the share depends on the date: it ranges from 9% to 29% across 12 end dates, so experiment 274's 2.49-point bias is a typical value, not a fixed one. Quote the share as a range of about 9% to 29%. The cause of the spread is not located. primary
00283 lsc-perfect-knowledge-value-to-forecast-and-curtailment Knowing every load shift exactly (its true start and end) lowers the error of the forecast of the normal running arrangement (NRA) in the 48 hours after a shift, and lowers the curtailment cost of the forecast of observed power in the days around a shift, while leaving ordinary rows unchanged. This is question 1 of the LSC decision program. partly supported not-for-production Perfect knowledge of load shifts lowers the forecast's error most in the 48 hours after a shift ends (23% lower upper-tail score, 95% interval 9% to 39%) and by under 1% over a whole year, because shifts are rare. Curtailment cost against observed power falls by 8% (6% to 10%) near a shift only when the known shift's megawatts are added back to the forecast, and does not fall when recent readings are merely set aside. The next step is to ask how good a detector must be to keep that gain, using the megawatts-added-back arm as the target. primary
00277 lsc-curtailment-metric-on-existing-forecasts The curtailment-cost metric of experiment 268 (studies.node_curtailment, sorted quantiles) ranks the four existing forecasts as the other metrics do, and can resolve the differences between them well enough to judge the load-shift questions of the decision program. supported not-for-production Over a year of ordinary days, the curtailment metric ranks the four existing forecasts the way the other scores do, and it can tell the GAM stack from BG2 (BG2 costs GBP 7.35 million more on the six Primaries at the 0.5 limit, a figure that ranks forecasts and is not money saved). Inside the windows around the 7 logged load transfers, the GAM stack cannot be separated from BG2, because those windows hold only 926 to 2,923 scored half-hours. Questions about load shifts need injected worlds with many more shifts, not the real record. also relevant
00274 lsc-long-arrangement-audit-gam-refit A forecast with no lagged power learns a long-lasting change of running arrangement as the normal pattern, because the monthly refit trains on whatever the meter recorded. The learned share grows with the duration of the arrangement, and the duration beyond which the forecast of the normal running arrangement (NRA) is wrong by more than a stated tolerance sets the limit that can be told to NGED. not supported not-for-production A forecast that uses no recent power still learns a load transfer as normal, and the forecast learns the transfer quickly: a transfer lasting only 7 days leaves the forecast 1.2 points of effective capacity too high for the next 2 days, and a transfer lasting 30 days leaves it 2.5 points too high (about a fifth of the transfer). No tested duration, down to 7 days, was short enough to avoid this. Masking known transfers out of training is the obvious remedy, but this experiment did not test it, and the next experiment should test it together with transfers of 1 to 6 days. primary
00271 lsc-load-shifts-net-out-at-bulk-supply-points A load shift between two Primary substations under the same bulk supply point (BSP) leaves the power flow at the BSP unchanged, so it barely changes the curtailment cost at the BSP, and only a load shift that crosses from one BSP to the other changes the cost noticeably. The step 7 program brief for the load-shift (LSC) decision program asks this in order to know whether the money question can be asked at BSP level. partly supported not-for-production A load shift between two Primary substations under the same bulk supply point changes the curtailment cost at that bulk supply point by 0.2% at a random time and 0.7% just before days that would be curtailed (interval up to 1.08%), because the two Primaries' forecast errors partly cancel. A load shift across the boundary between the two bulk supply points changes it by 1.4% at a random time and 5.5% just before curtailed days. Only 4 of the 54 hand-filtered real events that involve two Primaries cross the boundary, so the curtailment metric at bulk supply points cannot say whether detecting load shifts is worth money, and that question has to be asked at Primary substations. primary
00268 lsc-curtailment-metric-v2-member-wise-ens A member-wise input path added to studies.node_curtailment (ensemble members of the node's demand and of each farm's output, paired by member, reduced to the quantiles the rule reads) gives the same avoidable cost as the quantile path when the members are drawn from the same quantile function, and scores nodes that experiment 255 could not (Primaries that connect a farm, and the bulk supply points D13 and D17 with member-wise inputs). partly supported not-for-production The curtailment metric can now take ensemble members for a substation's demand and for each solar farm, and on experiment 255's rows it reproduces the earlier answer. A third of the stored solar-farm forecasts list their quantiles out of order. Sorting them moves the cost of some forecasts by up to 3.7% and leaves every comparison between forecasts with the same sign, but it swaps which of two near-equal forecasts is cheapest. Forecasts that are already quantile sets can be scored now. Forecasts driven by ensemble members need member frames that we did not find in the experiment folders we searched. also relevant
00258 lsc-mask-out-of-sample-all-primaries-whole-history Experiment 227 found that LR_b20 (the learned alarm score of experiment 195, at the threshold that leaves 20 unexplained odd-month candidates) with a mask recovers 83.5% of the logged-oracle gain in the 72 hours after a logged load shift and raises the ordinary-day score by -0.007 points (-0.039 to +0.014). That rests on 11 load shifts at 6 Primary substations, 27 months of cached ensemble forecasts, a threshold chosen on the scored rows, and months that were the re-ranker's training negatives. On all 15 Primary series with a residual from the frozen convex model of experiment 130 (arm B), over the whole residual history of about 4.5 years, and scored only on rows the learned score was not trained on, the LR_b20 mask keeps at least half of that gain and keeps its ordinary-day harm inside +/-0.05 points. inconclusive not-for-production On rows it was never trained on, the carried load shift mask recovers about half of the best-case gain after a load shift (47%, with a wide range of 18% to 85%) and changes ordinary days by less than 0.05 points. Over every row of 4.5 years it scores slightly worse than no mask, because a few long alarms over logged closures add more excess score than the mask removes elsewhere. The check against simulated load shifts failed, so the result is inconclusive, and this page gives no support for porting the mask. primary
00254 lsc-alarm-precision-against-full-log-with-chance-base-rate Experiment 195's loose rule (a logged closure within 24 hours "explains" an alarm) overcounts real alarms, because a random window is explained about 45% of the time (experiment 159, which counts any time inside a closure or within 24 hours of it), and the strict rule (experiment 195's step-and- end match) undercounts them, because the log's times are approximate. Once the share expected by chance is removed, a large share of the alarms from LR_b20, the learned alarm source, that are not strict matches still coincide with a logged closure. supported not-for-production We estimate that about 45% of the alarms from the learned load shift screen at its strictest threshold (LR_b20) are real load shifts, with 2.7 false alarms for each logged load shift it finds. The looser sources, LR_b80 and RO_b80, which keep 80 candidate alarms, are real about 28% and 25% of the time. An event table built from LR_b20 would carry an estimated precision of about 45%. primary
00253 lsc-end-time-pair-rule When a load shift moves demand between two metered Primary substations, the end of the shift is estimated better from the pair than from either substation alone, because the true end restores the pair's summed demand and an unrelated step on one substation does not. Using the pair removes most of the disagreement between the end times that the two substations' cards show (a real shift between D5 and D16 on 14 January 2026 is shown as ending after 9.2 days on one card and 2.0 days on the other). inconclusive not-for-production Reading the two substations together makes their end times agree when an unrelated step follows the true end: the median gap falls from 8.5 to 2.5 hours and the share of moved MW with a correct end rises by 0.04 (from 0.593 to 0.633). On ordinary transfers the same rule falls by about 0.02 (from 0.788 to 0.770), so the experiment cannot say the pair rule is safe to port. The pair rule does not change the end times of the real 14 January 2026 shift between substations D5 and D16, because D16 shows no demand step large enough to be the end, and none of D5's 13 candidate steps is matched by an opposite step on D16. primary
00249 lsc-self-training-on-consistent-events The learned load-shift score of experiment 195 is trained only on injected transfers. If it is retrained on injected transfers plus the real events that pass a label-free consistency rule (balanced opposite steps at a metered neighbour, a high round 1 score, and a clean return step), it finds more of the 35 real transfers lasting over 1 day than the round 1 score, at the same 80 unexplained odd-month alarms, because the pseudo-positives show it what real events look like. refuted not-for-production Retraining the learned load-shift score on its own consistent real events found no extra real transfers: the score still finds 24 of 35. Only 38 to 47 real events per fold pass the consistency rule, against about 2,000 injected transfers per fold, so the extra rows probably could not move the score. Self-training may need many more consistent events than 4.5 years of 16 Primary substations provide. primary
00245 lsc-false-steps-meter-regime-audit The false steps that failed experiment 207's gate at D10 and D11 are partly real load moved between connected Primaries: they coincide with a balanced, opposite step at a metered neighbour or with an alarm of the load-shift detectors, more often than steps drawn at random at the same Primary. not supported not-for-production The jumps in fitted solar capacity that made experiment 207's test fail are not load moved between connected Primary substations: none coincides with an equal and opposite step in a neighbouring Primary's forecast error, and the load-shift alarms fire as often in random months as at the jumps. About a third of the jumps counted against experiment 207 (15 of 41) are the net change between one August and the next April, which cannot be dated to a month. Three jumps sit beside readings that the cleaning rule flags as zero. In this sample the load-shift detectors do not explain the jumps. primary
00227 lsc-fewer-false-alarms-and-softer-use-part-2 Experiment 208 found that no real alarm source stays inside the ordinary-day harm limit of 0.05 points, because each raises 104 to 242 alarms for 15 to 20 matched logged load shifts. (a) A source at a higher threshold, or a union of the pair alarm and the learned score that keeps the learned score only where the pair alarm also fires or its score is high, matches enough load shifts with few alarms per match. (b) A use of the alarm that keeps some recent power (soft down-weighting, a pair-sum correction, or a hedge between masked and unmasked forecasts) costs less per false alarm than a mask and keeps most of the gain after a load shift. partly supported candidate Keeping only the learned score's most confident alarms gives a mask that finds 21 of 35 real load shifts with 5 alarms per match, recovers most of the forecast gain after a load shift, and does no measurable harm on ordinary days. A gentler use of the alarm is not needed at that setting. The result rests on 11 load shifts after which the gain is measured, so the next step is to confirm it on more load shifts before porting it. primary
00226 lsc-why-learned-score-mask-lost-part-1 Experiment 203's learned-score mask (7.31 points of effective capacity on the 72 hours after the 7 logged load shifts, against 6.32 for the pair-alarm mask) loses because the learned alarm is known 2 to 4 days after the step, so its mask starts late on long load shifts. If that is the cause, a mask that takes the pair alarm's onset where the pair alarm fires, and the learned score's coverage elsewhere, keeps the learned score's extra matches without the loss. not supported not-for-production The learned load-shift score finds more real load shifts than the pair alarm, but the extra ones it finds do not improve the forecast and do the harm, so merging the two alarms does not give a mask that is both as good after load shifts and harmless on ordinary days. The alarms that both sources raise are harmless but too few to help. The next step is fewer false alarms per matched load shift, not more matches. primary
00219 load-transfer-census-capture-recapture Three detectors that read the same demand-model residual find overlapping but not identical sets of large load transfers. Capture-recapture on those sets, stratified by event size, estimates the number of large transfers and each detector's recall without any switching log. refuted not-for-production We cannot count large load transfers, or measure how many each detector misses, by comparing the detectors with each other. Across all large events the three detectors overlap too little for the estimate to mean anything, and on injected events with a known count the estimate falls 23% to 59% short. Only for the biggest events (40% of a substation's 99th percentile of demand or more) do the detectors overlap, and there the 7 events seen are a lower bound, not a count. primary
00217 switching-label-free-thresholds-in-noise-units At a fixed threshold in noise units, the switching detectors raise alarms at a rate that is similar across Primary substations, so a new Primary needs no tuning. Substations D8 and D9 are the exceptions, because their residuals have heavy tails. partly supported not-for-production A switching detector raises about the same number of alarms on every Primary substation only when its threshold, measured in units of the residual's noise, is low: at 2.5 noise units, 13 of 13 ordinary Primaries are within a factor of 2 of the median alarm rate, and at 4.35 only 9 of 13 are. At 4.35 noise units D8 and D9 are within a factor of 3 of the median; D9 is outside it only for the pair alarm and the detector whose threshold was tuned on switching labels. Flexpectation version 2 needs an automatic per-Primary rule for the threshold, and the share of days on which the demand model is badly off is the best candidate statistic for RO-NC. primary
00212 switching-detector-masks-in-gam-training A convex additive model of substation demand (GAM) is trained on readings that include switching transfers, which move load between substations for hours or days. Every earlier GAM in this project trained with the logged and hand-labelled transfers set missing, so nobody has measured what the masking is worth. If masking the detector's own alarms during training does about as well as masking the hand labels, a live service with no labels can train as well as the project does now. inconclusive not-for-production Masking switching transfers when the forecast model is trained barely matters: with no mask the score is only 0.002 points worse on clean rows and 0.003 worse after a logged transfer, and 476 simulated transfers added to the training readings worsen it by just 0.009 points. Training with the detector's alarms masked scores 0.007 points worse than with hand labels masked on clean rows (interval -0.007 to +0.025) and 0.027 worse in winter, so the detector's effect in training is small on average but not resolved from zero. On this record the unmasked fit is already almost as good as the masked fits, so a detector mask has little to improve in training. primary
00208 switching-value-of-a-detector-by-phase-and-quality Knowing about a switching transfer lowers the forecast error mainly in the 48 hours after the transfer ends and in the days before an alarm would normally arrive, and the benefit shrinks roughly in proportion to the share of transfers missed and to the delay of the alarm. A detector of the quality of the refit-offset neighbour-count detector (RO-NC) recovers well under half of the perfect-knowledge benefit, so the quality it must reach to be worth building is higher than RO-NC's. not supported not-for-production Telling the forecast about a switching transfer lowers its error by about 1.5 points of capacity during the transfer and in the 48 hours after it ends, but by only about 0.005 points averaged over a year, because transfers are rare. A detector that finds about 4 transfers in 10, as RO-NC does, recovers about half of that gain, and none of the real alarm sources tested keeps its ordinary-day error inside the limit. Options for a next step are an alarm source with far fewer false alarms per matched transfer, or a use of the alarm that does not set recent power aside. primary
00203 switching-replay-learned-score-in-masked-forecast Experiment 195's learned score finds 22 to 24 of the 35 real transfers lasting over 1 day, against 19 for the refit-offset neighbour-count detector (RO-NC). If its alarms drive the gated mask of experiments 163 and 171 (readings set missing from the detector's step stamp until the transfer ends), the forecast scores better after real transfers than the pair-alarm mask does, and the mask still does no harm on ordinary days. The mask ignores recent power inside an alarm, so extra true alarms should help and extra false alarms should harm. partly supported not-for-production Masking the forecast with the alarms of experiment 195's learned score did not lower the error after real switching transfers by a reliable margin, and it did not meet the limit for no harm on ordinary days. The learned alarms arrive 2 to 4 days after a step, so they miss the start of the long transfers that the pair alarm catches. A candidate next step is a mask that takes the pair alarm where it fires and the learned alarm elsewhere. primary
00199 ps2b-engine-detector-v2-ramp-night-price Experiment 196's engine detector over-flags D8 after 2025-03 and raises false alarms at D5, D10, and D11 because it reads steps of any origin as engine units. Three facts about a gas engine are not used by that detector. (1) A gas engine's edges are single-half-hour jumps of a whole unit, unlike the gradual multi-hour edges of a switching transfer. (2) A gas engine can run at night, when solar panels cannot, so the evidence at night is free of solar noise. (3) A gas engine runs more often when the system price is high. Adding these three, one at a time and together, keeps the known-answer recall and removes the false alarms, except where the Embedded Capacity Register (ECR) lists a real engine. not supported not-for-production D8's over-flagging from March 2025 is not solar noise: the detector flags 29% to 36% of night half-hours there too, and neither the edge shape, night-only evidence, nor a price gate removes it. At D5 and D10 the false alarms of experiment 196 are mostly daytime (night rows alone pass the bar at five of the six other Primaries, D11 being the exception), and the days flagged at D5, D10, and D11 do not follow the spark spread, so they do not look like price-following engines. The next step is to find what causes the step changes in D8's night load after 2025-03, not to refine the engine detector. primary
00198 d8-summer-spikes-cooling-load-and-residual-test The summer spikes a colleague saw in D8's power (time series 26, Marsh Lane) are air-conditioning load: they rise smoothly with temperature, peak in the afternoon of the hottest days, and repeat every year. The best-guess forecast has a heating hinge but no cooling term, so its summer residual (metered minus forecast) rises with temperature, and a cooling hinge on the ensemble mean temperature fitted on past residuals lowers its summer score. inconclusive not-for-production D8's afternoon power does not rise with temperature, and its large summer departures from expected power are mostly downward shortfalls of 1.5 MW or more, which grow from 18% of summer half-hours in 2022 to 52% in 2025, so the spikes are not air-conditioning load. A cooling term added to the best-guess forecast changed the summer score at the five decision Primaries by 0.0002 points (interval -0.010 to +0.015), but the 4 fit months held too few hot days and the known-answer control failed, so the experiment cannot rule a cooling term out. On afternoons of 25 degrees Celsius or more, metered power exceeds the forecast by 0.6 to 5.1 points on average at each of six Primaries, so a term fitted on the full multi-year history of past weather, pooled across Primaries, is the next test. also relevant
00196 ps2-quantised-engine-detector-on-d8-with-known-answer-gate The residual of D8 (metered minus expected power) contains an engine of about three units of about 2 MW each that starts and stops in spells of a few hours. A hidden Markov model whose state is the number of units running (0 to 3), read through the magnitude meter with no price input, finds the running half-hours at a low false-alarm rate. Following Hart (1992) and Kolter and Jaakkola (2012), it treats the reading as the expected load minus a whole number of units. The model does this where the step detectors built for load transfers (RO-NC, the block detector) find fewer than one running half-hour in five. not supported not-for-production A hidden Markov model of an engine with up to three units of about 1.75 MW finds the recorded engine output that we injected into D8: every half-hour with 2 or 3 units running and 83% to 85% of the half-hours with 1 unit, where the step detectors for load transfers find a quarter or less. The model also raises too many false alarms at three of the six other Primaries tested, and from March 2025, when 11 kV solar was connected, it flags 40% to 43% of D8 half-hours even where the left tail is 2%. Labels from March 2025 onward should not be used, and the 1-unit labels before that date are unvalidated; the noise model for the solar period has to be fixed first. primary
00195 switching-neural-plus-detector-features A learned score that reads the features the rule-based switching detectors already compute (the 24-hour step statistic of RO-NC, the opposite step at the metered neighbour of the pair alarm, and related quantities), trained only on injected transfers, finds more of the 35 real transfers lasting over 1 day than RO-NC alone at the same number of unexplained alarms, and more than a rule-based union of RO-NC and the pair alarm. partly supported candidate A learned score on the features that RO-NC and the pair alarm already compute finds 22 to 24 of the 35 real transfers over 1 day, against 18 or 19 for RO-NC, at the same number of unexplained alarms. A plain logistic regression finds 22 even without any look-ahead feature, so most of the gain is in the features, and the extra transfers are small ones (under 1 MW each). The next step is to test whether the extra alarms help the gated mask, which this experiment did not run. primary
00194 ps1-ps5-generator-visibility-d8-analogue-break-and-price-following-census D8's price-following drops (experiments 159, 182, 186, 191) are one metered gas engine, G2, whose output NGED adds back to D8's reading while G2's own reading arrives, and which shows in D8 as a negative residual once G2's reading stops arriving in late August 2023. supported not-for-production D8's metered power now falls well below the power a fitted model expects whenever one 6 MW gas engine runs, because NGED stopped adding the engine's output to D8's reading on 2023-08-15. The timing and size of the step, and its absence at three comparison Primaries, support this. The engine's own readings give a known answer for only 44 days (2023-07-03 to 2023-08-15), and D8's shortfall fades from March 2026 for a reason the data cannot name. NGED needs to say whether the engine's output is still added back before any forecasting model relies on the engine being visible in D8's reading. primary
00189 switching-neural-onset-end-block-detector A small neural network (under 50,000 weights) that reads a 7-day window of the convex-model residual of a Primary substation and its connected neighbours, and is trained only on injected transfers and on real stretches without a logged event, finds more of the 35 real transfers lasting over 1 day than the pair alarm of experiment 156 does, and finds as many as RO-NC (the refit-offset neighbour-count detector), at the same number of unexplained alarms, and places the onset to within 3 hours. It can do so only if the injected transfers resemble the real ones, so the injector is fitted to the real events and checked for realism before training. refuted not-for-production A small neural network trained only on injected transfers finds 7 of the 35 real transfers lasting over 1 day, against 18 for the existing rule-based detector, when both the start and the end must be right. It locates the start of 12 transfers (17 after longer training) to within 2 hours, so the learned start alarm is competitive and the end alarm is what fails. The next step is a learned start alarm paired with the rule-based end rule, or a longer input window that holds the end of multi-day transfers. primary
00188 switching-d10-audit-and-onset-location-in-look-back Part 1. Experiment 171 found that ignoring recent power while a gated pair alarm is active scores 0.030 points of effective capacity worse than no mask on rows outside logged transfers (95% interval -0.011 to +0.074), and that leaving out one substation, D10, moves the estimate to +0.002. If D10's gated alarms are real switching that NGED did not log, those rows are not ordinary days, and treating them as events leaves a no-harm interval inside +/-0.03. Part 2. The alarm for a transfer is known hours to days after the step, but the forecast runs every 6 hours, so at each run the readings since the step are in the look-back. A step-fitting search over those readings finds the onset more precisely than the alarm time, and masking from the found onset gives a smaller forecast error in the first 24 hours after the alarm than masking from the alarm time. partly supported not-for-production Once a switching alarm fires, masking recent power back to the alarm's own step stamp removes almost all the extra error of masking only from the alarm time, and searching the look-back for a more precise onset adds nothing. D10's extra error under the gated mask is not shown to be unlogged switching, since an independent step test confirms only 3 of its 13 unlogged alarm intervals (its recall was not measured), so showing that the gated mask does no harm on ordinary days still needs more months of forecasts. primary
00186 switching-d8-gas-peaker-spark-spread-and-triads A gas-fired generator (an embedded peaker or small combined-heat-and-power engine) below D8 runs when its margin is positive, and its output lowers D8's net power by a roughly constant block of 1.2 to 5.4 MW for hours to days. D8's multi-day drops (experiment 159) therefore look like flat on/off blocks, start and stop with the spark spread, and may concentrate in winter evening peaks when the plant chases triads. partly supported not-for-production The evidence fits a gas engine below D8 that runs when electricity is dear relative to gas, but does not prove it. Drop days have a positive spark spread 28 percentage points more often than matched ordinary days. The spread rises at the start of 20 of 28 drops and falls at the end of 18 of 28, and the public Capacity Market register lists a 6 MW gas engine 0.5 km from D8 with an agreement running to 2037-38. Four findings argue against a constant-output peaker: the drops are not flat blocks, their depth rises with site demand, the signal comes mostly from the system price, and Triad half-hours do not mark the plant. The next step is to ask NGED whether the engine was built and for its half-hourly output. primary
00182 switching-d8-disaggregated-farms-and-drops D8 (Marsh Lane) is a disaggregated Primary: the metadata says the output of two solar farms was added back to its reading, and that both farms' analogues are not working. When an analogue fails, D8's reading loses that farm's output, so D8's multi-day drops (experiment 159) coincide with a stuck, zero, or missing reading at the farms, and the drop depth matches the farms' lost output. inconclusive not-for-production We cannot tell from the farms' own readings whether D8's multi-day drops are the two disaggregated farms dropping out, because the readings for the farms are almost entirely absent from the power table and so look the same inside and outside the drops. D8's shortfall is larger in daylight than at night in 24 of 29 drops, which is consistent with lost solar output, but it is also large in the evening, so the daylight pattern does not settle it. The next step is to ask NGED for the farms' output and capacity, or to model the farms from weather and compare the modelled output with the drop depth. primary
00181 switching-block-detector-and-like-for-like-table The 17 unlabelled worst days that experiment 175 classed as sharp-edged blocks were missed by the refit-offset neighbour-count detector (RO-NC) and by the opposite-step pair alarm because most of the blocks are shorter than the 24-hour windows those detectors average over and their steps are small in noise units, not because the blocks are invisible. A detector that fits a rectangular block (a step up, a flat level, a step down) at lengths of 6 hours to 5 days finds most of them at the same number of unexplained alarms as RO-NC. refuted not-for-production A detector fitted to rectangular blocks finds none of the 17 unlabelled worst days. It was allowed the same 80 unexplained alarms in odd-numbered months as RO-NC, the existing detector. The days are mostly blocks lasting 12 hours or less and standing 1 to 4 noise units above the residual (one noise unit is the usual spread of the forecast residual), too close to its ordinary variation for an alarm that reads only the residual. The next step is to send NGED the candidate label table, so that NGED can say which of the 17 days were real switching. On the 35 labelled real transfers lasting over 1 day, RO-NC finds 18 on the convex-model residual and 12 on the XGBoost residual. Four of the 6 extra transfers sit at Primaries where the XGBoost panel has no readings, and on the 29 transfers that both residuals cover the counts are 14 and 12. primary
00175 dp-unlabelled-day-shapes At least half of the 37 unlabelled worst substation-days of experiment 174 are sharp-edged blocks in the forecast's error (a switching-like change in the power a substation draws), and in at least a third of those a substation interconnected with the first shows a step of opposite sign within 2 hours (a load transfer between the two). refuted not-for-production The forecast's worst unlabelled days are roughly half sharp-edged blocks (a switching-like change in the power a substation draws) and 40% smooth offsets (a change in level or behaviour that lasts the day). Interconnected neighbours do not show the opposite step more often than chance would give, and the existing switching detectors fired on none of the block days. The counts point to two separate problems, level changes and blocks that the interconnection table does not explain. The shape rules miss about 40% of injected blocks, so the block share is uncertain. also relevant
00171 switching-gated-mask-no-harm-pooled-months Experiment 166 found that ignoring recent power (a "mask") only while a pair alarm with a balance score of at least 0.7 is active (the "gated mask") scores 0.009 points of effective capacity worse than no mask on the real rows outside logged transfers, with a 95% interval of -0.068 to +0.081 from one year of rows. That interval was too wide to show no harm. Pooling every cached forecast run, 27 months instead of 12, shows whether the gated mask does no harm on ordinary days. inconclusive not-for-production Ignoring recent power while a gated switching alarm is active scores 0.030 points of effective capacity worse over 27 months of rows outside logged transfers (95% interval -0.011 to +0.074), against +0.009 in experiment 166's 12 months. That interval is too wide to show the harm is below 0.03, and the difference comes mostly from one substation, D10. Showing no harm needs more months of forecasts, or an explanation of why D10's gated alarms raise the error. primary
00166 switching-gated-mask-and-soft-mask-while-alarmed Experiment 165 found that setting recent power missing while a switching alarm is active lowers the error in the 72 hours after a logged transfer ends (13.69 to 6.31 points of effective capacity) but raises it by 0.102 points on rows outside logged transfers, because many alarms are not transfers. Two ways of using the alarm less bluntly keep the gain and remove the harm. (1) A gated mask: mask only when the alarm is a pair alarm of experiment 156 whose opposite steps balance at a metered neighbour with a balance score of at least 0.7, and never for a single-series refit-offset neighbour-count (RO-NC) alarm. (2) A soft mask: keep the readings in the Kalman filter but inflate their observation-noise variance by a factor that rises with the pair alarm's balance score, until the end rule fires. not supported not-for-production Setting recent power aside only when a switching alarm has a balanced opposite step at a metered neighbour (balance score 0.7 or more) keeps 99.6% of the gain after a logged transfer ends (error score 13.69 down to 6.34 points of effective capacity, 7 transfers) and adds only 0.009 points on other rows, against 0.102 for the earlier mask from either alarm. One year of data leaves the interval for the extra error too wide (-0.068 to +0.081) to meet the pre-registered limit of 0.03, so the verdict is not supported. Down-weighting recent power instead of dropping it does not help: the gain and the extra error rise together. primary
00165 switching-drop-recent-power-while-alarmed-all-rows A forecast built from a frozen generalised additive model (GAM) and a Kalman filter on its recent errors, with the filter's readings set missing from the moment EITHER the pair alarm of experiment 156 OR the refit-offset neighbour-count detector (RO-NC) is known until the end rule of experiments 147 and 148 fires, forecasts better than the same forecast with no mask while an event is running and in the 72 hours after it ends, and does not make the forecast worse on the real rows outside events, because the filter then restarts and the mask only removes readings that contain moved load. not supported not-for-production Setting recent power aside (a mask) while a switching alarm is active, where an alarm flags load moved between substations, helps only after a logged transfer ends: the mask lowers the forecast error score from 13.69 to 6.31 points of the substation's effective capacity in the 72 hours after (7 transfers). On the other rows the mask raises the score by 0.10 points, about 4% more error, which fails the pre-registered limit of +0.01 points on the upper end of the 95% interval. The next step is a mask gated on how reliable the alarm is, or used in winter only, that keeps reading recent power on rows outside transfers. primary
00163 switching-real-event-comparison-gam-stack-against-bg2 On the logged real load transfers at the six decision Primaries, a forecast built from a frozen generalised additive model (GAM), a Kalman filter on its recent errors, and a mask that sets the readings missing from the moment an alarm is known (the pair alarm of experiment 156, with the end rule of experiments 147 and 148) forecasts the days after a transfer ends better than best guess 2 (BG2), because BG2 takes lagged power as an input and so carries the transfer into its forecast, and the mask does not. The stack costs little on the real rows outside transfers. partly supported not-for-production After a real load transfer ends, a forecast that masks the power readings of the transfer period or ignores recent power has an error score about 40% lower than best guess 2 (an XGBoost forecast that uses recent power) and about 54% lower than the same forecast with no mask (6.32 against 10.09 and 13.69 points of effective capacity). This rests on 7 logged transfers, and two long winter transfers carry most of the gain. On ordinary days the mask scores 0.03 points worse than no mask, and best guess 2 and the stack are indistinguishable over the year, with the stack better in winter and worse in other months. The next step is more logged transfers, or a forecast that drops recent power while the pair alarm or the refit-offset neighbour-count detector (RO-NC) is active. primary
00162 switching-shaped-transfers-donor-demand-and-pv-shapes A load transfer moves houses, factories, and solar sites, not a constant number of megawatts, so the power it moves follows the donor's demand and solar shapes. Part 1: on the logged real transfers, a donor residual during the transfer is fitted better by a daily shape, -(a x the donor's demand term + b x its solar term) from the convex model (GAM), than by a constant offset, and the fit separates a from b only for transfers that last several days and contain both sunny and dull days. Part 2: an injection whose moved power follows the donor's solar term vanishes at night and is small at midday in winter, so the half-size-reversal end rule and the step threshold of the detectors misfire on it, and a constant-MW injection (and, less so, today's injection, which moves a share of the donor's net power) flatters the detectors. partly supported not-for-production If a transfer removed a daytime load that follows the donor's solar output, or removed solar output itself, the refit-offset neighbour-count detector (RO-NC) would find about half of them instead of 91%, and the live end rule would cover 22% of the true interval instead of 62%. The pair alarm loses far less once a step may start at first light. The 25 logged real transfers cannot say whether they move solar output, because a daily shape fits them no better than it fits quiet stretches. A realistic mix of houses and small solar sites is nearer the share-of-net-power injection of earlier experiments, which the detectors find as easily as a constant transfer. primary
00159 switching-d8-multi-day-drops-recurrence-and-report Descriptive, with no hypothesis test beyond the prediction below. D8 is a Primary substation whose power drops by 3 to 5 MW for days at a time while the convex demand model's forecast does not follow. The experiment lists every such drop, asks whether the drops recur on a pattern, and asks whether a connected metered neighbour steps up by a similar amount at the same time (a load transfer) or does not (a customer load change or an outage). partly supported not-for-production D8's multi-day drops are 29 episodes since 2022, nearly all since mid-2023, in which D8's power runs about 2.7 megawatts below the demand regression model's expectation for 2 to 19 days. The three connected metered neighbours step up with the drops at a rate not clearly above their rate at random times, so the drops do not clearly look like load moved onto them, and they show no detectable weekday, hour, bank-holiday, or seasonal pattern. Most of the switching detector's alarms on D8 are away from the drops (10 of 52 are within 6 hours of an edge), so the detector does not find the drops. The next step is to ask NGED which load moved or which switching took place, starting with the six drops that have no logged closure. primary
00156 switching-faster-onset-alarm-from-opposite-steps RO-NC (the refit-offset neighbour-count detector) learns of a load transfer about 48 hours after it starts, because its step statistic needs 24 hours of data after the step and its peak test needs 24 hours more. A transfer between two metered substations makes opposite-signed steps of similar size at the two, while weather, Economy 7, and holidays make same-signed steps. An alarm that fires when one node steps by k noise units and a connected metered node steps the opposite way by at least k/2, measured over a window of 2, 4, or 6 hours, therefore learns of the transfer within hours instead of days, at the same rate of real false alarms as RO-NC. A mask forecast (readings from the alarm onset set missing until the end rule fires) driven by this alarm then scores better than the same mask driven by RO-NC, because the mask starts days sooner. partly supported not-for-production An alarm built from opposite steps at a metered neighbour is known 3 to 9 hours after a load transfer starts, instead of 48, and masking readings from it closes 95% of the forecast-error gap on the transfers it finds. It finds few transfers, though: 38% of simulated transfers and 5 of 35 real ones. On all rows after a transfer begins, no mask beats a forecast that ignores recent power, so the next step is a forecast that drops recent power while a transfer is suspected, not a better mask. primary
00153 latent-nra-state-in-the-gam-k-filter Experiment 141's two-regime filter lets the level follow a load transfer, and 141 scored observed power, so neither tested the forecast of the normal running arrangement (NRA). If the filter instead holds the NRA as its own slowly moving state and routes the transfer into a separate, fast offset state that is switched on by the causal alarm and left out of the forecast, the forecast of the NRA moves towards the true NRA series during and after a transfer, and stays where it was when no transfer happens. partly supported not-for-production Giving the transfer its own offset state in the Kalman filter forecasts the normal running arrangement as well as the filter that ignores power does, and no better than simply dropping the readings inside a detected alarm. Dropping them is a smaller change, because it needs no second filter state on the serving path, so the extra state is not worth building. The no-change test on real alarms also failed: most real alarms coincide with genuine level shifts, and on them the new filter moved the median forecast by about 4 points of capacity. also relevant
00151 nra-forecast-rescored-against-the-true-nra-series The detector-driven correction of experiment 141 was scored against observed power, which rewards a filter for following a load transfer. Aim 2 of the switching work is a forecast of the normal running arrangement (NRA), the power the substation would have drawn had no transfer happened. Scored against that true NRA series, a forecast whose filter subtracts the megawatts (MW) of each detected transfer from its input closes a useful share of the gap between the filter that ignores transfers and the filter fed the true NRA series, once the alarm has been raised. The two-regime filter of experiment 141 closes little, because it still follows the transfer. partly supported not-for-production Once the detector has raised its alarm, taking the transfer out of the recent power closes most of the gap to a forecast fed the true normal-running-arrangement series, but ignoring recent power altogether closes nearly as much. Subtracting the detected megawatts is fragile (it rests on a few transfers at one substation), and masking the readings is steadier. Counting the 64% of transfers that the detector missed and the 2 days before the alarm, subtracting the detected MW gains nothing and masking gains 21%, so the next step is a detector that alarms sooner and a forecast that drops recent power while a transfer is suspected. also relevant
00148 switching-end-rule-lookahead-ro-nc The end of a switching interval that RO-NC has alarmed on can be fixed by waiting a bounded lookahead after the candidate end, with no loss of recall against the offline end rule. The candidate end is the largest opposite step seen so far, and the end is fixed once no later step beats it within the lookahead. A lookahead of 24 hours or less is enough, so a live service need not wait 2 days. supported candidate On injected transfers, a live service needs only 6 hours of data after the candidate end to fix the end of a switching interval, with no loss of recall against the offline rule. The call then comes a median 30 hours after the true end, and 24 of those hours are the step statistic's own window, so a longer lookahead of 24 or 48 hours only delays the call to 48 or 72 hours without finding more. The 35 real transfers give the same 18 found at every lookahead from 1 hour up. A lookahead of 0 hours is wrong in six transfers in ten, because the end is called about 8 hours early. primary
00147 causal-live-end-rule-for-ro-nc The end of a switching interval that RO-NC has alarmed on can be called from data available at the time, with no lookahead, at a small loss of the share of moved MW found, a low rate of false ends (an end called before the transfer has ended), and a lag of a few days at most. Merging alarms that overlap on one Primary substation, and treating a return step as the end of an open event instead of a new transfer, lowers the share of transfers with 2 or more intervals without losing recall. The offline end rule of experiments 61 and 130 picks the largest opposite step within 24 hours after the first return step, which needs data from up to 48 hours after that first step, so its "known from" time is up to 24 hours too early. supported candidate The end of a switching interval can be called from data available at the time, with no loss of recall against the offline rule, by waiting until the step statistic falls to 0.8 of its running peak. The call comes a median 29 hours after the true end. Ending the interval at the first sign of a return step is wrong in about six transfers in ten, because it fires about 8 hours early. Merging overlapping alarms on one Primary substation cuts the share of transfers reported as 2 or more intervals from 0.57 to 0.03. primary
00146 ro-nc-arm-b-on-the-35-real-transfers-over-1-day Descriptive, with no hypothesis to test beyond the prediction below. Experiment 130 reported only the count of the 35 real transfers over 1 day that RO-NC finds on the frozen convex residual (18 of 35). This experiment reports, for each of the 35, whether and when the detector alarmed, how much of the moved power it covers, and why it missed the transfers it missed. partly supported not-for-production On the 35 real transfers lasting over 1 day, RO-NC finds 18, and those 18 carry about two thirds (0.657) of the moved power. When it finds a transfer, its alarm starts within half an hour of the labelled start. Only 7 of the 17 misses are small or unreadable starts. 8 have a first step of 4 noise units or more but no alarm, and 2 have an alarm with the wrong end. The next experiment should find out why those 8 got no alarm, before anyone builds detectors for weaker onsets. primary
00141 switching-detector-fed-into-gam-k Telling GAM-K's Kalman filter when the RO-NC detector has seen a load transfer lowers the forecast's quantile score on days after a transfer begins, because the filter's level then adapts within hours instead of over days. The same signal given as plain features (event age and signed step size) does the same, more weakly. not supported not-for-production Telling the forecast's filter when a load transfer started and ended helped inside the transfer and hurt in the 72 hours after it, because the filter holds the transfer's step over the whole 7-day forecast. The switching detector's alarm arrives 48 hours after the step and did no better than a random placebo. The next test is a correction that decays over the typical transfer duration. also relevant
00138 weaker-onset-detector-on-the-ro-nc-convex-residual A detector that also considers weaker and slower onsets finds a larger share of the moved megawatts (MW) of injected load transfers than the refit-offset neighbour-count detector (RO-NC) on the frozen convex residual (experiment 130, arm B), at the same 80 unexplained odd-month alarms. In experiment 130, most of the remaining misses were donor steps of 2 to 4 noise units with no metered receiving substation, which the 24-hour step statistic cannot separate from noise. refuted not-for-production Making the detector more willing to fire on weak, slow starts did not help on injected transfers: all three changes found the same 0.79 of the moved power as before (differences of -0.008 to +0.001, no interval above +0.018) at the same 80 false alarms. Most of the weak starts that remain missed (a first step of 2 to 4 noise units at a donor with no metered receiving substation) look too much like noise for any of the three logistic scores to separate them from noise. On the 35 real transfers lasting over 1 day the new arms found 21 to 23 against 18, which is a possible gain worth checking on a bigger labelled set, since the injected transfers show no such gain. primary
00132 ro-nc-rescored-with-p12-and-p13-residuals-in-2025 Post hoc and descriptive. In experiment 101, the refit-offset neighbour-count detector (RO-NC) did not find 6 real load transfers lasting more than 1 day at P12 and P13, the two transformers of one Primary substation. Those transfers are found about as often as injected transfers of the same step size and metering once P12 and P13 have a residual in 2025 and the zero readings inside the transfers are no longer flagged as faults. If so, the missing readings, and not a property of the transfers, explain the 6 misses. partly supported not-for-production The detector missed the 6 real transfers at P12 and P13 mainly because the cleaning rule had flagged as faults, and removed, the zero readings that a switched-out transformer reports. With those readings restored from the cleaned power table, the detector finds 4 of the 6, and 17 of all 35 transfers lasting more than 1 day, up from 12. The cleaning rule removes real periods when a transformer is switched out. The thresholds were not re-tuned, and the unexplained alarms on odd-numbered months rose from 80 to 95 (PF14) and from 80 to 87 (RO-NC), so the recall comes with a higher false-alarm count. The next step is to re-tune the alarm thresholds on the new residuals and check that the 4 found transfers survive. With only 6 transfers, the result is descriptive. primary
00131 differentiable-physics-nra-edge-flows-drift-term Adding a slowly varying offset to each substation, fitted jointly with the flows on the interconnection edges, lets the flow fit find injected transfers that last hours to days without putting flow on pairs of substations that are not connected, which experiment 116's fit could not do. inconclusive not-for-production Letting each substation drift slowly did reduce the load that the fit wrongly moves between substations that are not connected, by half to three quarters at an equal or higher detection rate. It did not remove that false load, and the settings that keep it near zero find only about half of the transfers we added artificially and report them too small. In the replicate year part of the false load sits in two jumps in one substation's data that nobody had labelled. We therefore cannot yet read these flows as switching events. also relevant
00130 ro-nc-detector-on-the-gam-k-residual The refit-offset neighbour-count detector (RO-NC) finds more of the moved megawatts (MW) of injected load transfers when its residual is the one-step innovation of the convex demand model with the Kalman filter (GAM-K), than when it is the residual of the lagless XGBoost model of experiment 82. A lower residual noise should lift more of the donor steps of 2 to 4 noise units over the 4.0 threshold. In experiment 82, 401 of the transfers that RO-NC missed had no metered receiver and a donor step of 2 to 4 noise units. inconclusive not-for-production A detector of load transfers found about 2 more of every 100 megawatts moved when it was built on a demand forecast from the convex model without recent power than when it was built on the lagless XGBoost forecast (a difference of +0.023 in the share found, interval -0.001 to +0.046, under the +0.03 bar). It found 18 of the 35 real transfers lasting over 1 day against 12, but the convex model was trained with those real transfers masked, so that count flatters it. Built on the Kalman filter's one-step errors the detector found far less (0.488 of the moved power against 0.772), most likely because the filter follows a transfer's step within hours and so absorbs it, which we did not test. Most of the detector's remaining misses are small steps with no metered receiving substation, so a stronger signal for those transfers is the next idea to try. The maintainer has chosen to treat the gain as an improvement and to build later detector work on the frozen convex residual; that decision lies outside the pre-registered rule, so the verdict stays inconclusive. primary
00124 differentiable-physics-h-bsp-closure-audit-and-bsp-hint A bulk supply point (BSP) reading, fitted jointly with the Primaries beneath it as the sum of their demand terms plus the metered generators plus a penalised remainder, with a tuned weight, limits the damage that a metering error at one Primary does to that Primary's forecast, without raising the Primaries' forecast error when no error is present. not supported not-for-production The bulk supply point reading halved the damage from injected scale errors, but it made forecasts on clean data worse at every weight above zero: by at least 0.385 points of capacity in the corrected re-run, about 17 times the 0.023-point limit (2.355 points or more in the first run). A synthetic system that closes exactly loses clean accuracy the same way, so the loss does not come mainly from a wrong multiplier. The cause is untested. As a detector of metering errors the reading is weak: a 25% scale error lasting 30 days is found in 0% of cases by a fit that includes it and in 50% by a fit trained only on earlier rows, which then false-alarms on 61% of later windows. also relevant
00116 differentiable-physics-nra-edge-flows-between-primaries Flows on the electricity network's interconnection edges, fitted to a frozen convex model's residuals with a sparse-step penalty, recover injected conserved transfers between MW-metered Primaries; removing them gives a normal running arrangement (NRA) model trained without hand labels that forecasts no worse outside events; and fed causally into the Kalman filter as a known input, they improve the metered forecast during and after a transfer. inconclusive not-for-production The method that looks for load moved between neighbouring substations did not work: with the settings we fixed in advance it found under a quarter of the load we added artificially, and it changed no forecast. Looser settings found more, but they also found load moving between substations that are not connected, probably the slow drifts of demand that our model does not describe. The gate failed for a structural reason: at the settings we fixed in advance, the fit cannot find any transfer shorter than 7 to 9 days, and the longest test transfer lasts under 5 days, so the failure is a limit of the method as specified, not a bug in the solver. The zero flow we first saw on the unconnected pairs was also an artefact of the order the fit visits its paths, so those pairs were never clean. Adding a drift term to the model, or accepting a flow only where the two substations are connected, is the next thing to test. also relevant
00101 ro-nc-detector-on-real-hand-filtered-switching-events Post hoc, and descriptive: the refit-offset neighbour-count detector (RO-NC) finds less of the moved power on the 66 real, hand-filtered switching transfers than on injected transfers (0.770 of the moved MW) because most real transfers are small, short, or have no metered receiver, and not because the detector fails on a real transfer of the size the injected ones have. partly supported not-for-production The refit-offset neighbour-count detector found 12 of the 35 real load transfers lasting over 1 day and none of the 31 shorter ones, against 0.770 of the moved power on injected transfers. Of the 35, 6 sit where the detector's residual panel holds no readings and 12 have a step under 4 noise units. primary
00098 det-bg-solar-and-heating-offsets-in-switching-detector-residual The refit-offset neighbour-count switching detector (RO-NC) subtracts a lagless XGBoost demand forecast (experiment 17's H0.5, trained on ERA5) from each Primary substation's measured power. Giving that forecast the best guess's two explicit offsets, an embedded-solar term (capacity times a solar anomaly) and a heating degree-hour term, removes structured weather error from the residual, so the detector finds more of the moved MW at the same number of unexplained alarms. inconclusive not-for-production Giving the demand forecast behind the switching detector explicit solar and heating corrections did not detectably raise the share of moved power that the detector finds. The solar correction made the summer midday residual 12% smaller at the 5 solar series, but recall moved by only +0.003, because most remaining misses are small transfers from substations whose neighbours are unmetered. primary
00086 sw2-12-detector-labels-for-nra-forecast On the 292 daily ENS forecast runs of experiment 48, giving the monthly-refitted (P-roll) Primary demand model the lags minus the MW that switching moved, together with that MW as three columns, lowers the quantile score on the half-hours whose lag sits inside a switching event, when the events and MW come from the RO-NC load-transfer detector of experiment 82 instead of NGED's logs, and the gain is smaller than with the oracle labels of experiment 41 by the share of events RO-NC misses. inconclusive not-for-production Lags corrected with the detector's labels did not lower the quantile score on rows with a lag inside a logged event. also relevant
00082 sw2-18-19-combined-refit-offset-and-same-sign-count Experiment 71's refit-offset detector X (the 24-hour step statistic taken from whichever of two monthly-refit residual models did not refit within 24 hours of the stamp) and experiment 70's logistic score with the same-sign neighbour count (LOGIT_SAME) fix different misses of the benchmark PF14. Applying the logistic score to the candidates of X (RO-NC) therefore finds more of the moved MW than PF14, and more than either part alone, at the same count of unexplained alarms, on a fresh draw of injected transfers. supported candidate Using the refit offset and the same-sign neighbour count together found 0.770 of the moved power on injected transfers, against 0.656 for the benchmark detector. The gain of 0.114 is about the sum of the gains of 0.056 and 0.050 from each change alone. On the 35 labelled real transfers of more than 1 day the combined detector found 12 and the benchmark 8, which is a weak signal on a small sample, and transfers lasting 15.6 to 60 days gain nothing. primary
00071 sw2-18-refit-offset-and-gap-bridging The detector D0M with the end rule PF14 (experiment 69's benchmark) cannot raise an alarm, or accept a return step, within 24 hours of the monthly refit of the residual's XGBoost model. Computing the step statistic from whichever of two monthly-refit models, refitted half a month apart, did not refit within 24 hours of the stamp removes that blind spot, and finds more of the moved MW than PF14 at the same number of unexplained alarms. Bridging data gaps is a side check with no verdict, because the panel holds almost no gaps to bridge. supported candidate The detector ignored every alarm within 24 hours of the monthly refit of its forecasting model, which lowered recall by about 5% of the moved power. Lifting that rule recovers the loss, and the second residual model added to replace the ignored alarms adds nothing on injected transfers. primary
00070 sw2-19-same-sign-neighbour-count One alarm score that adds the count of neighbouring substations stepping the same way as the alarming substation to the substation's own 24-hour step and the largest opposite neighbour step (LOGIT_SAME) finds more of the MW moved by injected load transfers than the single-series detector D0M, with the same first-return end rule (PF14), at the same count of unexplained alarms on odd months, on a fresh draw of injected transfers. supported candidate Counting the neighbours that step the same way as the alarming substation found 0.048 more of the moved power on injected transfers than the single-series detector, at the same number of unexplained alarms. The 35 labelled real transfers are too few to confirm the gain (7 found, against 8 for the benchmark), and the gain does not extend to transfers lasting 15.6 to 60 days. primary
00069 sw2-17-missed-onsets-of-the-end-rule An onset rule that accepts a weak alarm only when a matching opposite step follows within 14 days (the paired low-threshold onset, PP) recovers more of the moved MW than D0M with the same end rule, at the same number of unexplained alarms. The labelled real transfers that raise no alarm at their onset are examined separately, because PP is scored on injected transfers and the cause of the real misses is a separate question. inconclusive not-for-production Of the 24 real load transfers lasting over 1 day that raised no alarm at their start, 12 are not a threshold problem: 6 lie in data gaps, 3 in a monthly refit that suppresses the alarm, and 3 have an alarm 2 to 12 hours from the labelled start. Accepting weaker alarms that a step back confirms recovered 0.146 of the moved power, but the stricter threshold needed to hold the alarm count lost 0.140. primary
00068 sw2-5-train-detect-retrain-loop When the lagless XGBoost model (the model whose forecast residual the switching detector reads) is refitted with zero weight on the half-hours inside detected switching intervals, and the detector is then run again on the new residual, three times over, the detector finds a larger share of the MW moved by load transfers at the same number of unexplained alarms. The refit also lowers the forecast error on half-hours outside logged switching. The mechanism is that a lagless XGBoost model trained through a transfer partly learns the transfer. That shrinks the transfer's step in the residual and biases the forecast. inconclusive not-for-production Refitting the lagless XGBoost model without the load transfers that the detector had found barely changed what the detector finds or the forecast error. In these 16 series the limit on the detector is therefore not that the forecast has learned the transfers. primary
00067 sw2-15-joint-edge-flow-estimator A single convex fit of block-shaped load flows across every boundary between neighbouring Primary substations, fitted to all the residuals at once, finds more of the MW moved by injected load transfers than the best sequential detector (D0M, the 24-hour single-series detector with the strongest-opposite-step end rule), at the same count of unexplained alarms on odd months. refuted not-for-production Fitting one flow of power across every pair of neighbouring Primary substations at once found 0.108 of the moved power, against 0.646 for the single-series detector when both raised about 80 unexplained alarms. A change to the loss made after seeing the result lifted that to 0.527, still 0.120 lower, so a joint fit would have to start from the 24-hour step statistics. primary
00066 sw2-16-end-rule-as-baseline Experiment 61's end rule (each alarm interval ends at the strongest opposite step within a cap of 14 days) can be improved by a longer cap, a shorter step window, or both. A cap of 30 or 60 days finds more of the MW moved by transfers that last over 14 days, with a loss of at most 0.01 on the shorter transfers of experiment 58. The 4-hour step window finds more of the moved MW than the 24-hour window at the same number of unexplained alarms. The winning window and cap then become the benchmark for every later switching-detector experiment. inconclusive not-for-production A post hoc rule that ends each alarm interval at the first opposite step of at least half the onset step found more of the moved power than searching 14 days for the strongest opposite step, and a 24-hour averaging window beat a 4-hour window. A longer search cap repairs transfers lasting over 15.6 days but picks a wrong end for some shorter ones, so the pre-registered verdict is inconclusive. primary
00065 sw2-14-combined-single-series-and-neighbour-score One alarm score that adds a substation's own 24-hour step evidence to the opposite-step evidence from its neighbouring substations, with neither acting as a gate, finds more of the MW moved by injected load transfers than the 24-hour single-series detector (D0M), the neighbour-confirmation gate (D1), and the neighbour veto (D2, experiment 55), at the same count of unexplained alarms on odd months. inconclusive not-for-production Adding the neighbouring substations' opposite-sign steps to a substation's own step did not find clearly more of the moved power than the own step alone (0.665 against 0.646; 99.17% interval -0.011 to +0.062 on the difference). In a post hoc variant, adding the count of neighbours that stepped the same way raised the share found. primary
00063 sw2-10-linear-joint-fit-v2-in-miniature On the 8 Primary substations metered in MW, one linear fit per Primary that holds a weather baseline without radiation inputs, the embedded-solar capacity of experiment 00045 times the CAMS unit PV shape, and one share-of-the-donor's-net-power term per labelled transfer, (C1) lowers the error of the median forecast outside switching on held-out months, in hindsight, below that of the same baseline with radiation inputs by at least 0.35 points of capacity, (S1) recovers an injected solar capacity to within 0.15 of its size, and (S2) recovers an injected transfer share to within 0.05. inconclusive not-for-production C1 is -0.322 points of capacity (-0.437 to -0.207), close to the 0.35-point threshold, but the S1 and S2 gates failed for reasons of test design, so the verdict is inconclusive. also relevant
00062 sw2-9-whitened-residual-step-detector Removing the half-hour-to-half-hour memory of the residual before the step statistic is taken (a first-order autoregressive filter, fitted per series and half-hour of day on odd months) makes the switching detector find a larger share of the MW moved by injected load transfers than the same detector on the unfiltered residual (D0M), at the same rate of unexplained alarms. The gain holds on transfers whose shape the detector does not assume. refuted not-for-production Removing the residual's half-hour-to-half-hour memory made the switching detector find fewer load transfers: 0.34 to 0.37 of the moved power against 0.44 to 0.47 without the filter. The filter shrinks a day-long step faster than it shrinks the noise, and a first-order filter cannot fix that. primary
00061 sw2-6-paired-step-intervals A detector that looks for an onset step and its opposite return step together, scoring the pair and choosing the return stamp with a prior on the duration of real transfers, finds more of the MW moved by injected load transfers than the best single-window detector (D0M, the 24-hour step with a tracked end), at the same rate of unexplained alarms. The gain comes from interval ends: about a third of D0M's transfers with a donor step of 6 noise units or more have the right start and a wrong end (experiment 60). refuted not-for-production Taking the end of each alarm interval from the strongest opposite step in the next 14 days found 0.19 more of the moved power than the single-step detector. Scoring the onset step and the return step as one pair found 0.13 to 0.21 less, so the end of the interval is the main limit on the single-step detector's recall. primary
00060 sw2-7-profile-weighted-step-detector A step statistic that weights each half-hour by the series' expected power (the daily profile of the fitted weather model), D3, finds more of the MW moved by injected load transfers than the constant-step statistic, D0M, at the same rate of unexplained alarms. The gain holds on transfers whose shape D3 does not assume (a constant MW, a share of the receivers' own profiles, and a mix of the two fitted to real transfers), not only on a share of the donor's profile, which is how the injection built every transfer in experiments 43, 55 and 58. refuted not-for-production A switching detector that weights each half-hour by the substation's predicted power found the same share of the moved power as one that expects a constant step, within 0.005 on five shapes of transfer (0.44 to 0.47). The shape of the moved load is therefore not why transfers are missed: among transfers with a large step, about a third have an alarm at the right start but the wrong end. primary
00059 sw2-13-several-windows-in-one-detector One detector that combines the step statistic of experiment 43's detector D0 at windows of 4, 12, 24, and 48 hours, after calibrating each window to the same false-alarm rate on odd months, finds more of the injected load transfers, weighted by the MW each moves, than the best single window at the same false-alarm rate on even months. refuted not-for-production Neither the maximum nor the sum of four window lengths found more of the moved power than the 24-hour window alone (0.423 and 0.451 against 0.473). Among large transfers with a metered receiver, most misses are an interval end placed outside tolerance and not a missed alarm. primary
00058 sw2-8b-donor-step-recut-and-stronger-veto (1) The gap in recall between injected load transfers with a metered receiver (0.50) and without one (0.17), seen in experiment 55, comes mostly from the injection giving the second group a smaller donor step, so the gap shrinks to under half its size when the two groups are compared at the same donor step in noise units. (2) A neighbour veto stronger than experiment 55's strongest (1.5 noise units), at 1.25 or 1.0, lets the 24-hour threshold fall further and finds more injected transfers than no veto. partly supported not-for-production Much of the gap in recall between injected transfers with a metered receiver (0.50) and without one (0.17) comes from the injected step being too small to see: 211 of 274 transfers without a metered receiver step by less than the alarm threshold, and the gap falls from 0.33 to -0.002 at equal step size (interval -0.166 to +0.119). A stronger neighbour veto raised the share found by 0.013, which cannot be told from no gain (98.33% interval 0.000 to +0.029). primary
00055 sw2-8-neighbour-veto-single-series-detector Keeping every alarm of the single-series detector D0 at the 24-hour window, except those vetoed because at least two neighbouring Primary substations stepped the same way and none stepped the opposite way, lets the alarm threshold fall at the same rate of unexplained alarms, and the detector then finds more injected load transfers than D0 alone. inconclusive not-for-production A neighbour veto removed the alarms that look like a weather or calendar miss and let the detector's threshold fall from 4.00 to 3.70, but the share of 620 injected transfers found rose only from 0.355 to 0.363 (98.75% interval -0.003 to +0.022). The result is inconclusive, and a stronger veto was not tried. primary
00047 sw2-4-better-residual-switching-detector Adding one column, the signed days to the nearest bank holiday in England, to experiment 17's lagless ERA5-trained XGBoost demand model H0.5 (refitted monthly, with H0.5's absolute-error loss unchanged) gives a residual in which the single-series detector D0 at the 24-hour window finds more injected load transfers at the same rate of unexplained alarms. inconclusive not-for-production Adding a bank-holiday column to the demand model raised the share of 89 simulated transfers that the detector found by 0.011 (98.75% interval -0.010 to +0.044), which the experiment is too small to tell from zero. The column lowered the demand error on bank holidays by about 1.15 points of capacity, but the detector's matched threshold rose instead of falling. primary
00044 sw2-2-switching-share-of-best-guess-score Half-hours in labelled switching events, and half-hours whose lagged power falls inside one, carry a larger share of the best guess's quantile score and tail score than their share of half-hours, and a perfect switching detector could lower the Primary quantile score or tail score by 3% or more. refuted not-for-production In the band of events the labeller finds most reliably, a perfect switching detector would lower the best guess's quantile score by 0.42% (95% interval -0.47% to 1.96%) and its tail score by nothing, against a threshold of 3%. Switching in that band touches 3 of the 16 Primary series and few half-hours, in one validation year. also relevant
00043 sw2-1-detector-scoreboard Experiment 37's neighbour-balance detector D1 finds injected load transfers between Primary substations more often than its single-series detector D0, when a transfer counts as found only if both its start and its end are placed correctly. refuted not-for-production Two simple switching detectors each found under a fifth of 600 simulated transfers, and no more than 0.29 in any size group. Over a 24-hour window the neighbour check found fewer large transfers than the single-series detector (0.21 against 0.29), and it helped only over the 4-hour window. primary
00041 sw2-0a-labeller-gate A labeller that reads features computed from raw power and the switching logs, and that uses no forecasting model as its deciding evidence, can find injected load transfers and reject placebo windows well enough to label the real logged closures of the 16 Primary substation demand series. partly supported not-for-production The AI model Sonnet called none of 120 placebo windows a switching event and timed starts and ends well, but it found 0.74 of the large, long fake transfers, under the 0.80 bar. It found 0.89 of them where the receiving substation has its own power readings and 0.60 where it does not. primary
00038 switching-mask-value For the 16 Primary substation demand series, excluding the half-hours of detected switching events from the history of the stack's error correction lowers the stack's threshold-weighted error at each series' historical 99th percentile on half-hours outside logged switching, by enough to justify adding a detector to the serving path. refuted not-for-production Leaving the half-hours that an early switching detector (D1) flags out of the 7-day error correction made the forecast worse on half-hours outside logged switching: the error rose 57% (95% interval 0.4% to 134%), where a 5% fall was needed. The rise came from an interval builder that ran one interval for 60 days, so masking with this detector is refuted as built. primary
00037 switching-first-look For the 16 Primary substation demand series, logged network switching (normal open points closed for hours or days) moves load that appears in the telemetry as a pair of opposite steps whose sum is conserved across the donor and its receiving neighbours, and a detector that tests that balance against the static interconnection list finds those transfers at a lower false-alarm rate than a detector that looks at each series alone. inconclusive not-for-production A detector that compares each substation with its neighbours found 0.33 of the switched power in the 18 visible validation transfers, and beat a single-series detector by about 0.14 in a rough post hoc comparison at equal alarm rates, which has no interval. The 18 transfers are too few to show whether the detector meets the 0.35 bar, so the result is inconclusive. primary