Understanding Emissions Data

OpenElectricity provides comprehensive emissions data for the Australian electricity grid, calculating CO₂ emissions from electricity generation using facility-specific emissions intensity factors. This guide explains how emissions are calculated, data sources, and how to access the data.

What are Emissions?

Emissions in the electricity sector refer to greenhouse gases, primarily carbon dioxide (CO₂), released during electricity generation. Different generation technologies have vastly different emissions profiles:
  • Coal: High emissions (0.7-1.4 tCO₂/MWh)
  • Natural Gas: Moderate emissions (0.4-0.6 tCO₂/MWh)
  • Renewables: Zero operational emissions (solar, wind, hydro)
  • Biomass: Variable emissions depending on fuel source

How OpenElectricity Calculates Emissions

OpenElectricity calculates emissions at the unit level using the following formula: Emissions=Energy Generated×Emissions Intensity Factor\text{Emissions} = \text{Energy Generated} \times \text{Emissions Intensity Factor} Where:
  • Emissions are measured in tonnes of CO₂ (tCO₂)
  • Energy Generated is measured in megawatt-hours (MWh)
  • Emissions Intensity Factor is measured in tCO₂/MWh

Detailed Calculation

For each generation unit at each time interval: Eunit=Gunit×EFunitE_{unit} = G_{unit} \times EF_{unit} Where:
  • EunitE_{unit} = Emissions from the unit (tCO₂)
  • GunitG_{unit} = Energy generated by the unit (MWh)
  • EFunitEF_{unit} = Unit’s emissions factor (tCO₂/MWh)
Total emissions for a facility, region, or network are calculated by summing individual unit emissions: Etotal=i=1nEunit,iE_{total} = \sum_{i=1}^{n} E_{unit,i} The aggregate emissions intensity for a region or network is: EIaggregate=i=1nEunit,ii=1nGunit,iEI_{aggregate} = \frac{\sum_{i=1}^{n} E_{unit,i}}{\sum_{i=1}^{n} G_{unit,i}}

Implementation Details

The emissions calculation is implemented in the facility aggregation pipeline (opennem/aggregates/facility_interval.py):
-- Calculate emissions for each unit
CASE
    WHEN sum(fs.energy) > 0 THEN
        coalesce(round(sum(u.emissions_factor_co2 * fs.energy), 4), 0)
    ELSE 0
END as emissions,

-- Calculate emissions intensity
CASE
    WHEN sum(fs.energy) > 0 THEN
        coalesce(round(sum(u.emissions_factor_co2 * fs.energy) / sum(fs.energy), 4), 0)
    ELSE 0
END as emissions_intensity

Data Sources

OpenElectricity sources emissions intensity factors from authoritative Australian government agencies:

Primary Sources

  1. AEMO (Australian Energy Market Operator)
    • Provides emissions factors for NEM generators
    • Updated annually in the Integrated System Plan (ISP)
    • Includes technology-specific and unit-specific factors
  2. Clean Energy Regulator (CER)
    • National Greenhouse and Energy Reporting (NGER) scheme data
    • Facility-level emissions reporting
    • Verified emissions data for major generators
  3. State Environmental Agencies
    • WEM (Western Australia) emissions data
    • State-specific emissions reporting

Data Quality

Emissions factors are assigned with source attribution:
  • aemo: Direct from AEMO publications
  • cer: From Clean Energy Regulator NGER data
  • opennem_estimated: Estimated based on fuel type and technology

Available Metrics

OpenElectricity provides emissions data at multiple levels:

Network Level

  • Total emissions by network (NEM, WEM)
  • Emissions intensity (tCO₂/MWh)
  • Historical trends and patterns

Regional Level

  • Emissions by network region (NSW1, QLD1, VIC1, SA1, TAS1)
  • Regional emissions intensity
  • Inter-regional emissions flows

Facility Level

  • Individual facility emissions
  • Unit-level emissions where available
  • Technology-specific emissions profiles

Accessing Emissions Data

Via the API

Emissions data is available through multiple API endpoints: Network Emissions:
const response = await client.getNetworkData(
  "NEM",
  ["emissions", "emissions_intensity"],
  {
    interval: "1h",
    dateStart: "2024-01-01",
    dateEnd: "2024-01-31",
    primaryGrouping: "network_region"
  }
)
Facility Emissions:
const response = await client.getFacilityData(
  "NEM",
  ["ERARING", "BAYSW1"],
  ["emissions"],
  {
    interval: "1d",
    dateStart: "2024-01-01"
  }
)

Via the Website

Emissions data is displayed on:
  • Network pages: Total grid emissions and intensity
  • Facility pages: Individual facility emissions profiles
  • Technology pages: Emissions by generation technology

Use Cases

Carbon Accounting

Track the carbon intensity of electricity consumption for:
  • Corporate sustainability reporting
  • Scope 2 emissions calculations
  • Time-of-use optimization

Grid Analysis

Understand emissions patterns:
  • Daily and seasonal variations
  • Impact of renewable generation
  • Regional differences

Policy Analysis

Support decision-making with:
  • Emissions reduction tracking
  • Technology transition monitoring
  • Market mechanism evaluation

Important Considerations

Scope Limitations

  • OpenElectricity reports operational emissions only (Scope 1)
  • Does not include lifecycle emissions from construction or decommissioning
  • Does not include upstream fuel extraction emissions

Time Resolution

  • 5-minute intervals: Instantaneous emissions rates
  • Hourly/Daily: Total emissions for the period
  • Use appropriate metrics for your analysis timeframe

Interconnector Flows

  • Emissions can be “imported” or “exported” between regions
  • Regional emissions include local generation only
  • Consider interconnector flows for consumption-based accounting

Future Enhancements

OpenElectricity continues to improve emissions data:
  • More granular unit-level factors
  • Lifecycle emissions estimates
  • Consumption-based emissions tracking
  • International emissions factors for comparison