Tier 3 · Internal Strategy

Energy Inverse Model (EnergyPack)

M-430 · lifecycle: development · RAT-430-v1.0.0 · conditionally-approved scaffold

Intended Use

Energy Inverse Model (EnergyPack) Recover a regulated utility's implied assumptions (allowed ROE, rate-base growth, capex intensity, equity ratio, opex efficiency) from public filings for cross-firm utility assumption recovery and valuation.

ANALYTIC SCAFFOLD (Decision 060) — not a booked-number engine. The thing that genuinely exists is the tenk2win EnergyPack: an inverse model that inverts an analytic regulated-utility forward map (rate-base × equity layer × allowed ROE → cost-of-service regulated earnings; capex_intensity × rate base → capex; opex-efficiency drag → net income; cohort payout → dividend capacity) through the SAME calibrate / recover_vertical / surrogate / counterfactual substrate the insurance and banking verticals use (Decision 037 — vertical-agnostic; the only new content is the pack's θ/y schemas + forward map). It recovers a peer's implied θ from disclosure and supports cross-firm comparison + a P/B allowed-ROE-spread valuation; it does NOT run a regulatory cost-of-service rate case, set an authorized ROE, or compute a booked rate base. Only the two disclosed line items (net_income, capex) anchor the inverse; allowed_roe is left FREE (rate cases are MD&A/ confidential, not XBRL — recovered prior-anchored at the ~9.7% sector norm) and equity_ratio is an honest accounting proxy (common-equity / (equity + LT debt)) for the authorized regulatory layer, flagged in provenance. 8/9 peers recover (AEP/CEG/D/DUK/ED/NEE/SO/XEL); WEC is dropped for stale data. Real utility engines (M-431/M-432) replace the analytic forward() when demand-pulled; the θ/y schemas and the inverse loop around them are unchanged.


Components

Inputs, processing, outputs

dimensions
D3

Model Documentation

θ / y Schema

θ — the latent assumptions a regulated utility's filings imply:

θ meaning observability
allowed_roe authorized return on equity from rate cases (the regulated value driver) FREE — rate cases are MD&A/confidential, not XBRL; recovered prior-anchored at ~9.7% sector norm
rate_base_growth YoY growth of the regulated rate base FREE
capex_intensity capex / rate base (the growth pump) FREE
equity_ratio regulatory equity layer in the authorized capital structure FREE — accounting proxy (common-equity / (equity + LT debt)), flagged equity_ratio_basis=accounting
opex_efficiency non-fuel O&M / revenue (lower = leaner) FREE

y — the filing-visible outputs: rate_base_next, regulated_earnings, capex, net_income, dividend_capacity.

Inverse anchoring (no fabrication): only the two disclosed line items (net_income, capex) anchor the inverse. regulated_earnings, rate_base_next and dividend_capacity are forward/derived (scaffold) and are not used as calibration targets. A target staler than ANCHOR_YEAR − 1 is omitted and flagged; calibrate() skips absent targets, so a thin firm gets prior-dominated θ on the dimensions it cannot anchor.


Validation Evidence

Validation Evidence

The scaffold's evidence is the real-θ recovery over the utility peer set: the pack recovers its implied θ through the same calibrate/recover_vertical used for insurance and banking — no solver changes.

  • 8/9 peers recover: AEP, CEG, D, DUK, ED, NEE, SO, XEL.
  • WEC dropped for stale data — an honest coverage gap, not a fabricated row. Other real extraction gaps are flagged at source (D/SO have no utility_plant_net series; AEP net_income lags; NEE rate base to FY2020) — those firms get prior-dominated θ on the dimensions they cannot anchor.
  • Disclosed sensitivities ((regulated_earnings, allowed_roe), (capex, capex_intensity)) are not yet wired from utility disclosures — left empty (a follow-up, the banking disclosed_sensitivities analogue). observed_theta is empty (nothing disclosed to pin).

No production validation pack exists, and none is expected for a scaffold.


Model Documentation

Upgrade Path

Replace the analytic forward() with the real regulated-utility engines — M-431 regulated rate-base / cost-of-service (authorized rate base + revenue requirement) and M-432 allowed-ROE / rate-case model (authorized return + capital structure from rate proceedings) — and source utility EDGAR plus rate-case proceedings. The θ/y schemas and the whole inverse loop around them are unchanged. Until then those two are status: planned stubs in the registry (demand-pulled), not built engines.


Model Documentation

ID Collision Note

The insightalm model ids use the clean M-430..M-432 block. The tenk2win pack's internal OutputSpec/AssumptionSpec ids (M-601..M-605, A-601..A-605) are pack-local schema labels, not insightalm model-registry ids — and M-601 would collide with insmodel.L4.asset_management in engine_registry.yaml, so it is not reused here (the same discipline banking used to dodge the M-401/M-403 Scheme-B collision).


Change Log

Change Log

  • 2026-06-28 — Created. Energy / regulated utilities enters the governance lifecycle as an analytic scaffold (Decision 060 / insightalm governance-setup). Honest tier (3) / status (under_development); real rate-base/cost-of-service and allowed-ROE/rate-case engines registered as planned stubs.

References

References

  • tenk2win src/tenk2win/packs/energy/pack.py (the EnergyPack forward map).
  • tenk2win src/tenk2win/packs/energy/firms/__init__.py (the real-θ utility firm adapter — what is sourced vs scaffolded).
  • Decision 059 (banking forward map = analytic scaffold, the template), Decision 060 (banking + energy into the governed lifecycle).

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.


Ratification

Conditionally-approved scaffold — RAT-430-v1.0.0

2L issued RAT-430-v1.0.0 as a conditionally-approved Tier 3 analytic scaffold. The model exists, runs, and matches its card — but its approval is intelligence-use-only: its outputs must never be read as a booked, regulatory, capital, or reserving figure. Booked use (and tier promotion) is gated on the PLANNED engines, which are not built. The conditions below are on record.

id deadline condition
C-430-01 INTELLIGENCE-USE-ONLY. M-430 is approved ONLY for cross-firm utility assumption recovery + valuation (decision-support intelligence). It is NOT approved for any booked, regulatory, rate-case, or capital-structure use. Its outputs (recovered θ, analytic regulated_earnings / rate_base_next / capex / net_income / dividend_capacity) must never be read as a regulatory cost-of-service revenue requirement, an authorized rate base, an awarded allowed-ROE, or an authorized regulatory capital structure.
C-430-02 REAL ENGINES ARE THE PRECONDITION FOR BOOKED USE + TIER PROMOTION. Any booked/regulatory utility use requires the PLANNED (not built) engines — M-431 regulated rate-base / cost-of-service (Tier-2) and M-432 allowed-ROE / rate-case (Tier-2) — to be built, registered with real bindings, and independently ratified. M-430 must not be promoted above Tier-3, and its purpose must not be widened beyond internal_strategy, until such an engine replaces the analytic forward() and a use beyond internal strategy is asserted.
C-430-03 THE PROXY / FREE-θ CAVEATS MUST STAY DISCLOSED. The two scaffolded substitutions — (a) the invested-capital proxy rate base for firms lacking a utility_plant_net series (D, NEE) and (b) the FREE prior-anchored allowed_roe + the accounting equity_ratio proxy (the equity layer is RECOVERED, not AUTHORIZED) — must remain explicitly flagged in the card, registry description, and the pack/firm-adapter provenance. Removing or burying these caveats voids this conditional approval.
C-430-04 RE-RATIFY ON ENGINE REPLACEMENT. When the analytic forward() is replaced by a real regulated-utility engine (the M-431/M-432 upgrade path), M-430 (or its successor) re-enters ratification at the new tier with the full Tier-1/2 effective-challenge battery (validation evidence, gold snapshot) — this RAT does not carry forward to a booked-number engine.