What
The rie_heating.json URDB-format gas tariff for Rhode Island Energy's Residential Heating rate (Rate 12) contains volumetric rates that are ~28–32% too high. The tariff fetch pipeline summed both the heating-season distribution charge ($0.5933/therm, Nov–Apr) and the non-heating-season distribution charge ($0.5317/therm, May–Oct) into every rate period, when in reality only one applies in any given month.
The rie_nonheating.json (Rate 10) is unaffected — its CSV has only a single (non-seasonal) distribution charge row.
Why
This caused all modeled gas bills for heating-rate buildings to be inflated by roughly $0.53–$0.59/therm — approximately $480–$530/year for a gas-heated home consuming ~900 therms/year. The error was discovered during RI rate design analysis (batch ri_20250318c_r1-16). A manual one-time fix was applied to rate_design/hp_rates/ri/config/tariffs/gas/rie_heating.json in the rate-design-platform repo, but the root cause lives in the tariff fetch pipeline: the script that converts Rate Acuity CSVs into URDB JSON apparently sums all rows labelled distribution charge without respecting the season column qualifier.
How
- In
fetch_gas_tariffs_rateacuity.py (or whatever helper builds the URDB period rates from the CSV rows), identify where distribution charge rows are aggregated into volumetric rate periods.
- Add logic to detect rows with a non-empty
season column (e.g. 11/01 - 04/30 vs 05/01 - 10/31) and map them to separate URDB rate periods rather than summing across both seasonal variants.
- The corrected
rie_heating.json should have 4 periods matching these month groupings and rates (derived from the rie_heating.csv source):
| Period |
Months |
Correct rate |
| 0 |
Jan–Mar (heating, summer adj) |
$0.063686/kWh |
| 1 |
Apr (heating, spring adj) |
$0.065945/kWh |
| 2 |
May–Oct (non-heating) |
$0.063843/kWh |
| 3 |
Nov–Dec (heating, winter gcr/adj) |
$0.058560/kWh |
- Verify the regenerated JSON matches the manually corrected file in
rate-design-platform.
- Add a regression check: after fetching, assert that no URDB rate period incorporates more than one seasonal distribution charge row.
Deliverables
- PR to
tariff_fetch fixing the CSV → URDB JSON aggregation to respect seasonal distribution charge row qualifiers
- Regenerated
rie_heating.json that matches the manually corrected version
- Test or assertion guarding against this class of double-counting in future fetches
What
The
rie_heating.jsonURDB-format gas tariff for Rhode Island Energy's Residential Heating rate (Rate 12) contains volumetric rates that are ~28–32% too high. The tariff fetch pipeline summed both the heating-season distribution charge ($0.5933/therm, Nov–Apr) and the non-heating-season distribution charge ($0.5317/therm, May–Oct) into every rate period, when in reality only one applies in any given month.The
rie_nonheating.json(Rate 10) is unaffected — its CSV has only a single (non-seasonal) distribution charge row.Why
This caused all modeled gas bills for heating-rate buildings to be inflated by roughly $0.53–$0.59/therm — approximately $480–$530/year for a gas-heated home consuming ~900 therms/year. The error was discovered during RI rate design analysis (batch
ri_20250318c_r1-16). A manual one-time fix was applied torate_design/hp_rates/ri/config/tariffs/gas/rie_heating.jsonin therate-design-platformrepo, but the root cause lives in the tariff fetch pipeline: the script that converts Rate Acuity CSVs into URDB JSON apparently sums all rows labelleddistribution chargewithout respecting theseasoncolumn qualifier.How
fetch_gas_tariffs_rateacuity.py(or whatever helper builds the URDB period rates from the CSV rows), identify wheredistribution chargerows are aggregated into volumetric rate periods.seasoncolumn (e.g.11/01 - 04/30vs05/01 - 10/31) and map them to separate URDB rate periods rather than summing across both seasonal variants.rie_heating.jsonshould have 4 periods matching these month groupings and rates (derived from therie_heating.csvsource):rate-design-platform.Deliverables
tariff_fetchfixing the CSV → URDB JSON aggregation to respect seasonal distribution charge row qualifiersrie_heating.jsonthat matches the manually corrected version