ERCOT Bidding Trends

How thermal and renewable resources bid and run across every day loaded from ERCOT's SCED disclosures. Each point is a daily average over that day's SCED runs.

Loading data…

Floor-priced MW by technology

Wind and solar offer prices

Share of the MW wind and solar offered each day that was priced in each band, weighted by MW over the day's hours. Tax-credit bids cluster between about −$60 and −$25 with little between −$25 and −$5, so −$20 separates them from shallow negatives. Uses the 2-day curves where the day has them, otherwise the 60-day curves.

Wind and solar curtailment

Energy wind and solar could have produced (HSL) minus what SCED dispatched them to (base point). The 60-day disclosure (solid) and ERCOT's 2-day reports (dashed: generation summary base points against the 2-day offer curves' summed HSL) report it separately. Available MW agree almost exactly; on some days the 2-day base points run a few percent lower, so the dashed line reads higher. The lower chart uses the 60-day figure where it exists and the 2-day one otherwise, and averages each hour's curtailed MW by that hour's system lambda: the cheap energy that was available but not taken.

Curtailment at the node

The same curtailed energy priced at each unit's own settlement point. An hour counts as operator-directed where ERCOT's HDL/LDL Manual Override Summary shows an operator lowering the unit's HDL (curtailment up to that reduction, averaged over the hour's runs), as congestion when the node price is at least $5/MWh below system lambda (the energy was worth less where the unit sits, often negative) and as oversupply otherwise (the system as a whole did not want it at the unit's offer). The split is by price, so it says what the energy was worth at the node, not which constraint SCED was managing. Units are matched to nodes through the DAM disclosure; hours with no node price are priced at lambda and counted as unmatched. Node prices load a few days per update, newest first, so early days fill in over time.

Thermal offer prices

Price at which 25%, 50% and 90% of a technology's submitted MW above minimum output (LSL) is offered, averaged over the day's hours. Minimum output is left out because SCED cannot dispatch below it; days processed before that was done use the whole curves, where the first quantiles sit inside the minimum-output block. A falling median with a steady lambda means units are bidding more of their capacity cheaply. Nuclear submits no curves.

Natural gas and implied heat rate

Daily gas prices: Houston Ship Channel and Waha (West Texas) from OilPriceAPI, Henry Hub spot from the EIA. Waha often trades well below the others and at times below $0, which pulls West Texas gas units' offers toward or below $0. Below that is an implied heat rate for combined cycles, combustion turbines and gas steam units. For each unit, the price of the first point on its submitted curve at or above its minimum output (LSL) that is priced above $0, averaged over its online SCED runs that day, is divided by the gas price that day. Starting at LSL leaves out the part of the curve SCED can never dispatch (many curves run from 0 MW at −$250 up to the unit's real price, and the part below LSL is just that line), and starting above $0 skips blocks offered at or below $0, so this is roughly the price a unit asks to move up from its minimum. Each day uses every unit's most recent value from the last 14 days, so the line follows the whole fleet rather than only the units that happened to run, and shows the median across units. Days with fewer than 10 units are left blank. The result is the heat rate (MMBtu per MWh) the offers imply if they were pure fuel cost. A steady implied heat rate with a moving offer price means the offers are tracking gas; a changing one means something else moved (margins, variable costs, the mix of units offering). The gas price used is Houston Ship Channel, the usual reference for ERCOT gas units (Henry Hub when Houston prices are not loaded). For West Texas units on Waha gas this overstates fuel cost, so their implied heat rate reads low.

Capacity by status

Running vs price

One dot per hour: the share of available capacity (HSL of units online plus offline but available; outages left out) that was running. The line is the median for each $5 band of price. Peakers follow the hour's price; coal and other slow units commit days ahead, so the trailing week's price often explains them better.

Starts per day

Number of times units of each technology came online (OFF to ON) each day, counted from per-unit status changes. Two starts in a day means a unit cycled off and back on.

Thermal output in cheap hours

Units that stayed above minimum in those hours

Shutdowns and two-shifting

Units shutting down most often

Who turns off for cheap stretches

Month by month: did each unit keep running through cheap hours?

Units: response to cheap stretches and time off when they shut down

Tomorrow: units expected to turn off at day-ahead prices

New behaviour: shutdowns that broke a unit's pattern

Across days

Leanest thermal hours

Marginal supply by settled price

Which resources move when the price moves, across every hour loaded, sorted by that hour's system lambda. Above zero: each technology's share of the supply MW whose offer price falls just around lambda, with each unit's minimum output (LSL) taken out in the 60-day data, since SCED cannot move a unit below it (the 2-day report has no unit limits, so minimum output stays in there). Below zero: battery charging bids that stop at that price, as a share of that supply (it can pass 100%; the chart stops at 100%). Smoothed blends the 100 hours nearest each price, so each point rests on the same amount of data. Exact uses only the hours in each $1 band of lambda.

Marginality at the node

Which units SCED dispatched to the interior of their own offer curve, run by run: base point strictly inside the ramp-limited range it had that run (LDL to HDL) and not on a vertical step, so the curve's price at the base point is the price SCED saw at the unit's node. A unit climbing at its ramp rate sits at HDL and does not count, and on days processed with ancillary service awards (format 5 unit files) the awards come off that range first: a unit carrying Reg-Up, RRS, ECRS or Non-Spin reaches its energy limit that much below HDL, and one carrying Reg-Down that much above LDL. Combustion turbines are scored without this, since netting their awards made their check against node prices worse. At lambda means that implied price is within $2 (or 5%) of that run's system lambda: the unit is setting the system price. Below lambda means the unit sits behind an export constraint, where its node is cheaper than the system (wind and solar offering at negative prices are the usual case). Above lambda means its node is dearer than the system. A unit marginal for a third of the hour's runs counts a third of a unit-hour. Days processed before the per-unit files carried per-run base points use the hourly mean instead, which lets a unit swinging between its limits read as marginal, and leave storage out; the last chart checks the implied price against ERCOT's published node price on the days that have one.

Read below lambda for storage and combustion turbines with caution. When their curve price is more than $5 from the node price, the node is dearer in nearly every case: the unit offered cheaper than its node and still was not dispatched up, so something the disclosure does not show held it back. A test on the 15 days with the most mismatches found that netting ancillary service awards brings coal and gas steam to about 90% within $5 but leaves storage and combustion turbines near 50%, and that ramp limits, ERCOT's SCED1 curve and, for most runs, state of charge do not explain the rest. About a fifth of the remaining gaps fall in 15-minute intervals where lambda moved by more than $5, which the 15-minute node price averages away.

Mitigation

ERCOT mitigates a unit's energy offer when the unit can relieve a non-competitive transmission constraint, capping the curve SCED uses (the SCED2 curve) at the unit's mitigated offer cap. For every unit and SCED run this compares SCED2 with SCED1 (the offer as submitted, extended to the unit's limits). A run is mitigated when any part of the curve between LSL and HSL was lowered by more than $0.50/MWh, and mitigated at the base point when the price at the MW SCED dispatched was lowered. It set the price when the unit was also on the margin (see the panel above), so the node's LMP was the mitigated price; the cut at the base point is then how much mitigation lowered that LMP, holding the dispatch fixed. That is the first-order effect: with the offer as submitted SCED would also have dispatched differently, so the true price change is at most this. Only days whose per-unit files carry the SCED2 curve (format 6) are counted.

Changes in bidding approach

Units switching between ≤ $0 and above $0 within a day (MW above LSL)

Days when a thermal unit's offer moved its first price across $0 and back at least once, which points to deliberate intraday repricing rather than a change in strategy.

Unit detail

Pick a thermal unit, or click a unit in any table above.