Networks, Hardware and Trading Infrastructure · Technology
26Power, Commodities and Betting Connectivity
Europe’s cross-border intraday power market matches orders from twenty-five countries through one shared order book, and allocates the interconnectors’ capacity with each trade, first come, first served. When capacity across a border is scarce, the last megawatt goes to whoever reaches the book first. In the chapter’s model a participant from the book, against a rival at five, obtains the last megawatt in 4.5% of the contests; at , in 98.5%.
Book 3 described intraday power, market coupling, bidding zones, balancing and schedule nominations, and the betting exchanges. This chapter is about how firms connect to them: the shared order book and the local trading systems in front of it, the grid operators’ scheduling systems, the commodity exchanges of chapter 11’s map, and a betting exchange’s interfaces and charges. The capacity race is a labelled simulation; the rules are the operators’ own.
26.1 Intraday power interfaces and the shared order book
Definition 26.1 (Shared order book, implicit continuous allocation)
A shared order book is one order book that several market operators feed with their participants’ orders, so that an order entered with one operator can match an order entered with another. Implicit continuous allocation is the allocation of cross-border transmission capacity at the moment two orders in different bidding zones match, with the capacity and the energy priced together and the capacity used by the trade removed at once from what the next trade can use.
The single intraday coupling (SIDC) runs one shared order book, a capacity management module holding the cross-zonal capacities the grid operators release, and a shipping module (Box 26.1). A participant does not connect to the shared book directly: it trades through its market operator’s local trading system, which passes orders to the book and shows it the orders of other operators’ participants where capacity allows. Within a price level, orders rank by the time they were registered; across a border, a match is possible only while capacity remains, and each match consumes it.
As of September 2026 — The single intraday coupling, from ENTSO-E and a market operator
Shared order book, capacity management module and shipping module; “trade is concluded on a first-come-first-served principle where the highest buy price and the lowest sell price get served first”; implicit allocation (explicit only at the French–German and Croatian–Slovenian borders); 25 countries coupled since the fourth wave (November 2022); the cross-zonal gate closure is to move from 60 to 30 minutes before delivery. Nord Pool’s regulations (June 2024): price, then registration time; cross-zonal allocation in the continuous market suspended during the intraday auctions on the same borders.
A scarce border is a race. Imagine a price difference opening between two zones with room left on the interconnector for one more order: every participant who sees it sends an order, and the first to reach the shared book gets the capacity. The chapter’s model has five rivals whose latencies to the book are lognormal around 5, 10, 20, 40 and , with a spread of 0.3, and varies the firm’s own median (all assumptions: where the book is hosted and how fast each local system is are not published).
def capacity_race(participants, slots=1, n=40000, seed=0):
"""Each event: every participant sends one order; the first `slots` arrivals get the scarce capacity."""
rng = np.random.default_rng(seed)
t = np.column_stack([p.median_ms * np.exp(p.sigma * rng.standard_normal(n)) for p in participants])
rank = np.argsort(np.argsort(t, axis=1), axis=1)
got = rank < slots
return {p.name: float(got[:, i].mean()) for i, p in enumerate(participants)}
Proposition 26.2 (Scarcity makes latency all or nothing)
When orders’ worth of capacity remains and participants race, a participant obtains capacity if and only if it is among the first arrivals; with one slot, its share is the probability that it is the fastest, which falls from one to zero over a range of latencies set by the fastest rival’s spread; more slots move the fall to the -th fastest rival.
Proof. Allocation is by arrival order, so a participant wins exactly when fewer than others arrive before it. With one slot this is the event that its latency is below every rival’s, whose probability decreases in its own latency and is dominated by the fastest rival. ∎
fig_power.py, nw_power.share_curve().The value follows. If the price difference the capacity captures averages EUR 12 per megawatt-hour (an assumption), a firm at expects EUR 11.82 per megawatt-hour it offers into such contests and a firm at EUR 0.54: the whole value of a scarce border goes to the fastest participant, and the second fastest gets almost nothing. With three orders’ capacity left, the same firm gets 95.4% of contests. Scarcity, not the market, turns an intraday power desk into a latency business, and only on the borders and hours where capacity binds.
The gate closure bounds the race in time: cross-zonal trading for a delivery period stops 60 minutes before it (30 after the planned change), and during the intraday auctions the continuous market’s cross-zonal allocation stops on the auctioned borders. A desk’s clock therefore has three kinds of moment: continuous trading with capacity, auction windows without it, and the gate.
26.2 Grid-operator scheduling systems
After trading, the positions become schedules: a balancing responsible party nominates to its grid operator the energy it will inject, withdraw and exchange, period by period, before the operator’s deadlines. These exchanges are not trading messages but documents, sent over ENTSO-E’s Energy Communication Platform, which offers reliable, secure delivery over AMQP, the MADES web service (IEC 62325-504) or shared folders. Latency here is minutes, not milliseconds; what matters is that every trade has a schedule, that the documents are acknowledged, and that a failed delivery is noticed before the deadline, the same reconciliation discipline as a drop copy (chapter 23), on a slower clock.
26.3 Commodity-exchange connectivity
The commodity futures exchanges are exchanges like the others, on chapter 11’s map: ICE Futures Europe’s matching in Basildon, the European energy and metals contracts on the same continental campuses as the financial ones. Their connectivity is chapter 9’s: cross-connects, colocation, feeds and gateways, with the fairness questions of chapter 23. What differs for a power or gas desk is the combination: a futures position on an exchange, an intraday position through a local trading system and the shared book, and schedules to a grid operator, three connections on three clocks for one physical exposure.
26.4 Betting-exchange interfaces and their data charges
A betting exchange sells access to its order books through an application programming interface, and prices it by what the client asks of it. Betfair’s documentation is explicit (Box 26.2): data requests are limited by weight, 200 points per request, where each market in a request costs the weight of the projection asked for; transactions above a threshold per hour are charged; and the exchange recommends its streaming interface over polling.
Definition 26.3 (Transaction charge)
A transaction charge is a venue’s fee on the number of order actions a participant sends above a free threshold per period, counting placements and failed actions, whatever their outcome, to price the load that frequent re-quoting places on the venue.
As of September 2026 — A betting exchange’s request limits and charges, from its developer documentation
Betfair Exchange API: a request’s weight (the projection’s weight times the number of markets) must not exceed 200 points; best offers weigh 5 a market, all offers with traded volumes 32. Transaction charges may apply above 5 000 placed or failed transactions an hour; a placement and its successful cancellation count once. Live application key: a one-off fee of GBP 499. “Use the Stream API instead of polling wherever possible.”
def markets_per_request(weight, limit=200):
return limit // weight
def poll_requests_per_s(markets, weight, hz, limit=200):
return math.ceil(markets / markets_per_request(weight, limit)) * hz
def poll_staleness_ms(hz, rtt_ms):
"""Polling every 1/hz seconds: on average half an interval old, plus the request's round trip."""
return 1000.0 / (2 * hz) + rtt_ms
def charged_transactions(per_hour, threshold=5000):
return max(0, per_hour - threshold)
Polling 1 000 markets five times a second for best offers takes 40 markets a request, 25 requests a poll, 125 requests a second; for the full ladder with traded volumes, 6 markets a request and 835 requests a second. Either way the data is on average old with a round trip, half the polling interval plus the trip. A stream sends each change once, when it happens. And a strategy re-quoting 30 markets four times a minute sends 7 200 transactions an hour, 2 200 above the threshold: on a venue that charges by the action, the cancel-and-replace habits of an exchange market maker are a cost line.
Method 26.4 (Connecting a power or betting desk)
- Map each market to its clock: continuous with capacity, auctions, gate closures, schedule deadlines.
- For intraday power, measure the latency to the shared book through each local trading system you can use, and find the borders and hours where capacity binds; that is where latency pays.
- Send schedules through the grid operators’ platform with acknowledgements, and reconcile trades to schedules before every deadline.
- For betting exchanges, stream instead of polling, and count transactions against the charged threshold.
- Put commodity futures on chapter 9’s footing: colocation, feeds, gateways.
26.5 Tutorial: the last megawatt
Goal. Race for scarce cross-border capacity at several latencies, and cost a betting exchange’s polling against streaming. End state: Figure 26.1 and the polling numbers of section 4.
- Race.
firm_powerlink.capacity_race(Listing 26.1) with the firm and five rivals;nw_power.share_curvefor one and three orders’ capacity. - Value.
nw_power.valueat the assumed average spread. - Polling.
load_weights,poll_requests_per_sandcharged_transactions(Listing 26.2).
What to change next. Let the price difference’s size depend on how fast it closes, and add the capacity management module’s own processing time as a common delay.
26.6 Build: the power and betting connectivity model
Purpose. The capacity race, the gate-closure clock and a betting exchange’s request and transaction budgets: the power, commodities and betting rows of chapter 29’s plan.
Interface. firm_powerlink: Participant, capacity_race, gate_closure, load_weights, markets_per_request, poll_requests_per_s, poll_staleness_ms, charged_transactions.
Rules. Weights and thresholds are dated rows with sources; latencies are stated assumptions; the race is a labelled simulation.
Acceptance tests. code/firm/powerlink/tests/: equal participants share equally, fixed latencies rank as expected, and the polling and charge arithmetic.
Stretch. Price differences that close; several borders with shared capacity; the auction windows.
Sources and further reading
- ENTSO-E, Single Intraday Coupling; ECCo SP (Energy Communication Platform).
- Nord Pool, Intraday Market Regulations (June 2024).
- Betfair Exchange API documentation (Market Data Request Limits, Best Practice Guide) and Developer Program support articles.
26.7 Exercises
Exercise 26.1 ★
What are the three modules of the single intraday coupling’s common system?
Solution
Solution of Exercise 26.1.
A shared order book, a capacity management module holding the cross-zonal capacities, and a shipping module.
Exercise 26.2 ★
How are two intraday orders at the same price ranked on Nord Pool?
Solution
Solution of Exercise 26.2.
By the time each was registered, received and accepted in the order book, earliest first.
Exercise 26.3 ★
How many markets fit in one best-offers request on the betting exchange, and why?
Solution
Solution of Exercise 26.3.
Forty: a request may weigh at most 200 points and best offers weigh 5 points a market.
Exercise 26.4 ★★
Using Proposition 26.2, why does the firm keep 95.4% of contests at when three orders’ capacity is left, but only 4.5% when one is?
Solution
Solution of Exercise 26.4.
With three slots the firm must only beat the third-fastest arrival, and at it is almost always ahead of the 20, 40 and rivals; with one slot it must beat the rival too, which it rarely does.
Exercise 26.5 ★★
Why does the continuous market stop allocating cross-zonal capacity during an intraday auction on the same border?
Solution
Solution of Exercise 26.5.
The same capacity cannot be sold twice: the auction allocates it across the border for the auctioned periods, so the continuous market must stop allocating it until the auction is completed or cancelled.
Exercise 26.6 ★★
A bot places and cancels a bet 3 000 times an hour, and 500 of its cancellations fail. How many transactions does it count?
Solution
Solution of Exercise 26.6.
3 500: each placement counts once with its successful cancellation, and the 500 failed cancellations count as failed transactions; below the 5 000 threshold.
Exercise 26.7 ★★★
Coding. With nw_power.share, what median latency gives the firm half of the one-slot contests?
Solution
Solution of Exercise 26.7.
About , the fastest rival’s median: 51.3% at and 49.3% at .
Exercise 26.8 ★★★
Find the flaw. “Intraday power is traded over minutes to hours, so latency does not matter.”
Solution
Solution of Exercise 26.8.
The market runs for hours, but scarce cross-border capacity is allocated first come, first served at the moment of the match: on a binding border, a few milliseconds decide who gets it, and the whole value of the spread goes to the first.
26.8 Problem: The Last Megawatt Across the Border
Problem 26.1
Weekend problem — latency and scarce cross-border capacity
A power desk trades intraday across a border whose capacity is often scarce. It races five rivals for the last capacity, as in the chapter’s model, and values the spread at EUR 12 per megawatt-hour on average.
Part I — The rules.
- How is cross-border capacity allocated in continuous intraday trading?
- What happens to capacity when two orders match across the border?
- When does cross-zonal trading stop for a delivery period, and when might that change?
- What happens during an intraday auction on the border?
Part II — The race.
- What share of one-slot contests does the desk win at 2 and at ?
- At what latency does it win half?
- What changes with three orders’ capacity left?
- Why does the fastest rival’s spread matter?
Part III — The value.
- What does the desk expect per megawatt-hour offered at 2 and ?
- Why does the second-fastest participant get almost nothing?
- On which borders and hours does latency pay?
- What does the desk not know, and how would it find out?
Part IV — The verdict.
- State the named result: the probability of obtaining scarce cross-border capacity as a function of latency to the shared order book, and its value per megawatt-hour.
- Which inputs are published and which assumed?
- Which local trading system should the desk trade through?
- What would a common delay in the capacity module change?
- What should the desk measure?
- How do schedules fit the same plan?
- Where does this go in chapter 29’s plan?
- In one sentence: when does an intraday power desk need to be fast?
Solution
Solution of Problem 26.1.
Part I.
- Implicitly, with each match, first come, first served, the best prices served first.
- It is removed from the capacity management module at once; the next match sees what is left.
- Sixty minutes before delivery; the reform aims at thirty.
- Continuous cross-zonal allocation stops on that border until the auction is completed or cancelled; trading within each zone continues.
Part II.
- 98.5% and 4.5%.
- About .
- At , 95.4% instead of 4.5%.
- Winning the last slot means beating the fastest rival, so the fall of the curve sits where the firm’s and that rival’s distributions overlap; their spreads set how steep it is.
Part III.
- EUR 11.82 and EUR 0.54 per megawatt-hour offered.
- Allocation is by arrival: the first gets the capacity and the second gets nothing, however close.
- Where and when capacity binds: congested borders, hours of large price differences between zones.
- Where the shared book is, how long each local trading system takes, and its rivals’ latencies; it can measure its own times and infer its rank from which contests it wins.
Part IV.
- Named result: in the chapter’s model, the chance of obtaining the last capacity across a scarce border falls from 98.5% at a median of to the shared order book to 4.5% at , crossing one half at the fastest rival’s ; at an average spread of EUR 12 per megawatt-hour it is worth EUR 11.82 against EUR 0.54 per megawatt-hour offered.
- Published: the coupling’s rules and structure, the ranking rule, the gate closure and auction suspension. Assumed: every latency, the spreads, the number of rivals and the scarcity.
- The one with the fastest measured path to the shared book, for the borders where capacity binds.
- A common delay adds to everyone’s arrival equally and changes no one’s rank; only differences matter.
- Its own latency per local system, contests entered and won per border and hour, and the spreads captured.
- Every intraday trade must reach a schedule before the grid operator’s deadline, over a slower, acknowledged channel.
- In the power rows: local trading systems and their latency, borders and hours, schedules, and the futures exchanges’ colocation.
- When capacity across a border is scarce and allocated by arrival.
26.9 Interview questions
Interview question 26.1 ★ developer
What is the single intraday coupling, and how does an order from one country meet an order from another?
Solution
Solution of Interview question 26.1.
A pan-European continuous intraday market: operators’ local trading systems feed one shared order book, and a cross-border match is possible while capacity remains in the capacity management module, which the match then consumes.
What the interviewer is looking for: Shared book; local systems; implicit allocation.
Interview question 26.2 ★★ trader
Why can a few milliseconds decide who gets cross-border capacity in intraday power?
Solution
Solution of Interview question 26.2.
Because capacity is allocated with each match in arrival order: when only one order’s worth is left, the first order to arrive gets it.
What the interviewer is looking for: First come, first served; scarcity; winner takes all.
Interview question 26.3 ★★ developer
How would you make sure every intraday trade ends up in a schedule nominated before the deadline?
Solution
Solution of Interview question 26.3.
Generate schedules from the trade records, send them over the grid operator’s platform with acknowledgements, reconcile acknowledged schedules against trades and positions, and alert well before each deadline on any gap.
What the interviewer is looking for: Reconciliation; acknowledgements; deadlines; alerting.
Interview question 26.4 ★★ developer
Polling or streaming a betting exchange’s prices: which, and why?
Solution
Solution of Interview question 26.4.
Streaming: each change arrives once, when it happens; polling costs requests under a weight limit and delivers data half an interval old on average. Polling only for occasional snapshots.
What the interviewer is looking for: Weights; staleness; the venue’s own recommendation.
Interview question 26.5 ★★ researcher
How would you estimate the value of being faster to the shared order book?
Solution
Solution of Interview question 26.5.
From the desk’s own history: contests entered, won and lost on binding borders, the spreads, and its latency at each; model the win probability against latency and multiply by the spreads captured.
What the interviewer is looking for: Scarcity events; win model; value per megawatt-hour.
Interview question 26.6 ★★★ developer, researcher
Design the connectivity of a European power trading desk that trades futures, intraday and schedules its positions.
Solution
Solution of Interview question 26.6.
Colocated futures connectivity; local trading systems for intraday with measured paths to the shared book; a scheduling service with acknowledged delivery and reconciliation; clocks for gate closures and auctions; monitoring of contests won and schedules delivered.
What the interviewer is looking for: Three connections, three clocks; latency where capacity binds; reconciliation.