# Method: estimated generation-based emissions intensity

This documents how the page turns EIA-930 generation data into the carbon numbers
it ranks on. The output is an estimate derived from generation by fuel. It is not
EIA carbon data and not a measured emissions saving. This file is generated by
the same script that produces the hourly derived file and the page's profile
(`agg3.js`), so the counts below match the data exactly.

## Source

- File: `data/eia930_fuelmix_6BA_2026-10-21_to_2026-10-27_UTC.csv`, extracted from
  EIA's `EIA930_BALANCE_2026_Jul_Dec.csv` (Hourly Electric Grid Monitor). Provenance
  and row counts: `data/provenance_and_validation.json`.
- Window: 168 UTC hour-ending records per balancing authority, 2026-10-21 00:00 to
  2026-10-27 23:00 UTC.
- Balancing authorities: PACE, BPAT, CISO, ERCO, MISO, PJM. These are grid operating
  regions, not states or cities. The Utah site is inside PACE's footprint; a balancing
  authority's generation mix is not the exact supply at one site.

## Columns used

Raw (not imputed, not adjusted) `Net Generation (MW) from ...` columns, mapped to
fuel buckets: Coal; Natural Gas; Nuclear; All Petroleum Products (oil); Hydropower
Excluding Pumped Storage (hydro); Solar without and with Integrated Battery Storage
(solar); Wind without and with Integrated Battery Storage (wind); Geothermal; Other
Fuel Sources and Unknown Fuel Sources (other).

Not used: Pumped Storage, Battery Storage, Other Energy Storage, Unknown Energy
Storage. Storage discharge is not new generation and is not counted as zero-carbon
supply. Demand and Total Interchange are not used: imports are not traced, so this is
a production-based intensity for the balancing authority, not a consumption-based one.

## Blank and negative cells, counted per raw column

Each raw column is checked on its own, before any pairing of columns.

- A blank cell is missing. It is skipped for that column and hour and never replaced
  with zero. BPAT's coal column is present in the file but all 168 values are blank,
  so coal contributes nothing to BPAT's mix.
- A negative cell is excluded from both numerator and denominator for that hour and
  counted below. No cause is assumed for negative values; EIA publishes them as
  reported, and they occur in coal, solar, wind and other columns.
- Solar and wind each combine two columns after this check; the bucket is the sum of
  the included columns, and missing if none are included.

| BA | rows | blank cells by column | negative cells by column | sum of negatives (MW) |
|---|---|---|---|---|
| BPAT | 168 | Coal 168; All Petroleum Products 168; Wind with Integrated Battery Storage 168; Geothermal 168; Unknown Fuel Sources 168 | Solar without Integrated Battery Storage 90; Solar with Integrated Battery Storage 18; Wind without Integrated Battery Storage 11 | -265 |
| CISO | 168 | Solar with Integrated Battery Storage 168; Wind with Integrated Battery Storage 168; Unknown Fuel Sources 168 | Coal 166; Solar without Integrated Battery Storage 88; Other Fuel Sources 77 | -341670 |
| ERCO | 168 | All Petroleum Products 168; Solar with Integrated Battery Storage 168; Wind with Integrated Battery Storage 168; Geothermal 168; Unknown Fuel Sources 168 | none | 0 |
| MISO | 168 | All Petroleum Products 168; Solar with Integrated Battery Storage 168; Wind with Integrated Battery Storage 168; Geothermal 168; Unknown Fuel Sources 168 | none | 0 |
| PACE | 168 | Nuclear 168; All Petroleum Products 168; Solar with Integrated Battery Storage 168; Wind with Integrated Battery Storage 168; Geothermal 168; Unknown Fuel Sources 168 | Solar without Integrated Battery Storage 41 | -53 |
| PJM | 168 | Solar with Integrated Battery Storage 168; Wind with Integrated Battery Storage 168; Geothermal 168; Unknown Fuel Sources 168 | none | 0 |

### Effect of excluding negatives

Excluding a negative cell removes it from the denominator. The alternative is to net
it in as a signed value. The hourly derived file carries both intensities
(`ci_excl`, used by the page, and `ci_netted`). Difference between the two:

| BA | max abs difference (gCO2e/kWh) | mean abs difference (gCO2e/kWh) |
|---|---|---|
| BPAT | 0.1 | 0.01 |
| CISO | 297.7 | 52.22 |
| ERCO | 0.0 | 0.00 |
| MISO | 0.0 | 0.00 |
| PACE | 0.4 | 0.03 |
| PJM | 0.0 | 0.00 |

The page uses `ci_excl`. The table above states what that choice changes.
**Sensitivity flag, CISO.** Negative cells here are large (sum -341670 MW across 331 cells, mostly in Other Fuel Sources). Excluding them versus netting them changes CISO's estimate by 52 gCO2e/kWh on average and up to 298. Treat CISO's rank as uncertain; the cause of the negative values has not been verified.

## Formula

For balancing authority b and hour h, with included generation G_f,h (MW) by fuel f:

```
share_f,h = G_f,h / sum_f G_f,h
CI_b,h    = sum_f share_f,h * EF_f          [gCO2e / kWh]
```

The page's seven-day profile for UTC hour-of-day k is generation-weighted: for each
fuel, the mean of G_f,h over the hours in slot k where the fuel was reported, then
shares and CI from those means. Each slot holds 7 hours (one per day). Every hour
behind every slot is in `data/eia930_hourly_estimated_intensity.csv`.

| BA | profile mean CI | min slot | max slot |
|---|---|---|---|
| BPAT | 92 | 84 | 97 |
| CISO | 268 | 134 | 373 |
| ERCO | 303 | 209 | 378 |
| MISO | 423 | 368 | 477 |
| PACE | 570 | 399 | 669 |
| PJM | 353 | 320 | 382 |

## Emission factors (illustrative assumptions, gCO2e per kWh, applied uniformly)

| Fuel | EF | Basis |
|---|---|---|
| Coal | 1000 | round figure for US coal fleet including upstream; IPCC AR5 combustion median is 820, a one-line sensitivity |
| Natural gas | 430 | between the IPCC AR5 combined-cycle median (490) and modern CCGT fleet values |
| Petroleum | 800 | IPCC AR5 range for oil generation |
| Nuclear | 12 | IPCC AR5 median |
| Hydro | 24 | IPCC AR5 median |
| Wind | 11 | IPCC AR5 onshore median |
| Solar PV | 45 | IPCC AR5 utility-scale median 48, NREL harmonization about 40 |
| Geothermal | 38 | IPCC AR5 median |
| Other / unknown | 600 | assumption for unspecified thermal; small share everywhere |

These factors are assumptions chosen in the range of published lifecycle medians (IPCC AR5 Annex III, NREL harmonization). They are not cited per value, not plant-specific, and not EIA data. Changing them changes the estimate in proportion.

## What this estimate is not

- Not a measured carbon intensity or an EIA-published carbon value.
- Not consumption-based: imports and exports are not traced.
- Not a forecast: the profile is a historical hour-of-day average. When hosted, the
  page scales the solar and wind shares by Open-Meteo weather for the next 48 hours;
  that adjustment is labeled on the page.
- Not a city's supply: it is the balancing authority's generation mix.

## Pricing

Rocky Mountain Power Schedule 9 (base high-voltage energy charges) applies to the
Utah site only. Other sites use a labeled price model. Demand charges are not modeled.
