Tier 2 · Internal Strategy

Allowed-ROE / Rate-Case Model

M-432 · lifecycle: development · RAT-432-v1.0.0

Intended Use

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.


Components

Inputs, processing, outputs

engines
energylib.L3.allowed_roe_ratecase
dimensions
D3

Methodology & Mechanics

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

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.

Model Documentation

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=False on 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_pending cells); (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.

Model Documentation

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).


Model Documentation

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

Change Log

  • 2026-06-29 — 1L: added the FERC Form 1 / PUDL realized-ROE validation spine (Decision 062, insightalm#3433). New energylib.realized_roe loader + ferc_form1_realized_roe.json (DEC cited primary anchor — realized ROE 10.94% from the 2024 Form 1; rest flagged pudl_ingest_pending, not faked). Engine now reports realized_roe / realized_roe_sourced / earned_vs_authorized_bps and 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).

2L Inventory Review

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.

HIGH INV-029 · P5 · validation-gap

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.


Validation Coverage

Per-tier expectations

Per MRM Framework §10.2 + §10.3, this model's regulatory_frameworks tag list activates the following overlays:

ferc state_puc internal
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

Ratification

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.