Common questions about NEMPulse: what it tracks, where the data comes from, what the revenue figures mean, the actual-vs-optimal benchmark, downloads and the public API, and who runs it.
NEMPulse is an independent dashboard tracking every grid-scale battery in the Australian National Electricity Market (NEM). It shows each battery's dispatch, energy and FCAS revenue, state of charge, bidding behaviour, and how its actual revenue compares to a perfect-foresight optimal benchmark. Everything is derived from AEMO's public NEMWEB data.
Yes. NEMPulse is free, has no ads, and has no paywall or login. The charts, the CSV and JSON exports, and the public API are all open. There is a coffee link in the footer if you want to help with server costs, but nothing is gated behind it.
AEMO public data on NEMWEB, pulled via NEMOSIS into a local database, aggregated with pandas, and served through a documented API. The main feeds are DISPATCHLOAD and Next_Day_Dispatch for dispatch and FCAS, DISPATCHPRICE for spot prices, the AEMO bid tables for bidding, and the NEM Registration and Exemption List for the battery registry. The methodology page lists which table feeds which metric.
No. All revenue on NEMPulse is gross spot revenue, what a unit would earn settling its energy and FCAS at the regional spot price. It excludes cap contracts, hedges, bilateral deals, network fees and tolling income. Real net P&L depends on each operator's hedge book, which is private. Treat the figures as a market-wide comparison, not a profit statement, and verify independently before relying on them.
For each battery, NEMPulse runs a linear program that computes the maximum energy-arbitrage revenue achievable given the realised price path and the unit's SOC, ramp and capacity limits, assuming perfect foresight. The capture rate is actual revenue as a share of that optimum. It is energy-only (FCAS is excluded from the benchmark), and because it assumes perfect foresight, 100% is an unreachable ceiling rather than a target.
SOC is taken from AEMO-reported energy storage where available, in the next-day archive. Where it is not reported, it is integrated from dispatch MW using a round-trip efficiency of about 85%. Integrated estimates are replaced as reported data arrives. Reported values above 105% of registered capacity are treated as data glitches and fall back to integration.
Live unit MW (Dispatch_SCADA) updates every 5 minutes. Full per-unit dispatch and FCAS enablement land in the next-day archive around 04:00 the following morning. Bid data is next-day at the earliest. The data status page lists freshness and known quirks per feed.
Yes. Every chart exports the exact data it draws as CSV and JSON. Derived aggregates are also available through a free, read-only public API documented on the API page. Raw bid tables and granular per-interval dispatch are not exposed; the API page explains what is published and what isn't.
It's a personal project. The person who runs it works for EnergyAustralia, but NEMPulse is built independently in their own time, is not affiliated with or endorsed by EnergyAustralia, and treats every battery the same. See the about page for the full conflict-of-interest note.
Email [email protected]. It is usually a data quirk, and good catches make the site better.
Browse: Battery fleetActual vs optimalMarket eventsBid stackBidding strategyVirtual power plantsProject simulatorAskPulseEmail alerts
Loading live data…