Forecast building blocks
How NGED assembles different kinds of forecast from the "Lego blocks" OCF delivers.
Status: 🚧 Planned. The normalised [−1, +1] forecast is planned for v0.5, scaled by the static P99 capacity (#246; the code still forecasts raw MW/MVA today — see delivery tables, Table 1). The capacity and switching building blocks depend on work scheduled for v0.6 (switching) and v0.7 (capacity). OCF will provide example Python code (likely a small package) to demonstrate assembling these forecasts. See the roadmap index for status conventions.
The idea
Rather than ship one fixed forecast, OCF delivers a set of building blocks so NGED can construct whichever forecast suits the question they are asking. The two headline forecasts NGED will assemble are the normal operation forecast and the prevailing conditions forecast.
The blocks are:
- Power forecasts scaled to [−1, +1] (the
power_forecasttable). These always assume a "normal running arrangement" and perfect health of generators and substations — i.e. a worst-case network-constraint planning view. Producing this topology-normalised signal in the presence of historical switching events is the subject of switching events & latent demand (v0.6 detector → v2 mixture models). "Normal" means:- Substations: all "normally closed" switches are closed and all "normally open" switches are open.
- Generators: the generator is unconstrained by NGED's Active Network Management (ANM) and operating at full capacity.
- Dynamically changing effective capacity of generators (the
effective_capacitytable). E.g. if a wind turbine breaks in a wind farm, we estimate the reduced effective capacity over time. - Switching events (the
substation_switchingtable). OCF estimates the amount of power diverted across substations. This block is conditional: whether a discrete event table ships at all is an open question, and continuous per-substation switching-state signals may be delivered instead — see the decision point.
Sign convention
Sign convention depends on substation_type in TimeSeriesMetadata,
whose five values (BSP, EHV Customer, GSP, HV Customer, Primary) partition into two
behavioural cases:
- Substations (
BSP,GSP,Primary): positive = power flowing towards end-users; negative = excess generation flowing back upstream, into the electricity network above the substation. - Customer meters (
EHV Customer,HV Customer): positive = the customer is sending power to NGED's distribution network; negative = the customer is drawing power from NGED's distribution network. A customer meter can sit at a demand site or a generation site, so this case is not "generators only".
The convention describes a direction, so it applies only where units is MW. A series metered
in MVA reports the magnitude of the flow and cannot see direction, so reverse power flow appears
as a rise rather than as a change of sign. A negative value is then a fault between the meter and us
rather than an export. In the trial area, 10 sites are metered in apparent power — see apparent
power (MVA)
metering
for the "bouncing off zero" behaviour apparent-power metering produces.
The two forecasts NGED assembles
Normal Operation Forecast (MW or MVA)
Multiply the [−1, +1] forecast by the asset's maximum / nominal capacity:
- Substations: × the substation's effective
capacity — the 99th percentile of observed power
flow, written by the
effective_capacityasset since v0.1. - Generators: × the maximum estimated capacity of that generator.
This answers: "what would this asset do if it were healthy and the network were in its normal arrangement?" — the worst-case view useful for network-constraint planning.
Prevailing Conditions Forecast (MW or MVA)
This forecast prevails the most recent conditions:
- Generators: × the most recently observed effective capacity.
- Substations: prevails the switching state. (How this is achieved depends on the decision point: assembled from Table 5's discrete events, or delivered directly by the metered-power forecast, which carries the current switching state forward natively.)
- Both: prevails the
GENERATOR OR CIRCUIT FAULTvalue ofwarning_type(see Table 3 —asset_health_history).
This answers: "what will this asset actually do over the next 14 days if current conditions persist?"
Worked examples
A 5 MW solar farm (5 × 1 MW inverters) where 1 inverter failed last month (effective capacity reduced to 4 MW):
| Forecast | Behaviour |
|---|---|
| Scaled [−1, +1] | Continues as if the farm is healthy; on a sunny day approaches +1. |
| Normal Operation | Assumes capacity is still 5 MW. |
| Prevailing Conditions | Assumes the inverter stays broken; uses 4 MW for the next 14 days. |
A 12 MW bioenergy generator that ran at full capacity 2020–2023, then stopped operating in 2024 and has not restarted:
| Forecast | Behaviour |
|---|---|
| Scaled [−1, +1] | Predicts +1 for the next 14 days. |
| Normal Operation | Assumes 12 MW capacity → forecasts 12 MW every timestep. |
| Prevailing Conditions | Assumes the generator stays offline → predicts 0 MW every timestep. |
Why this matters for "not-on" assets. One trial-area generator has not been operating since mid-2024, so its time series carries no generation signal. The building-blocks approach lets the scaled forecast stay well-behaved while the prevailing conditions forecast correctly reports ~0 MW.