A power grid runs into trouble when net load — electricity demand minus wind and solar — swings hard and fast. Those ramps are what the expensive, fast-reacting units have to chase, and on a renewables-heavy grid they are getting steeper. Knowing an hour or two ahead that the next ramp will be a rough one is worth something to the people scheduling that. This is a small, stubborn result about seeing one coming.
One number does the work. Take PJM’s own day-ahead demand forecast, look at the part of its error that its recent history didn’t predict — the innovation — strip the sign, and standardize it using only the past. That scalar, |S1|, has no weather feed and no price data in it at all. It is one public input stream, and nothing else.
When |S1| is in its top 10% of hours, a top-decile net-load ramp in MISO — a different balancing authority next door — is about 2.65 to 2.90× more likely over the next one to three hours. It held in 2022, 2023, and 2024, past a season×hour matched-null permutation test at p < 1×10−4 each year; the dependence rises monotonically across |S1| deciles (Spearman 0.94–0.98), it improves calibrated probabilities out of sample (positive Brier skill), and it survives episode leave-one-out. Four ensemble weather-dispersion features, run through the same battery, added nothing on top of it.
Here is what I am careful about, because it is where these things usually go wrong. This is archived, revised EIA-930 data; whether the signal survives on the first-published numbers you’d actually have in real time is untested, and I say so. It is a forecasting result, not a trading, alpha, or profitability claim. And skill is measured against the base rate, not against a real ramp forecaster — so there is no claim that this beats what grid operators already use.
The provenance part is the point. The original analysis code was lost to ephemeral scratch; rather than ask anyone to take the result on faith, it was rebuilt from a frozen specification by two independent clean-room implementations, each blind to the answer. They reproduce the verdicts and agree with each other to about 2%. That is labeled R1 — verdict- and phenomenon-level reproduction — and it is not dressed up as more. The full reproduction engine (both implementations, the built panels, the certification battery) is released openly under MIT, so you can run it against public data and try to break it.
→ The paper (Zenodo, CC BY) · the reproduction engine (GitHub, MIT)
Method note: language-model tools assisted with prose and analysis-code generation under author-defined statements, checks, and reporting constraints; every result is machine-emitted by the released engine and reproduced by two blind implementations. I reviewed and take responsibility for every analysis and claim.