Curtailment
How RenewMap splits half-hourly curtailment into network and economic components for semi-scheduled wind and solar units, from AEMO's published dispatch and offer data.
Curtailment is the energy a wind or solar generator could have produced but wasn’t allowed or didn’t want to. It’s the difference between the resource a site has and the revenue a project can actually earn from it.
Two different things cause it, and we report each separately:
- Network curtailment. A constraint is binding somewhere on the system, and the dispatch engine can’t accept everything the generator is offering without breaking a limit. The energy is available, the generator was willing to sell it at the price on offer, and the network couldn’t move it.
- Economic curtailment. The price has fallen below the level at which the generator is prepared to generate, often below zero, which happens in the middle of sunny, mild, low-demand days in high-penetration regions. The generator withdraws its own offer, or is priced out of the dispatch. The energy is available and the market has decided it isn’t worth taking.
Just because curtailment as considered ‘network’ doesn’t necessarily mean the energy was worth anything at that time. See Revenue & Missed Revenue to understand how the Missed Revenue metric can help you understand the value of the curtailment.
What curtailment is not is a weather measure. A still, overcast day produces very little energy and zero curtailment, because nothing was available to curtail.
Which units have curtailment?
Curtailment is defined as energy that costs ‘nothing’ to produce and was permanently lost and so only applies to wind and solar. They get registered in the NEM as semi-scheduled units, and for those AEMO publishes a forecast of what each generator could have produced from the resource available to it, unconstrained by the network or the market. That forecast, published alongside the unit’s declared availability and its dispatch target, is what makes the full figure measurable. Technologies such as gas, coal batteries or hydro have either an explicit cost (fuel) or an implicit one (the opportunity cost of using stored energy now rather than later), so there’s no equivalent free resource going to waste.
So Curtailment Total and both of its components are populated for semi-scheduled wind and solar, and blank for everything else.
Where you see it in RenewMap
The Generation chart in a project’s Operational tab, where the network and economic components are stacked separately above dispatched output, the Curtailment map visualisation, and in the api.


| Granularity | 30 minutes, per DUID, summed across a project’s DUIDs |
| Units | MW (average over the half hour) or MWh for the half hour, depending on the series, and % for the derived percentage |
| Series names | curtailment_constraint_mwh, curtailment_constraint_pct, curtailment_economic_mwh, curtailment_economic_pct |
| Applies to | Semi-scheduled wind and solar generators |
| Blank when | The unit isn’t semi-scheduled, no availability data exists for that interval, or no offer stack covers it |
How it’s calculated
Curtailment is available output less dispatched output, floored at zero, evaluated for every 5-minute dispatch interval and then averaged to the half hour.
For each interval, AEMO publishes what a semi-scheduled unit could have produced from the resource available to it, what it declared as available to the market, and the target output it was actually dispatched to. We take the more conservative of the two availability figures as the output genuinely available in that interval, and treat whatever share of it went undispatched as curtailment.
A generator can have a real resource but keep part of its capacity out of the market entirely (not bid at any price, for maintenance or otherwise).
Splitting network from economic
The split is defined base on the following question for each interval: how much of the curtailed energy was the unit willing to sell at the price that cleared?
The unit’s offer stack gives up to ten price bands, each with an amount of capacity behind it (e.g. a plant might be willing to sell 100MW at $10 and the next 100MW at $200). We add up the capacity in every band priced strictly below the regional price, cap it at the availability figure above, and call that the unit’s willing MW.
Network curtailment is then the willing MW that went undispatched, and economic curtailment is whatever’s left of the total:
Network curtailment = min( Curtailment Total,
willing MW - dispatched MW - FCAS enabled MW )
Economic curtailment = Curtailment Total - Network curtailment
Reading it the other way round: if a unit was curtailed while offering capacity below the clearing price, the only thing that could have stopped it being dispatched is a binding constraint. If it was curtailed while its offers sat above the clearing price, it priced itself out.
Capacity committed to FCAS is treated as the unit’s own choice and therefore economic curtailment. A unit enabled for frequency control services has to hold headroom back from the energy market to deliver them, and RenewMap nets the enabled MW (contingency and regulation, raise on the generating side) out of the network component before anything is called network-caused. That capacity falls into the economic component instead. FCAS enablement isn’t reported as a series of its own.
Curtailment Percentage
Curtailment Percentage is curtailed energy as a share of available energy, meaning curtailed plus generated:
curtailed
Curtailment % = ------------------------- * 100
curtailed + generated
The denominator is deliberately not nameplate capacity. A still night with no output and no curtailment therefore doesn’t drag the percentage anywhere, and the figure stays comparable between a windy month and a calm one.
Where nothing was available at all (no generation and no curtailment, as on any solar generator at night), the percentage is left blank rather than reported as 0% or 100%.
Where the data comes from
The resource forecast, declared availability, dispatch target and FCAS enablement all come from AEMO’s published dispatch data. Whether a unit is semi-scheduled comes from AEMO’s registration data, resolved to the version in force at each interval, so a unit that changes classification is treated correctly on both sides of the change.
The offer stack behind the split comes from AEMO’s dispatch engine case files.
Common questions
Why is Generation populated but Curtailment is blank?
Generation only needs the unit’s own telemetry. Curtailment depends on the unit being involved in AEMO’s dispatch directions, which means it will only apply to semi-scheduled units (typically wind and solar >30MW).
Is a low output day the same as curtailment?
No. Curtailment compares available output against dispatched output. On a still or overcast day very little is available, so there’s very little to curtail: output is low and curtailment is near zero. A high-curtailment day is usually a good resource day where the network or the price got in the way.
Does this include curtailment the operator chose?
Yes, and it’s reported separately. Economic curtailment (withdrawing capacity when prices are low or negative) is its own series, stacked in its own colour on the Generation chart, and valued separately in Revenue & Missed Revenue. Curtailment Total remains the sum of both.
Why doesn’t this match the developer’s own curtailment figure?
Project owners typically measure against their own resource assessment or their own estimate of potential output, not AEMO’s published forecast, and they often report only involuntary curtailment. Both differences push in the same direction as their reporting boundary. RenewMap’s figure is derived consistently from AEMO’s published data across every project, which is what makes it comparable between assets; it isn’t a substitute for an owner’s own energy accounting.
Related pages
- Generation & Load: what the unit actually produced
- Revenue & Missed Revenue: what each curtailment component would have been worth
- Marginal Value & Binding Hours: which network limits were binding
- Data sources & coverage: what’s covered, and the update cycle