Kerem Özdemir

Case study · instrument two

marginal-abatement

An abatement cost curve that prints the arithmetic behind every bar.

The problem

Abatement measures get compared by their capital cost, because that is the number everybody has. It tells you almost nothing. Boiler tuning at 12 thousand euro returning 3.6 thousand a year for four years, and rooftop solar at 620 thousand returning 74 thousand a year for twenty five, cannot be ranked by their price tags. Ranking them that way puts the cheap and small ahead of the expensive and decisive.

The two figures also live on different clocks. One is spent once, the other returns every year for as long as the equipment lasts. Comparing them without turning the capital into an equivalent annual amount gives an ordering that changes with nothing but the reader. And even a correct ordering says nothing on its own, because no measure is worth doing in the abstract. It is worth doing against a price.

The method

A marginal abatement cost curve, built on the levelised cost of abatement. Each measure is reduced to one number: the capital cost is turned into an equivalent annual amount by a capital recovery factor over that measure's own life, the annual saving is taken off it, and what remains is divided by the tonnes the measure abates each year. Measures are sorted by that cost, cheapest first, ties broken by name, and drawn as bars whose width is the annual abatement and whose height is the cost per tonne.

CRF(r, n) = r / (1 - (1 + r)^-n)      r = 0.08, n = the measure's life
            1 / n                      when r = 0

LCOA      = (capex × CRF(r, n) - annual saving) / annual abatement

a measure is included at carbon price p when LCOA is at most p

The discount rate is 0.08 for every measure, written once in the code. Ten measures are in the page. As it opens, at 12 EUR per tonne, eight of them clear, together abating 8,300 of 15,400 tonnes a year at a net saving. The curve runs from compressed air leak repair at about 45 EUR per tonne of saving to a green power contract at about 32 EUR per tonne of cost.

What it does

One slider, from 0 to 200 EUR per tonne in steps of 1, starting at 12. Three readouts follow it: how many of the ten measures clear, the cumulative annual abatement they bring against the total available, and the net annual cost of the set, labelled a saving when it is negative. Selecting any bar opens its arithmetic underneath the chart.

Carbon price0 to 200 EUR per tonne, in steps of 1, starts at 12
Measuresten, each with capex, annual saving, life and annual abatement
Discount rate0.08, fixed, not a control
Readoutsmeasures unlocked, cumulative abatement, net annual cost at the levelised cost
On selecting a barthe recovery factor, the division that produced the cost, and whether it clears at the current price

What it refuses to do

It refuses to let the discount rate be argued. Eight percent sits in the code, once, for every measure, and there is no control for it. The ordering of a cost curve is exactly the thing a discount rate moves, and a curve whose reader can move it can be rearranged until it agrees with a decision that was already taken.

It refuses to give a cost without the arithmetic. Selecting a bar prints the capital recovery factor to six places, then the division that produced the cost per tonne, with that measure's own capex, saving, life and abatement written into it. No number in the readout is unreachable by hand from what is printed beside it.

It refuses to hide the half of the curve that lies below zero. Five of the ten measures pay for themselves at the stated discount rate. The axis carries a zero line and those bars are drawn under it, rather than being clipped away or flattened onto the baseline as though they were free.

It refuses to pretend the measures were modelled against each other. Every cost is computed from that measure's own row, and the totals are plain sums, so two measures that would eat into each other's savings are added as though they would not. The code contains no interaction term, and I would rather write that here than bury it in a coefficient.

It refuses to be a business case. There is no payback period, no net present value, no internal rate of return and no capital budget. The one money figure it produces is the net annual cost of the selected set, stated at the levelised cost and labelled as such every time it is printed.

It refuses to show an empty answer as a zero. Below the cheapest measure nothing clears, and instead of an empty list the instrument names the price at which the curve starts and shows the three cheapest measures anyway, so that the reader can see what the slider is short of.

Try it

The instrument runs in the projects page. Take the price down to zero to see what still pays for itself, then select any bar to read its cost being made.

Run marginal-abatement on the projects page

github.com/Keremozdemirra/esg-toolkit

A marginal abatement cost curve is a ranking, not a plan. This one shows the arithmetic of its ranking so that the argument can be about the inputs.

All projects