The Hours Below Zero
Across the twelve months to 31 October 2026, South Australia's wholesale electricity price was below zero in 30,008 of its 105,120 five-minute intervals: 28.5% of the year, 2,500 hours and 40 minutes. It sat exactly at the market price cap 15 times and never touched the floor. A household on an ordinary tariff saw none of it.
The year, five minutes at a time
Each row is one day, 1 November 2025 at the top and 31 October 2026 at the bottom. Each column is one five-minute interval, midnight at the left. Every cell is one price from AEMO's own file, and the lit cells are the ones that pass the test you choose.
30,008 of 105,120 intervals (28.5%) were below $0/MWh: 2,500 hours 40 minutes.
Point at a cell, or focus the grid and use the arrow keys, to read its interval.
The page checks each price file against the SHA-256 hash written in data.json before it draws.
What was counted
The data comes from AEMO's price and demand files: one CSV a month for each of five regions, one row per five-minute interval. Its price column is headed RRP, the name AEMO's data model gives the regional reference price, which it describes as the Regional Reference Price for this dispatch period. RRP is the price used to settle the market
. Prices are in dollars per megawatt-hour.
Each row is stamped with the time its interval ends. The data model's own example is a five minute dispatch interval ending 28/09/2000 16:35
, and every monthly file here starts at 00:05:00 on the first of the month and stops at 00:00:00 on the first of the next. So the year counted is the 105,120 intervals ending from 2025/11/01 00:05:00 to 2026/11/01 00:00:00 in each of five regions: every one present once, no gaps, no duplicates. Times are the file's own, in AEMO's market time. AEMO's spot market timetable says References to time are references to Australian Eastern Standard Time (AEST)
; the price file does not say which clock it uses, so this page converts nothing and names no offset from UTC.
AEMO can change a price after it is published. When a price is adjusted, its data model says, the new price is written to the RRP field, and the old price to the ROP field as an audit trail
. So every count here is for the 60 files as downloaded on 2026-11-01, frozen with their SHA-256 hashes; a later download could differ, and the check at the foot of the page says how to find out.
Who saw it
These are wholesale spot prices, the prices the market settles at. The Reliability Panel, reviewing the market's price limits in 2026, put the consequence in one line: load is often not exposed to spot prices
. A household on an ordinary retail tariff, one whose price per kilowatt-hour does not follow the spot market, saw none of these hours.
Why would anyone sell below zero? In its analysis of historic negative prices the Panel finds a cluster of dispatch intervals at approximately -$50/MWh, the negative of large-scale generation certificate (LGC) prices
, because LGCs provide additional revenue above the spot price and thus work to essentially shift an eligible generator’s SRMC to a negative value
. South Australia's year does not have that shape: most of its below-zero prices sat close to zero. Of its 30,008 intervals below zero (this page's count), 58.1% were at -$10/MWh or higher and only 1.7% within $5/MWh of -$50/MWh; 86.1% were at -$50/MWh or higher, and their average price was -$23.99/MWh. The Panel's own figure is for another year and names no region: In 2024, 81 per cent of all negative intervals were between -$50/MWh and $0/MWh.
The longest unbroken run below zero lasted 518 intervals, 43 hours 10 minutes; its last interval ended at 2025/12/26 19:00:00. On 284 of the 365 days at least one interval was below zero.
Two caps and a floor
The market price cap is the maximum price that can be reached on the spot market during any dispatch and trading interval
, and it is recalculated for each 1 July, so this year has two: $20,300/MWh from 1 July 2025 to 30 June 2026, and $23,200/MWh from 1 July 2026 to 30 June 2027. The AEMC's schedules show the arithmetic, which you can redo: $18,600/MWh × 554.7 / 509.2 = $20,262.02/MWh, and $20,700/MWh × 396.18 / 353.69 = $23,186.76/MWh, each rounded to the nearest $100/MWh.
Being at the cap needs a definition, so here are two. Exactly at the cap in force: 15 intervals, all at $20,300/MWh and all before 1 July 2026, on four days (one on 18 January, three on 26 January, one on 7 February and ten on 22 June 2026). Within 10% of the cap in force, which means at least $18,270/MWh to 30 June and at least $20,880/MWh after: 49. The difference is the prices that stopped just short, at $20,299.99, $20,299.98, $20,217.17, $19,445.56, $19,445.52 and $19,440.55/MWh. After 1 July the highest South Australian price was $16,970.86/MWh, so none came near $23,200.
The market floor price imposes a floor on wholesale spot prices and is currently set at -$1,000/MWh
. South Australia never reached it: its lowest price was -$906.68/MWh, in the interval ending 2025/12/15 14:50:00. Across all five regions the floor was touched once, in Tasmania in the interval ending 2026/09/26 10:50:00, and the $23,200/MWh cap twice: in Tasmania at 2026/07/13 16:20:00 and in New South Wales at 2026/10/10 07:20:00.
| Region | Below zero | Share | Exactly $0 | At the cap | Near the cap | At the floor | Lowest ($/MWh) |
|---|---|---|---|---|---|---|---|
| South Australia | 30,008 | 28.5% | 1,565 | 15 | 49 | 0 | -906.68 |
| New South Wales | 7,854 | 7.5% | 981 | 6 | 10 | 0 | -999.99 |
| Queensland | 12,423 | 11.8% | 2,273 | 0 | 1 | 0 | -245.64 |
| Victoria | 25,994 | 24.7% | 1,855 | 0 | 0 | 0 | -969.97 |
| Tasmania | 5,526 | 5.3% | 265 | 4 | 4 | 1 | -1000 |
Counted from the shipped price files, intervals ending 2025/11/01 00:05:00 to 2026/11/01 00:00:00. At the cap: exactly the cap in force. Near: at least 90% of it.
One choice sits under the cap counts: this page changes the cap at midnight between 30 June and 1 July 2026. AEMO's trading day is The 24-hour period from 0400 hrs to 0400 hrs the following day
, and moving the change to 04:00 alters no count in the table.
Free money for batteries?
The quick conclusion is that a battery charging below zero and selling into the spikes must print money. The quick rebuttal is that any battery model which knows the future is fantasy. Both can be tested against the same 105,120 prices.
The model is one battery of 1 MW holding a chosen number of hours of energy. In each five-minute interval it charges one step, discharges one step or waits, never charging and discharging at once; it starts empty, takes its losses on the way out, and may end the year at any level. It is a price-taker: its own buying and selling never moves the price. It sees the whole year in advance, and an exact dynamic programme finds its best schedule. So the result is this model's upper bound for energy arbitrage alone, not what any real battery earned. It leaves out one of the drivers of battery revenue the Reliability Panel lists, the additional revenue streams outside the wholesale market (e.g. ancillary services)
, and network charges, contracts, bidding and forecasting with it. Power only scales the answer: in this model a battery of twice the power with the same hours of storage earns exactly twice as much.
The battery, with perfect foresight
At 2 hours of storage and 90% round-trip efficiency in South Australia the bound is $238,049.52 for the year. One day, 26 January 2026, holds 16.1% of it. The ten best days hold 39.6%, and half the year's value sits in 35 of its 365 days.
Charging below zero, being paid to take power, earns 19.5% of that value; the rest comes from the spread, buying low and selling high. That agrees with the Reliability Panel, which found that batteries respond to arbitrage opportunities driven by price spread, more so than absolute negative prices
.
Move the efficiency. From 95% down to 80% the bound falls 18.8%, from $255,395.37 to $207,479.48, but the share of the ten best days barely moves, from 39.2% to 39.9%: the losses fall harder on the small everyday spreads than on the spikes.
Replace foresight with a clock. The best fixed daily rule of one charge and one discharge, chosen with hindsight from every pair of two-hour windows on the five-minute grid, charges from 12:05 to 14:05 and discharges from 18:55 to 20:55 every day of the year. It earns $112,894.83, 47.4% of the bound. It does not miss the spikes so much as the ordinary days: on 26 January 2026 it earns $34,092.50 of the bound's $38,390.78, because that evening's spike fell inside its window. Of the $125,154.69 it falls short over the year, 29.1% is on the ten best days. The rest is spread through the year, where foresight moves the windows to fit each day and averages more than four cycles a day. On 30 days the clock loses money.
Count the cycles. The unconstrained optimum runs 1,573 full cycles in the year. Charge it $20 for every MWh it delivers, a stand-in for wear, and it runs 697 while keeping 95.8% of its gross arbitrage: most of the cycling was worth very little.
Then the trap. Let the model charge and discharge in the same five minutes, as a linear programme will unless told not to, and at 90% the bound rises to $238,653.11, $603.59 more. The extra comes from negative prices: drawing a full step while discharging a full step leaves the store where it was and is paid for the energy the losses burn. This model forbids it.
| Region | Bound, $ per MW | Ten best days | Charging below zero | Best one-cycle clock |
|---|---|---|---|---|
| South Australia | 238,049.52 | 39.6% | 19.5% | 47.4% |
| New South Wales | 147,513.84 | 36.3% | 4.1% | 37.5% |
| Queensland | 99,493.35 | 11.0% | 6.2% | 58.9% |
| Victoria | 106,392.93 | 11.7% | 20.7% | 44.8% |
| Tasmania | 73,537.36 | 20.2% | 6.5% | 32.0% |
1 MW, 2 hours, 90% round trip, no wear charge, perfect foresight. Shares of each region's own bound.
The concentration is not a law of batteries. In Queensland and Victoria the ten best days hold 11.0% and 11.7% of the bound, and half of it takes more than 100 days in each, against 35 in South Australia; Queensland's best one-cycle clock reaches 58.9%.
The assumption that carries everything is the price-taker: the model's buying and selling never move the price. That is a fair description of one small battery, and exactly what stops being true if enough storage is built to chase these spreads. This page does not estimate what would happen then; every figure above is for one battery too small to move the price.
The check
One file re-derives every figure on this page that comes from the price files, checks every quoted one against the source's own words, and fails if any sentence disagrees.
curl -sO https://artwaste.land/checks/verify-the-hours-below-zero.mjs
node verify-the-hours-below-zero.mjs
It needs only Node 18 or later. It downloads index.html, engine.mjs, data.json and the five price files beside this page, and then:
- checks each price file against its SHA-256 in data.json, decodes it with its own decoder, and recounts every figure in the counts, the caps, the floor and the region table with a second, plainer implementation;
- redoes the AEMC's cap arithmetic and matches the 2025-26 and 2026-27 values;
- solves the battery again with a forward dynamic programme that shares no code with the page, which must find the same optimum to the cent; checks the page's schedule is feasible and earns exactly that optimum; and enumerates every schedule by brute force on short windows of real prices;
- matches this page's frozen solver runs: a linear-programming solver (HiGHS 1.15.1, run on 2026-11-01) gave 274,611.7033 at 100% efficiency, equal to this page's bound, and 238,653.1077 at 90%, equal to the simultaneous version; a mixed-integer run that forbids charging and discharging at once gave 44,787.4362, 25,984.4723 and 1,348.0101 on three three-day windows (25 to 27 January, 20 to 22 June and 10 to 12 October 2026), which the page's programme matches;
- moves the instruments the way a reader can (every region and test, and the battery at other sizes, efficiencies and wear charges) and checks each readout the page would write against its own count or programme;
- finds every figure the page prints in the passage that states it, and fails on any number in the visible text, the description or the structured data that nothing checked;
- with
--deep, downloads the 60 AEMO files again, compares their hashes with the frozen ones and, whatever the hashes say, compares every price.
The free choices, named:
- The window: the twelve months ending with the interval ending 2026/11/01 00:00:00, the last complete month on 2026-11-01.
- Days are calendar days in market time, midnight to midnight by the start of each interval. Grouped instead by AEMO's 04:00 trading day, the best day holds 16.2% instead of 16.1%, the ten best days still hold 39.6%, and half the value still takes 35 days. Those figures are for the tie-break below; under some of the other orders the trading-day best day holds 16.3%, while the calendar best day holds 16.1% under all six.
- Ties: where two schedules earn exactly the same, the programme waits rather than charges, and charges rather than discharges. The totals do not depend on this; the split between days does, a little. Over all six orders of the three actions, South Australia's ten-best-day share stays between 39.5% and 39.6% and its cycles between 1,573 and 1,580; the largest movement in the battery table is Tasmania's, from 20.2% to 20.5%.
- The cap boundary at midnight, not 04:00 (no count changes); near the cap meaning at least 90% of the cap in force; below zero meaning strictly below $0/MWh, with exactly $0 counted apart.
- The fixed clock: one charge window and one later discharge window, each as long as the storage, inside the same calendar day, on the five-minute grid. A clock with two cycles a day is not searched.
- The battery's conventions: 1 MW drawn when charging; losses taken on output; one step of stored energy per interval; start empty; free end; prices in whole cents, money in exact integers until it is printed. The bound is the bound for these conventions, not for every reading of a 1 MW, 2-hour, 90% battery.
What the check cannot show: that AEMO's prices are right (they are AEMO's), that the files downloaded on 2026-11-01 are still the files AEMO serves (the --deep run looks), or what any real battery earned.
Sources
- AEMO, monthly price and demand files PRICE_AND_DEMAND_YYYYMM_REGION.csv for November 2025 to October 2026 and the regions NSW1, QLD1, SA1, TAS1 and VIC1, each at www.aemo.com.au/aemo/data/nem/priceanddemand/ followed by its name (for example https://www.aemo.com.au/aemo/data/nem/priceanddemand/PRICE_AND_DEMAND_202511_SA1.csv), fetched 2026-11-01 with a SHA-256 hash for each file. Source: AEMO. AEMO grants
general permission for anyone to use AEMO Material for any purpose, but only with accurate and appropriate attribution of the relevant AEMO Material and AEMO as its author
; that wording is quoted from two independent copies of AEMO's copyright permissions page (an OpenStreetMap forum post of 23 March 2025 and an R package's source), because the page itself answered HTTP 403 when fetched on 2026-11-01. The page is https://www.aemo.com.au/privacy-and-legal-notices/copyright-permissions; the copies are https://community.openstreetmap.org/t/use-of-aemo-data/127782 and https://raw.githubusercontent.com/imanuelcostigan/aemo/master/R/aemo.R. AEMO's own documents point to it:The material in this publication may be used in accordance with the copyright permissions on AEMO’s website.
(https://nemweb.com.au/Data_Archive/Wholesale_Electricity/MMSDM/2021/MMSDM_2021_05/MMSDM_Historical_Data_SQLLoader/DOCUMENTATION/MMS%20Data%20Model/v5.0/EMMS%20Release%20FAQ%20-%20October%202020%20-%20Data%20Model%20v5.00.pdf) - AEMO, MMS Data Model Report, tables DISPATCHPRICE (MMS_130) and DISPATCHOFFERTRK (MMS_129), https://visualisations.aemo.com.au/aemo/nemweb/MMSDataModelReport/Electricity/MMS%20Data%20Model%20Report_files/MMS_130.htm and https://visualisations.aemo.com.au/aemo/nemweb/MMSDataModelReport/Electricity/MMS%20Data%20Model%20Report_files/MMS_129.htm, fetched 2026-11-01.
- AEMO, Spot Market Operations Timetable, version 1.10, effective 31 July 2025, section 1.2, https://aemo.com.au/-/media/files/stakeholder_consultation/consultations/nem-consultations/2024/st-pasa-procedures-and-related-documents/spot-market-operations-timetable.pdf?la=en, fetched 2026-11-01.
- AEMC, Schedule of reliability settings, 2025-26 financial year, 27 February 2025. https://www.aemc.gov.au/sites/default/files/2025-02/Schedule%20of%20reliability%20settings%20-%202025-26%20financial%20year.pdf, fetched 2026-11-01.
- AEMC, Schedule of reliability settings, 2026-27 financial year, 27 February 2026. https://www.aemc.gov.au/sites/default/files/2026-02/Schedule%20of%20reliability%20settings%20-%202026-27%20financial%20year.pdf, fetched 2026-11-01.
- AEMC, media release, AEMC updates market price cap for 2026-27, 26 February 2026. https://www.aemc.gov.au/news-centre/media-releases/aemc-updates-market-price-cap-2026-27, fetched 2026-11-01.
- AEMC Reliability Panel, 2026 Reliability Standard and Settings Review, Final report, 23 April 2026, pages 38 to 40 and 62; quoted briefly. https://www.aemc.gov.au/sites/default/files/2026-04/RSSR%202026%20-%20Final%20Report.pdf, fetched 2026-11-01.
- The state names given to AEMO's region IDs (SA1 South Australia, NSW1 New South Wales, QLD1 Queensland, VIC1 Victoria, TAS1 Tasmania): Open Electricity, Networks and Regions, https://docs.openelectricity.org.au/guides/networks/, fetched 2026-11-02; a secondary source.