Who Pays?

Pre-registration proof

Check our work

You should not have to trust us that the test was written down before the answer was known. Here is how to check, and what we did differently from the plan.

What we did

We froze the method, the code and the data inputs, and listed every frozen file with its SHA-256 fingerprint in one file. We fixed a fingerprint of that list in the Bitcoin blockchain with OpenTimestamps; the plan's timestamp is confirmed in four Bitcoin blocks. We ran the test on 5 October 2026 and committed its log.

The run log's stamp is confirmed in three Bitcoin blocks, the earliest at 18:49 UTC on 5 October 2026, about three hours after the run started. So the log, and the results fingerprint inside it, existed in exactly this form by then.

What the stamps show, and what they don't

The plan's stamp shows the plan, and every code and data file listed in it, existed in exactly this form by 30 September 2026 (23:48 UTC), before the run. The stamps can't show three things: what we would have done with a different answer; that the test was run only once; or that nobody looked at price data before the plan was fixed. The plan lists what we already knew when we wrote it (its section 0). Because its random seed is fixed, re-running the test on the same files gives the same numbers. Nobody outside the team knew the plan existed until now. Our promise to publish a null result is a promise, and this page is the first evidence of it.

The fingerprints

Fingerprint of the list of frozen files (the value that was stamped):

bda29a49b8dfba6a4c0c7a1ff04752556d30d551b9a39bd7007416f2c77e441b

Run log, SHA-256:

ae23eb961057e9d77c5a499465ecef87ea3529c565656fd38251284504e9eccb

Pre-registration text, SHA-256 (also one line in the frozen list):

2a3cd989847458174dbeae74113ec32561373f67516142af41af62d4f24dc500

The pre-registration was tagged prereg-v1 in version control at commit 564594d225d27ee8ad345f70606c3175f11db929. The analysis started at 2026-10-05T15:42:09Z.

Files, unchanged

  • PREREGISTRATION.md: the plan, including how every possible result would be reported.
  • prereg-v1.sha256 and prereg-v1.sha256.ots: the list of frozen files and its timestamp proof.
  • RUNLOG.md and RUNLOG.md.ots: the log of the one real run, and its timestamp proof. The log shows the folder it ran from on our machine; it is published unedited because editing it would change its fingerprint.
  • results.json: every number on the answer page comes from this file.

Do it yourself

sha256sum prereg-v1.sha256        # should print the first fingerprint above
sha256sum PREREGISTRATION.md      # should match its line inside prereg-v1.sha256
grep PREREGISTRATION.md prereg-v1.sha256
sha256sum RUNLOG.md               # should print the run log fingerprint above
ots verify prereg-v1.sha256.ots   # OpenTimestamps client
ots verify RUNLOG.md.ots

ots verify needs access to a Bitcoin node. Without one, drop a file and its .ots on the verifier at opentimestamps.org, or run ots info and compare the listed block's merkle root with any block explorer.

Re-run it yourself

Every file the plan lists, including the code and all 21 data files, is published unchanged under /frozen/, in the same folder layout the list uses. Download that folder and run sha256sum -c prereg-v1.sha256 inside it. The README says where each dataset comes from, credits PJM for the two data-centre forecast tables, and corrects a licence label in one of the logs.

Reading results.json

usd_ci is the plausible range in dollars a month; usd_month is the single best guess. breakdown_mbar is zero because the range already includes zero, so it is not a warning. The last row of robustness is marked deferred: it re-runs the test on EIA's final numbers once they are published.

Where we departed from the plan

  • D1. The plan says the run log is committed immediately after the run. It was committed about two hours later (run finished 08:49 PT, committed 10:55 PT, 5 October 2026). The log records its own fingerprint of the results file, and that fingerprint still matches.
  • D2. The plan says the run follows the plan's timestamp without delay. The plan's stamp was confirmed around 1 October; we ran on 5 October. Nothing in the plan, code or data changed in between (the only commit was the timestamp proof).
  • D3. After the pre-registered run, we computed standard errors for the pre-2024 yearly estimates (for the error bars on the chart; the estimates themselves are the plan's check 1, to the last digit). We also looked at year-by-year estimates for 2024 onward. They were not in the plan, were not tested the same way, and we do not publish them. None of them pointed to a rise; we leave them out because a single year of preliminary data is easy to over-read, not because of what they show.
  • D4. The co-op and municipal robustness row re-applied the minimum-size rule to the combined sample, which left out 20 co-op and municipal utilities in regions too small to compare (189 units in that row).
  • D5. The plan says each utility page leads with that utility's own price change. For utilities where some households buy power from another supplier, EIA's monthly average price mixes full-service and switched customers, so if we add utility pages, those utilities will show their state's average instead of a dollar line of their own. No utility pages exist yet (see D6).
  • D6. The plan includes four things this first release doesn't have yet: a descriptive page for the PJM grid (no test, prices shown zone by zone), a page for each utility with a ZIP-code lookup, and charts of state gas prices and regional inflation beside the result (plus wildfire-related rate requests in the West). We left them out because each one needs data or review we haven't finished. In PJM, most utilities sell only delivery, so EIA's average price there isn't a full-service price. A ZIP lookup needs a ZIP-to-utility map we don't have. The only other series shown here is the national wholesale gas price. When any of them is added, it will be listed below with its date.

Changes

Published 7 October 2026. Changes since: none.

Every later change, including each item in D6 as it is added and the re-run on EIA's final figures, will be listed here with its date.