Chapter 4 of 12

Binding and marginal value

A constraint that binds gets a number attached to it every five minutes: the dollars the next five minutes of dispatch would save if the limit were one megawatt looser. That number is the shadow price, and it is the single most useful column in the data.

Three states

Slack
LHS is strictly inside the limit. Headroom is positive. The constraint has no effect on dispatch and its marginal value is exactly zero.
Binding
LHS equals RHS. NEMDE would like to move further but the rule stops it. The marginal value is non-zero.
Violating
LHS is beyond the limit. NEMDE could not satisfy every rule and chose to break this one, paying its penalty in the objective. VIOLATIONDEGREE is non-zero and the marginal value is a penalty price, not an economic one.

In AEMO's published solution the binding test is simply MARGINALVALUE != 0. Never infer binding by recomputing the RHS yourself: the RHS is built from measurements you do not have, and AEMO publishes the exact LHS, RHS and marginal value it solved with. Those published values are the ground truth for everything in this course.

What the marginal value means

NEMDE minimises the cost of dispatched offers subject to every constraint. In a linear program each constraint row carries a Lagrange multiplier, the rate at which the optimum objective would improve if that row's limit were relaxed by one unit. For a constraint written in MW that is dollars per MW for the five-minute interval, published in DISPATCHCONSTRAINT.MARGINALVALUE and conventionally read as dollars per MWh.

 Constraint binding at 500 MW  --->  what if the limit were 501?
                                             |
 marginal value = $50/MWh   <---   dispatch would swap 1 MW:
 (the saving)                       $80 plant down, $30 plant up

Properties worth remembering:

  • Zero means irrelevant. Relaxing a limit you are not touching saves nothing, so slack constraints carry MV = 0. That is why the binding test works.
  • The sign follows the operator. A binding <= network constraint publishes a negative marginal value in AEMO's convention; a binding >= FCAS requirement publishes a positive one. Magnitude carries the meaning. This course quotes magnitudes.
  • It is a shadow price, not a payment. Nobody is paid the marginal value. It is the dispatch engine's estimate of how much cheaper the interval would have been with one more megawatt of room, and it is the standard way to rank which limits actually mattered.
  • Summed over time it prices the bottleneck. Marginal value times megawatts times hours accumulates into the cost of a piece of congestion. AEMO's annual transmission constraint report ranks candidate upgrades this way. A convenient unit is MV-hours: the shadow price summed over bound intervals divided by twelve.

Penalties: the values that are not economics

Every constraint carries a constraint violation penalty, published as GENERICCONSTRAINTWEIGHT in the standing data and scaled by the market price cap. If NEMDE cannot satisfy every rule at once it violates the cheapest ones first, so the weights are a ranking: energy balance and the most safety-critical limits sit at the top, discretionary caps lower down. When a constraint is violated, or when the only way to hold it is to break something else, its published marginal value jumps from the economic range into the penalty range.

In practice the two ranges do not overlap. Economic marginal values run from cents to a few thousand dollars per MWh; penalty values start around one hundred thousand dollars and run to tens of millions. Any analysis that sums or ranks marginal values must drop the penalty band, or a single violated interval will dominate a month of real congestion.

Measured: the two bands

Swamping: switching a constraint off without deleting it

AEMO disables an equation by adding or subtracting 10,000 to its RHS, so that it can never bind. Such a row still appears in the solution tables with a nonsense limit. Treat any row with abs(RHS) >= 9,500 as switched off and exclude it from watchlists, statistics and training data. The Gunnedah to Tamworth constraint in Chapter 9 says so in its own description: "swamped with 96M or 9UJ or 9UH is out of service".

Measured

How marginal values are distributed

Ask "what is a typical marginal value?" and you have to say typical of what. Per bound interval, the answer is tiny, because most bound intervals belong to FCAS requirements that are met almost for free. Per bound constraint, the median is tens of dollars, and the tail is network congestion worth hundreds or a thousand dollars per MWh. The histogram splits FCAS from the rest so you can see both populations.

Measured: quantiles

Check your understanding

A row in DISPATCHCONSTRAINT shows LHS 426.9, RHS 426.9, MARGINALVALUE 0. The constraint is:

  • Binding, because LHS equals RHS.
  • Not binding in any economic sense: with a zero marginal value, relaxing it would change nothing.
  • Violated.
  • Swamped.

A constraint binds for one full hour with a constant marginal value of $50 per MWh. If its limit had been 1 MW looser for that hour, roughly how many dollars of dispatch cost would have been saved?

A constraint publishes a marginal value of $712,000 per MWh for one interval. The most likely explanation is:

  • Extreme congestion worth that much to the market.
  • A data error.
  • A violation penalty: NEMDE could not hold the limit and paid the constraint's weight.
  • The market price cap was reached.

True or false: a constraint whose published RHS is 10,168 with an LHS of 150 is almost certainly switched off rather than generous.

  • True
  • False