ESG · Machine learning · Predict + report
The emissions gap
Most power plants never report their emissions. Estimate a plant's annual CO2e from what is public about it — fuel, capacity, country, location — so the gap can be priced.
Cash prizes for the top three. Amounts are announced on Monday 2 November 2026 and paid after the audit. Prizes need a beaten baseline, a filed solution report and a reproducible pipeline — see the rules and terms.
- Metric
- RMSLE (lower is better)
- Baseline
- 1.173
- Capacity × the median tonnes-per-MW of the plant's primary fuel
- Honest model
- 0.946
- Default gradient-boosted tree on the shipped features (log target)
- Closes
- 29 Nov 2026, 23:59 UTC
- opens 5 Oct 2026, 00:00 UTC
- Entrants
- 0
- 5/day · select 2
Overview
The problem. Investors, insurers, lenders and regulators need the emissions of assets that do not report them: that is the "E" in every ESG disclosure regime now arriving (ISSB, CSRD, the SEC's climate rule). Climate TRACE estimates asset-level emissions from satellites and models; here you learn the map from what is public about a plant to what it emits. Your job: for 2,605 fossil-fuelled power plants you have never seen, estimate annual CO2e in tonnes for each year 2021–2025.
The data. One row per plant-year. Train: 28,667 rows; test: 12,560 rows for plants in withheld country × 0.5° cells, so a station's units never straddle the sides. Each row has an opaque plant code, the year, the primary fuel and full fuel mix, the country, nameplate capacity in MW, and coordinates to 0.5°. The target is Climate TRACE's annual estimate; activity, capacity factor and emissions factor are withheld.
Scoring. Root mean squared log error, lower is better: a 2× miss costs the same on a 50 MW peaker as on a 4 GW station. Public (30%) and private (70%) splits are by cell; your standing is the private split.
Baselines (private split). Capacity times the median tonnes-per-MW of the plant's primary fuel in train: 1.173. A default gradient-boosted tree on the shipped columns, log target: 0.946.
Why it matters. The difference between what a portfolio reports and what its assets emit is a number that moves capital. Getting it right for the unreported majority is the work.
How you are graded
70% the metric, 30% the report. Your selected submissions are scored on the withheld private split at close; your rank there becomes metric points (first of the field = 1, last = 0; below the baseline = 0). Your solution report is graded against the five criteria below by three independent, blind judges — two model families and one variant prompt — at temperature 0; each criterion takes the median level, and any spread of more than one level goes to a human. Final points = 70 × metric points + 30 × report score. Medals and prizes need a beaten baseline and a filed report; the top ten are audited by re-running their code from train.csv.
| Criterion | Level 2 — Solid | Level 3 — Exemplary |
|---|---|---|
| Problem framing and impact | States the decision, the user and what a given error costs them. | As 2, and quantifies the value of the improvement over the baseline in the user's terms. |
| Data understanding and validation | A split that mirrors the test split; leakage risks named and handled. | As 2, with evidence the local validation tracks the public score, and a data finding that changed the approach. |
| Method and rigour | Choices justified, compared against both pinned baselines, at least one thing that failed reported honestly. | As 2, with an ablation or sensitivity check that shows which parts matter. |
| Error analysis and limitations | Shows where the model fails (segments, conditions) and gives a plausible reason. | As 2, and states the deployment risks: who is harmed if it is over-trusted, what would have to be monitored. |
| Reproducibility and clarity | Code, environment and steps that a reader could run; prose is clear and within length. | As 2, with fixed seeds, a one-command run, and results that match the report. |
All four levels, the judge prompts, model ids and the calibration statistics are published with the results. Rules and terms.
Timeline
- Mon, 5 Oct 2026OpensData released; submissions accepted.
- Mon, 2 Nov 2026Mid-pointPrize pool announced; first clinic.
- Sun, 29 Nov 2026ClosesReport and selections frozen; final 48 hours are the quiet period.
- Mon, 7 Dec 2026ResultsPrivate standings, medals and the transparency pack. Seven days to appeal.
Data
Sources and licences
- Climate TRACE — electricity-generation emissions sources v5.10.0 (power sector package, CO2e 100-yr) — Creative Commons Attribution 4.0 International (CC BY 4.0) · retrieved 2026-09-21
Climate TRACE (2026). Emissions data v5.10.0, electricity-generation sector. https://climatetrace.org — CC BY 4.0
Split. Cells (not rows) are split: every plant in the same country × 0.5° cell, and every year of it, is wholly train (~70%) or wholly test (~30%). Within test, public (30%) or private (70%) by an independent hash of the cell, so a station's units and years never straddle the two splits.
Changes made. Monthly source rows summed to plant-years 2021–2025; restricted to plants with a fossil fuel in the mix, positive capacity and twelve reported months; activity, capacity factor, emissions factor, names and ownership removed; coordinates rounded to 0.5°; plant ids replaced by opaque codes.
Withheld. Plant name and Climate TRACE source id; Activity (MWh generated); Capacity factor and emissions factor; Exact coordinates; Ownership.
Rows: train 28,667 · test 12,560 (public 3,809, private 8,751).
Artefact audit passed: No duplicate rows across train and test (0 of 12560 test rows have an identical feature row in train); 1-NN does not beat the honest model (1-NN rmsle 1.6831 vs honest 0.9463); No single feature encodes the target (strongest |corr| 0.863 (capacity_mw)); Row order is uncorrelated with the target (spearman(row index, target) = -0.003); The id does not encode the target (spearman(id number, target) = 0.002).
RMSLE: root mean squared error of log(1 + tonnes). It weights a 2× miss the same on a 50 MW peaker and a 4 GW station.
| id | Row id (one per plant-year). Use it in your submission. |
| plant | Opaque plant code. Cells are split whole: a test plant, and every other plant in its 0.5° cell, never appears in train. |
| year | Calendar year the emissions are for (2021–2025). |
| primary_fuel | The first-listed fuel: coal, gas, oil, other_fossil, biomass or waste. |
| fuels | The full fuel mix as Climate TRACE lists it, comma-separated. |
| fuel_count | Number of fuels in the mix. |
| country | ISO 3166-1 alpha-3 country code. |
| capacity_mw | Nameplate capacity in megawatts (the year's maximum reported). |
| lat_r | Latitude rounded to 0.5°. |
| lon_r | Longitude rounded to 0.5°. |
| annual_co2e_t | Target. Annual CO2e in tonnes (100-year GWP), Climate TRACE's estimate (train only). Zero is a real value: a plant that did not run, or one whose CO2e is biogenic. |
Sign in to download the data once the competition opens.
Rules
- One entry per person; your handle is fixed once you join. Entering means you accept the competition rules and terms.
- Up to 5 submissions a day (resets 00:00 UTC). Select up to 2 for final scoring; if you select none, your best public score's file is used.
- Train on the shipped data only. No external data beyond what the data card lists, and never the withheld targets from any source — looking them up is disqualification.
- Your solution report (30% of your points) is written on this page and graded as it stands at close. Medals and prizes need a filed report and a beaten baseline; the top ten are audited by re-running their code from train.csv.
- Sharing code or ideas publicly is fine; sharing a submission file is not (identical files are detected). One account per person. Text aimed at the grader scores zero.
- The final 48 hours are the quiet period: the public board freezes for viewers while you still see your own scores. Results are published once, after the audit, and are final subject to appeal.
The full competition terms apply to every entry.
