What Forecast actually does in production
// LANE-1 · the runtime viewFATHOM Forecast is the module that occupies LANE-1 of the FATHOM runtime. It ingests three classes of signal: SCADA telemetry from the customer's own assets via IEC 61850 (MMS, GOOSE, Sampled Values), DNP3 and IEC 60870-5-104; numerical weather prediction ensembles from ECMWF IFS at fifty-member resolution, MetOffice MOGREPS-G, and DWD ICON-EU; and market context from Elexon BMRS, ENTSO-E Transparency Platform and EPEX Spot. None of these signals is consumed raw — each goes through a documented validation, alignment and de-spiking pipeline before it reaches a model.
The output is not a point forecast. It is a calibrated quantile distribution at five percentile levels (P5 / P25 / P50 / P75 / P95) per node, per horizon, refreshed at 1-second cadence for the short head and at the operator's chosen cadence for longer heads. The downstream consumer — typically the FATHOM Dispatch lane, but increasingly a customer's own optimiser via the streaming API — gets a distribution of futures to optimise against, not a single guess to bet against.
The module is a single Rust binary plus model artefacts, distributed as an OCI image or as a bare-metal package for substation edge boxes. It exposes Prometheus metrics, OpenTelemetry traces, and a structured event stream that downstream systems can subscribe to. There is no separate dashboard product to buy; the embeddable widget that ships with the module renders the live quantile bands in any HMI that can host an iframe or a Web Component.
The model stack
// heterogeneous by designThe model stack is deliberately heterogeneous. Long horizons (D+1 to D+7) lean on a gradient-boosted ensemble with engineered weather features and explicit market-regime classifiers — the right shape of model for problems where the signal is dominated by calendar effects, weather climatology, and regulator-induced regime changes. Medium horizons (1–24 hours) use a temporal convolutional network that handles the diurnal-plus-ramp dynamics of net demand; this is where the rise of EV charging and heat-pump load is most visible.
Short horizons (sub-hour to ten minutes) use a small transformer that consumes raw SCADA at 100ms resolution and emits forecasts at 1-second resolution. This is the head that earns the "sub-second" claim — and the one that, when miscalibrated, will silently degrade every dispatch decision downstream. We retrain it nightly and we publish its calibration report to the customer's reliability inbox at 06:00 local time every weekday.
A meta-learner reconciles the three heads and emits a single calibrated quantile distribution. Calibration targets are CRPS (continuous ranked probability score) and pinball loss at each percentile; both are visible on the customer's metrics dashboard. The reconciliation logic itself is a small linear model — kept deliberately simple — because the meta-learner is the component most likely to be inspected by a regulator post-incident and we want it to be defensible without a PhD in the room.
FCST · STACK
- LONG (D+1 → D+7)
- GBM ensemble · ~600 trees
- MED (1 → 24 h)
- TCN · dilated 1-D conv
- SHORT (< 1 h)
- small transformer · 11M params
- META
- linear · per-quantile
- CALIB
- CRPS · pinball loss
- RETRAIN
- nightly incremental · weekly full
- REPORT
- daily 06:00 to reliability inbox
Operationally invisible. Audit-ready by default.
// the parts that make it survive year twoEvery forecast we emit is paired with an audit envelope: the model version, the input window hash, the weather ensemble identifiers, the calibration report current at the time of emission, and a signed receipt. The envelope is stored alongside the forecast in an immutable ledger; an operator who wants to know why the 14:22 dispatch decision was taken against a particular forecast band can resolve it back to the exact model artefact and input window in under three seconds. We built this because the question gets asked, and the answer "we will get back to you" is a contract-losing answer.
Operationally, the module is meant to disappear into the background. Default deployment is hot-standby on two nodes per region, with automatic failover under 800ms and zero data loss. Upgrades roll forward without interrupting the forecast stream — the new binary catches up against shared state and the load balancer flips when the new instance has matched the incumbent's calibration metrics for three consecutive minutes. There is no maintenance window. There has not been an unplanned outage in the production fleet since 0.8.0 shipped in February.
The integration story is short. If your control room runs an EMS with a streaming forecast input, we speak it. If your trading desk runs a Kdb+ tick database, we have a connector. If your asset team uses a CMMS that expects a daily flat file, we will write it. None of these integrations require a custom engagement — they are part of the standard delivery.
Measured performance
// what the calibration reports actually sayAcross the production fleet (eight live UK assets and two US ERCOT pilots as of April 2026) the day-ahead median-percentile MAPE on net demand is 1.71%, with the worst-asset month at 2.4% and the best at 1.2%. Intraday (1-hour-ahead) median MAPE is 3.39%; the figure that matters more — the pinball loss at P95 — has fallen 18% since 0.8.0 thanks to the new short-head transformer. Calibration plots, available in every customer's monthly report, are flat to within ±1.5% of the diagonal at every percentile.
The number we are most proud of is not a MAPE — it is the percentage of dispatch decisions downstream of FATHOM Forecast that, in retrospect, would have been improved by a better forecast. On the eight UK assets that figure is 4.2%, which sounds high until you realise the industry baseline (a leading point-forecast vendor) is 11.8% measured the same way. The remaining 4.2% is dominated by genuinely unforecastable events — unannounced asset trips, sudden weather mesoscale anomalies — and we are honest about that.
FCST · METRICS
- DAY-AHEAD MAPE
- 1.71% median
- INTRADAY MAPE
- 3.39% median
- PINBALL P95
- -18% vs 0.8.0
- CALIB FLATNESS
- ±1.5% diagonal
- DISPATCH REGRET
- 4.2% vs baseline 11.8%
- FLEET COVERAGE
- 10 assets · 2 markets
- UPTIME
- 99.97% since 0.8.0
Continue exploring
// the other two lanesFATHOM Dispatch — LANE-2. Autonomous co-optimisation of battery, demand response and curtailment across multiple revenue stacks. Solves a rolling-horizon mixed-integer stochastic programme in under 1.2s at P99 on a typical 200 MW / 400 MWh portfolio. Consumes the full P5–P95 bands from this module.
FATHOM Sentinel — LANE-3. Asset health and grid anomaly detection trained on substation telemetry, weather, and a 12,400-asset historical fault library including 2,180 confirmed failures. Median 19-day lead time on transformer winding faults across a 14-month UK DNO trial.
Ready to evaluate FATHOM Forecast?
The standard pilot is a single feeder or asset, four weeks of shadow-mode against your existing forecast stack, and a side-by-side calibration report at the end. We do not charge for shadow-mode.