Public-data study · Python, SQL and R

What summer costs Tucson's electric grid

Summer hits the grid from two sides. Heat pushes demand up, and monsoon storms knock customers out. I measured both with public data and put them on one page: storm outages in dollars, the heat side in megawatts.

$72.9Ma year in outage cost to Pima County's homes and businesses
42%of all outage time falls in July
+113 MWadded to the evening climb in one year as solar grew
47 MWshort: the day-ahead peak forecast on 90-105°F days
The bottom line

Two sides of summer, measured differently

Storms knock customers out

Storm outages are the biggest measurable cost.

Power outages cost Pima County's homes and businesses an estimated $72.9 million a year from 2020 to 2025 (range $38 million to $143 million, depending mostly on how many of those affected are businesses). July alone holds 42% of all outage time.

The improvements are worth millions a year each. Interrupting 10% fewer customers per storm would be worth about $7.3 million a year to customers; restoring every outage 10% faster, about $5.5 million; restoring night outages as fast as daytime ones, up to $8.7 million. These are benefits only. What each improvement would cost to achieve is not public.

Heat pushes demand up

On the demand side, the pressure is timing, not growth.

After accounting for weather, Tucson's demand grew just 1.7% from 2024 to 2026. But as solar farms produced 67% more in 2026 (January to early November, against the same months of 2025), the evening climb that other power sources must cover grew by 113 megawatts in a single year. Covering that one year of growth with batteries would cost on the order of $14 million a year.

The forecast is reliable except on hot afternoons. TEP's day-ahead demand forecast misses by 2.9% an hour on average, but on 90-105°F days it comes in about 47 megawatts short of the actual peak, and about 134 megawatts short on the rare 110°F days.

1 · Heat drives the peak

Above 82°F, every extra degree adds about 61 MW to the day's highest hour

Electricity demand (the industry calls it load) follows the afternoon temperature. Below about 82°F, heat barely moves it. Above 82°F, air conditioning takes over. A megawatt measures power being used at one moment; on an average hot summer day TEP's peak, the day's highest hour, is 2,780 MW.

TEP daily peak demand plotted against Tucson's daily high temperature, flat below 82 degrees and rising steeply above it
TEP daily peak against Tucson's daily high. Source: EIA-930, Open-Meteo.
  • Temperature explains 91% of the day-to-day swings in the summer peak, and the response has held steady at about 59-64 MW per degree in each year since 2024.
  • Two-thirds of summer days (67%) peak in the 5-6 PM hour.
  • A hot night adds about a quarter as much as a hot afternoon.

How well is the peak predicted?

Each day the utility publishes a day-ahead forecast: its prediction of demand for every hour of the next day. Since August 2023 it has missed by 2.87% an hour on average (95% range 2.68-3.09%), which is accurate, and it doesn't lean high or low overall. The problem is concentrated in heat.

Day-ahead peak forecast error by daily high temperature, turning negative on hot days
Forecast peak minus actual peak, by daily high. Source: EIA-930, Open-Meteo.
Daily highDaysForecast minus actual peakDays 3%+ too low
Under 80°F420+0.2%10%
90-100°F288-1.7%35%
100-105°F171-1.8%37%
110°F+10-4.1%60%

On the 459 days between 90°F and 105°F, the forecast peak averages 1.7% low, about 47 MW. On the ten 110°F+ days, 4.1% low, about 134 MW at a 110°F peak. A wrong weather forecast explains little of it: hot days come in above forecast even when the temperature was called correctly.

2 · Solar is moving the hard hour later

Demand is barely growing. What changed is when power is needed.

During the day, large solar farms supply part of the power people use. In the evening their output falls while homes and businesses still need power, so gas and coal plants, batteries and power from outside the area must pick up the difference fast. The demand left after solar and wind is called net load, and its climb at sunset is the evening ramp.

Illustration of how the evening ramp forms as solar output falls while demand stays high
How the evening ramp forms (illustrative).
TEP average hour in July and August 2026: demand, solar output and net load by hour of day
TEP, July-August 2026, average hour. Source: EIA-930.
TEP, large solar and the ramp202420252026 (to Nov 2)
Average output of large solar farms (MW)112113198
Share of midday demand met by large solar farms19%20%31%
Average daily largest 3-hour rise in net load (MW)531530644
The same rise on the hardest 5% of days (MW)687687868
Average time of the net-load peak, summer5:08 PM5:29 PM6:10 PM

After accounting for weather, average demand rose 1.7% from 2024 to 2026, and TEP's own sales grew 1.4% from 2022 to 2025. The net-load peak moved from about 5:30 to after 6 PM in one year, and the average evening climb grew 113 MW (181 MW on the hardest days). Battery output in the 100 highest-demand hours reached 267 MW in 2026.

3 · Storms knock customers out

Outages cost Pima County an estimated $72.9 million a year

Pima County's outage records come in 15-minute counts of customers without power. Measured in customer-minutes (one customer without power for one minute), July holds 42% of all outage time from 2020 to 2025, and June 15 to September 30 holds 66%.

Share of outage customer-minutes by month, peaking sharply in July
Outage time by month, Pima County. Source: EAGLE-I (Oak Ridge National Laboratory).
Estimated annual outage cost to Pima County customers by year
Annual outage cost, 2025 dollars. Source: EAGLE-I, LBNL-6941E, EIA-861M, BLS CPI-U.

What does it cost?

Lawrence Berkeley National Laboratory publishes what an interruption costs a home, a small business and a large business, by outage length. Weighted by TEP's customer mix and moved to 2025 dollars:

  • Outages cost Pima County an estimated $72.9 million a year, $49.3 million of it in monsoon season. The worst year was $152.3 million.
  • Homes are nine customers in ten but only 4% of the cost. Businesses carry the rest, so the estimate depends most on how many of the customers interrupted are businesses. Halving or doubling that share moves the total from $38 million to $143 million.

What makes a bad night?

A "big outage night" is one with 5,000 or more customers out at once.

  • Humidity sets up the storm. In monsoon season, big nights followed a median noon dew point of 58.9°F, against 52.8°F before normal nights.
  • Night outages last 39% longer on average than daytime ones of the same size and weather (95% range 20% to 61%).
  • By 3 PM, a two-input model (dew point and daily high) separated big nights from normal ones well on 2024-2025 (score 0.89 on a 0 to 1 scale where 0.5 is a coin flip), but only 15% of its flags were real big nights, and in earlier years it ranged from 0.50 to 0.85. The signal looks real, not proven.
4 · Where the money goes

Both sides on one page, without forcing one ranking

Storm outages have a price: what interruptions cost customers. The grid side is measured in megawatts. To put them on the same page, this section shows both, and adds a battery yardstick to the megawatts.

The battery yardstick. NREL puts the 2024 cost of a 4-hour utility battery at $334 per kilowatt-hour of storage, which is $1,371 per kilowatt of power in 2025 dollars. Spread over its 15-year life, plus 2.5% a year for upkeep, that is about $126 per kilowatt each year. It leaves out financing, so it is a floor, and a battery is one tool among several (gas plants, imports and demand response also cover a ramp).
Two panels: yearly customer benefit of each storm outage fix in dollars, and evening ramp growth in megawatts with the battery yardstick
Left: dollars a year. Right: megawatts. Two units, so two panels rather than one ranking. Select any chart to open it full size.
Summer problemWhat it costs or how big it isOne fix and what it's worth or costs (2025 dollars, per year)
Storm outages$72.9M a year to customers (range $38M-$143M)10% fewer customers hit: $7.3M benefit. 10% faster restoration: $5.5M. Night outages at day pace: $8.7M ($4.7M if only half the gap closes). Fix cost not public
Evening ramp+113 MW in one year (+181 MW on the hardest days)Batteries sized to one year's growth: about $14.2M a year ($22.7M for the hardest days); $155M up front
Hot-day forecast47 MW short on 90-105°F days; 134 MW on 110°F+ daysA forecasting fix, not a build. No public price
What this means

Four takeaways for a decision-maker

Storm outages are the largest dollar figure on the table.

At $72.9 million a year to customers, the improvements priced here are worth $5.5 million to $8.7 million a year each, before counting what they cost to achieve.

The grid's new pressure is the evening, and it is growing fast.

One year of solar growth added a ramp that would take about $14 million a year in batteries to cover. Demand is barely growing; the hour when other power is needed is moving from about 5:30 to after 6 PM.

The forecast gap is a modeling problem, not a construction one.

A peak forecast that runs 47 MW short on most hot days, and 134 MW on the hottest, is fixed in the model, not by building anything.

Both problems land on summer evenings.

July holds 42% of outage time and storms build from mid-afternoon, while the net-load peak now comes after 6 PM.

What public data can't answer: what each improvement would cost TEP to achieve, how TEP's own load model treats heat and rooftop solar, and how its planned batteries cover the 6 PM peak.

Limits

What the numbers can and can't carry

  • 2026 is partial. The data cut is Nov 2, 2026. Solar growth compares the same January-to-November 2 window in both years.
  • The battery yardstick is a floor. Straight-line over a 15-year life plus 2.5% a year for upkeep, with no financing cost.
  • Benefits exclude fix cost. The outage figures are what each improvement would be worth to customers, not what it would cost to achieve.
  • Two different areas. Demand covers TEP's balancing area, which also serves other utilities' customers; outages cover Pima County, which includes Trico Electric Cooperative's customers.
  • Ranges come from resampling whole blocks of days or events, since misses and storms cluster.
  • Public data only. Not affiliated with, endorsed by, or prepared using any information from Tucson Electric Power, APS, SRP or Trico Electric Cooperative.
Read the full work

The memo and both appendices

The memo

Eight pages for a business reader: the four acts, every table above, and how the numbers were made.

Download the memo (PDF)

Appendix: peak-demand memos

TEP, APS and SRP, plus an Arizona comparison: heat response, weather-adjusted growth, forecast accuracy and the evening ramp.

Download the peak memos (PDF)

Appendix: outage paper

The full storm study with all four models: outage severity, restoration time, big-night warning and a decision-tree rule card.

Download the outage paper (PDF)

Data

How it was built and how to rebuild it

The demand study is Python with DuckDB SQL on hourly grid data; the storm study is R on 15-minute outage counts. One script joins both into a single results file, and a checker confirms every number in the memo, deck and this page traces to it.

  1. python pull.py re-pulls both halves
  2. python peak/analysis.py runs the demand study
  3. outages/build_paper.ps1, then Rscript deck/deck_charts.R from outages/, builds the outage paper and its charts
  4. python combine.py writes one results file and the Act 4 chart
  5. python check_numbers.py confirms every number
  6. python build_memo.py renders the memo
  7. python deck/build_grid_deck.py and --mini build the decks