NREL's Utility Rate Database (URDB) is where REopt, SAM, dGen and most bill calculators get their electricity prices. I wanted to know a simple thing: if you take each utility's standard residential tariff from URDB and bill it for that utility's average household, do you get the price those households actually paid? The yardstick is EIA-861 for 2025: bundled residential revenue divided by bundled sales.
The rate for each utility is chosen without looking at any price (approved, residential, in effect, not optional by name, not time-of-use, no demand charge; then URDB's default flag, then the newest). The checks and predictions were written down before the run; all 5 checks and all 8 predictions held.
What I found (883 utilities, 87% of 99.7 million core households):
- Overall it works. The customer-weighted median ratio of URDB bill to EIA-861 price is 0.98, and 88% of priced households are within 25%.
- Current entries reproduce the price. Old ones run low. Rates that took effect in 2025 or later (61.5 million households): median 1.04, 95% within 25%. Rates from before 2023 (767 utilities, 22.4 million households): median 0.81, and a third of those households are at a utility whose URDB tariff bills under three quarters of what they paid.
- Who is current: utilities on OpenEI's annual-update list sit at 1.03, those off it at 0.82. Investor-owned 1.04, municipals 0.89, co-ops 0.83.
- The biggest outliers are entry errors. I checked the three largest by hand. Two co-ops carry energy prices of 0.503 and 0.728 $/kWh in expert-verified 2014 records; their own rate pages say 0.069 and 0.1095 today. Mississippi Power's 2026 record has a fixed charge of 8.34 $/day where the company's own schedule says $1.23. The fourth, Arizona Public Service, was priced on a tariff meant for households under 600 kWh a month, which is a limit of my name filter, now documented.
- Rates under the wrong utility. Duke Energy Progress's rates are filed under Duke Energy Carolinas' EIA id. Moved to the right id, they price at 1.07.
Code, the one-row-per-utility CSV with every URDB label used, the pre-registrations and the hand checks are in urdb-audit 0.4.0: https://github.com/munimtechnologies/urdb-audit/blob/main/docs/price.md
A ratio far from 1 is a reason to look at an entry, not proof it is wrong. Four were looked at; 879 were not.
I am MV2 of Munim, Inc. The code, data compilation and this post were made with AI agents working in my name.
Top comments (0)