Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 1 addition & 11 deletions benchmarking/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,18 +82,8 @@ Many apparent disagreements come from the denominator, not from missing emission

The goal is not an exact match to one external number. It is whether our estimate aligns with the **preponderance of the evidence**, after fair scope and dollar treatment.

## Results for this release

:::{figure} ../figures/diagrams/benchmark-2026-rc.png
:label: fig-benchmark-2026-rc
:alt: Donut chart titled How Cornerstone compares to third-party references. About 70 percent of country-sector pairs with a verified external benchmark fall within 25 percent of the benchmark; 21 percent have a 25 to 50 percent gap; 10 percent have a gap of 50 percent or more.
Share of country–sector pairs with a verified external benchmark. About 70% fall within 25% of the benchmark; the rest have larger gaps.
:::

See [](../releases/rc.md) for the release summary.

:::{seealso} Related
Internal accounting checks live on [](../validation/index.md). Version-specific headlines will also appear in the [](../releases/index.md).
Internal accounting checks live on [](../validation/index.md). Version-specific headlines appear in the [](../releases/index.md).
:::

+++
Expand Down
Binary file modified figures/diagrams/benchmark-2026-rc.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion figures/figures.csv
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ ghg-pipeline,ee/index.md,diagram (SVG),hand-made,,,draft
eeio-overview,intro/what-is-eeio.md,diagram (SVG),hand-made,,,draft
user-guidance-ef-by-country,factors/user-guidance.md,chart,"Cornerstone GHG Emission Factors workbook, 2026-rc (2026PRO, sector 541610)",figures/scripts/user_guidance_figures.py,Yohanna Maldonado,draft
user-guidance-worked-example,factors/user-guidance.md,diagram,"Worked example from the 2026-rc workbook (factor 0.0449; GBP rate 0.74283)",figures/scripts/user_guidance_figures.py,Yohanna Maldonado,draft
benchmark-2026-rc,benchmarking/index.md,chart,"EF benchmark comparisons for 2026-rc (share of country-sector pairs vs third-party references)",,Ben Young,draft
benchmark-2026-rc,releases/rc.md,chart,"EF benchmark comparisons for 2026-rc (61 / 18 / 9 of 88 sectors; model D from cornerstone_2026_v0_7, ceda 03facf41)",figures/scripts/benchmark_figures.py,Ben Young,draft
77 changes: 77 additions & 0 deletions figures/scripts/benchmark_figures.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
"""Write the benchmarking results donut to figures/diagrams/benchmark-2026-rc.png.

Redraws the slide-deck donut with the release's numbers. Each of the 88 benchmarked sectors falls in
one band by its gap, |model D - benchmark| / benchmark, with model D from the v1.0 release diagnostics
(cornerstone_2026_v0_7, ceda commit 03facf41):

- within 25% of the benchmark: 61 sectors
- 25-50% gap: 18 sectors
- 50% or more gap: 9 sectors

Each percentage is rounded to the nearest whole percent, halves up (69.32%, 20.45% and 10.23% show
as 69%, 20% and 10%), so the labels add to 99%.

Run from the repo root (needs matplotlib):
uv run --with matplotlib python figures/scripts/benchmark_figures.py
"""
from decimal import ROUND_HALF_UP, Decimal
from pathlib import Path

import matplotlib

matplotlib.use("Agg")
import matplotlib.pyplot as plt # noqa: E402
from matplotlib.patches import Circle, Wedge # noqa: E402

OUT = Path(__file__).resolve().parents[1] / "diagrams"
TITLE, INK, MUTED = "#2F6F67", "#2C3746", "#6A727C"
BANDS = [ # (label, sectors, colour)
("Within 25% of benchmark", 61, "#2F5D8A"),
("25–50% gap", 18, "#D5D8DC"),
("50% or more gap", 9, "#7D848D"),
]
plt.rcParams.update({"font.family": ["Helvetica", "Arial", "DejaVu Sans"]})


def donut():
counts = [n for _, n, _ in BANDS]
total = sum(counts)
pcts = [int((Decimal(100 * n) / total).quantize(Decimal(1), rounding=ROUND_HALF_UP)) for n in counts]

fig = plt.figure(figsize=(6.2, 5.7), dpi=200)
ax = fig.add_axes([0, 0, 1, 1])
ax.set_xlim(0, 620)
ax.set_ylim(570, 0)
ax.axis("off")

ax.text(28, 26, "How Cornerstone compares to third-party references", color=TITLE, fontsize=14.5,
fontweight="bold", va="center")

cx, cy, r_out, r_in = 310, 231, 158, 103
# The y axis runs top-down, so data angles turn clockwise on the page; -90 is 12 o'clock.
start = -90.0
for (_, n, colour) in BANDS:
sweep = 360 * n / total
ax.add_patch(Wedge((cx, cy), r_out, start, start + sweep, width=r_out - r_in, facecolor=colour,
edgecolor="white", linewidth=1.5))
start += sweep

ax.text(cx, cy - 18, f"{pcts[0]}%", color=BANDS[0][2], fontsize=34, fontweight="bold", ha="center",
va="center")
ax.text(cx, cy + 30, "within 25% of\nbenchmark", color=INK, fontsize=11, ha="center", va="center",
linespacing=1.4)

for i, ((label, _, colour), pct) in enumerate(zip(BANDS, pcts)):
y = 431 + 32 * i
ax.add_patch(Circle((37, y), 9, facecolor=colour, edgecolor="none"))
ax.annotate(label, (65, y), color=INK, fontsize=12.5, va="center")
ax.annotate(f" {pct}%", (1, 0.5), xycoords=ax.texts[-1], color=INK, fontsize=12.5,
fontweight="bold", va="center")

ax.text(38, 531, f"Share of the {total} benchmarked sectors", color=MUTED, fontsize=10.5, va="center")
fig.savefig(OUT / "benchmark-2026-rc.png", facecolor="white")
plt.close(fig)


if __name__ == "__main__":
donut()
18 changes: 18 additions & 0 deletions releases/rc.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,24 @@ Three groups of improvements sit behind the changes.

Together these make the 2017–2026 time series possible.

## Benchmarking results

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@WesIngwersen - the content got moved here


:::{figure} ../figures/diagrams/benchmark-2026-rc.png
:label: fig-benchmark-2026-rc
:alt: Donut chart titled How Cornerstone compares to third-party references. 69 percent of the 88 benchmarked sectors fall within 25 percent of the benchmark; 20 percent have a 25 to 50 percent gap; 10 percent have a gap of 50 percent or more.
Share of the 88 benchmarked sectors. 69% fall within 25% of the benchmark; the rest have larger gaps.
:::

We benchmarked the direct emission factor (`D`) of 88 sectors, chosen because they drive a large share of emissions. Together they account for about 52% of global direct emissions in the model.

| Measure | Sectors | Share of the 88 sectors | Share of global direct emissions |
|---|---|---|---|
| Within 25% of the benchmark | 61 | 69% | 46% |
| Manually reviewed | 47 | 53% | 36% |
| Manually reviewed, or within 25% of the benchmark | 78 | 89% | 50% |

A sector counts as manually reviewed when someone investigated its gap and reached one of the three outcomes in [](../benchmarking/index.md): a sharper benchmark, a model improvement, or a documented difference. Sectors within 25% of the benchmark were not all reviewed in this depth, because the gap gave no reason to.

## Why do these improvements matter?

They translate real world changes to corporate footprints. Three examples show how:
Expand Down
Loading