Market and Congestion Models

REPORT ID: PART-1 · 6 MIN READ

The decision being supported

Typical questions: what will prices be in this zone next year; how much congestion rent accrues on this interconnector; what does a new 2 GW link do to price spreads; what will redispatch cost after this plant closes; is this battery’s revenue stack robust to a market design change.

These questions are economic, but the answers are set by the network. The model must therefore represent the market clearing and enough of the grid to reproduce which constraints bind.

Nodal versus zonal

Nodal (LMP) markets clear a security-constrained economic dispatch over the full network and price every bus at the dual of its balance constraint. The price at bus i decomposes as:

LMP_i = λ_energy  +  Σ_l μ_l · PTDF(l, i)  +  loss component

Congestion is priced where it occurs, so the market outcome is by construction feasible and no separate redispatch is needed. PJM, MISO, ERCOT, and CAISO operate this way.1

Zonal markets, including most of Europe’s, clear over aggregated bidding zones with a simplified network between them and none inside. Prices are uniform within a zone; internal congestion is invisible to the market and resolved afterwards by the TSO through redispatch, at cost. Modelling a zonal market therefore requires two stages, and the second is where the network detail lives.

This difference determines your model’s shape more than any other choice, so establish it first.

Modelling a zonal market

Stage 1 — market clearing. A unit-commitment/economic-dispatch model over zones, with hourly resolution, generation by technology with marginal costs (fuel, carbon, variable O&M, efficiency), demand, renewable availability from weather years, storage, and inter-zonal exchange limited by NTC or flow-based constraints. Output: zonal prices, dispatch, net positions.

Stage 2 — network verification. Map the zonal dispatch onto network nodes using a generation shift key, solve a DC power flow, identify overloads, and run a redispatch optimisation:

min   Σ_g ( c_g^up · ΔP_g^up + c_g^dn · Δp_g^dn )
s.t.  Σ Δ P^up = Σ Δ P^dn                     (volume neutrality)
      |P_l^0 + Σ_i PTDF(l,i) · ΔP_i| ≤ P_l^max
      ramp and capability limits on each unit

The cost estimate this produces is only as good as the nodal mapping. Two systematic errors dominate: an inaccurate shift key spreads generation to the wrong nodes, and a reconstructed network gets branch impedances approximately right and specific branch flows wrong. Both push you to report redispatch volumes and costs as distributions across assumptions, not point estimates.

Flow-based market coupling

European day-ahead coupling under the CACM Regulation increasingly uses flow-based capacity calculation rather than NTCs.2 The mechanism, in modelling terms:

  1. TSOs build a common grid model (CGM) for the target hour from individual grid models — a forecast of the network state including topology, dispatch, and exchanges.
  2. A set of critical network elements with contingencies (CNECs) is selected: the branch–contingency pairs that could limit cross-zonal exchange.
  3. For each CNEC, the zonal PTDF row is computed by aggregating nodal PTDFs with a generation shift key, giving the sensitivity of that element’s flow to each zone’s net position.
  4. The remaining available margin (RAM) is the branch limit minus the flow that would exist at zero net positions, minus reliability and adjustment margins.
  5. The market algorithm (EUPHEMIA) maximises welfare over net positions subject to PTDF · NP ≤ RAM.3

The resulting feasible region is a polytope in net-position space — the flow-based domain. Its shape is the entire transmission representation the market sees, and it is published: JAO makes the daily PTDF and RAM data available, which means you can reconstruct the domain, test where an hour cleared relative to its faces, and identify which CNECs actually bound it.4

This is the highest-leverage dataset in European price analysis, and it is under-used. Practical notes:

  • The domain differs per hour and is driven by the CGM forecast, so an error in the forecast becomes a market outcome, not just a study error.
  • A small number of CNECs bind most hours; identifying them is often more informative than any price model.
  • The “long-term allocation” and minimum-RAM rules (the 70% requirement of the Clean Energy Package) materially change the domain and were phased in with derogations, so historical comparisons need care.5

Building a price model on top

Given the above, three families in ascending fidelity:

Reduced-form statistical. Regress or learn prices from fundamentals (residual load, fuel and carbon prices, cross-border spreads) with no explicit network. Fast, well-calibrated on recent history, unable to answer counterfactuals about the grid.

Fundamental zonal dispatch. A merit-order or unit-commitment model as above. Explains structural drivers, extrapolates to new capacity mixes, misses everything happening inside a zone.

Fundamental nodal. Full DC-OPF over the network. Answers locational questions — where curtailment lands, where a new connection is cheap — at the cost of needing a nodal network you probably do not have to the required accuracy.

A common and defensible architecture is a fundamental model for structure plus a statistical residual correction for the persistent bias the fundamental model exhibits against realised prices. Be explicit that the residual absorbs both real effects (strategic bidding, unmodelled constraints) and your own errors.

Validating a market–grid model

Minimum bar before anyone acts on results:

  • Backtest zonal prices against history for at least a full year, reporting error by hour of day and by season, not just an annual mean.
  • Check price spreads between zones separately from levels — congestion models are judged on spreads.
  • Compare modelled congestion against published redispatch volumes and curtailment statistics.
  • For flow-based work, verify that your reconstructed domain contains the actually realised net positions. If it does not, the model is wrong in a way no price metric will surface.

Tooling

PyPSA for coupled market and network optimisation with a mature European dataset (PyPSA-Eur); pandapower where the AC network matters more than the optimisation; commercial suites (PLEXOS, BID3, Antares) where institutional acceptance of the tool is itself a requirement. PowerModels.jl if you need to be rigorous about the OPF formulation itself.67

Summary

Market and congestion modelling is a two-stage problem in zonal Europe and a single-stage one in nodal markets. The network enters through PTDFs, and in Europe the published flow-based domain is both the market’s own representation of the grid and the best open dataset for understanding it. Validate on spreads and on congestion volumes, not on average price.

References


  1. D. Kirschen and G. Strbac, Fundamentals of Power System Economics, 2nd ed., Wiley, 2018, ch. 6. ↩︎

  2. Commission Regulation (EU) 2015/1222 (CACM). eur-lex.europa.eu/eli/reg/2015/1222/oj ↩︎

  3. NEMO Committee, EUPHEMIA Public Description — Single Price Coupling Algorithm. nemo-committee.eu ↩︎

  4. Joint Allocation Office, flow-based publication tool (PTDFs, RAMs, CNECs). publicationtool.jao.eu ↩︎

  5. Regulation (EU) 2019/943 on the internal market for electricity, Art. 16 (70% capacity requirement). eur-lex.europa.eu/eli/reg/2019/943/oj ↩︎

  6. T. Brown, J. Hörsch and D. Schlachtberger, “PyPSA: Python for Power System Analysis”, JORS, vol. 6, no. 4, 2018. pypsa.org ↩︎

  7. C. Coffrin et al., “PowerModels.jl: An Open-Source Framework for Exploring Power Flow Formulations”, PSCC, 2018. ↩︎