← Back to Index
Technical Methodology

Synertia Methodology Note

How the NEM BESS Capture Index is constructed: LP-optimal benchmarking, gap attribution, three-thread signal architecture, and pre-publication audit process.

Version 1.0
Published November 2026
Scope NEM, all 5 regions
Data source AEMO NEMWEB + WeatherNext 3

What the Index measures

The Synertia NEM BESS Capture Index measures how much of their LP-optimal revenue ceiling each grid-scale battery in the National Electricity Market is actually capturing. The metric is expressed as a capture rate — actual revenue divided by LP-optimal revenue — published monthly per DUID (Dispatchable Unit Identifier).

A capture rate of 85% means the asset earned 85 cents of every dollar the LP model shows was theoretically available at its connection point, with its rated capacity and SoC constraints, given the 5-minute prices that actually occurred. The remaining 15% is the gap, which the Index decomposes into three independently quantifiable sources.

Purpose: The Index exists to make the performance gap between actual and theoretically-achievable battery revenue visible, comparable across operators, and attributable to specific causes — rather than opaque or self-reported.

Coverage and scope

The Index covers all commissioned NEM BESS DUIDs across SA1, VIC1, NSW1, QLD1, and TAS1. The current fleet comprises approximately 60 DUIDs operated by 30+ operators, ranging from 30 MW / 30 MWh peakers to multi-hundred-MW systems exceeding 4-hour duration.

DUIDs tracked
60+
All NEM regions
Operators
30+
Including major retailers
History
Oct 2023–
Growing BESS fleet

Coverage is updated each quarter as new assets commission. Assets are added on the first full calendar month following their AEMO registration date. Decommissioned or mothballed units are retained in history.

LP-optimal benchmark

For each DUID, we solve a linear programme over the AEMO DISPATCHPRICE time series for the asset's region. The LP maximises revenue subject to physical and regulatory constraints:

# Objective: maximise total energy revenue over the period maximise: Σ price[t] × dispatch[t] × Δt × MLF subject to: Capacity constraint: -P_max ≤ dispatch[t] ≤ P_max SoC continuity: SoC[t] = SoC[t-1] - dispatch[t] × Δt / E_cap SoC bounds: SoC_min ≤ SoC[t] ≤ SoC_max Ramp rate: |dispatch[t] - dispatch[t-1]| ≤ RR_max × Δt Terminal SoC: SoC[T] ≥ SoC[0] (no net energy extraction)

Parameters

  • P_max — registered MW capacity from AEMO NEM Registration and Exemption List
  • E_cap — rated energy capacity (MWh) from AEMO records; duration assumptions applied where not published
  • SoC_min / SoC_max — 10% / 90% of E_cap (conservative bounds to exclude technical cell limits)
  • MLF — Marginal Loss Factor for the asset's connection point and financial year, sourced from the AEMO MLF publication
  • Δt — 5 minutes (1/12 hour)
  • RR_max — P_max × 2 per interval (non-binding in practice for most dispatch profiles)

The LP is solved at daily resolution over a rolling window. The benchmark is the energy-only LP revenue ceiling — FCAS market revenue is tracked separately and excluded from the capture rate numerator and denominator to avoid double-counting and to isolate the dispatch execution gap.

Why LP-optimal rather than a heuristic benchmark: A heuristic (e.g., "charge off-peak, discharge peak") is operator-strategy-dependent. The LP is strategy-neutral — it reflects the revenue that was available to any asset that dispatched optimally given perfect knowledge of day-ahead prices. This isolates the question of how well the asset used its price information, rather than whether the price information was good.

SCADA actuals

Actual dispatch is sourced from AEMO DISPATCHSCADA at 5-minute resolution. Each DUID's MW output is recorded in AEMO's production dispatch data tables.

Actual revenue for each 5-minute interval is computed as:

actual_revenue[t] = SCADA_dispatch[t] × DISPATCHPRICE[t, region] × (1/12) × MLF

Where DISPATCHPRICE is the regional reference node price for the asset's region. The MLF applied is the same value used in the LP benchmark, ensuring the two are directly comparable at the connection-point level.

Data completeness

DISPATCHSCADA has occasional data gaps (typically under 0.3% of 5-minute intervals per month). Where a DUID has more than 2% missing intervals in a given month, that month is flagged with a data quality warning in the Index. Gaps under 2% are interpolated linearly within the same trading day.

For assets commissioned during a month, only the intervals from their market start date are included. This prevents zero-dispatch pre-commission intervals from artificially depressing capture rates.

Capture rate calculation

The monthly capture rate for a DUID is:

capture_rate = Σ actual_revenue[t] / Σ lp_optimal_revenue[t] # Aggregated over all 5-minute intervals in the calendar month # where the asset was registered and SCADA data is available

The operator-level capture rate is the revenue-weighted average of all DUIDs the operator controls in a given month. This correctly weights larger, higher-revenue assets more heavily than smaller ones.

Interpreting capture rates above 100%: Theoretically impossible, but occurs when an asset dispatched energy that was physically possible (within MW and SoC bounds) but that the LP did not select — because prices in nearby intervals appeared more favourable, and the LP's perfect hindsight led it to "save" SoC for those intervals. In practice, rates above 100% reflect very short periods (one to three 5-minute intervals) where the LP's terminal-SoC constraint caused it to under-dispatch relative to the asset's actual profile. These are not data errors; they are flagged in the portal.

Gap attribution framework

The gap between LP-optimal and actual revenue is decomposed into three mutually exclusive and exhaustive components using counterfactual simulation. Each component is computed by varying one factor while holding others constant.

Code Name Definition Typical range
G-SIG Signal gap Revenue foregone because the asset did not receive, or did not act on, a HIGH advisory signal on a genuine high-price event day 15–40% of gap
G-THR Threshold gap Revenue foregone because the asset discharged during a recognised event, but at the wrong SoC floor or price threshold — releasing energy below the day's peak price window 25–50% of gap
G-PRO Profile gap Revenue foregone due to intra-window execution profile differences — charge timing, ramp behaviour, and FCAS co-optimisation decisions that affect within-window MW delivery 20–45% of gap

The attribution is computed per event day. An event day is any trading day where the LP-optimal revenue in the asset's region exceeded a revenue threshold calibrated to the asset's capacity (currently: revenue per MWh of rated capacity in the top 10th percentile of historical event days).

G-SIG: Signal gap

G-SIG measures the revenue available on days where Synertia's three-thread signal system would have issued a HIGH advisory, but the asset's actual dispatch profile suggests no elevated dispatch strategy was active.

Operationally: on a HIGH advisory day, an optimally positioned asset should enter the primary dispatch window with SoC at or above the advisory target. G-SIG captures the event days where this did not happen — either because no advisory was issued (a signal miss), or the advisory was issued but not acted upon.

G_SIG[day] = LP_revenue[day] - actual_revenue[day] ... on days where HIGH signal fired AND soc_entry < soc_target

G-SIG is therefore bounded by the advisory system's recall rate: on days where the signal system issues a FALSE HIGH (high advisory, no event), G-SIG is zero for that day. The signal false-positive cost is tracked separately.

G-THR: Threshold gap

G-THR measures revenue foregone because the asset discharged at the wrong time within a high-price day — specifically, because its effective price floor was set too low relative to the day's actual peak window.

This gap is computed via counterfactual simulation: we solve the LP with a modified price series in which all prices below the asset's effective dispatch threshold (inferred from its SCADA profile) are set to zero, and compare the resulting revenue to the full-price LP. The gap is G-THR.

A large G-THR indicates the asset was discharging during mid-priced intervals while the highest-priced intervals occurred later — a common pattern on days where the evening peak arrives later than the charging window anticipated.

G-PRO: Profile gap

G-PRO is the residual gap after G-SIG and G-THR are subtracted from the total gap. It captures execution differences within an event window where the asset was active and at the right price level, but the MW delivery profile differed from LP-optimal.

Sources of G-PRO include:

  • FCAS co-optimisation obligations reducing available energy dispatch headroom
  • Conservative ramp constraints or battery management system limits below asset registration parameters
  • Intra-window SoC depletion earlier than optimal, leaving the asset unable to discharge in the final (often highest) intervals
  • Manual operator interventions that override automated dispatch
G_PRO[day] = total_gap[day] - G_SIG[day] - G_THR[day]

G-PRO is the most operationally complex component to close — it often requires EMS-level integration or FCAS co-optimisation model changes rather than advisory improvements alone.

Three-thread signal architecture

Synertia's advisory signal system uses three independent threads, each sourced from a different data domain. A HIGH advisory requires a conjunction of signals across threads, calibrated to the region's historical event base rate.

Thread 1
Supply pressure (T1)

Wind drought detection and renewable supply pressure scoring using digital twin generation models and WeatherNext 3 NWP forecasts. T1 is the event gate — the primary discriminator between event and non-event days.

Thread 2
Demand signal (T2)

Demand z-score relative to seasonal baseline, using AEMO DEMANDOPERATIONALFORECAST and a gradient-boosting model trained on temperature, humidity, and calendar features. T2 is the event amplifier.

Thread 3
Network binding (T3)

Interconnector binding probability from a logistic regression classifier trained on 6 years of IC flow, constraint set activity, and renewable generation features. T3 provides price amplification context.

Signal logic

The HIGH advisory tier is issued when the following region-specific conditions are met:

  • SA1 / VIC1: T1-Extreme or (T1 and (T2 or T3))
  • NSW1 / QLD1: T2 or T3 (supply pressure is less discriminating in these regions)
  • TAS1: signal suppressed — hydro-dominated supply dynamics require a separate hydro storage model

Backtest performance (as at October 2026)

Post-DS-A4 and FP-INV-1 audit extension, using revenue-positive event labels:

  • SA1: F1 = 0.236 · Macro F1 (excl. TAS1) = 0.241
  • VIC1: F1 = 0.264 (IC binding revenue classifier at threshold 0.35; 22 events, 7 TP, 24 FP, 15 FN)
  • NSW1: F1 = 0.271
  • QLD1: F1 = 0.190

These metrics reflect the genuine difficulty of predicting NEM high-price events 24+ hours ahead. The signal system is designed to trade false-positive cost (unnecessary cycle degradation) against false-negative cost (missed revenue opportunity) at calibrated operating points.

WeatherNext 3 integration

From October 2026, Synertia's T1 supply pressure signal uses Google DeepMind's WeatherNext 3 (WN3) numerical weather prediction model as its primary meteorological data source, with ERA5 reanalysis as fallback.

WN3 provides ensemble wind speed and solar irradiance forecasts at 0.25° spatial resolution and 6-hourly temporal resolution, with ensemble spread used as a drought confidence signal. Key advantages over ERA5 for near-real-time advisory use:

  • Initialised from operational analysis with sub-12-hour latency (ERA5 has 5-day latency)
  • Ensemble members provide uncertainty quantification absent from ERA5 deterministic fields
  • Global coverage allows IC-coupled wind event detection across SA–VIC–NSW corridors
ℹ️
WeatherNext 3 data is used under commercial licence from Google. Synertia's use of WN3 is governed by the WeatherNext Data Licence Agreement. WN3 forecasts are used for advisory signal generation only and are not redistributed. Full attribution is provided in accordance with Section 4(b) of the licence.

Data sources

Source Table / File Use
AEMO NEMWEB DISPATCHPRICE 5-minute regional reference node prices for LP and actual revenue computation
AEMO NEMWEB DISPATCHSCADA 5-minute DUID-level MW dispatch actuals
AEMO NEMWEB DISPATCHLOAD Interconnector flow and constraint binding, used in T3 IC binding model
AEMO NEM Registration and
Exemption List
DUID capacity (MW), registered fuel type, commissioning dates
AEMO MLF Publication (annual) Marginal Loss Factors per DUID and financial year
AEMO NEMWEB DEMANDOPERATIONALFORECAST D+1 operational demand forecast used in T2 demand signal
Google DeepMind WeatherNext 3 (WN3) Ensemble NWP forecasts for T1 supply pressure signal (wind speed, solar irradiance)
ECMWF ERA5 ERA5 reanalysis Historical wind and temperature data for model training; fallback when WN3 unavailable

All AEMO NEMWEB data is public and available from nemweb.com.au. Synertia does not modify or restate raw AEMO data; all computations are applied to the source data as published.

Pre-publication audit

Before any Index figures are published or released to registered users, the monthly data release passes an automated pre-publication audit. AUDIT_PASS is required; a failing audit blocks publication until the issue is resolved.

✅
Audit gate: All BESS Capture Index figures are withheld until the monthly audit completes successfully. No manual override is permitted — if the audit fails, figures are not published for that period.

Audit checks

  • LP accuracy check: The LP solver is run against a held-out validation set of known-event days. LP revenue must recover within 2% of the reference benchmark on all validation days.
  • SCADA completeness: Each active DUID must have ≥ 98% of 5-minute intervals populated. DUIDs below this threshold are excluded and flagged in the release notes.
  • MLF consistency: The MLF table used in computation must match the AEMO-published MLF for the financial year. Any divergence blocks publication.
  • Methodology consistency: All formula parameters (SoC bounds, terminal constraint, interval duration) are verified against the canonical parameter set. Any parameter drift — which could indicate a code regression — triggers a review.
  • Capture rate plausibility: Capture rates above 110% for any DUID trigger a manual data quality review before publication.
  • Attribution completeness: G-SIG + G-THR + G-PRO must sum to within 0.5% of total gap for every DUID. Any residual above this indicates an attribution model error.

Limitations and important caveats

Not investment or trading advice. The Capture Index is an analytical benchmark, not a recommendation to trade, invest, or alter dispatch strategy. Revenue figures represent what was theoretically achievable with perfect hindsight — not a guarantee of future performance or a realistic trading target.

Known model limitations

  • FCAS co-optimisation: The LP benchmark optimises energy dispatch only. An asset with significant FCAS obligations faces a co-optimisation constraint the energy-only LP does not model. G-PRO will include this effect, but it cannot be further decomposed without access to the operator's FCAS bid data.
  • Intra-dispatch period dynamics: The NEM clears at 5-minute resolution but some pricing dynamics occur within the dispatch interval (rebidding, fast-frequency response). The LP and SCADA are both at 5-minute resolution and will miss intra-interval revenue opportunities and obligations.
  • Duration assumptions: For DUIDs where AEMO has not published rated energy capacity, a duration assumption is applied (typically 2 hours for assets registered as BESS). If the actual installed capacity differs from the registered capacity, the LP benchmark will be computed against the registered figure.
  • Terminal SoC constraint: The terminal constraint (SoC[T] ≥ SoC[0]) prevents the LP from extracting net energy from the asset over the optimisation window. In practice this is solved daily, so the LP is effectively constrained to be SoC-neutral per day. An asset that runs a multi-day SoC strategy may have a different optimal profile than the daily LP.
  • Market power effects: The LP is a price-taker model. Large BESS assets can influence regional spot prices through their dispatch volume. The LP does not account for this — for dominant assets in constrained regions, the benchmark may overstate achievable revenue.

What the Index does not measure

  • FCAS market revenue (tracked separately, excluded from capture rate)
  • System services, ancillary services, or bilateral contract revenue
  • Merchant hedging or financial settlement positions
  • Negative price events where non-dispatch may be financially optimal