Articles

How do you build a price duration curve from hourly prices?

Sorting a year of hourly power prices, reading the averages it hides, and why the top 100 hours matter more to a plant than to the forward.

A price duration curve is the year's hourly prices sorted from highest to lowest and plotted against cumulative hours. Its area divided by 8,760 is the time-weighted average, 70.19 per MWh in the illustrative year below, but the shape is the point: only 44.5 per cent of hours price above that average, and a gas plant that runs in its top 3,900 hours captures 90.46 per MWh, not 70.19.

Worked in full in Energy Trading by Julian R. Sterling, with every figure reproduced in a free workbook.See the book on Amazon →

Traders quote a power year as one number, the baseload forward. A generator does not earn the forward. It earns the hours it runs, and those are the expensive ones. The duration curve is the tool that turns one into the other: it keeps every hour's price but throws away the calendar, so that the question "how many hours a year is power above my marginal cost?" can be read straight off the chart.

The assumptions

An illustrative year of 8,760 hourly prices, already grouped into eight price levels. With real data you would sort all 8,760 rows; the arithmetic is identical.

Illustrative hourly prices for one year, sorted from highest to lowest, per MWh.
HoursPriceHours × priceCumulative hoursShare of year
10026026,0001001.1%
25015538,7503502.9%
55010557,7509006.3%
1,1008593,5002,00012.6%
1,90072136,8003,90021.7%
2,40063151,2006,30027.4%
1,7005085,0008,00019.4%
7603425,8408,7608.7%
8,760614,840100%

The plant read against the curve: 620 MW of gas-fired capacity with a marginal cost of 65.32 per MWh. The 760 cheapest hours are lost to a planned outage, so 8,000 hours are available.

The calculation, step by step

The result: one curve, five averages

The same year gives a different average for every set of hours you choose to average over. Each is arithmetically correct; each answers a different question.

Average price over different hour sets of the same curve, per MWh.
Hour setHoursAverageVersus 70.19
All hours (baseload forward)8,76070.190.00
Available hours (outage removes the cheapest)8,00073.625+3.44
Plant running hours3,90090.46+20.27
Top 350 hours350185.00+114.81
Bottom 2,460 hours2,46045.06−25.13

The 3.44 between the first two rows is pure selection: the outage was placed in the cheapest hours, so the hours that remain average more. Anyone who values the plant's availability at 73.625 while hedging it at a 70.19 forward is mixing two hour sets, which is one of the two headline errors the book takes apart.

Concentration. The top 350 hours, 4.0 per cent of the year, earn 25,970,560 of the plant's 60,792,240: 42.7 per cent of its margin. The top 100 hours alone earn 19.9 per cent.

What if: the top of the curve moves

The spike is the least certain part of any curve, and the part a forward hides best. Removing the top 100 hours altogether lowers the average from 70.19 to 67.9954, a move of 2.19, or about 3 per cent. The same deletion removes 19.9 per cent of the plant's gross margin.

Price of the top 100 hours varied, everything else unchanged.
Top-band priceTime-weighted averageChange in averagePlant gross margin (m)Change in margin (m)
16069.05−1.1454.59−6.20
26070.190.0060.790.00
36071.33+1.1466.99+6.20

A 100 move in a hundred hours shifts the forward by 1.6 per cent and the plant's margin by 10.2 per cent. A desk that marks the plant against the annual forward will barely see a change in scarcity pricing that rewrites its year. The flat number averages the hours away, which is why the duration curve, not the forward, belongs on the valuation page. The same logic sets the off-peak price derived in how to calculate the off-peak price from base and peak.

The common mistakes

Grouping too coarsely. Bands are a presentation device. If the plant's marginal cost falls inside a band, the running hours and the margin are both wrong. Keep the 8,760 rows in the model and group only the chart.

Reading the curve as a forecast of hours. A duration curve loses the calendar. It tells you how many hours price above 65.32, not which ones, so it cannot by itself say whether those hours fall in the outage window, in the peak block of a hedge or in a weekend. Keep the timestamp in a hidden column so the sorted hours can be mapped back.

Using one year's curve as the shape for every year. The shape moves with gas, carbon, renewables and interconnection. Scale the curve to each year's forward by all means, but test the top band separately, because that is where the value of a flexible plant sits. The way a plant's spread is read against the curve is in how to calculate a clean spark spread.

Takeaway

The eight bands, the two averages and the top-100-hours test are live formulas in the free workbook for this case, so the curve can be replaced with your own hours.

Questions readers ask

What is the difference between a load duration curve and a price duration curve?

A load duration curve sorts the hours of a year by demand; a price duration curve sorts them by price. Both run from the highest hour on the left to the lowest on the right. For valuing a plant or a hedge the price curve is the one that matters: read against a 65.32 marginal cost, the illustrative curve shows the plant running 3,900 of 8,760 hours and earning 60.79 million.

Why do most hours price below the average power price?

Because the average is pulled up by a few very expensive hours. In the illustrative year the top 100 hours price at 260, 3.70 times the 70.19 average, so 4,860 hours, 55.5 per cent of the year, sit below the average. A curve with a long right-hand tail of cheap hours and a short spike on the left always looks like this.

How many bands should a price duration curve have?

Enough that the hours a plant runs and the hours it does not fall in different bands. Eight bands reproduce the illustrative year exactly because its prices were set in eight levels; with real hourly data, keep all 8,760 rows and group only for presentation. Grouping the top 350 hours into one band would hide that they carry 42.7 per cent of the plant's margin.

Read the whole case

This article is one calculation from Energy Trading. The book takes the same case from first principles to the decision, chapter by chapter, and every figure it prints is a live formula in the free companion workbooks.

Get the book on Amazon →Free companion files

Also on Amazon UK · Amazon Germany · Amazon France · Amazon Canada

Also on this site

Reading guide: infrastructure, data centres and energy → · All 1340 articles →

If this book helped, or didn’t, a few lines on Amazon are worth more than they look: they are what the next reader goes on. Write a review. The workbook stays free either way.