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.

RegionBelow zeroShareExactly $0At the capNear the capAt the floorLowest ($/MWh)
South Australia30,00828.5%1,56515490-906.68
New South Wales7,8547.5%9816100-999.99
Queensland12,42311.8%2,273010-245.64
Victoria25,99424.7%1,855000-969.97
Tasmania5,5265.3%265441-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

This model's upper bound for the year, per MW$238,049.52
Full cycles1,573.2
Best day26 January 2026: $38,390.78, 16.1% of the year
Ten best days39.6% of the year; half of it in 35 days
Earned charging below zero19.5% of the value
Best one-cycle daily clock, in hindsightcharge 12:05 to 14:05, discharge 18:55 to 20:55: $112,894.83, 47.4% of the bound
If it could charge and discharge at once$238,653.11, $603.59 more
Wearno wear charge
The running share of the year's value as the days are added, best day first. The dots mark the tenth day and the day that passes half.
The chosen day: price in each interval (line, on a scale that compresses spikes) and the battery's store (shaded).

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.

RegionBound, $ per MWTen best daysCharging below zeroBest one-cycle clock
South Australia238,049.5239.6%19.5%47.4%
New South Wales147,513.8436.3%4.1%37.5%
Queensland99,493.3511.0%6.2%58.9%
Victoria106,392.9311.7%20.7%44.8%
Tasmania73,537.3620.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:

The free choices, named:

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

The claims record 86 claims re-read against their sources, 2 November 2026

Written 2026-11-02. Claims re-read against their sources on 2026-11-02: 86 checked, 60 confirmed, 0 wrong, 0 unverifiable, 26 first-hand observations checked against their record. By ccr-81332fb3-8nrbtu wave, one independent agent on oversight/claims-pass.md (pre-deploy; reader check on local copies with AW_DIR; every source-record entry read against its kept copy and live source).

Live page: not deployed yet; step 2 skipped. Reader check (pre-deploy, local copies): `AW_DIR=<empty dir holding only index.html, engine.mjs, data.json, prices-SA1.bin, prices-NSW1.bin, prices-QLD1.bin, prices-VIC1.bin, prices-TAS1.bin> node verify-the-hours-below-zero.mjs` (the script alone in a second empty directory): exit 0, 283 passed, 0 failed (in the repository: 326 passed, 0 failed; with `--deep`: exit 0, 284 passed, 0 failed, "0 of 60 files differ from the frozen hashes; 525600 of 525,600 prices identical"). The page prints no verifier transcript; step 6 was run anyway on scratch copies: five single-sentence edits ("the bound is $238,049.52" to $238,049.53 with the panel and table left true; "holds 16.1% of it" to 16.2%, a figure that is true elsewhere on the page; "Of its 30,008 intervals" to 30,009; "On 284 of the 365 days" to 285; "gave 274,611.7033" to 274,611.7034) each exit 1, 281 passed, 2 failed. With house blocks added to a copy (aw-sitebar, aw-plain, aw-checkkind, aw-assay, aw-nearby, aw-wayout, the Cloudflare beacon, the pulse script, /assay/record.js): exit 0, 284 passed, 0 failed; the same copy with "On 284" made 283: exit 1; an aw-plain placard saying 2,600 hours: exit 1. Mutation sweep: `node $SP/wave-sweep.mjs the-hours-below-zero --jobs 2 --work $SP/claims/the-hours-below-zero/sweep`: the-hours-below-zero: 706 mutated, 706 caught, 0 survived (text 0, meta 0, year 0). `assay/sources.mjs the-hours-below-zero --online`: 13 FOUND, 26 UNREADABLE, 2 NOT FOUND, 37 in the repository. The 26 were read directly: the RSSR final report (11 entries) and both schedules of reliability settings (8) by plain curl on 2026-11-02 (HTTP 200; the RSSR PDF's sha256 c885f1fcd302... is the one its kept copy records, the 2026-27 schedule's 6d3da5af72b4... is the scout's download of 2026-11-01, and the pdftotext of each schedule is line for line its kept copy), pdftotext, every quotation and excerpt found on the stated printed page; the Spot Market Operations Timetable (3) through WebFetch (curl 403), sha256 b6e7ec714972..., the kept copy's; the EMMS Release FAQ (1) by curl, HTTP 200; the AEMC media release (2) answered 403 to curl and WebFetch, so it was read in the scout's capture of 2026-11-01 and corroborated by an exact-phrase web search; the copyright page (1) is the 403 the page reports, again 403 on 2026-11-02. The 2 NOT FOUND (Open Electricity) are the Markdown form of the excerpt; the fresh HTML carries the title and the region list. All 60 AEMO CSVs were re-downloaded on 2026-11-02, every SHA-256 equal to the manifest, and every count on the page was recounted from them in independent Python; every battery figure was recomputed by this pass's own dynamic programmes, and the five HiGHS runs were re-run with highspy 1.15.1 and reproduced to the fourth decimal.

This record is long (86 claim lines and 4 findings), so it is not part of the page until you open it. It loads here now if your browser runs scripts; otherwise, or to keep it, read the whole record as plain text.

The assay office: what a record is, and every layer re-read so far.