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]]:
- PJM/ERCOT annual peak-load growth vs forecast
- Hyperscaler PPA announcement cadence (>500MW / >10yr nuclear/baseload)
- 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
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.
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.
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:
- Bull-case read: weather-normalized. 2025 was a mild Texas summer; the underlying load curve still trends up if you adjust for cooling-degree-days.
- Bear-case read: consistent with the bear-case in the thesis that the data-center demand surge is being over-counted in forecasts (speculative load that won't show up). PJM trimmed its 2025 forecast for the same reason.
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:
- LBNL Queued Up gives PJM's cumulative active queue capacity (covered).
- PJM annual peak load / forecast vs actual would normally come from the PJM Annual Report or the Load Forecast Report PDF; need to source these manually next session via Wayback or a working network.
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:
- Add a monthly cron task that searches Power Magazine / Data Center Dynamics / hyperscaler IR pages for new "PPA" + "nuclear" mentions.
- Or: use the existing
/process-newsletterskill on industry newsletters (Utility Dive, Latitude Media, Heatmap News) to surface PPA announcements.
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:
forecast_tsp_provided_mwis the optimistic forecast that includes all large-load requests (data center growth) reported by transmission service providers.forecast_ercot_adj_mwis ERCOT's own haircut of the TSP forecast that discounts speculative load. Use ERCOT-Adjusted as the central forecast, TSP-Provided as the upside scenario. The gap between the two is itself a marker: it widens when speculative data-center demand is high.
hyperscaler-ppas.csv
Columns: announcement_date, hyperscaler, ipp, facility, capacity_mw, term_years, deal_value_usd_b, structure, source_url, notes.
capacity_mwis the nameplate capacity dedicated under the deal.term_yearsmay be "TBD" or "Long-term" for SMR-class deals where the exact term hasn't been disclosed.- Brookfield-MSFT is a renewables framework, not nuclear; included for demand-side completeness but doesn't count toward the thesis's nuclear-PPA cadence marker.
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.
queued_capacity_gwis cumulative active capacity in queue at year-end (LBNL tab 08, summed across generation types).ia_executed_gwis annual throughput — capacity that EXECUTED an interconnection agreement that year (LBNL tab 18). Empty for PJM and NYISO because LBNL excludes them from the throughput chart (IA-date data <70% populated in those ISOs).queue_age_median_yrsis currently empty; would need to derive from LBNL tab 27/35 (IR-to-IA / IR-to-COD distributions) in a future pass.US-ALLrows give the national new-requests + cumulative-active totals (LBNL tabs 05 + 06).
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)
- Wayback Machine snapshot of
https://www.pjm.com/-/media/library/reports-notices/load-forecast/2024-load-report.ashx - PJM publishes "Long-Term Load Forecast Report" each January with 10-year forward forecast. Should produce a parallel PJM-zone row set for the demand CSV.
Add a queue-age median column
- LBNL tab 32-38 (IA-to-COD, IR-to-COD, IR-to-IA) have the underlying distributions. Pulling a per-region median IR-to-COD year would give the queue_age_median_yrs column for the existing schema.
Extend the PPA tracker to programmatic ingest
- DCD (Data Center Dynamics): https://www.datacenterdynamics.com — has an RSS feed and consistent "PPA / power purchase" tagging.
- Constellation IR + Talen IR: small set of pages with structured press releases. Easy nightly diff.
- Vistra IR + Vistra's OpenAI deal (rumored as of May 2026, not closed): if it lands, add as the marker-2 confirmation for 2026.
Pair with the smart-money anchor
- Cross-reference the PPA tracker against the smart-money 13F backfill —
which managers added TLN / CEG / CCJ in 2024-2025 vs which trimmed?
Anchor cross-check between two independent vault data sources is the kind
of triangulation the
/cross-checkskill is designed for.
Files written this session
- Scraper:
/Users/ray/.claude/scripts/power-anchors-scraper.py - Venv:
/Users/ray/.claude/scripts/dram-spot-venv/(shared, openpyxl added) - Demand CSV:
/Users/ray/rdco-vault/01-projects/investing/anchors/power-layer/iso-demand-growth-2017-2026.csv - PPA CSV:
/Users/ray/rdco-vault/01-projects/investing/anchors/power-layer/hyperscaler-ppas.csv - Queue CSV:
/Users/ray/rdco-vault/01-projects/investing/anchors/power-layer/interconnection-queue-2017-2026.csv - This notes file
Cross-references
- Parent thesis: [[2026-05-17-power-cycle-v1]]
- Sibling anchor: [[~/rdco-vault/01-projects/investing/anchors/dram-spot/2026-05-17-trendforce-backfill-notes]] — same pattern, memory thesis
- Related anchor: [[~/rdco-vault/01-projects/investing/anchors/hyperscaler-capex/]] — capex side of the same demand engine
- Related anchor: [[~/rdco-vault/01-projects/investing/anchors/smart-money/]] — corroborating positioning data
- Investing toolchain index: [[~/rdco-vault/01-projects/investing/README]]