{
  "meta": {
    "name": "Heaviside",
    "generated_utc": "2026-11-02T21:09:15Z",
    "status": "final",
    "load_source": "FERC-714 (131,495 h); 1 hour gap-filled from EIA-930",
    "price_source": "GridStatus.io ercot_spp_real_time_15_min (HB_HUBAVG), from ERCOT",
    "hub": "HB_HUBAVG",
    "years": [
      2011,
      2025
    ],
    "years_with_load": [
      2011,
      2012,
      2013,
      2014,
      2015,
      2016,
      2017,
      2018,
      2019,
      2020,
      2021,
      2022,
      2023,
      2024,
      2025
    ],
    "years_with_price": [
      2011,
      2012,
      2013,
      2014,
      2015,
      2016,
      2017,
      2018,
      2019,
      2020,
      2021,
      2022,
      2023,
      2024,
      2025
    ],
    "notes": [
      "Replay of history, not a forecast: every figure is what the rule would have done in the recorded hours.",
      "Load: FERC Form 714 (PUDL) primary with timestamps corrected to EIA-930; EIA-930 fills 1 hour(s).",
      "Historical load during Winter Storm Uri is served load after shedding; Lens C covers that emergency directly.",
      "Combined calls (selected lens + C) take the union of flagged hours and the deeper curtailment in each hour."
    ]
  },
  "params": {
    "campus_mw": 100,
    "cap_mw": 80,
    "lens": "A",
    "lensA_pct_of_peak": 95,
    "lensB_price_threshold": 1000,
    "kw_per_gpu": 1.4,
    "gpu_usd_per_hr": 2.08,
    "gpu_usd_per_hr_ondemand": 3.49,
    "backup_usd_per_mwh": 250,
    "years_earlier": 3,
    "margin_usd_per_mw_year": 455520.0,
    "p_fail": 0.02,
    "damages_usd_per_mwh": 35685,
    "coc": 0.1,
    "quantile": 0.995,
    "n_sims": 10000,
    "seed": 20270,
    "portfolio_n": 10
  },
  "assumptions": [
    {
      "id": "campus_mw",
      "label": "Campus size",
      "value": 100,
      "unit": "MW",
      "kind": "assumption",
      "source_id": null,
      "note": "Illustrative single campus."
    },
    {
      "id": "cap_mw",
      "label": "Draw cap during stress (Lens A/B)",
      "value": 80,
      "unit": "MW",
      "kind": "assumption",
      "source_id": "texas-sb6-2025",
      "note": "Campus keeps 80% of nameplate in Lens A/B calls. Lens C (emergencies) curtails to 0 MW (Texas SB 6 firm-load-shed curtailment)."
    },
    {
      "id": "lensA_pct_of_peak",
      "label": "Lens A threshold",
      "value": 95,
      "unit": "% of seasonal peak",
      "kind": "assumption",
      "source_id": "duke-2025",
      "note": "Hours where load + campus exceed this share of the year-season peak are curtailed. Duke (2025) uses 100% of the all-period (2016\u20132024) seasonal peak; a per-year 95% threshold is stricter. See the sensitivity table in REPORT.md."
    },
    {
      "id": "lensB_price_threshold",
      "label": "Lens B price trigger",
      "value": 1000,
      "unit": "$/MWh",
      "kind": "assumption",
      "source_id": null,
      "note": "Hourly max of 15-minute RT SPP at HB_HUBAVG above this is treated as scarcity."
    },
    {
      "id": "kw_per_gpu",
      "label": "Power per H100, all-in",
      "value": 1.4,
      "unit": "kW/GPU",
      "kind": "assumption",
      "source_id": "nvidia-dgx-h100",
      "note": "NVIDIA DGX H100: 10.2 kW max for 8 GPUs = 1.275 kW/GPU of IT load at maximum, \u00d7 PUE ~1.1 (assumed, for a new liquid-cooled AI campus) = 1.40 kW. Uptime Institute's 2025 survey average for sites of 20 MW and above is PUE 1.44 (\u2192 1.84 kW/GPU). That lowers lost compute to $1,130/MWh, still above backup, so the applied cost is unchanged."
    },
    {
      "id": "gpu_usd_per_hr",
      "label": "H100 rental, 1-yr reserved median",
      "value": 2.08,
      "unit": "$/GPU-hr",
      "kind": "sourced",
      "source_id": "amcompute-h100",
      "note": "H100 SXM, 1-year term: 'from $1.81, median $2.08 (7 providers)'. List prices read 9\u201325 Oct 2026."
    },
    {
      "id": "gpu_usd_per_hr_ondemand",
      "label": "H100 rental, on-demand median",
      "value": 3.49,
      "unit": "$/GPU-hr",
      "kind": "sourced",
      "source_id": "amcompute-h100",
      "note": "H100 SXM on-demand: '$1.70 to $12.29 per GPU-hour, median $3.49' (45 providers, Oct 2026)."
    },
    {
      "id": "backup_usd_per_mwh",
      "label": "Backup generation cost",
      "value": 250,
      "unit": "$/MWh",
      "kind": "assumption",
      "source_id": "texas-sb6-2025",
      "note": "SB 6 lets ERCOT direct large loads to run on-site backup or curtail. All-in variable cost of on-site backup (reciprocating engines / turbines) during short calls. The model applies min(lost compute, backup)."
    },
    {
      "id": "years_earlier",
      "label": "Years connected early",
      "value": 3,
      "unit": "years",
      "kind": "assumption",
      "source_id": null,
      "note": "Speed-to-power gained by accepting curtailment instead of waiting for firm service."
    },
    {
      "id": "gpu_utilisation",
      "label": "GPU utilisation (share of GPU-hours rented)",
      "value": 0.7,
      "unit": "share",
      "kind": "assumption",
      "source_id": null,
      "note": "Average share of a year's GPU-hours actually rented. It scales the value of connecting early (operating margin below), not the cost of curtailment. Lost compute during a curtailment is priced at full utilisation, 1000 / 1.4 kW \u00d7 $2.08/GPU-hr = $1,486/MWh, because a cut-back idles whatever is running in that hour and stress hours are peak hours, so every idled GPU-hour is assumed to have been rented. That overstates the cost of curtailing (conservative). Here it does not bind: backup generation at $250/MWh is cheaper and is applied."
    },
    {
      "id": "margin_usd_per_mw_year",
      "label": "Operating margin per MW-year",
      "value": 455520.0,
      "unit": "$/MW-yr",
      "kind": "assumption",
      "source_id": "amcompute-h100",
      "note": "(1000 / 1.4 kW) = 714.3 GPUs/MW \u00d7 8,760 h \u00d7 70% utilisation \u00d7 $2.08/GPU-hr \u00d7 5% operating margin = $455,520/MW-yr. Utilisation (see GPU utilisation) and margin are assumptions; 5% is the conservative case (25% is in the sensitivity table)."
    },
    {
      "id": "p_fail",
      "label": "Probability a call is not delivered",
      "value": 0.02,
      "unit": "per call",
      "kind": "assumption",
      "source_id": "nerc-large-load-2024",
      "note": "Each call fails independently with this probability. There is no actuarial record of contracted large-load curtailment failing. The motivation: on 10 Jul 2024 about 1,500 MW of data-centre load in the Eastern Interconnection dropped off simultaneously during a 230 kV fault, ~1,260 MW of it for hours (NERC incident review). Large-load behaviour under stress is not guaranteed."
    },
    {
      "id": "damages_usd_per_mwh",
      "label": "Damages per undelivered MWh",
      "value": 35685,
      "unit": "$/MWh",
      "kind": "sourced",
      "source_id": "ercot-voll-2024",
      "note": "Conservative case: ERCOT's 2024 value-of-lost-load study, $35,685/MWh for a one-hour ERCOT-wide outage (95% CI ~$25,000\u2013$53,000), i.e. what customers lose when a call is not delivered and load must be shed instead. The market's offer cap (HCAP, $5,000/MWh, 16 TAC \u00a725.509(b)(6)(B)) is the lower alternative; the premium scales linearly with damages (see the sensitivity table in REPORT.md)."
    },
    {
      "id": "coc",
      "label": "Cost of capital on tail",
      "value": 0.1,
      "unit": "\u00d7 Q99.5",
      "kind": "assumption",
      "source_id": null,
      "note": "Premium = E[L] + 10% \u00d7 Q99.5(L): a 10% annual return on capital held at the 1-in-200 annual loss."
    },
    {
      "id": "n_sims",
      "label": "Bootstrap simulations",
      "value": 10000,
      "unit": "years",
      "kind": "assumption",
      "source_id": null,
      "note": "Whole historical years drawn with replacement, seed 20270."
    }
  ],
  "sources": [
    {
      "id": "pudl-ferc714",
      "title": "Public Utility Data Liberation Project (PUDL) Data Release v2026.10.0: FERC Form 714 hourly planning area demand (out_ferc714__hourly_planning_area_demand), respondent ERCOT (respondent_id_ferc714 58, EIA code 5723)",
      "publisher": "Catalyst Cooperative; data filed with FERC on Form 714. DOI 10.5281/zenodo.23375698",
      "date": "2026-10-14",
      "url": "https://s3.us-west-2.amazonaws.com/pudl.catalyst.coop/stable/out_ferc714__hourly_planning_area_demand.parquet",
      "note": "Docs: https://docs.catalyst.coop/pudl/en/stable/data_sources/ferc714.html. PUDL notes that datetime_utc was 'cleaned due to inconsistent datetime reporting'. We found and corrected a further offset for ERCOT against EIA-930 (REPORT.md, Method).",
      "accessed": "2026-10-30"
    },
    {
      "id": "eia930",
      "title": "EIA-930 Hourly Electric Grid Monitor, six-month balance files (EIA930_BALANCE_*), balancing authority ERCO; Demand (MW) (Adjusted)",
      "publisher": "U.S. Energy Information Administration",
      "date": "2026-10-30",
      "url": "https://www.eia.gov/electricity/gridmonitor/sixMonthFiles/",
      "note": "Used to cross-check FERC 714 (2015\u20132025) and to fill the one hour it lacks. About the data: https://www.eia.gov/electricity/930-content/about.html (hour-ending convention; first date 1 Jul 2015).",
      "accessed": "2026-10-30"
    },
    {
      "id": "gridstatus-rtspp",
      "title": "ERCOT SPP Real Time 15 Min (dataset id ercot_spp_real_time_15_min), location HB_HUBAVG, resampled server-side to hourly max and mean",
      "publisher": "GridStatus.io; data sourced from ERCOT",
      "date": "2026-10-30",
      "url": "https://www.gridstatus.io/datasets/ercot_spp_real_time_15_min",
      "note": "Pulled through the GridStatus.io API (gridstatusio client 0.16.1) on 2026-10-30. The dataset web page returned HTTP 403 to automated fetches.",
      "accessed": "2026-10-30"
    },
    {
      "id": "amcompute-h100",
      "title": "H100 cloud pricing: from $1.70/hr across 45 providers (Oct 2026)",
      "publisher": "AMCompute",
      "date": "2026-10-25",
      "url": "https://amcompute.com/gpu-cloud-prices/h100",
      "note": "'Updated October 25, 2026'. List prices read from providers 9\u201325 Oct 2026; the lowest listed price per provider and commitment.",
      "accessed": "2026-10-30"
    },
    {
      "id": "utilitydive-icf-2026",
      "title": "How load flexibility buys time for America's data center boom (opinion; S. Muthiah and H. Parmar, ICF)",
      "publisher": "Utility Dive",
      "date": "2026-06-09",
      "url": "https://www.utilitydive.com/news/how-load-flexibility-buys-time-data-center-boom-icf/822355/",
      "note": "$32/kW-year is Public Service Co. of Oklahoma's demand-response procurement, set against '$100+/kW-year for BTM generation at a data center'. ~80 h/yr average and 300\u2013400+ h/yr extreme curtailment come from ICF's PJM modelling.",
      "accessed": "2026-10-30"
    },
    {
      "id": "duke-2025",
      "title": "Rethinking Load Growth: Assessing the Potential for Integration of Large Flexible Loads in US Power Systems (NI R 25-01). Norris, Profeta, Patino-Echeverri and Cowie-Haskell",
      "publisher": "Nicholas Institute for Energy, Environment & Sustainability, Duke University",
      "date": "2025-02-11",
      "url": "https://nicholasinstitute.duke.edu/sites/default/files/publications/rethinking-load-growth.pdf",
      "note": "Method pp.15\u201317 and App. C (p.38). ERCOT headroom from Fig. 1/Fig. 8 (6.5 / 10.0 / 14.7 GW at 0.25 / 0.5 / 1%); durations read from Fig. 11; 22-BA averages from p.20 and Fig. 10.",
      "accessed": "2026-10-30"
    },
    {
      "id": "nerc-large-load-2024",
      "title": "Incident Review: Considering Simultaneous Voltage-Sensitive Load Reductions",
      "publisher": "North American Electric Reliability Corporation (NERC)",
      "date": "2025-01-08",
      "url": "https://www.nerc.com/pa/rrm/ea/Documents/Incident_Review_Large_Load_Loss.pdf",
      "note": "10 Jul 2024, Eastern Interconnection: ~1,500 MW of 'exclusively data center-type load' lost after a 230 kV fault; ~1,260 MW 'did not return for hours'.",
      "accessed": "2026-10-30"
    },
    {
      "id": "puct-hcap",
      "title": "16 Tex. Admin. Code \u00a725.509(b)(6)(B): 'The high system-wide offer cap (HCAP) will be $5,000 per MWh'",
      "publisher": "Public Utility Commission of Texas (via Cornell LII)",
      "date": "2023-12-20",
      "url": "https://www.law.cornell.edu/regulations/texas/16-Tex-Admin-Code-SS-25-509",
      "note": "HCAP lowered from $9,000 to $5,000/MWh effective 1 Jan 2022 (PUCT Project 52631, Dec 2021; \u00a725.505 history, eff. 12/22/2021). Earlier caps: $3,000 (2011), $4,500 (Aug 2012), $5,000 (Jun 2013), $7,000 (Jun 2014), $9,000 (Jun 2015), per National Law Review, 2012-04-23.",
      "accessed": "2026-10-30"
    },
    {
      "id": "latitude-ercot-queue-2025",
      "title": "ERCOT's large load queue has nearly quadrupled in a single year",
      "publisher": "Latitude Media (Catherine Boudreau)",
      "date": "2025-12-03",
      "url": "https://www.latitudemedia.com/news/ercots-large-load-queue-has-nearly-quadrupled-in-a-single-year/",
      "note": "'Texas grid operator ERCOT has about 226 gigawatts of large load customers in its interconnection queue as of November.' About 77% from large data centres. ERCOT's Dec 2025 System Planning update gives ~226 GW as of 18 Nov 2025; later counts are higher (233 GW at the 9 Dec board meeting).",
      "accessed": "2026-10-30"
    },
    {
      "id": "uh-hobby-uri-2021",
      "title": "New Report Details Impact of Winter Storm Uri on Texans",
      "publisher": "University of Houston Hobby School of Public Affairs",
      "date": "2021-03-29",
      "url": "https://uh.edu/news-events/stories/2021/march-2021/03292021-hobby-winter-storm.php",
      "note": "'Winter Storm Uri left close to 4.5 million Texas homes and businesses without power at its peak.'",
      "accessed": "2026-10-30"
    },
    {
      "id": "ercot-voll-2024",
      "title": "Value of Lost Load Study for the ERCOT Region (Brattle: C. Gibbons, S. Sergici), filed by ERCOT in PUCT Project No. 55837",
      "publisher": "The Brattle Group for ERCOT",
      "date": "2024-08-22",
      "url": "https://www.brattle.com/wp-content/uploads/2024/09/Value-of-Lost-Load-Study-for-the-ERCOT-Region.pdf",
      "note": "One-hour ERCOT-wide VOLL $35,685/MWh (95% CI ~$25,000\u2013$53,000). Used as the default (conservative) damages per undelivered MWh.",
      "accessed": "2026-10-30"
    },
    {
      "id": "nvidia-dgx-h100",
      "title": "NVIDIA DGX H100/H200 User Guide: Introduction ('10.2 kW max', 8\u00d7 H100)",
      "publisher": "NVIDIA",
      "date": "2026-10-17",
      "url": "https://docs.nvidia.com/dgx/dgxh100-user-guide/introduction-to-dgxh100.html",
      "note": "Datasheet copy (May 2023): https://www.megware.com/fileadmin/user_upload/LandingPage%20NVIDIA/nvidia-dgx-h100-datasheet.pdf",
      "accessed": "2026-10-30"
    },
    {
      "id": "uptime-2025",
      "title": "Uptime Institute Global Data Center Survey 2025 (Keynote Report 180)",
      "publisher": "Uptime Institute",
      "date": "2025-07-01",
      "url": "https://datacenter.uptimeinstitute.com/rs/711-RIA-145/images/2025.Annual.Survey.Report.pdf",
      "note": "Weighted average PUE 1.54; sites of 20 MW and above 1.44. Used for the kW/GPU sensitivity.",
      "accessed": "2026-10-30"
    },
    {
      "id": "texas-sb6-2025",
      "title": "Texas SB 6, 89th Legislature (enrolled): Utilities Code \u00a7\u00a737.0561, 39.170 (large loads)",
      "publisher": "Texas Legislature",
      "date": "2025-06-20",
      "url": "https://capitol.texas.gov/tlodocs/89R/billtext/html/SB00006F.htm",
      "note": "\u00a739.170(a): equipment and protocol 'to allow the load to be curtailed during firm load shed' for transmission-voltage loads interconnected after 31 Dec 2025. \u00a737.0561(e): after deploying all available market services, ERCOT may direct a large load to deploy backup generation or curtail. Threshold 75 MW (\u00a737.0561(c)). Signed 20 Jun 2025.",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-energy-6d5548",
      "title": "The Timeline and Events of the February 2021 Texas Electric Grid Blackouts (UT Austin Energy Institute, July 2021)",
      "publisher": "University of Texas at Austin Energy Institute (not ERCOT)",
      "date": "2021-07-14",
      "url": "https://energy.utexas.edu/sites/default/files/UTAustin%20(2021)%20EventsFebruary2021TexasBlackout%2020210714.pdf",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-ftp-c22a24",
      "title": "2011 State of the Market Report for the ERCOT Wholesale Electricity Markets (Potomac Economics, July 2012)",
      "publisher": "Potomac Economics, ERCOT Independent Market Monitor (not ERCOT)",
      "date": "2012-07-01",
      "url": "https://ftp.puc.texas.gov/public/puct-info/industry/electric/reports/ERCOT_annual_reports/2011annualreport.pdf",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-9563e0",
      "title": "ERCOT Enters Energy Emergency Alert Level 1 (ERCOT release, 27 Jun 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-06-27",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2467",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-f1eaea",
      "title": "ERCOT expecting high demand, additional capacity for Tuesday (ERCOT release, 27 Jun 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-06-27",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2468",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-c9bb50",
      "title": "Power Watch: Energy conservation encouraged 3-7 pm today (ERCOT release, 14 Jul 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-07-14",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2477",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-e2929a",
      "title": "Consumers asked to conserve electricity 3-7 pm today and this week (ERCOT release, 1 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-01",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2487",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-640005",
      "title": "ERCOT breaks peak demand record again on Tuesday (ERCOT release, 2 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-02",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2490",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-16f7ca",
      "title": "Power Watch - Conservation Needed (ERCOT release, 2 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-02",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2489",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-608580",
      "title": "ERCOT breaks peak demand record third time (ERCOT release, 3 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-03",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2492",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-bafc1f",
      "title": "Power Warning - Conservation Critical (ERCOT release, 4 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-04",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2495",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-4653a1",
      "title": "Level 2 emergency cancelled; interruptible loads restored (ERCOT release, 4 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-04",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2497",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-c4de2c",
      "title": "Consumers asked to conserve electricity 3-7 pm today and next week (ERCOT/PUCT release, 5 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-05",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2500",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-42bec2",
      "title": "Power Watch - Conservation Needed: ERCOT in level 1 emergency; Consumers asked to conserve until 7 p.m. today (ERCOT release, 23 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-23",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2506",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-appalachianpower-3cdc2a",
      "title": "Statement from ERCOT CEO Trip Doggett on the need for conservation through the weekend (ERCOT, 26 Aug 2011)",
      "publisher": "ERCOT news release, reposted verbatim by AEP / Appalachian Power",
      "date": "2011-08-26",
      "url": "https://www.appalachianpower.com/company/news/view?releaseID=2508",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-senate-1c7491",
      "title": "Business and Commerce Quarterly Update (ERCOT CEO Trip Doggett to Texas Senate Business & Commerce Committee, 15 Jan 2014)",
      "publisher": "ERCOT (hosted by the Texas Senate)",
      "date": "2014-01-15",
      "url": "https://senate.texas.gov/cmtes/83/c510/QR_0114-ERCOT.pdf",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-interchange-207e83",
      "title": "ERCOT's Report of Emergency Event for Operating Day August 13, 2019 (ERCOT filing, PUCT Project 27706 item 413, filed 19 Aug 2019)",
      "publisher": "ERCOT filing, PUCT Project 27706",
      "date": "2019-08-19",
      "url": "https://interchange.puc.texas.gov/Documents/27706_413_1030232.PDF",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-interchange-5b5c08",
      "title": "ERCOT's Report of Emergency Event for Operating Day August 15, 2019 (ERCOT filing, PUCT Project 27706 item 415, Aug 2019)",
      "publisher": "ERCOT filing, PUCT Project 27706",
      "date": "2019-08-01",
      "url": "https://interchange.puc.texas.gov/Documents/27706_415_1030610.PDF",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-nerc-b26fe3",
      "title": "The February 2021 Cold Weather Outages in Texas and the South Central United States (FERC/NERC/Regional Entity staff report, Nov 2021)",
      "publisher": "FERC, NERC and Regional Entity staff (not ERCOT)",
      "date": "2021-11-16",
      "url": "https://www.nerc.com/pa/rrm/ea/Documents/February_2021_Cold_Weather_Report.pdf",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-krgv-de1e33",
      "title": "ERCOT: Grid remains strong during record demand, energy conservation request continues (KRGV, 15 Jun 2021)",
      "publisher": "KRGV (press, not ERCOT)",
      "date": "2021-06-15",
      "url": "https://www.krgv.com/news/ercot-grid-remains-strong-during-record-demand-energy-conservation-request-continues",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-texastribune-b1e678",
      "title": "Texans asked to limit electricity use after six power plants go down ahead of a hot weekend (Texas Tribune, 13 May 2022)",
      "publisher": "The Texas Tribune (press, not ERCOT)",
      "date": "2022-05-13",
      "url": "https://www.texastribune.org/2022/05/13/texas-power-conservation-heat/",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-oncor-f6c2e3",
      "title": "ERCOT Issues Conservation Appeal to Texans and Texas Businesses (Oncor, reprinting ERCOT release, 11 Jul 2022)",
      "publisher": "ERCOT release reposted by Oncor",
      "date": "2022-07-11",
      "url": "https://www.oncor.com/content/oncorwww/wire/en/home/newsroom/ercot-issues-conservation-appeal-to-texans-and-texas-businesses.html",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-oncor-084b47",
      "title": "July 13: ERCOT Issues Conservation Appeal to Texans and Businesses (Oncor, reprinting ERCOT release, 13 Jul 2022)",
      "publisher": "ERCOT release reposted by Oncor",
      "date": "2022-07-13",
      "url": "https://www.oncor.com/content/oncorwww/wire/en/home/newsroom/july-13--ercot-issues-conservation-appeal-to-texans-and-business.html",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-oncor-60fbfd",
      "title": "ERCOT Issues Voluntary Conservation Notice (Oncor, reprinting ERCOT release, 20 Jun 2023)",
      "publisher": "ERCOT release reposted by Oncor",
      "date": "2023-06-20",
      "url": "https://www.oncor.com/content/oncorwww/wire/en/home/newsroom/ercot-issues-voluntary-conservation-notice.html",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-medinaec-952e81",
      "title": "ERCOT Voluntary Conservation Notice - August 17, 2023 (Medina Electric Cooperative, 17 Aug 2023)",
      "publisher": "Medina Electric Cooperative (not ERCOT)",
      "date": "2023-08-17",
      "url": "https://www.medinaec.org/ercot-voluntary-conservation-notice-august-17-2023",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-nbcdfw-995dec",
      "title": "ERCOT issues voluntary conservation notice Sunday amid extreme heat and high demand for power (NBC DFW, 20 Aug 2023)",
      "publisher": "NBC DFW (press, not ERCOT)",
      "date": "2023-08-20",
      "url": "https://www.nbcdfw.com/news/local/ercot-issues-voluntary-conservation-notice-due-to-extreme-temperatures-and-high-demand-for-power/3320412/",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-fox7austin-aa0b0b",
      "title": "ERCOT issues conservation appeal Aug. 24 (FOX 7 Austin, 24 Aug 2023)",
      "publisher": "FOX 7 Austin (press, not ERCOT)",
      "date": "2023-08-24",
      "url": "https://www.fox7austin.com/news/ercot-issues-conservation-appeal-aug-24",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-fox7austin-180c14",
      "title": "ERCOT asks Texans to conserve power again Friday due to 'tight grid conditions' (FOX 7 Austin, 25 Aug 2023)",
      "publisher": "FOX 7 Austin (press, not ERCOT)",
      "date": "2023-08-25",
      "url": "https://www.fox7austin.com/news/ercot-texas-conserve-power-friday-august-25-2023",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-ksat-adb8a8",
      "title": "ERCOT issues conservation appeal for Saturday amid expectation for tight grid conditions (KSAT, 26 Aug 2023)",
      "publisher": "KSAT (press, not ERCOT)",
      "date": "2023-08-26",
      "url": "https://www.ksat.com/news/local/2023/08/26/ercot-issues-conservation-appeal-for-saturday-amid-expectation-for-tight-grid-conditions/",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-nbcdfw-c6821b",
      "title": "Energy conservation request issued Sunday evening by ERCOT (NBC DFW, 27 Aug 2023)",
      "publisher": "NBC DFW (press, not ERCOT)",
      "date": "2023-08-27",
      "url": "https://www.nbcdfw.com/news/local/texas-news/energy-conservation-request-issued-sunday-evening-by-ercot/3324800/",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-fox7austin-730cdf",
      "title": "Texans asked to conserve energy on August 29 (FOX 7 Austin, 29 Aug 2023)",
      "publisher": "FOX 7 Austin (press, not ERCOT)",
      "date": "2023-08-29",
      "url": "https://www.fox7austin.com/news/texas-power-grid-conserve-energy-august-29",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-texastribune-b245e7",
      "title": "Texans asked to conserve power Wednesday for the eighth time this month (Texas Tribune, pub. 25 Aug, updated 30 Aug 2023)",
      "publisher": "The Texas Tribune (press, not ERCOT); updated 2023-08-30",
      "date": "2023-08-25",
      "url": "https://www.texastribune.org/2023/08/25/texas-ercot-grid-energy-conservation-friday/",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-bowienewsonline-93ba45",
      "title": "Heat warning continues through tonight, ERCOT issues conservation alert (Bowie News, 7 Sep 2023)",
      "publisher": "Bowie News (press, not ERCOT)",
      "date": "2023-09-07",
      "url": "https://bowienewsonline.com/2023/09/heat-warning-continues-through-tonight",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-publicpower-d3bd31",
      "title": "Texas grid operator details response to recent spike in power demand (American Public Power Association, 18 Sep 2023)",
      "publisher": "American Public Power Association (not ERCOT)",
      "date": "2023-09-18",
      "url": "https://www.publicpower.org/periodical/article/texas-grid-operator-details-response-recent-spike-power-demand",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-kbtx-5fa793",
      "title": "ERCOT issues 11th conservation appeal of the summer (KBTX, 7 Sep 2023)",
      "publisher": "KBTX (press, not ERCOT)",
      "date": "2023-09-07",
      "url": "https://www.kbtx.com/2023/09/07/ercot-issues-11th-conservation-appeal-summer/",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-oncor-661a21",
      "title": "ERCOT Expects Tight Grid Conditions, Requests Conservation Monday, January 15, from 6 a.m. to 10 a.m. CT (Oncor, reprinting ERCOT release, 14 Jan 2024)",
      "publisher": "ERCOT release reposted by Oncor",
      "date": "2024-01-14",
      "url": "https://www.oncor.com/content/oncorwww/wire/en/home/newsroom/ercot-expects-tight-grid-conditions--requests-conservation-monda.html",
      "accessed": "2026-10-30"
    },
    {
      "id": "ev-oncor-99cdb4",
      "title": "ERCOT Expects Tight Grid Conditions, Requests Conservation Tuesday, January 16, from 6 a.m. to 9 a.m. CT (Oncor, reprinting ERCOT release, 15 Jan 2024)",
      "publisher": "ERCOT release reposted by Oncor",
      "date": "2024-01-15",
      "url": "https://www.oncor.com/content/oncorwww/wire/en/home/newsroom/ercot-expects-tight-grid-conditions--requests-conservation-tuesd.html",
      "accessed": "2026-10-30"
    }
  ],
  "events": [
    {
      "id": "load-shed-2011-02-02",
      "label": "Feb 2011 cold snap: EEA3 rotating outages (4,000 MW)",
      "type": "load_shed",
      "start_local": "2011-02-02T05:00",
      "end_local": "2011-02-02T15:00",
      "start_idx": 773,
      "end_idx": 783,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-energy-6d5548"
    },
    {
      "id": "eea2-2011-02-02",
      "label": "Feb 2011: EEA2 continues after rotating outages end",
      "type": "EEA2",
      "start_local": "2011-02-02T15:00",
      "end_local": "2011-02-03T10:00",
      "start_idx": 783,
      "end_idx": 802,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-ftp-c22a24"
    },
    {
      "id": "eea1-2011-06-27",
      "label": "EEA1 (3:30-4:55 p.m.)",
      "type": "EEA1",
      "start_local": "2011-06-27T15:00",
      "end_local": "2011-06-27T17:00",
      "start_idx": 4262,
      "end_idx": 4264,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-9563e0"
    },
    {
      "id": "conservation-appeal-2011-06-27",
      "label": "Conservation appeal continues to 7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2011-06-27T17:00",
      "end_local": "2011-06-27T19:00",
      "start_idx": 4264,
      "end_idx": 4266,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-f1eaea"
    },
    {
      "id": "conservation-appeal-2011-07-14",
      "label": "Power Watch: conservation 3-7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2011-07-14T15:00",
      "end_local": "2011-07-14T19:00",
      "start_idx": 4670,
      "end_idx": 4674,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-c9bb50"
    },
    {
      "id": "conservation-appeal-2011-08-01",
      "label": "Conservation appeal 3-7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2011-08-01T15:00",
      "end_local": "2011-08-01T19:00",
      "start_idx": 5102,
      "end_idx": 5106,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-e2929a"
    },
    {
      "id": "eea1-2011-08-02",
      "label": "EEA1 (2:40-6:00 p.m.), record demand",
      "type": "EEA1",
      "start_local": "2011-08-02T14:00",
      "end_local": "2011-08-02T18:00",
      "start_idx": 5125,
      "end_idx": 5129,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-640005"
    },
    {
      "id": "conservation-appeal-2011-08-02",
      "label": "Conservation appeal continues to 7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2011-08-02T18:00",
      "end_local": "2011-08-02T19:00",
      "start_idx": 5129,
      "end_idx": 5130,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-16f7ca"
    },
    {
      "id": "eea1-2011-08-03",
      "label": "EEA1 (2:50-6:10 p.m.), record demand",
      "type": "EEA1",
      "start_local": "2011-08-03T14:00",
      "end_local": "2011-08-03T19:00",
      "start_idx": 5149,
      "end_idx": 5154,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-608580"
    },
    {
      "id": "eea1-2011-08-04",
      "label": "EEA1 ahead of EEA2",
      "type": "EEA1",
      "start_local": "2011-08-04T13:00",
      "end_local": "2011-08-04T14:00",
      "start_idx": 5172,
      "end_idx": 5173,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-bafc1f"
    },
    {
      "id": "eea2-2011-08-04",
      "label": "EEA2: ~1,500 MW interruptible/load resources dropped",
      "type": "EEA2",
      "start_local": "2011-08-04T14:00",
      "end_local": "2011-08-04T19:00",
      "start_idx": 5173,
      "end_idx": 5178,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-appalachianpower-4653a1"
    },
    {
      "id": "conservation-appeal-2011-08-05",
      "label": "Conservation appeal 3-7 p.m. (EEA1 also that day, times unverified)",
      "type": "conservation_appeal",
      "start_local": "2011-08-05T15:00",
      "end_local": "2011-08-05T19:00",
      "start_idx": 5198,
      "end_idx": 5202,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-c4de2c"
    },
    {
      "id": "eea1-2011-08-23",
      "label": "EEA1 from 3:43 p.m.; conserve until 7 p.m.",
      "type": "EEA1",
      "start_local": "2011-08-23T15:00",
      "end_local": "2011-08-23T19:00",
      "start_idx": 5630,
      "end_idx": 5634,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-42bec2"
    },
    {
      "id": "conservation-appeal-2011-08-27",
      "label": "Weekend conservation appeal 3-7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2011-08-27T15:00",
      "end_local": "2011-08-27T19:00",
      "start_idx": 5726,
      "end_idx": 5730,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-3cdc2a"
    },
    {
      "id": "conservation-appeal-2011-08-28",
      "label": "Weekend conservation appeal 3-7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2011-08-28T15:00",
      "end_local": "2011-08-28T19:00",
      "start_idx": 5750,
      "end_idx": 5754,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-appalachianpower-3cdc2a"
    },
    {
      "id": "eea1-2014-01-06",
      "label": "Polar vortex: EEA1",
      "type": "EEA1",
      "start_local": "2014-01-06T06:00",
      "end_local": "2014-01-06T07:00",
      "start_idx": 26430,
      "end_idx": 26431,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-senate-1c7491"
    },
    {
      "id": "eea2-2014-01-06",
      "label": "Polar vortex: EEA2 (ERS deployed)",
      "type": "EEA2",
      "start_local": "2014-01-06T07:00",
      "end_local": "2014-01-06T08:00",
      "start_idx": 26431,
      "end_idx": 26432,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-senate-1c7491"
    },
    {
      "id": "eea1-2014-01-06-2",
      "label": "Polar vortex: back to EEA1 until 9:12 a.m.",
      "type": "EEA1",
      "start_local": "2014-01-06T08:00",
      "end_local": "2014-01-06T10:00",
      "start_idx": 26432,
      "end_idx": 26434,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-senate-1c7491"
    },
    {
      "id": "eea1-2019-08-13",
      "label": "EEA1 (3:10-5:00 p.m.)",
      "type": "EEA1",
      "start_local": "2019-08-13T15:00",
      "end_local": "2019-08-13T17:00",
      "start_idx": 75518,
      "end_idx": 75520,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-interchange-207e83"
    },
    {
      "id": "conservation-appeal-2019-08-13",
      "label": "Conservation appeal continues to 7 p.m.",
      "type": "conservation_appeal",
      "start_local": "2019-08-13T17:00",
      "end_local": "2019-08-13T19:00",
      "start_idx": 75520,
      "end_idx": 75522,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-interchange-207e83"
    },
    {
      "id": "eea1-2019-08-15",
      "label": "EEA1 (3:05-5:05 p.m.) with conservation appeal",
      "type": "EEA1",
      "start_local": "2019-08-15T15:00",
      "end_local": "2019-08-15T18:00",
      "start_idx": 75566,
      "end_idx": 75569,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-interchange-5b5c08"
    },
    {
      "id": "eea1-2021-02-15",
      "label": "Winter Storm Uri: EEA1",
      "type": "EEA1",
      "start_local": "2021-02-15T00:00",
      "end_local": "2021-02-15T01:00",
      "start_idx": 88752,
      "end_idx": 88753,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-nerc-b26fe3"
    },
    {
      "id": "load-shed-2021-02-15",
      "label": "Winter Storm Uri: EEA3 with firm load shed (peak 20,000 MW)",
      "type": "load_shed",
      "start_local": "2021-02-15T01:00",
      "end_local": "2021-02-18T01:00",
      "start_idx": 88753,
      "end_idx": 88825,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-nerc-b26fe3"
    },
    {
      "id": "eea3-2021-02-18",
      "label": "Winter Storm Uri: EEA3 continues after load shed ends",
      "type": "EEA3",
      "start_local": "2021-02-18T01:00",
      "end_local": "2021-02-19T09:00",
      "start_idx": 88825,
      "end_idx": 88857,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-nerc-b26fe3"
    },
    {
      "id": "eea2-2021-02-19",
      "label": "Winter Storm Uri: EEA2 before return to normal",
      "type": "EEA2",
      "start_local": "2021-02-19T09:00",
      "end_local": "2021-02-19T11:00",
      "start_idx": 88857,
      "end_idx": 88859,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-nerc-b26fe3"
    },
    {
      "id": "conservation-appeal-2021-06-15",
      "label": "Conservation request (Jun 2021 heat, day 2)",
      "type": "conservation_appeal",
      "start_local": "2021-06-15T15:00",
      "end_local": "2021-06-15T19:00",
      "start_idx": 91646,
      "end_idx": 91650,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-krgv-de1e33"
    },
    {
      "id": "conservation-appeal-2021-06-16",
      "label": "Conservation request (Jun 2021 heat, day 3)",
      "type": "conservation_appeal",
      "start_local": "2021-06-16T15:00",
      "end_local": "2021-06-16T19:00",
      "start_idx": 91670,
      "end_idx": 91674,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-krgv-de1e33"
    },
    {
      "id": "conservation-appeal-2021-06-17",
      "label": "Conservation request (Jun 2021 heat, day 4)",
      "type": "conservation_appeal",
      "start_local": "2021-06-17T15:00",
      "end_local": "2021-06-17T19:00",
      "start_idx": 91694,
      "end_idx": 91698,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-krgv-de1e33"
    },
    {
      "id": "conservation-appeal-2021-06-18",
      "label": "Conservation request (Jun 2021 heat, day 5)",
      "type": "conservation_appeal",
      "start_local": "2021-06-18T15:00",
      "end_local": "2021-06-18T19:00",
      "start_idx": 91718,
      "end_idx": 91722,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-krgv-de1e33"
    },
    {
      "id": "conservation-appeal-2022-05-13",
      "label": "Conservation request after 6 plant trips",
      "type": "conservation_appeal",
      "start_local": "2022-05-13T15:00",
      "end_local": "2022-05-13T20:00",
      "start_idx": 99614,
      "end_idx": 99619,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-texastribune-b1e678"
    },
    {
      "id": "conservation-appeal-2022-05-14",
      "label": "Conservation request after 6 plant trips",
      "type": "conservation_appeal",
      "start_local": "2022-05-14T15:00",
      "end_local": "2022-05-14T20:00",
      "start_idx": 99638,
      "end_idx": 99643,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-texastribune-b1e678"
    },
    {
      "id": "conservation-appeal-2022-05-15",
      "label": "Conservation request after 6 plant trips",
      "type": "conservation_appeal",
      "start_local": "2022-05-15T15:00",
      "end_local": "2022-05-15T20:00",
      "start_idx": 99662,
      "end_idx": 99667,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-texastribune-b1e678"
    },
    {
      "id": "conservation-appeal-2022-07-11",
      "label": "Conservation appeal, 2-8 p.m.",
      "type": "conservation_appeal",
      "start_local": "2022-07-11T14:00",
      "end_local": "2022-07-11T20:00",
      "start_idx": 101029,
      "end_idx": 101035,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-oncor-f6c2e3"
    },
    {
      "id": "conservation-appeal-2022-07-13",
      "label": "Conservation appeal, 2-9 p.m. (revised)",
      "type": "conservation_appeal",
      "start_local": "2022-07-13T14:00",
      "end_local": "2022-07-13T21:00",
      "start_idx": 101077,
      "end_idx": 101084,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-oncor-084b47"
    },
    {
      "id": "conservation-appeal-2023-06-20",
      "label": "Voluntary Conservation Notice, 4-8 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-06-20T16:00",
      "end_local": "2023-06-20T20:00",
      "start_idx": 109287,
      "end_idx": 109291,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-oncor-60fbfd"
    },
    {
      "id": "conservation-appeal-2023-08-17",
      "label": "Voluntary Conservation Notice, 3-8 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-17T15:00",
      "end_local": "2023-08-17T20:00",
      "start_idx": 110678,
      "end_idx": 110683,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-medinaec-952e81"
    },
    {
      "id": "conservation-appeal-2023-08-20",
      "label": "Voluntary Conservation Notice, 7-10 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-20T19:00",
      "end_local": "2023-08-20T22:00",
      "start_idx": 110754,
      "end_idx": 110757,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-nbcdfw-995dec"
    },
    {
      "id": "conservation-appeal-2023-08-24",
      "label": "Conservation appeal, 3-10 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-24T15:00",
      "end_local": "2023-08-24T22:00",
      "start_idx": 110846,
      "end_idx": 110853,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-fox7austin-aa0b0b"
    },
    {
      "id": "conservation-appeal-2023-08-25",
      "label": "Conservation appeal, 3-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-25T15:00",
      "end_local": "2023-08-25T21:00",
      "start_idx": 110870,
      "end_idx": 110876,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-fox7austin-180c14"
    },
    {
      "id": "conservation-appeal-2023-08-26",
      "label": "Conservation appeal, 3-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-26T15:00",
      "end_local": "2023-08-26T21:00",
      "start_idx": 110894,
      "end_idx": 110900,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-ksat-adb8a8"
    },
    {
      "id": "conservation-appeal-2023-08-27",
      "label": "Conservation appeal, 4-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-27T16:00",
      "end_local": "2023-08-27T21:00",
      "start_idx": 110919,
      "end_idx": 110924,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-nbcdfw-c6821b"
    },
    {
      "id": "conservation-appeal-2023-08-29",
      "label": "Conservation appeal, 5-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-29T17:00",
      "end_local": "2023-08-29T21:00",
      "start_idx": 110968,
      "end_idx": 110972,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-fox7austin-730cdf"
    },
    {
      "id": "conservation-appeal-2023-08-30",
      "label": "Conservation appeal, 6-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-08-30T18:00",
      "end_local": "2023-08-30T21:00",
      "start_idx": 110993,
      "end_idx": 110996,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-texastribune-b245e7"
    },
    {
      "id": "conservation-appeal-2023-09-06",
      "label": "Conservation appeal, 6-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-09-06T18:00",
      "end_local": "2023-09-06T19:00",
      "start_idx": 111161,
      "end_idx": 111162,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-bowienewsonline-93ba45"
    },
    {
      "id": "eea2-2023-09-06",
      "label": "EEA2 (frequency dip, low reserves)",
      "type": "EEA2",
      "start_local": "2023-09-06T19:00",
      "end_local": "2023-09-06T21:00",
      "start_idx": 111162,
      "end_idx": 111164,
      "lensC": true,
      "annotate": true,
      "source_id": "ev-publicpower-d3bd31"
    },
    {
      "id": "conservation-appeal-2023-09-07",
      "label": "Conservation appeal, 5-9 p.m.",
      "type": "conservation_appeal",
      "start_local": "2023-09-07T17:00",
      "end_local": "2023-09-07T21:00",
      "start_idx": 111184,
      "end_idx": 111188,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-kbtx-5fa793"
    },
    {
      "id": "conservation-appeal-2024-01-15",
      "label": "Winter Storm Heather: conservation appeal, 6-10 a.m.",
      "type": "conservation_appeal",
      "start_local": "2024-01-15T06:00",
      "end_local": "2024-01-15T10:00",
      "start_idx": 114294,
      "end_idx": 114298,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-oncor-661a21"
    },
    {
      "id": "conservation-appeal-2024-01-16",
      "label": "Winter Storm Heather: conservation appeal, 6-9 a.m.",
      "type": "conservation_appeal",
      "start_local": "2024-01-16T06:00",
      "end_local": "2024-01-16T09:00",
      "start_idx": 114318,
      "end_idx": 114321,
      "lensC": false,
      "annotate": true,
      "source_id": "ev-oncor-99cdb4"
    }
  ],
  "lenses": {
    "A": {
      "hours_per_year": 93.53333333333333,
      "events_per_year": 24.333333333333332,
      "event_mean_h": 3.8438356164383563,
      "event_max_h": 15.0,
      "mwh_per_year": 1864.1058854166681,
      "share_ge50_running": 1.0,
      "per_year": [
        {
          "year": 2011,
          "hours": 95,
          "events": 29,
          "mwh": 1897.7000000000044,
          "max_event_h": 6.0
        },
        {
          "year": 2012,
          "hours": 85,
          "events": 23,
          "mwh": 1700.0,
          "max_event_h": 6.0
        },
        {
          "year": 2013,
          "hours": 58,
          "events": 19,
          "mwh": 1157.550000000003,
          "max_event_h": 5.0
        },
        {
          "year": 2014,
          "hours": 62,
          "events": 19,
          "mwh": 1220.6500000000015,
          "max_event_h": 5.0
        },
        {
          "year": 2015,
          "hours": 58,
          "events": 19,
          "mwh": 1160.0,
          "max_event_h": 5.0
        },
        {
          "year": 2016,
          "hours": 44,
          "events": 11,
          "mwh": 866.6500000000087,
          "max_event_h": 6.0
        },
        {
          "year": 2017,
          "hours": 78,
          "events": 21,
          "mwh": 1540.6000000000058,
          "max_event_h": 6.0
        },
        {
          "year": 2018,
          "hours": 57,
          "events": 17,
          "mwh": 1140.0,
          "max_event_h": 6.0
        },
        {
          "year": 2019,
          "hours": 72,
          "events": 22,
          "mwh": 1440.0,
          "max_event_h": 7.0
        },
        {
          "year": 2020,
          "hours": 105,
          "events": 28,
          "mwh": 2100.0,
          "max_event_h": 7.0
        },
        {
          "year": 2021,
          "hours": 129,
          "events": 31,
          "mwh": 2580.0,
          "max_event_h": 8.0
        },
        {
          "year": 2022,
          "hours": 123,
          "events": 31,
          "mwh": 2447.258984375003,
          "max_event_h": 8.0
        },
        {
          "year": 2023,
          "hours": 186,
          "events": 42,
          "mwh": 3702.385546874997,
          "max_event_h": 15.0
        },
        {
          "year": 2024,
          "hours": 98,
          "events": 20,
          "mwh": 1960.0,
          "max_event_h": 7.0
        },
        {
          "year": 2025,
          "hours": 153,
          "events": 33,
          "mwh": 3048.793749999997,
          "max_event_h": 8.0
        }
      ],
      "duration_hist": [
        {
          "hours": 1,
          "events": 42
        },
        {
          "hours": 2,
          "events": 46
        },
        {
          "hours": 3,
          "events": 64
        },
        {
          "hours": 4,
          "events": 71
        },
        {
          "hours": 5,
          "events": 90
        },
        {
          "hours": 6,
          "events": 32
        },
        {
          "hours": 7,
          "events": 16
        },
        {
          "hours": 8,
          "events": 3
        },
        {
          "hours": 9,
          "events": 0
        },
        {
          "hours": 10,
          "events": 0
        },
        {
          "hours": 11,
          "events": 0
        },
        {
          "hours": 12,
          "events": 0
        },
        {
          "hours": 13,
          "events": 0
        },
        {
          "hours": 14,
          "events": 0
        },
        {
          "hours": 15,
          "events": 1
        },
        {
          "hours": 16,
          "events": 0
        },
        {
          "hours": 17,
          "events": 0
        },
        {
          "hours": 18,
          "events": 0
        },
        {
          "hours": 19,
          "events": 0
        },
        {
          "hours": 20,
          "events": 0
        },
        {
          "hours": 21,
          "events": 0
        },
        {
          "hours": 22,
          "events": 0
        },
        {
          "hours": 23,
          "events": 0
        },
        {
          "hours": 24,
          "events": 0
        }
      ],
      "thresholds": [
        {
          "year": 2011,
          "season": "summer",
          "peak_mw": 68392.0,
          "threshold_mw": 64972.399999999994
        },
        {
          "year": 2011,
          "season": "winter",
          "peak_mw": 57334.0,
          "threshold_mw": 54467.299999999996
        },
        {
          "year": 2012,
          "season": "summer",
          "peak_mw": 66746.0,
          "threshold_mw": 63408.7
        },
        {
          "year": 2012,
          "season": "winter",
          "peak_mw": 49194.0,
          "threshold_mw": 46734.299999999996
        },
        {
          "year": 2013,
          "season": "summer",
          "peak_mw": 67596.0,
          "threshold_mw": 64216.2
        },
        {
          "year": 2013,
          "season": "winter",
          "peak_mw": 53711.0,
          "threshold_mw": 51025.45
        },
        {
          "year": 2014,
          "season": "summer",
          "peak_mw": 66732.0,
          "threshold_mw": 63395.399999999994
        },
        {
          "year": 2014,
          "season": "winter",
          "peak_mw": 58373.0,
          "threshold_mw": 55454.35
        },
        {
          "year": 2015,
          "season": "summer",
          "peak_mw": 69620.0,
          "threshold_mw": 66139.0
        },
        {
          "year": 2015,
          "season": "winter",
          "peak_mw": 56848.0,
          "threshold_mw": 54005.6
        },
        {
          "year": 2016,
          "season": "summer",
          "peak_mw": 71093.0,
          "threshold_mw": 67538.34999999999
        },
        {
          "year": 2016,
          "season": "winter",
          "peak_mw": 57924.0,
          "threshold_mw": 55027.799999999996
        },
        {
          "year": 2017,
          "season": "summer",
          "peak_mw": 69496.0,
          "threshold_mw": 66021.2
        },
        {
          "year": 2017,
          "season": "winter",
          "peak_mw": 59636.0,
          "threshold_mw": 56654.2
        },
        {
          "year": 2018,
          "season": "summer",
          "peak_mw": 73308.0,
          "threshold_mw": 69642.59999999999
        },
        {
          "year": 2018,
          "season": "winter",
          "peak_mw": 65750.0,
          "threshold_mw": 62462.5
        },
        {
          "year": 2019,
          "season": "summer",
          "peak_mw": 74666.0,
          "threshold_mw": 70932.7
        },
        {
          "year": 2019,
          "season": "winter",
          "peak_mw": 60652.0,
          "threshold_mw": 57619.399999999994
        },
        {
          "year": 2020,
          "season": "summer",
          "peak_mw": 74328.0,
          "threshold_mw": 70611.59999999999
        },
        {
          "year": 2020,
          "season": "winter",
          "peak_mw": 56116.0,
          "threshold_mw": 53310.2
        },
        {
          "year": 2021,
          "season": "summer",
          "peak_mw": 73650.5703125,
          "threshold_mw": 69968.041796875
        },
        {
          "year": 2021,
          "season": "winter",
          "peak_mw": 69692.484375,
          "threshold_mw": 66207.86015625
        },
        {
          "year": 2022,
          "season": "summer",
          "peak_mw": 80037.8359375,
          "threshold_mw": 76035.944140625
        },
        {
          "year": 2022,
          "season": "winter",
          "peak_mw": 74426.8203125,
          "threshold_mw": 70705.479296875
        },
        {
          "year": 2023,
          "season": "summer",
          "peak_mw": 85464.1171875,
          "threshold_mw": 81190.911328125
        },
        {
          "year": 2023,
          "season": "winter",
          "peak_mw": 65631.96875,
          "threshold_mw": 62350.370312499996
        },
        {
          "year": 2024,
          "season": "summer",
          "peak_mw": 85198.8984375,
          "threshold_mw": 80938.95351562499
        },
        {
          "year": 2024,
          "season": "winter",
          "peak_mw": 78313.703125,
          "threshold_mw": 74398.01796874999
        },
        {
          "year": 2025,
          "season": "summer",
          "peak_mw": 83679.0,
          "threshold_mw": 79495.05
        },
        {
          "year": 2025,
          "season": "winter",
          "peak_mw": 80524.703125,
          "threshold_mw": 76498.46796875
        }
      ]
    },
    "C": {
      "hours_per_year": 9.533333333333333,
      "events_per_year": 0.3333333333333333,
      "event_mean_h": 28.6,
      "event_max_h": 106.0,
      "mwh_per_year": 953.3333333333334,
      "share_ge50_running": 0.0,
      "per_year": [
        {
          "year": 2011,
          "hours": 34,
          "events": 2,
          "mwh": 3400.0,
          "max_event_h": 29.0
        },
        {
          "year": 2012,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2013,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2014,
          "hours": 1,
          "events": 1,
          "mwh": 100.0,
          "max_event_h": 1.0
        },
        {
          "year": 2015,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2016,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2017,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2018,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2019,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2020,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2021,
          "hours": 106,
          "events": 1,
          "mwh": 10600.0,
          "max_event_h": 106.0
        },
        {
          "year": 2022,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2023,
          "hours": 2,
          "events": 1,
          "mwh": 200.0,
          "max_event_h": 2.0
        },
        {
          "year": 2024,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        },
        {
          "year": 2025,
          "hours": 0,
          "events": 0,
          "mwh": 0.0,
          "max_event_h": 0.0
        }
      ],
      "duration_hist": [
        {
          "hours": 1,
          "events": 1
        },
        {
          "hours": 2,
          "events": 1
        },
        {
          "hours": 3,
          "events": 0
        },
        {
          "hours": 4,
          "events": 0
        },
        {
          "hours": 5,
          "events": 1
        },
        {
          "hours": 6,
          "events": 0
        },
        {
          "hours": 7,
          "events": 0
        },
        {
          "hours": 8,
          "events": 0
        },
        {
          "hours": 9,
          "events": 0
        },
        {
          "hours": 10,
          "events": 0
        },
        {
          "hours": 11,
          "events": 0
        },
        {
          "hours": 12,
          "events": 0
        },
        {
          "hours": 13,
          "events": 0
        },
        {
          "hours": 14,
          "events": 0
        },
        {
          "hours": 15,
          "events": 0
        },
        {
          "hours": 16,
          "events": 0
        },
        {
          "hours": 17,
          "events": 0
        },
        {
          "hours": 18,
          "events": 0
        },
        {
          "hours": 19,
          "events": 0
        },
        {
          "hours": 20,
          "events": 0
        },
        {
          "hours": 21,
          "events": 0
        },
        {
          "hours": 22,
          "events": 0
        },
        {
          "hours": 23,
          "events": 0
        },
        {
          "hours": 24,
          "events": 2
        }
      ],
      "thresholds": []
    },
    "B": {
      "hours_per_year": 35.86666666666667,
      "events_per_year": 13.066666666666666,
      "event_mean_h": 2.7448979591836733,
      "event_max_h": 122.0,
      "mwh_per_year": 717.3333333333334,
      "share_ge50_running": 1.0,
      "per_year": [
        {
          "year": 2011,
          "hours": 66,
          "events": 38,
          "mwh": 1320.0,
          "max_event_h": 9.0
        },
        {
          "year": 2012,
          "hours": 10,
          "events": 7,
          "mwh": 200.0,
          "max_event_h": 3.0
        },
        {
          "year": 2013,
          "hours": 7,
          "events": 6,
          "mwh": 140.0,
          "max_event_h": 2.0
        },
        {
          "year": 2014,
          "hours": 10,
          "events": 6,
          "mwh": 200.0,
          "max_event_h": 3.0
        },
        {
          "year": 2015,
          "hours": 4,
          "events": 3,
          "mwh": 80.0,
          "max_event_h": 2.0
        },
        {
          "year": 2016,
          "hours": 2,
          "events": 2,
          "mwh": 40.0,
          "max_event_h": 1.0
        },
        {
          "year": 2017,
          "hours": 1,
          "events": 1,
          "mwh": 20.0,
          "max_event_h": 1.0
        },
        {
          "year": 2018,
          "hours": 28,
          "events": 17,
          "mwh": 560.0,
          "max_event_h": 3.0
        },
        {
          "year": 2019,
          "hours": 41,
          "events": 19,
          "mwh": 820.0,
          "max_event_h": 5.0
        },
        {
          "year": 2020,
          "hours": 11,
          "events": 9,
          "mwh": 220.0,
          "max_event_h": 2.0
        },
        {
          "year": 2021,
          "hours": 175,
          "events": 15,
          "mwh": 3500.0,
          "max_event_h": 122.0
        },
        {
          "year": 2022,
          "hours": 56,
          "events": 21,
          "mwh": 1120.0,
          "max_event_h": 8.0
        },
        {
          "year": 2023,
          "hours": 104,
          "events": 36,
          "mwh": 2080.0,
          "max_event_h": 8.0
        },
        {
          "year": 2024,
          "hours": 17,
          "events": 10,
          "mwh": 340.0,
          "max_event_h": 4.0
        },
        {
          "year": 2025,
          "hours": 6,
          "events": 6,
          "mwh": 120.0,
          "max_event_h": 1.0
        }
      ],
      "duration_hist": [
        {
          "hours": 1,
          "events": 108
        },
        {
          "hours": 2,
          "events": 42
        },
        {
          "hours": 3,
          "events": 14
        },
        {
          "hours": 4,
          "events": 14
        },
        {
          "hours": 5,
          "events": 7
        },
        {
          "hours": 6,
          "events": 3
        },
        {
          "hours": 7,
          "events": 2
        },
        {
          "hours": 8,
          "events": 3
        },
        {
          "hours": 9,
          "events": 1
        },
        {
          "hours": 10,
          "events": 0
        },
        {
          "hours": 11,
          "events": 0
        },
        {
          "hours": 12,
          "events": 0
        },
        {
          "hours": 13,
          "events": 0
        },
        {
          "hours": 14,
          "events": 0
        },
        {
          "hours": 15,
          "events": 0
        },
        {
          "hours": 16,
          "events": 0
        },
        {
          "hours": 17,
          "events": 0
        },
        {
          "hours": 18,
          "events": 0
        },
        {
          "hours": 19,
          "events": 0
        },
        {
          "hours": 20,
          "events": 0
        },
        {
          "hours": 21,
          "events": 0
        },
        {
          "hours": 22,
          "events": 0
        },
        {
          "hours": 23,
          "events": 0
        },
        {
          "hours": 24,
          "events": 2
        }
      ],
      "thresholds": []
    }
  },
  "cost": {
    "lost_compute_usd_per_mwh": 1485.7142857142858,
    "lost_compute_ondemand_usd_per_mwh": 2492.857142857143,
    "backup_usd_per_mwh": 250,
    "applied_usd_per_mwh": 250,
    "applied_basis": "backup",
    "annual_cost_usd": {
      "A": 466026.47135416704,
      "C": 238333.33333333334,
      "B": 179333.33333333334
    }
  },
  "speed": {
    "years_earlier": 3,
    "value_usd": 136656000.0,
    "curtailment_cost_usd": 2113079.414062501,
    "ratio": 64.6714927468211,
    "lens": "A"
  },
  "guarantee": {
    "lens": "A+C",
    "expected_loss_usd": 2110916.182872657,
    "q995_usd": 14277568.499999428,
    "premium_usd_per_year": 3426301.8544218186,
    "expected_loss_analytic_usd": 1998545.0044218758,
    "q995_seed_range_usd": [
      11735004.443905827,
      17842500.0
    ],
    "premium_usd_per_mw_year": 34263.01854421818,
    "premium_usd_per_kw_year": 34.263018544218184,
    "loss_hist": {
      "edges_usd": [
        0.0,
        9545737.5,
        19091475.0,
        28637212.5,
        38182950.0,
        47728687.5,
        57274425.0,
        66820162.5,
        76365900.0,
        85911637.5,
        95457375.0,
        105003112.5,
        114548850.0,
        124094587.5,
        133640325.0,
        143186062.5,
        152731800.0,
        162277537.5,
        171823275.0,
        181369012.5,
        190914750.0,
        200460487.5,
        210006225.0,
        219551962.5,
        229097700.0,
        238643437.5,
        248189175.0,
        257734912.5,
        267280650.0,
        276826387.5,
        286372125.0,
        295917862.5,
        305463600.0,
        315009337.5,
        324555075.0,
        334100812.5,
        343646550.0,
        353192287.5,
        362738025.0,
        372283762.5,
        381829500.0
      ],
      "counts": [
        3715,
        89,
        7,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        9,
        6,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        15
      ]
    },
    "p_zero_loss": 0.6159,
    "benchmarks": [
      {
        "id": "dr",
        "label": "Demand response (PSO programme)",
        "usd_per_kw_year": 32,
        "source_id": "utilitydive-icf-2026"
      },
      {
        "id": "btm",
        "label": "Behind-the-meter generation",
        "usd_per_kw_year": 100,
        "plus": true,
        "source_id": "utilitydive-icf-2026"
      }
    ]
  },
  "portfolio": {
    "n": 10,
    "expected_loss_usd": 20339507.62884727,
    "expected_loss_analytic_usd": 19985450.044218756,
    "q995_single_usd": 14277568.499999428,
    "q995_independent_usd": 399672000.0,
    "q995_common_mode_usd": 142775684.99999428,
    "ratio_independent": 27.99300174956373,
    "ratio_common_mode": 10.0
  },
  "economics": {
    "annual_value_usd": 45552000.0,
    "annual_curtailment_cost_usd": 704359.8046875003,
    "premium_usd_per_year": 3426301.8544218186,
    "premium_share_of_value": 0.07521737474582496,
    "all_in_share_of_value": 0.09068013828392428,
    "premium_share_of_btm": 0.3426301854421818
  },
  "context": {
    "large_load_queue_gw": 226,
    "large_load_queue_as_of": "2025-11",
    "large_load_queue_source_id": "latitude-ercot-queue-2025",
    "peak_demand_mw": 85464.1171875,
    "peak_demand_idx": 110512,
    "peak_demand_local": "2023-08-10T17:00",
    "uri_customers_without_power": 4500000,
    "uri_source_id": "uh-hobby-uri-2021",
    "typical_year": 2020,
    "typical_year_hours": 105
  },
  "validation": [
    {
      "id": "duke_gw_0_25pct",
      "metric": "ERCOT curtailment-limited headroom at 0.25% (Duke method, 2016\u20132024)",
      "ours": 6.568350208757204,
      "published": "6.5 GW",
      "published_value": 6.5,
      "rel_diff": 0.010515416731877555,
      "source_id": "duke-2025",
      "verdict": "match",
      "note": "Apples-to-apples: Duke's exact threshold and rate definitions on our load data."
    },
    {
      "id": "duke_gw_0_5pct",
      "metric": "ERCOT curtailment-limited headroom at 0.50% (Duke method, 2016\u20132024)",
      "ours": 10.080276308019652,
      "published": "10.0 GW",
      "published_value": 10.0,
      "rel_diff": 0.008027630801965202,
      "source_id": "duke-2025",
      "verdict": "match",
      "note": "Apples-to-apples: Duke's exact threshold and rate definitions on our load data."
    },
    {
      "id": "duke_gw_1pct",
      "metric": "ERCOT curtailment-limited headroom at 1.00% (Duke method, 2016\u20132024)",
      "ours": 14.779290164466373,
      "published": "14.7 GW",
      "published_value": 14.7,
      "rel_diff": 0.005393888739209066,
      "source_id": "duke-2025",
      "verdict": "match",
      "note": "Apples-to-apples: Duke's exact threshold and rate definitions on our load data."
    },
    {
      "id": "duke_gw_5pct",
      "metric": "ERCOT curtailment-limited headroom at 5.00% (Duke method, 2016\u20132024)",
      "ours": 28.97554070959021,
      "published": "29.0 GW (chart reading)",
      "published_value": 29.0,
      "rel_diff": -0.000843423807234161,
      "source_id": "duke-2025",
      "verdict": "match",
      "note": "Apples-to-apples: Duke's exact threshold and rate definitions on our load data."
    },
    {
      "id": "ferc714_vs_eia930",
      "metric": "Hourly load, FERC 714 vs EIA-930, mean abs % difference (worst year)",
      "ours": 0.61168795717074,
      "published": "EIA-930 ERCO hourly demand (independent series)",
      "source_id": "eia930",
      "verdict": "match",
      "note": "Worst year 2024; hourly correlation \u2265 0.9988 in every year 2015\u20132025 after the FERC 714 timestamp correction."
    },
    {
      "id": "icf_avg_hours",
      "metric": "Lens A curtailment hours per year (average)",
      "ours": 93.53333333333333,
      "published": "~80 hrs/yr (ICF, PJM modelling)",
      "source_id": "utilitydive-icf-2026",
      "verdict": "match",
      "note": "Same order of magnitude. ICF models PJM, not ERCOT, and its trigger differs, so this is a plausibility check, not a replication. Lens A hours scale strongly with the threshold."
    },
    {
      "id": "icf_extreme_hours",
      "metric": "Lens A hours in the worst replay year",
      "ours": 186,
      "published": "300\u2013400+ hrs/yr in extreme conditions (ICF, PJM)",
      "source_id": "utilitydive-icf-2026",
      "verdict": "partial",
      "note": "Worst year 2023. Our seasonal-peak threshold resets every year, so a hot year raises its own threshold. That caps Lens A's extreme years below ICF's."
    },
    {
      "id": "duke_duration",
      "metric": "ERCOT mean curtailment event duration at 0.5% (Duke method)",
      "ours": 6.241176470588235,
      "published": "~1.1 h (Duke Fig. 11, chart reading)",
      "source_id": "duke-2025",
      "verdict": "mismatch",
      "note": "Duke's event-duration definition is not specified precisely enough to reproduce."
    },
    {
      "id": "lensA_duration",
      "metric": "Lens A mean event duration (100 MW campus)",
      "ours": 3.8438356164383563,
      "published": "~2 h average events (Duke, 22-BA average at 0.5%: 2.1 h)",
      "source_id": "duke-2025",
      "verdict": "partial",
      "note": "Different definitions: Duke adds GW-scale load against an all-period peak; Lens A uses a 95% year-season threshold."
    },
    {
      "id": "lensA_partial",
      "metric": "Share of Lens A flagged hours where the campus still draws \u226550%",
      "ours": 1.0,
      "published": "88% of curtailment hours retain \u226550% of new load (Duke, 22-BA average at 0.25%)",
      "source_id": "duke-2025",
      "verdict": "match",
      "note": "By construction Lens A sheds at most C \u2212 K = 20%, so every flagged hour keeps \u226580%."
    }
  ],
  "headline": {
    "sentence": "Replaying ERCOT 2011\u20132025, a 100 MW data centre capped at 80 MW during stress (and switched off in grid emergencies) was called 102 hours a year on average, giving up 0.32% of its energy. Connecting 3 years early was worth 65 times the cost of those curtailments. Guaranteeing every call, with a capital charge on the 1-in-200 year, costs 7.5% of the annual value of connecting early (9.1% with the curtailment cost included), at $34.26/kW-year against $100+/kW-year for behind-the-meter generation.",
    "numbers": [
      {
        "id": "burden",
        "label": "Curtailment burden",
        "value": 102.2,
        "unit": "hours/yr",
        "display": "102 h/yr (0.32% of energy)"
      },
      {
        "id": "cost_vs_value",
        "label": "Value of connecting early \u00f7 curtailment cost",
        "value": 64.6714927468211,
        "unit": "\u00d7",
        "display": "65\u00d7"
      },
      {
        "id": "premium_share",
        "label": "Guarantee premium \u00f7 annual value of connecting early",
        "value": 7.521737474582496,
        "unit": "%",
        "display": "7.5% (9.1% with curtailment cost)"
      },
      {
        "id": "premium",
        "label": "Guarantee premium",
        "value": 34.263018544218184,
        "unit": "$/kW-yr",
        "display": "$34.26/kW-yr (34% of behind-the-meter $100+)"
      }
    ]
  },
  "guarantee_grid": [
    {
      "campus_mw": 80,
      "cap_mw": 80,
      "premium_usd_per_year": 1115275.2,
      "premium_usd_per_kw_year": 13.94094,
      "q995_usd": 5709600.0
    },
    {
      "campus_mw": 90,
      "cap_mw": 80,
      "premium_usd_per_year": 2126937.813,
      "premium_usd_per_kw_year": 23.63264236666667,
      "q995_usd": 8564400.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 80,
      "premium_usd_per_year": 3426301.8544218186,
      "premium_usd_per_kw_year": 34.263018544218184,
      "q995_usd": 14277568.499999428
    },
    {
      "campus_mw": 101,
      "cap_mw": 80,
      "premium_usd_per_year": 3570641.0442421287,
      "premium_usd_per_kw_year": 35.35288162615969,
      "q995_usd": 14991446.924999401
    },
    {
      "campus_mw": 105,
      "cap_mw": 80,
      "premium_usd_per_year": 4237328.268468752,
      "premium_usd_per_kw_year": 40.355507318750014,
      "q995_usd": 18734625.0
    },
    {
      "campus_mw": 120,
      "cap_mw": 80,
      "premium_usd_per_year": 5953903.215571217,
      "premium_usd_per_kw_year": 49.615860129760144,
      "q995_usd": 24897727.89219652
    },
    {
      "campus_mw": 150,
      "cap_mw": 80,
      "premium_usd_per_year": 9931781.695875006,
      "premium_usd_per_kw_year": 66.21187797250003,
      "q995_usd": 42465150.0
    },
    {
      "campus_mw": 200,
      "cap_mw": 80,
      "premium_usd_per_year": 16721935.000570323,
      "premium_usd_per_kw_year": 83.60967500285162,
      "q995_usd": 72797400.0
    },
    {
      "campus_mw": 300,
      "cap_mw": 80,
      "premium_usd_per_year": 30532633.6532344,
      "premium_usd_per_kw_year": 101.77544551078134,
      "q995_usd": 133461900.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 100,
      "premium_usd_per_year": 1394094.0,
      "premium_usd_per_kw_year": 13.94094,
      "q995_usd": 7137000.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 90,
      "premium_usd_per_year": 2268211.7914218754,
      "premium_usd_per_kw_year": 22.682117914218754,
      "q995_usd": 9278100.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 81,
      "premium_usd_per_year": 3289158.4519218216,
      "premium_usd_per_kw_year": 32.89158451921821,
      "q995_usd": 13563690.074999457
    },
    {
      "campus_mw": 100,
      "cap_mw": 80,
      "premium_usd_per_year": 3426301.8544218186,
      "premium_usd_per_kw_year": 34.263018544218184,
      "q995_usd": 14277568.499999428
    },
    {
      "campus_mw": 100,
      "cap_mw": 79,
      "premium_usd_per_year": 3563420.9651015038,
      "premium_usd_per_kw_year": 35.634209651015034,
      "q995_usd": 14991446.924999401
    },
    {
      "campus_mw": 100,
      "cap_mw": 60,
      "premium_usd_per_year": 5732480.980382814,
      "premium_usd_per_kw_year": 57.32480980382814,
      "q995_usd": 24265800.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 40,
      "premium_usd_per_year": 8239911.852960941,
      "premium_usd_per_kw_year": 82.39911852960941,
      "q995_usd": 36398700.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 20,
      "premium_usd_per_year": 10735405.126570318,
      "premium_usd_per_kw_year": 107.35405126570318,
      "q995_usd": 48531600.0
    },
    {
      "campus_mw": 100,
      "cap_mw": 0,
      "premium_usd_per_year": 13223478.169078134,
      "premium_usd_per_kw_year": 132.23478169078135,
      "q995_usd": 60664500.0
    }
  ]
}