Energy-arbitrage timing skill · capture = actual ÷ perfect-timing revenue · monthly & quarterly · all NEM regions · data to 14 Jul 2026 · rebuilt 2026-07-14 15:45
Capture rate = actual net revenue ÷ perfect-timing revenue, both computed from AEMO 5-minute dispatch SCADA priced at the unit's own regional RRP. Actual is what the battery earned with the dispatch it actually ran (discharge revenue minus charging cost). Perfect timing re-times that same day's energy — identical MWh discharged and charged, same day — into the best and worst priced intervals. It is a mathematical upper bound, so capture is always ≤ 100%: the score isolates timing skill from fleet size, weather and price level. The benchmark deliberately ignores intra-day state-of-charge ordering, so the ceiling is slightly generous and scores are conservative — verified against the exact assignment optimum.
Caveats: energy arbitrage only — FCAS revenue is excluded, and for several units FCAS is the larger income stream, so $ figures are a floor. State of charge is estimated by integrating dispatch at 87% round-trip efficiency, anchored to each day's minimum — it is not metered telemetry.
Sorted by capture rate. Duration colour-coded. Tracked units outlined in black.
Click any column header to sort.
Toggle to overlay. Duration badge per unit. Price shown is the unit's own region.
MW ÷ rated power → shows behaviour independent of size. Toggle to overlay.
Net arbitrage margin (discharge revenue − charging cost, own-region RRP) ÷ observed MW ÷ active days. Energy-only — excludes FCAS, which for some units is the larger revenue stream — so treat as a floor on total revenue.
Bar = the unit's realized spread (energy-weighted average sell price − average buy price). Tick = its region's TB2 benchmark, the spread a perfectly timed 2-hour battery could earn from daily shape. Bars past the tick mean the unit beat the day-shape benchmark — usually by monetising spikes.
Each bubble is a battery (size = MW). Up = better price-timing; right = harder worked. Top-left = high skill, low wear; bottom-right = high throughput, lower skill.
Reconstructed by integrating dispatch with ~87% round-trip efficiency, anchored so each day's minimum = 0%. An estimate of stored energy, not metered SOC.
Most BESS revenue is made in a few high-price intervals; the cheapest charging is in negative-price intervals. Bars show each battery's capacity factor (avg power ÷ rated MW) during those intervals. Uses the period selected above.
Bubble size = rated MW · position = registered site. Hover/tap a bubble for detail. Coordinates from Open Electricity (build_geo.py).
Duration = Energy ÷ Power: 1h <1.5h · 2h <2.5h · 3h <3.5h · 4h otherwise. Daily SOC swing = average depth of cycle (estimated). Tracked units highlighted.
Count of batteries by storage duration.