Skip to content

Add fair default rate design modules#416

Draft
sherryzuo wants to merge 17 commits intomainfrom
fair-default-rate-design
Draft

Add fair default rate design modules#416
sherryzuo wants to merge 17 commits intomainfrom
fair-default-rate-design

Conversation

@sherryzuo
Copy link
Copy Markdown
Collaborator

Overview

Implements the fair default rate design modules described in issue #398. This PR introduces closed-form math to design a single residential default tariff that eliminates the HP cross-subsidy $X_S$ (measured from BAT run outputs) while preserving the class revenue requirement (RR).

Three strategies are provided:

  • Strategy A (fixed-charge only): Adjusts the fixed charge $F$ while keeping a uniform volumetric rate.
  • Strategy B (seasonal rates only): Adjusts winter/summer rates $r_w, r_s$ at a fixed charge, with feasibility checks and residual reporting.
  • Strategy C (combined cost-reflective): Simultaneously adjusts $F$, $r_w$, $r_s$ subject to a cost-reflective seasonal ratio $\rho_{MC}$.

Deliverables

  • utils/mid/compute_fair_default_inputs.py — compute $N, N_S, W, W_S, U, U_S, X_S$ and strategy A/B/C closed-form solutions from run-1/run-2 outputs.
  • utils/mid/create_fair_default_tariff.py — produce URDB tariff JSON from inputs CSV and chosen strategy.
  • rate_design/hp_rates/Justfile — two new shared recipes (compute-fair-default-inputs, create-fair-default-tariff) plus run-25/26 wiring.
  • context/methods/tou_and_rates/fair_default_rate_design.md — methodology doc with derivations, uniqueness theorem, feasibility region, and worked RIE example.
  • tests/utils/mid/test_compute_fair_default_inputs.py — unit and round-trip tests.

Closes #398

Implements the full orchestration layer for fair-default rate runs:

- **Justfile** (`rate_design/hp_rates/Justfile`): new FAIR-DEFAULT section with
  `path_scenarios_fair_default` vars, `create-fair-default-scenario-yamls`,
  `prepare-fair-default-tariffs`, `run-fd` dispatcher,
  `run-scenario-from` (alternate-YAML dispatch), `run-101`–`run-124` wrappers,
  `all-pre-fair-rate`, and `fair-default-rate-runs` end-to-end recipe.

- **`utils/pre/create_fair_default_scenario_yamls.py`**: generates per-utility
  fair-default scenario YAMLs (24 runs each: 6 subclass×strategy combos × 4
  phases) from the baseline scenario YAML.

- **`utils/mid/prepare_fair_default_tariffs.py`**: orchestrates computation of
  fair-default inputs and emission of 12 uncalibrated tariff JSONs per utility
  (delivery + supply for each of 6 subclass×strategy combos).

- **`utils/pre/compute_tou.py`**: adds `compute_mc_seasonal_ratio` helper used
  by `prepare_fair_default_tariffs` for strategy C (fixed_plus_seasonal_mc).

- **`utils/pre/validate_config.py`**: extends with `--fair-default-dir` arg and
  `_validate_fair_default_dir` that checks every run's `fair_default:` block for
  required keys and valid `strategy` enum values.

- **`rate_design/hp_rates/ny/config/scenarios/fair_default/scenarios_nyseg.yaml`**:
  hand-authored reference YAML for nyseg (all 24 runs 101–124).

- Tests: `tests/test_compute_tou.py` for `compute_mc_seasonal_ratio`; minor
  formatting fixes in `tests/test_compute_fair_default_inputs.py` and
  `utils/mid/compute_fair_default_inputs.py`.
Use Timestamp month/hour via explicit conversion so ty resolves types;
DatetimeIndex stubs omit .month/.hour.
- prepare_fair_default_tariffs: broader fair-default flow and inputs handling
- validate_config / write_tariff_maps_from_scenario: align with new scenario shapes
- loads: support fair-default load paths
- tests: cover fair-default input computation edge cases
- Justfile: recipes or paths for fair-default runs
Scenarios for CenHud, ConEd, NiMo, NYSEG/OR, and RGE under
config/scenarios/fair_default/.
Updated fair-default-aligned gas tariff map CSVs for NYSEG territories.
Generated tariff_map CSVs for CenHud, ConEd, NiMo, NYSEG, OR, and RGE
covering eheat/hp default variants (fixed, seasonal, supply, MC, calibrated).
Includes nyseg eheat/hp default tariff JSON variants and
.fair_default_inputs/ CSV inputs used by fair-default prep.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fair default rate design modules

1 participant