Allowed-ROE / Rate-Case Model Model the authorized return on equity and capital structure a utility is awarded in a state-PUC / FERC rate case, and validate it against the realized book ROE the utility actually earns (FERC Form 1 / PUDL) — the authorized-anchor + realized-spine two-lane (Decision 062).
BUILT + ACTIVE (1L Decision 060/051; 2L-ratified RAT-432-v1.0.0). The real allowed-ROE / rate-case engine (energylib.L3.allowed_roe_ratecase, energyview repo) that replaces the M-430 scaffold's prior-anchored FREE allowed_roe (recovered ~9.7% sector norm) + accounting equity-ratio proxy. TWO LANES (D062, free/public sources): (1) AUTHORIZED/ANCHOR lane — sourced authorized θ (allowed_roe + authorized equity ratio) rolled up from operating-subsidiary state-PUC rate-case orders (8/9 peers; CEG merchant → sourced=False), deriving authorized WACC + allowed-ROE spread; (2) REALIZED/SPINE lane — realized book ROE = FERC Form 1 net income / avg proprietary capital (regulator-reported, open via PUDL/Catalyst Cooperative; DEC the cited primary anchor at 10.94% from the 2024 Form 1, remaining cells flagged pudl_ingest_pending — null, never guessed). Reports earned_vs_authorized_bps (realized − authorized: the regulatory-lag/value signal); the spine validates the anchors. Excludes formula-mechanism (Rate-RSE/PEP), FERC-transmission, divested, and merchant rows — flagged, never fabricated. Tier-2 (decision-support / valuation input). RESIDUAL PAID-DATA GAP (flagged, not faked): full per-subsidiary realized coverage (PUDL bulk-ingest) + the predictive rate-case-outcome tier (pending/forecast cases, paid RRA/EEI) stay client-funded.
Inputs, processing, outputs
- engines
-
energylib.L3.allowed_roe_ratecase
- dimensions
- D3
Methodology — two lanes (Decision 062)
REALIZED / SPINE lane — energylib.realized_roe (FERC Form 1 / PUDL):
- Realized θ (holding-company) = realized_roe = FERC Form 1 net income / average
proprietary capital, rolled up as a proprietary-capital-weighted mean of the
rollup=true subsidiary rows. Unlike the authorized roll-up, FERC Form 1 gives the
equity base per subsidiary — so this roll-up is weighted (a strictly better roll-up).
- Source: FERC Form 1 is regulator-reported and structured (open via the PUDL dataset,
Catalyst Cooperative — core_ferc1__yearly_income_statements_sched114 net income +
core_ferc1__yearly_balance_sheet_liabilities_sched110 proprietary capital). DEC is the
cited primary anchor (Net Income $1,899,286,458 / avg proprietary capital → realized ROE
10.94%, read line-by-line from the 2024 Form 1). Confidence 1.0 where cited; the remaining
per-subsidiary cells are flagged pudl_ingest_pending (the PUDL bulk-ingest residual).
AUTHORIZED / ANCHOR lane — energylib.ratecase (state-PUC rate-case orders):
- Authorized θ (holding-company) = unweighted mean of the operating subsidiaries'
authorized ROEs / authorized equity ratios over the rollup=true rate-case rows
(sourced under insightalm#3416). Unweighted because per-subsidiary rate-base weights are
not in these public sources — a documented approximation, NOT a rate-base-weighted system ROE.
- Derived: authorized WACC = equity_ratio·allowed_roe + (1−equity_ratio)·cost_of_debt;
allowed-ROE spread = allowed_roe − cost_of_equity (the regulated value driver).
Two-lane reconciliation:
- earned_vs_authorized_bps = realized − authorized (the regulatory-lag / value signal:
negative = under-earning / lag; positive = favorable cost performance or non-rate-case
earnings). The spine validates the authorized anchors sit in a plausible band.
- The authorized lane additionally reconciles the rolled-up authorized ROE vs (a) its
per-subsidiary sourced values (range / dispersion) and (b) the M-431 recovered ~9.7% prior
(the sourced-vs-recovered delta in bps).
- Excluded from a roll-up (flagged, not fabricated): formula-mechanism rows
(Alabama Power Rate-RSE, Mississippi Power PEP, black-box WACC settlements — no single
ROE), FERC transmission rows (wholesale formula/incentive ROEs — never blended into
retail), divested subsidiaries.
- Merchant (CEG): competitive generation at FERC market-based rates — no authorized
ROE; the engine returns sourced=False and refuses to assign one.
- No firm value hardcoded — every input is a contract parameter (InsModel bscr_engine
precedent).
Validation Evidence
energyview repo: validation_evidence/M-432/ — per-peer two-lane reconciliation.
- Authorized-ROE anchor coverage: 8 / 9 peers (DUK, D, SO, AEP, XEL, ED, WEC, NEE);
CEG merchant →
sourced=False. The authorized spectrum is real: NEE highest (~10.95% / 59.6% equity — FPL's premium Florida ROE), ED/XEL lowest (~9.5%, NY/Minnesota). - Realized-ROE spine coverage: 1 / 9 peers cited primary (DEC) — Duke Energy Carolinas'
2024 FERC Form 1: Net Income $1,899,286,458 (Statement of Income line 78), Total Proprietary
Capital $17,841,919,371 / $16,894,743,032 (Comparative Balance Sheet line 16). Realized ROE
10.94% vs ~9.95% authorized → earned ~+99 bps ABOVE authorized (favorable cost
performance / rate timing, not lag) — a real earned-vs-authorized signal that validates the
authorized anchor. The remaining peers' realized cells are flagged
pudl_ingest_pending(the PUDL bulk-ingest residual — null, never guessed). Regenerate:validation_evidence/M-432/reconcile.py.
What is real vs flagged (no fabrication)
- REAL — realized spine (regulator-reported, cited): DEC's FERC Form 1 net income + proprietary capital → realized ROE (confidence 1.0, read line-by-line from the primary filing).
- REAL — authorized anchor (sourced, cited): per-subsidiary authorized ROE + authorized equity ratio from state-PUC rate-case orders (most-recently authorized retail figure; pending cases excluded); the roll-up to holding-company θ.
- EXCLUDED (flagged, not fabricated): formula-mechanism / FERC-transmission / divested rows;
merchant CEG (no authorized ROE AND no regulated realized ROE —
sourced=Falseon both lanes). - RESIDUAL PAID-DATA GAP (flagged, not faked — the line free data does NOT cross): (1) full
per-subsidiary realized-ROE coverage is a PUDL bulk-ingest (
pudl_ingest_pendingcells); (2) the predictive rate-case-outcome model (pending/forecast cases) needs a paid RRA / S&P "Major Rate Case Decisions" or EEI dataset. Free public data gets the spine + the anchors; full authorized normalization is the paid line.
Downstream
M-432's sourced authorized ROE / equity ratio replace the M-431 cost-of-service
engine's recovered allowed_roe + accounting equity-ratio proxy for the sourced firms
(M-431 upgraded to sourced-where-available — see its card / validation evidence). This
addresses the open condition carried in RAT-431-v1.0.0 for the 7 sourced operator-surface
peers (CEG stays recovered, honestly — it is merchant).
Status
under_development. Engine bound (energylib.L3.allowed_roe_ratecase), now two-lane:
realized-ROE spine (FERC Form 1 / PUDL — free/public, DEC cited primary) + authorized-ROE
anchor (state-PUC orders, 8/9 peers). Validation evidence present. 1L build — awaiting 2L
effective challenge. The model is off its "conditional on paid RRA data" gate for the
disclosed + realized tier (Decision 062); the predictive rate-case-outcome tier and full
per-subsidiary realized coverage (PUDL bulk-ingest) remain the residual paid/build gap.
Change Log
- 2026-06-29 — 1L: added the FERC Form 1 / PUDL realized-ROE validation spine (Decision 062,
insightalm#3433). New
energylib.realized_roeloader +ferc_form1_realized_roe.json(DEC cited primary anchor — realized ROE 10.94% from the 2024 Form 1; rest flaggedpudl_ingest_pending, not faked). Engine now reportsrealized_roe/realized_roe_sourced/earned_vs_authorized_bpsand a two-lane reconciliation ({authorized, spine}). Realized cells clear the regulator-reported bar; authorized anchors flagged Tier-3-intelligence. Moves M-432 off the paid-RRA gate using free public data. Residual paid line named explicitly. - 2026-06-28 — 1L build:
energylib.L3.allowed_roe_ratecase(energyview) + sourced-θ loader (energylib.ratecase) + per-peer reconciliation evidence; registry/card moved planned → under_development. Sources authorized θ for 8/9 peers (CEG merchant, unsourced). Predictive rate-case-outcome tier flagged data-gated, not built. Ready for 2L. - 2026-06-28 — Created as a planned backlog stub (Decision 060 / energy governance-setup).
Open findings (1)
Independent 2nd-line review (INV-2026-06) — implemented capability vs registered scope. Each carries a recommended fix and is tracked in insightalm-mrm until closed.
Validation evidence + change logs missing across most of the inventory
Only M-001/M-020/M-050 carried full documentation packs before this pass. Most models record validation_evidence: missing and change_log: missing with peer_review: pending. Gold tests freeze behaviour but many assert only structural invariants (e.g. reserve>0), not correctness against external truth. The flagship T0-vs-10-K match is circular (BV-032).
Recommendation: For each Tier-1 model: produce a validation-evidence pack (back-test vs disclosed results once BV-032 re-calibration lands, sensitivity suite, challenger comparison), a change log, and a 2L ratification. Sequence behind BV-032 (firm-data) for anything needing 10-K reconciliation.
Per-tier expectations
Per MRM Framework §10.2 + §10.3, this model's regulatory_frameworks tag list activates the following overlays:
| component | tier-2 expectation | status |
|---|---|---|
| Registry entry | required | present |
| Model card (§10.5 doc pack) | required | present |
| Validation evidence | required | present |
| Change log | required | present |
| Independent effective challenge (2L) | required | n/a |
Ratified — RAT-432-v1.0.0
Latest ratification on file: RAT-432-v1.0.0. Authored by 2L (mrm-peer-reviewer) per Decision 028 charter §5 Pattern A.