You'd think electricity demand follows the temperature: hot day, AC on, load climbs. So plot one against the other across a single day. It should be a line. It is a loop — and at the very same temperature the grid pulls a different load in the morning than at dusk. The grid remembers what time it is. Live from California.
—
extra load at dusk vs morning at one identical temperature
—
how much more the grid pulls for the same air temperature
—
midday: the air warmed, yet metered demand fell
—
the loop's sense — a day never repeats a load
California demand vs air temperature, hour by hour. If demand followed temperature it would trace a line. Press play; the day draws itself.resolving…
night / dawnmiddayduskthe live hour
Each dot is one hour. Its position left-to-right is the air temperature averaged across California's cities; its height is the electricity demand the grid operator actually metered that hour. Follow the colour from cool (the small hours) through pale gold (midday) to red (dusk). A demand that depended only on temperature would have every dot fall on a single rising curve — hotter air, more cooling, more load, and the path would retrace itself exactly. Instead the path swings out and comes back on a different route. The gap between the two routes is the headline: at —, the grid pulled — in the late morning and — at dusk. Same air. Same state. — more power.
Why a loop? Because demand answers to the clock, not just the thermostat. Two clocks, really. Through late morning the path runs the wrong way — the air warms several degrees while the metered load falls — because a million rooftops are quietly generating their own midday power, and the grid only sees what's left. Then the sun drops, the rooftops go dark, the air is still warm, people come home and the air-conditioning that was lagging behind the heat finally catches up. Load erupts. The building's thermal mass, the rooftop solar, the human day — each is a memory the temperature alone can't see, and each one pulls the evening's load away from the morning's.
This is hysteresis: an output that depends not only on the input now but on the path that got you here. Iron keeps it in its magnetism; a thermostat keeps a sliver of it as the gap between switch-on and switch-off. A power grid keeps a whole day of it. The enclosed area of the loop is, quite literally, the work the clock does that the thermostat can't explain.
How this was built. California ISO metered demand — the load the operator serves for about 80% of the state — read from the public CAISO Today's Outlook feed (current/demand.csv), sampled at the top of each hour in Pacific time. Air temperature is a population-weighted average of eight California metros (Los Angeles, San Diego, the Inland Empire, San Jose, San Francisco, Sacramento, Fresno, Bakersfield) from the open-meteo hourly forecast, weighted by metro population so the curve tracks where the load actually is. Each hour pairs that temperature with that hour's demand; the loop is those pairs in time order. The "widest gap" splits the day at the temperature peak into a rising (morning) arm and a falling (evening) arm, then finds the temperature where the two arms are farthest apart in demand, interpolating linearly along each. CAISO's "current demand" already nets out behind-the-meter rooftop solar, which is exactly why the midday arm runs backwards — that is the rooftop fleet's fingerprint, not a fall in real consumption. A snapshot, baked when this page was last refreshed; the day's loop is stable once traced. The truth-check recomputes the signed loop area, the widest gap, and the backwards arm from the same series.
The PloverData: CAISO Today's Outlook · open-meteo · 8 CA metros, pop-weighted · Snapshot · No build step · Source on request