Electricity Market Modelling
ON wrote me recently and pointed out that he had written a nice set of articles on electricity market modelling, specifically through the use of linear programming solvers. I wrote some comments on these back to him in an email and have reproduced them here.

ON wrote me recently and pointed out that he (his team?) had written a nice set of articles on electricity market modelling, specifically through the use of linear programming solvers.
I wrote some comments on these back to him in an email and have reproduced them here.
The Articles
The articles are linked here:
My response
Happy New Year! Thanks for reaching out! I really appreciate it.
That's a very neat set of articles.
Off the top of my head, I'll make a few comments or questions based on my reading of it.
Outline
I have two questions
- Dispatch Modelling: What about a self-play Reinforcement Learning trained Agent Based Model?
- LT Modelling: Can we model politics through capacity?
1 Dispatch Modelling: What about a self-play Reinforcement Learning trained Agent Based Model?
Whenever I think about the computational burden of working out Dispatch Modelling, I can't help but think of developing an Alpha-Zero like NEM bidding model.
One of the major advances of late has been success in using reinforcement learning + self-play to train a neural network to learn to play a game. (I am thinking of how AlphaZero learnt to play Go at a superhuman level just by playing against itself and learning iteratively i.e. without the learning from a historical body of games)
A question I've wondered about is, "Could you train a neural network to bid into the NEM?".
A simplified setup would be:
- "Board Inputs" - current and forecast demand, current and forecast weather etc.
- "Player inputs" - your available plant (capacity, plant type, fuel costs etc.)
- "Other player inputs" - Everyone else's capacity (capacity, plant type, fuel costs etc.)
- "Player moves" - bids of capacity (reduced to some discrete set of options, e.g. [-$1000, -$80, $0, $80, $150, $300, $1000, $17,500])
You build out a dispatch engine to generate price and dispatch outcomes based on bids.
1 game would be 1 day, final score is literally just net profit and you could train the NN to play against itself.
It would be interesting to see if it could learn sophisticated bidding strategies including economic withholding of capacity.
Some interesting consequences of using a self-play reinforcement learning model:
- High upfront costs: Take a lot to train the model
- Very low runtime costs: You could run simulations very cheaply.
- Out of distribution modelling is robust: Theoretically this should allow you to generate realistic bidding behaviour in conditions very far away from any kind of historical distribution. You can simulate oligopoly behaviour, high intermittency or high battery penetration.
- History-free: You don't have to collect historical behaviour to train this model at all. Admittedly, to use the model to predict future outcomes, you need to have a separate model forecasting demand + weather, but that seems much more tractable than combining strategic bidding behaviour and weather forecasting into one model.
Your thoughts?
2 LT modelling: Can we model politics through capacity?
One shortcoming of the LT models is that politicians keep fiddling with capacity closures. I would note that we now have Labor (!) governments in Vic and NSW using subsidies (implicit or explicit) to prevent the retirement of existing coal-fired generation capacity. Then there's the matter of the uneconomic construction of plant through Snowy Hydro (I'm thinking of Snowy 2.0 and Kurri Kurri). An interesting constraint to model would be artificial capacity maintenance and its impact on LT outcomes.
A few possible thoughts:
- Encoding a constraint for delayed retirement: An interesting constraint would be to encode retirements as a constraint where retiring coal capacity does not decline after the target retirement date unless there is some sufficiently large quantity of other generation in the region at that time. The interesting outcome to look out for is a scenario where the shadow carbon price has to spike to induce additional renewables to trigger the closure of the relevant coal plant. That scenario is a pretty good sign that without additional subsidies, governments will end up stuck indefinitely subsidising coal plants to stay open.
- Encoding the capital cost of extending coal plants: Another interesting one would be to encode retirement dates as simply re-investment dates. So you encode coal-plant extension as a potential option with a defined cost (e.g. $Xm) that the model can choose to trigger at the announced retirement date. I do wonder what kind of outcomes you'd get in those scenarios.