Skip to content

Run new epmc runs for NY and validate results#391

Open
alexhyunminlee wants to merge 26 commits intomainfrom
388-verify-ny-cairo-batch-after-epmc-deliverysupply-residual-split
Open

Run new epmc runs for NY and validate results#391
alexhyunminlee wants to merge 26 commits intomainfrom
388-verify-ny-cairo-batch-after-epmc-deliverysupply-residual-split

Conversation

@alexhyunminlee
Copy link
Copy Markdown
Collaborator

Summary

This PR adds script to run the new epmc runs (17 to 24) for NY, runs them, and validates the results with previous runs.

Closes #388
Closes #390

alexhyunminlee and others added 24 commits April 8, 2026 14:37
* Wire rate case test year revenue requirements to RI runs

Add optional `test_year_customer_count` and `resstock_kwh_scale_factor`
fields to revenue requirement YAMLs. When present, these override the
EIA-861 customer count and scale electric loads respectively, so that
RI runs use rate-case-derived values instead of EIA estimates.

- Add customer_count_override and kwh_scale_factor to
  RevenueRequirementConfig and ScenarioSettings; wire through
  _parse_utility_revenue_requirement and _build_settings_from_yaml_run
- In run(), use customer_count_override for return_buildingstock when
  present (fall back to EIA-861); apply kwh_scale_factor to electric
  loads after loading
- Update rie_default.json to 1 flat delivery rate ($0.14058/kWh) and
  rie_default_supply.json to 3 seasonal bundled rates (Winter $0.31312,
  Summer $0.24732, Fall $0.29434), both with $10.01 fixed charge
- Create rie_rate_case_test_year.yaml with rate-case-sourced budgets
  and rie_large_number_rate_case_test_year.yaml with scaling fields
- Modify compute_subclass_rr.py to propagate test_year_customer_count
  and resstock_kwh_scale_factor from base RR YAML to generated output
- Make compute-subclass-rev-requirements read base_rr and
  differentiated_rr paths from the scenario YAML at runtime via
  resolve_rr_paths.py (works for both NY and RI without hardcoding)
- Add tests for new optional fields in _parse_utility_revenue_requirement

Made-with: Cursor

* Add rate year 1 rr yaml

* Add all-pre-rate-case recipe that skips default tariff generation

For utilities whose default tariffs are hand-edited from rate case
filings, create-default-structure-tariffs would overwrite them.
The new recipe is identical to all-pre minus that one step.

Made-with: Cursor

* Add scenarios and new default and seasonal precalibrated rates that use rate case test year rr

* Fix relative path bug for new subclass rr logic

* Fix another relative path bug

* Run ri_20260331_r1-20_rate_case_test_year
The RI marginal cost table now includes a dollar_year column so the
2019-dollar value ($80.24/kW-yr) can be automatically inflated to the
target run year using CPIAUCSL data from s3://data.sb/fred/cpi/.

- Add load_cpi_inflation_factor(): reads CPI parquets from S3, returns
  CPI_to / CPI_from for any from/to year pair
- Add --target-dollar-year (default: --year) and --cpi-s3-base CLI args
- Inflate mc_sub_tx_and_dist in main() when dollar_year column is present
  and differs from target; skip silently when column is absent (NY tables)
- Strip whitespace from MC table column names and string values on load
  to guard against hand-editing artifacts
- Fix spacing in ri_marginal_costs_2025.csv header and value rows

Made-with: Cursor
…idual-split' of https://github.com/switchbox-data/rate-design-platform into 388-verify-ny-cairo-batch-after-epmc-deliverysupply-residual-split
…idual-split' of https://github.com/switchbox-data/rate-design-platform into 388-verify-ny-cairo-batch-after-epmc-deliverysupply-residual-split
…after-epmc-deliverysupply-residual-split

Made-with: Cursor

# Conflicts:
#	rate_design/hp_rates/ny/config/rev_requirement/coned_hp_vs_nonhp.yaml
#	rate_design/hp_rates/ny/config/rev_requirement/nimo_hp_vs_nonhp.yaml
#	rate_design/hp_rates/ny/config/rev_requirement/nyseg_hp_vs_nonhp.yaml
#	rate_design/hp_rates/ny/config/rev_requirement/or_hp_vs_nonhp.yaml
#	rate_design/hp_rates/ny/config/rev_requirement/psegli_hp_vs_nonhp.yaml
#	rate_design/hp_rates/ny/config/rev_requirement/rge_hp_vs_nonhp.yaml
#	rate_design/hp_rates/ny/config/tariff_maps/gas/cenhud_u00.csv
#	rate_design/hp_rates/ny/config/tariff_maps/gas/nyseg_u00.csv
#	rate_design/hp_rates/ny/config/tariff_maps/gas/nyseg_u02.csv
#	rate_design/hp_rates/ny/config/tariffs/electric/cenhud_hp_seasonalTOU_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/cenhud_hp_seasonal_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_flat_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_flat_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonal.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonalTOU_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonalTOU_flex_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonalTOU_flex_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonalTOU_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonal_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonal_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_hp_seasonal_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_nonhp_default_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/coned_nonhp_default_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_hp_flat.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_hp_flat_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_hp_flat_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_hp_seasonalTOU_flex_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_hp_seasonalTOU_flex_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_nonhp_default_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nimo_nonhp_default_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_flat_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_flat_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_flat_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_seasonal.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_seasonalTOU_flex_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_seasonalTOU_flex_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_seasonal_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_hp_seasonal_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_nonhp_default_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/nyseg_nonhp_default_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/or_hp_flat.json
#	rate_design/hp_rates/ny/config/tariffs/electric/or_hp_flat_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/or_hp_flat_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/or_hp_flat_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/or_hp_seasonal_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/or_nonhp_default_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_flat.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_flat_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_flat_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_flat_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_seasonal.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_seasonalTOU_flex_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_seasonalTOU_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_seasonal_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_hp_seasonal_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/psegli_nonhp_default_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_flat.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_flat_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_flat_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_flat_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_seasonal.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_seasonalTOU_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_seasonalTOU_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_seasonal_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_seasonal_supply.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_hp_seasonal_supply_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_nonhp_default_calibrated.json
#	rate_design/hp_rates/ny/config/tariffs/electric/rge_nonhp_default_supply_calibrated.json
…idual-split' of https://github.com/switchbox-data/rate-design-platform into 388-verify-ny-cairo-batch-after-epmc-deliverysupply-residual-split
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants