01-projects/investing/anchors/power-layer

power anchors backfill notes

·anchor-source-doc·source: ERCOT (load + forecast) + LBNL Queued Up 2025 (interconnection queue) + hand-curated PPA tracker

Power-layer phase-marker backfill — ERCOT + LBNL + hyperscaler PPA tracker

What this is

First-pass historical dataset for the three phase markers in the power-cycle investing thesis (TLN / CEG / CCJ basket). Mirrors the DRAM-spot anchor pattern: machine-readable CSV time-series + a narrative notes file flagging gaps so the quarterly review can run without re-deriving context.

Phase markers, per [[2026-05-17-power-cycle-v1]]:

  1. PJM/ERCOT annual peak-load growth vs forecast
  2. Hyperscaler PPA announcement cadence (>500MW / >10yr nuclear/baseload)
  3. Interconnection-queue backlog trend in DC growth zones

Coverage achieved

Dataset Source Rows Time range
iso-demand-growth-2017-2026.csv ERCOT Native Load ZIPs + Peak Demand Scenarios xlsx 15 (10 actuals + 5 forecast-only) 2017-2031
hyperscaler-ppas.csv Hand-curated from vault + press archive 8 deals 2024-03 to 2025-11
interconnection-queue-2017-2026.csv LBNL "Queued Up 2025 Edition" data file 64 rows (8 yrs x 8 regions) 2017-2024

Top 3 trends visible in the data

  1. Interconnection-queue capacity has 4x'd in the highest-growth ISOs since 2017, while throughput is essentially flat. ERCOT's active queue grew from 68GW (2017) → 346GW (2024) — a 5.1x increase. Yet ERCOT's annual IA-executed throughput (capacity actually clearing the queue) grew only from 2.6GW (2017) → 26.9GW (2024) — and most of that throughput rise happened by 2020. The ratio of queued capacity to annual throughput stretched from 27x (2017) to 13x (2024 — ERCOT is the most efficient in the country), meaning even at its best ISO the backlog is ~13 years deep at current clearing rates. This is the structural scarcity the thesis is positioned on, and the data confirms it.

  2. The drop in 2024 queue capacity is FERC-driven, not demand-driven. Active queue capacity in PJM (-26.0GW YoY) and MISO (-71.8GW YoY) DROPPED in 2024 because FERC Order 2023 forced clusters of speculative requests through withdrawal. Read it the other way: even after the speculative-purge, ERCOT's active queue still GREW from 269GW (2023) → 346GW (2024) — and US-ALL annual new requests slowed to 508GW in 2024 from 936GW in 2023 (still a record on pre-2021 baseline). This is the demand side compressing into the ISO that can actually deliver Texas large-load ROFOs.

  3. Hyperscaler nuclear PPA cadence already cleared the thesis's 2-per-year bullish threshold for both 2024 and 2025. The PPA tracker shows 4 deals in 2024 (AWS-Talen initial 960MW, MSFT-CEG Crane 835MW, GOOG-Kairos 500MW SMR, AWS-X-energy 5GW SMR offtake) and 4 in 2025 (AWS-Talen expansion to 1920MW, MSFT-Brookfield 10.5GW renewables, META-CEG Clinton 1121MW, MSFT-DOE-CEG Crane $1B financing leg). Every single deal that meets the thesis's >500MW / >10yr nuclear-or-baseload criterion clears it. Marker 2 is decisively bullish through May 2026.

Important caveats (the careful reader needs these)

ERCOT 2026 peak number is partial-year

The 2026 row in iso-demand-growth-2017-2026.csv reads 75.6 GW peak with a -9.7% YoY growth and a -19.2% miss vs the ERCOT-Adjusted forecast. This is NOT real signal. As of the scrape (2026-05-17), ERCOT has only experienced the winter peak so far — Texas peaks in summer (July-August). The 2026 column will continue rising as Native_Load_2026.zip is updated through the year. Do NOT use the 2026 row for marker-1 evaluation until at least October 2026.

2025 ERCOT peak was below 2024

Real signal: 83.7 GW (2025) vs 85.2 GW (2024) — a 1.8% YoY contraction. ERCOT's own forecast called for 84.7 GW (ERCOT-Adjusted), so actuals came in 1.2% below the conservative forecast. The TSP-Provided forecast (which includes all large-load requests including speculative data-center load) was 92.6 GW — actuals were 9.6% below that. Two readings here:

The thesis assigns marker-1 a bearish flip at "materially below baseline for 2 consecutive annual cycles." 2025 alone doesn't trip it. 2026 needs the summer peak before it can be evaluated.

PJM data is the biggest gap

PJM's main domain (www.pjm.com) does NOT resolve from the scraper's network (DNS NXDOMAIN). I could not pull PJM's own load forecast or Load Forecast Report directly. Substitutes used:

FERC primary endpoints are Cloudflare-blocked

ferc.gov/industries-data/electric/... returns 403 to our UA. LBNL's "Queued Up" is the recognized academic aggregate that pulls FERC data + ISO data into one cleaned dataset, so the queue marker is well-served. But any need for FERC primary filings (e.g. tracking the Talen-Amazon ruling lifecycle) will need a different ingress path.

LBNL data is annual, not monthly

"Queued Up" is released once per year (latest edition: August 2025, data through end 2024). Monthly cadence on the queue marker is not available from this source. Quarterly review can use the most recent LBNL edition + a manual check of ISO press releases for any major interconnection-policy changes.

Hyperscaler PPA tracker is hand-curated

The tracker is seeded from 8 high-confidence deals cited in the thesis + vault press archive. It is NOT a programmatic scrape. The plan to extend it:

Schema notes

iso-demand-growth-2017-2026.csv

Columns: year, iso, actual_peak_mw, actual_peak_gw, forecast_ercot_adj_mw, forecast_tsp_provided_mw, growth_pct_yoy, vs_forecast_pct, source_url, source_doc.

The two forecast columns are intentionally split:

hyperscaler-ppas.csv

Columns: announcement_date, hyperscaler, ipp, facility, capacity_mw, term_years, deal_value_usd_b, structure, source_url, notes.

interconnection-queue-2017-2026.csv

Columns: report_date, iso, queued_capacity_gw, new_requests_gw_this_year, new_requests_n_this_year, ia_executed_gw, ia_executed_count, queue_age_median_yrs, source_url, source_doc, notes.

Recommended next steps

Wire into investing cron (cheap, do next session)

Annual cron — LBNL re-publishes once per year, usually July-August:

~/.claude/scripts/dram-spot-venv/bin/python3 ~/.claude/scripts/power-anchors-scraper.py

ERCOT Native_Load_YYYY.zip is updated through the year; running monthly will keep the partial-year peak fresh, then the final value lands in Feb after the year ends.

Backfill PJM peak load + forecast (next session, ~30 min)

Add a queue-age median column

Extend the PPA tracker to programmatic ingest

Pair with the smart-money anchor

Files written this session

Cross-references