A Hyperbolic Bid Stack Approach to Electricity Price Modelling

: Modelling the energy price in the Australian National Electricity Market (NEM) requires features that are not well reﬂected in existing models. We present a semi-structural, multi-regional model wherein bidding is not required to be cost-based, renewable fuels and storage technology are structurally integrated, and network constraints are often binding in optimal dispatch. Available fuel capacity then does not necessarily sum to registered bid capacity, as-bid fuel costs do not dependably follow input fuel prices, and cross-regional interconnectedness requires modelling trade. Furthermore, modelling the NEM spot price path must admit price negativity and price spikes. Extending previous work in the literature, the present paper proposes a hyperbolic bid stack approach to price modelling under these conditions.


Aims
Electricity price modelling is central to investment and asset valuation-including physical power investments, commercial licences, clean energy certificates, debt and equity claims, and financial derivatives-as projecting the cash flows of these types of assets usually requires the expected value of the electricity price. In addition, the optimal control and the financial risk management involved in using these types of assets are no less dependent on the electricity price evolution. These applications require a price model that recovers the common empirical features of the spot price path, including negativity and spikes, with distributional accuracy at the minimum.
There has also been a renewed interest in modelling the electricity price in such a way that the price effects of certain market factors such as the capacity changes of the regional fuel mix or the cross-regional interconnectors are traceable. These features open any price model to scenario analysis, commonly used in, e.g., commissioning and capacity planning, system constraint cost pricing, investigating interconnector arbitrage, setting regulatory price thresholds, etc., by the market operator and in regulatory oversight. Available capacity variation, replicating the ramping speed, must-run amounts, shut-down periods, etc., and the intricate link between intermittent generation and the price, as found in empirical studies by Maciejowska (2020); Paraschiv et al. (2014) and Mwampashi et al. (2021Mwampashi et al. ( , 2022, have been sources of detailed modelling assumptions in recent years. These often also have a lot of data support, giving more accurate modelling frameworks that are often highly specific to the fuel mix (see for example Benth and Ibrahim 2017; Deschatre and Veraart

Bid Stack Modelling Context
The bid stack model literature-starting with Barlow (2002), who retrieved the stochastic microeconomic market structure of Föllmer and Schweizer (1993) and wrote the spiky electricity price as a non-linear transformation of a jumpless diffusion process for demand-typically maintains a characteristic, fundamental set of assumptions about the pre-existing supplydemand and auction schema relations. Most bid stack models still at least implicitly retain this characteristic market structure with perfect demand inelasticity and friction (Carmona and Coulon 2014). Also, to obtain the price, the different parametric bid stack models give different forms to the aggregate supply function, i.e., the market bid stack function, as appropriate in the local context. These differentiations give various instances of the largely typical market structure. The rationale is that the price formation cannot significantly detach from the equilibrium mechanism as long as end-user demand is assumed inelastic and electricity is not economically storable. In what follows, we give a generic overview of wholesale price settlement from the Australian perspective, which, however, demonstrates that any strict non-storability assumption is already untenable at the operational level. Also, the market structure underpinning the usual bid stack framework can easily be adjusted for storability.
In Australia and in other countries, electricity is almost always cleared as a homogeneous commodity in an automated multi-unit and often also uniform price auction according to Krishna (2009). The wholesale price is typically determined from the participants' bids, in a way that is based on economic principles under the physical constraints of the electric system, using constrained linear optimization programs, such as the NEM Dispatch Engine (AEMC 2020) in the Australian National Electricity Market (NEM). Simply put, this program collects the bids in the maximum registered capacity of the units, discards the ones that are physically infeasible ("constrained-off"), enforces those that cannot be omitted for feasibility reasons ("constrained-on"), and returns the least-cost price from the marginal prices at the optimum solution (AEMO 2022a).
Bids are a series of price-quantity pairs offered by a unit as terms of trade. There are two basic types of bids. Firstly, generator bids are placed by generator units of any fuel type-e.g., coal, gas, solar, battery, hydro, etc.-to sell electricity. Regardless of their availability, the units partition their full capacity into quantity blocks. They assign the lowest price that they would ask for producing every quantity block to each block. These are the price-quantity pairs, i.e., the generator bids. They submit as many bids as there are blocks, and that number is usually capped by the market operator. Secondly, load bids are placed by load units of any fuel type-e.g., battery, hydro-to buy electricity. Regardless of their availability, the units also partition their full capacity into quantity blocks. They then assign the highest price that they would offer for purchasing every quantity block to each block. These are the price-quantity pairs, i.e., the load bids. The units submit as many bids as there are blocks, and that number is usually capped by the market operator.
For market price settlement, the generator bids are pooled and arranged in ascending order on price, i.e., in merit order. The generator bid stack is the cumulative sum of the bid quantities in merit order, at or below every price on the complete set of bid prices in ascending order, from the regulatory price floor to the regulatory price cap. It is agnostic to the fuel type behind the bids. The generator bid stack is a left-continuous, step-wise relation that resembles the implied aggregate inverse supply. As such, the bid stack is typically plotted with the quantity on the horizontal axis and the price along the vertical axis. With fully inelastic end-user demand, the price at demand-where the vertical demand line intersects the generator bid stack-is the market price. It is the price of the last bid in merit, i.e., the price of the most expensive generator bid still needed to fill the demand in full.
Similarly, the load bids are pooled and arranged in descending order of price, i.e., in merit order. The load bid stack is the cumulative sum of the bid quantities in merit order, at or above every price on the complete set of bid prices in descending order from the regulatory price cap to the regulatory price floor. The load bid stack is a right-continuous, step-wise relation that resembles the implied inverse demand of the load units. Market price settlement is not complete without coalescing the load bid stacks with the generation bid stacks in the equilibrium mechanism. The load bids that are eventually granted uptake in addition to end-user demand are the ones at or above the market price. Consequently, in the presence of loading, aggregate demand is higher, and becomes slightly elastic, compared to the generation-only market structure.
Above, in stating that the bid stacks from the two basic bid types resemble implied inverse supply and implied inverse demand, respectively, we are assuming that there exist appropriate parametric formulae for transforming the bid information to supply and demand functions within a mostly typical stochastic market structure. For generator bids and the implied inverse supply curve, this is a fundamental assumption in the parametric bid stack model literature (Carmona and Coulon 2014). For load bids and the implied inverse demand curve, however, this is a new assumption. 1 The more recent bid stack models that emulate the above mechanism make extensive and varied assumptions about what constitutes aggregate supply under the operational constraints of the electric system 2 , mostly through the capacity variation effect, which concerns the removal of unavailable capacity (Burger et al. 2004;Cartea and Villaplana 2008;Coulon et al. 2013) or similarly, the scarcity effect, which captures sudden capacity depletion (Aid et al. 2013;Howison and Coulon 2009), and the merit order dynamics, i.e., fuel bid curve aggregation, when the fuel types are differentiated (Aid et al. 2009(Aid et al. , 2013Carmona et al. 2013;Howison and Coulon 2009). The models propose different functional forms to the aggregate inverse supply function, but usually omit two-way (i.e., storage) fuels with loads. Also, some are more explicit about the underlying market structure than others (Filipović et al. 2018). The diversity of the literature on these models also shows that the geographic and commercial wholesale environment has a profound impact on the spot price trajectory.
Indeed, as wholesale electricity is traded almost immediately after it is produced, and always locally, the main features of the local market, such as the fuel mix, the network sparsity, and the rules and regulatory requisites of the automated auction algorithm, all tend to factor into price discovery to some extent (Eydeland and Wolyniec 2003). We argue that the properties of the local market routinely determine the correct modelling assumptions and heavily restrict the functional form of the aggregate supply function.
Somewhat surprisingly, the well-known bid stack models with fuel-type differentiation mentioned above all encounter difficulties at the model assumption level when simulating the NEM power price due to the following peculiarities of the local market: the already high and increasing renewable penetration, the ongoing two-way fuel expansion, the price effects of binding network constraints, the price-based auction mechanism, and the frequent price negativity as a result. At the same time, the seminal model by Carmona et al. (2013) has an attractive merit order dynamic, which the present work retrieves and adapts in five directions for an improved approach that better reflects the NEM.
In the NEM, the fuel mix is increasingly high in solar-, wind-, and hydropower (Department of the Industry and Resources 2020) and therefore the model cannot rely on the spot and futures prices of the input fuels, e.g., gas and coal, as closely as the existing literature suggests (Aid et al. 2013;Carmona and Coulon 2014;Carmona et al. 2013). Given, however, that the NEM has a price-based auction mechanism, i.e., that the participants can bid at any price within the regulatory price thresholds with no obligation to justify their price on a cost basis according to AEMC (2020), the proposed model can establish the fuel-specific bidding behaviours by fitting a time-dependent fuel bid stack function to the different fuel bid data with fuel-specific variables. Using the fuels, or explicitly evaluating the relationship between the bidding behaviour and the input fuel prices by fuel type, then recovers the implied inverse supply curves in reduced form without tying the fitted functions to the production costs or the utility equations of the individual plants (thus making the model "semi-structural" in this sense). In any liberalised market, this is applicable to all fuels in which the individual operators engage in bidding, including renewables.
While fitting the functions to the fuel bid data transfers easily between the different fuel types, the physically available capacity of the fuels cannot be readily captured by the same formulation. In the NEM, the individual participants bid in their full capacity (AEMC 2020); these are the bid data. They also provide other real-time technical data, e.g., ramp rates, renewable forecast measurements, etc., from which the available quantities can be ascertained centrally. Drawing on the same data set, rather than introducing a "hidden" variable for average capacity variation (Burger et al. 2004;Cartea and Villaplana 2008;Coulon et al. 2013) or a scarcity effect (Aid et al. 2013;Howison and Coulon 2009), the proposed model makes use of the technical data for approximating what constitutes the available aggregate capacity under the operational constraints.
The NEM also has a considerable amount of pumped hydropower and a rapidly growing battery fleet, as described in Department of the Industry and Resources (2020). These two-way fuels enter on both sides of the market by placing two distinct sets of generator and load bids, and thus open the typical market structure to demand elasticity with an evident effect on the electricity price. Therefore, the suggested equilibrium formulation that extends to two-way fuels is a new contribution in the bid stack modelling literature.
Furthermore, dispatch scheduling and price settlement in the NEM is subject to a myriad of security constraints. When some of these constraints bind, some bids are forced on (constrained-on) and others are curtailed (constrained-off) in result, depending on the constraint coefficients of the participating units placing the bids. It follows that the market bid stack, or more simply and equivalently (as we show) the demand quantity, must be adjusted to reflect these constraint effects on quantity. This is not a case of higher scarcity when the constrained-on quantities are considered, but a new feature we suggest incorporating into the usual market bid stack formulation.
Finally, the regulatory market price floor is AUD −1000 in the NEM and negative prices, incl. negative price spikes, are common. This requires a model that evaluates the positive and the negative price outcomes in much the same way. Although the existing bid stack models write elaborate mechanisms for positive prices, they only provide probabilistic overlays (Carmona and Coulon 2014;Carmona et al. 2013), if anything, for the negative prices. More commonly, they disallow (Filipović et al. 2018;Howison and Coulon 2009) or disregard (Aid et al. 2009(Aid et al. , 2013 price negativity. In contrast, our approach assigns a hyperbolic form to the fuel bid stack functions and preconditions the negative price outcomes the same way as the positive ones, as long as the bid data record negative bids. This hyperbolic feature is akin to the spread adjustment method of Ward et al. (2019), who apply this to the short-term marginal cost of thermal technologies, in the sense that both approaches clearly identify what puts prices under downward pressure near the negative end of the price spectrum, and use a hyperbolic feature to reproduce it.

Other Structural Models
For completeness, it is worth mentioning further papers that model the electricity price as an equlibrium between supply and demand curves. Because they do this, these are all structural to some degree. However, the more refined (the more structural) a model, the more likely it is to reflect the settings of a specific exchange or wholesale market. A day-ahead market model in Europe might have very different ingrained assumptions, such as sequential arbitrage, stable offer capacity over time, lack of real-time balancing constraints, etc., compared to the requirements of a wholesale real-time market model for Australia. In addition, negative prices are relatively large and common in some regions in Australia, which is why the standard assumption of an exponential supply curve is not adequate in this setting without adjustments. Because of these, the applicability of the models below to the Australian market is limited. The X-model proposed by Ziel and Steinert (2016) and further improved by Kulakov (2020) first creates a small number of price classes, i.e., price ranges that are sub-segments of the full price range. The authors then stochastically model the bid volume within every price class, whereby the correlation structure of the bids is also retained. Finally, the bid volumes are reassessed probabilistically for every discrete price within every price class. This is referred to as price curve reconstruction. The original model in Ziel and Steinert (2016) reconstructs both price curves for supply and demand, while Kulakov (2020) reworks the supply curve so that it contains the elastic negative supply bids from the demand curve, which allows for the demand curve to be perfectly inelastic. Therefore, Kulakov (2020) models the supply curve with multiple price classes, but only one price class for the demand curve. The name of the approach comes from the fact that in equilibrium the curves appear as the letter X. This approach would be problematic for Australia without first adjusting the bid-in data to the available capacity and constrained-on/off volumes (see Section 2.2.5 below). This is possible, but is not recommended by the authors. Moreover, the computational burden of the whole exercise would be much higher because more price classes would be required, since market prices might take any value on the range [AUD −1000, AUD 16,000] and not only [−EUR 50, EUR 3000]. Buzoianu et al. (2012) suggest an exponential supply curve function that incorporates temperature and seasonality effects, and distinguishes between gas-fuelled and non-gas generation. In addition, they formulate a linear demand function with an autoregressive component to equilibrate the two. Furthermore, Rassi and Kanamura (2023) use a stochastic power transform to map excess supply quantity minus LNG (liquefied natural gas) volume to the price using a closed-form expression. Their model takes a near-exponential shape for the supply curve when implemented on JEPX (Japan Electric Power Exchange) data. Neither of these models is likely to admit negative prices and they are most suitable for markets or price regions with a high share of natural gas. Beran et al. (2019) assume a piece-wise linear supply curve, bidding at marginal cost by fuel type and a level of must-run CHP (combined heat and power) capacity. They apply fuel-specific available capacity truncation as well before obtaining the price at the intersection of supply and demand. This approach is well developed in terms of fuel specification, but the assumption that fuels are bid on at marginal cost is problematic for the Australian market. In Australia, disorderly bidding away from marginal cost and bid shading (submitting more than one price-quantity bid pair) are allowed. Mahler et al. (2019) tackle the pricing problem as an optimisation, where the objective function minimises the sum of the parametrised marginal prices times residual generation quantities by production type. The authors make special adjustments for nuclear and hydroelectric plants. The parametric stack function for the marginal prices is linear. This model is also well developed in terms of fuel availability, but the linear assumption limits the model's ability to predict positive and negative price spikes. Pinhão et al. (2022) posit a polynomial form for the so-called price sensitivity curve, which is obtained by subtracting the supply curve from the demand curve. The root of this curve gives the price. The parameters of the curve are updated over time using a VAR model with harmonic components. This method does not attempt to isolate fuel-specific properties in the bid stack; therefore, similar to Ziel and Steinert (2016) and Kulakov (2020), one would need to adjust the fitted bid-in data for availability and constrained-on/off quantities first. Otherwise, the supply and demand curves cannot capture the true volumes after physical network constraints. These are, however, inevitably present in every real-time wholesale electricity market.
In summary, the current work is a hyperbolic variation of the market merit order mechanism put forward in Carmona et al. (2013). The new approach permits the inclusion of both renewable and two-way fuels, available capacities, and binding security constraints, and therefore better reflects the Australian wholesale environment in an interconnected regional setting than the existing models in the literature. Also, due to the hyperbolic formulation of the fuel bid stack functions, persistently observed price features, including negativity and spikes, arise semi-structurally in the model.
The paper is organised as follows. Section 2 gives the model formulation, with the main price map in Section 2.1 and the input processes in Section 2.2. Then, Section 4 presents some model implementation results for two different multi-regional demand specifications. Finally, Section 5 concludes.

New Approach
The proposed method captures supply and demand in the wholesale market to recover the electricity price as the equilibrium solution of the assumed market structure. The supply representation combines the supply from a multitude of power plants fuelled by a diverse range of generator fuels, e.g., coal, solar, hydro, etc., through time-dependent fuel bid stack functions. These express the supply contributed by each fuel over a range of price levels, as implied by the bid data of the plants using the fuel. Demand is a combination of end-user demand from the consumers, both industrial and household, in the region, export-imports, and demand from the load leg of the two-way fuels, e.g., pumped hydro and battery. End-user consumption plus trade (generation net of loads) is assumed perfectly inelastic and it is subject to a number of adjustments in the model. Formulating it as a diffusion process is generally sufficient for the model to admit a price sequence with spikes. In addition, we propose load fuel bid stack functions to capture the uptake demand of each two-way fuel over a range of price levels, usually with a degree of price elasticity, using the respective plant commitment (bid) data.
A market bid stack function is then built out of the fuel bid stack functions, noting that every fuel bid stack equation is fundamentally dependent on the typical availability variation in the particular fuel. This temporal variation can be linked to a factor that is physically induced, or to a factor that is both physically induced and arises out of the market mechanism. For example, the quantity of the solar supply relies on the rate of solar irradiance, an entirely physical component that puts an upper bound on the available quantity domain of the solar bid stack function. In contrast, the quantity of the coal supply usually relies on the ramp rates, a factor that is both physical and economic. The ramp-down rate poses a lower bound and the ramp-up rate an upper bound on the available quantity domain of the coal bid stack function. It is a physical factor, because the supply quantity range around the initial output level is based on the technical ramping specifications of the plants using the fuel. And it is an economic factor too, because the initial output level is the output quantity dictated by the equilibrium solution of the preceding time interval. In summary, the different fuel bid stack functions are defined on different quantity domains, as determined by the appropriate availability factors, prior to being aggregated in the market bid stack function.
The resulting market bid stack function is a time-dependent price map that transforms the expected value of the inelastic demand quantity into the expected value of the electricity price. Visually, the market bid stack function gives the price at the quantity where the inelastic demand, a vertical line, intersects the market supply curve, which is an increasing function over higher quantities. This is consistent with the merit order principles, as end-user demand is matched with least-cost supply first.
The quantities of the fuels generated and uptaken to meet end-user demand to realise the price result (dispatch quantities) are a consequence of the equilibrium solution, which highlights that compliance with the dispatch targets is what makes the scheduled units in a fuel compatible with the proposed framework. In the NEM, by use of the dispatch quantities at the end of the previous trade interval, the engine determines the optimal dispatch schedule and issues quantity targets based on it for the next interval (AEMO 2022a), i.e., the targets correspond to the dispatch quantities at the end of the current time interval provided that the plants change their dispatch precisely as prescribed. To orchestrate this, the engine has timely technical information about the physical limitations of the plants in all fuel types. Using that and other network data, it performs congestion and contingency planning to find the most optimal schedule for the period and to provide the plants with viable targets. In addition, for the purposes of a well-met congestion and contingency protocol, the market operator also enables ancillary response services (reserves) to maintain the operational frequency of the electric system between 49.85 and 50.15 Hz at all times (AEMO 2021). The ancillary balancing is necessary when the fuels are unable to change their dispatch quantities precisely as planned. However, the need for ancillary balancing never arises under the simplifying assumptions of the proposed hyperbolic price model. The available quantity domains of the fuel bid stack functions are presumed fully feasible, i.e., the fuels are modelled such that they are always able (and willing) to change their generation and uptake to any value within the available quantity domains of their bid stack functions. This is achieved by introducing fuel-level capacity limitations based on the unit-level available capacity limits as well as the constraint-driven capacity limitations that capture the network-wide infeasibilities of some quantities, e.g., for thermal overload, stability thresholds, tie-breaks, etc., subsumed under the constrained-on/off variable. These settings are designed to promote the accuracy of the available quantity domain in the model. Then, the fuels' compliance, i.e., whether the units in the fuels in fact alter their dispatch as needed to realise the price result, is immediate under the model assumptions. Therefore, fuels that do not alter their generation and uptake at economic command cannot be modelled through fuel bid stack functions in the proposed approach.
Moreover, the units in the fuels may forgo bidding but still supply or demand smaller quantities. However, this only happens either when the plants are given a non-scheduled status at registration, or when they use fixed bids to act as price takers to secure trade with no price conditions. The model accommodates this activity using fixed bid quantity variables.
Then, perhaps the most important aspect of the equilibrium solution is the merit order dynamic. There are three steps involved in matching end-user demand with the least-cost supply, insofar as the availability and feasibility factors as well as the fixed bid quantities permit, that prepare our discussion of the merit order dynamic. The first step is to calculate the inelastic demand for the scheduled fuels to fill. For that, we take the net of the expected value of the inelastic demand term, the fixed bid quantities, and the constrained-on/off variable. The second step is to categorise the scheduled fuels as low-priced, mid-priced, or high-priced, for the following purpose. The low-priced generator fuels and the high-priced load fuels are granted complete dispatch and are netted against demand, just as, e.g., the fixed bid quantities are in step one. Then, the high-priced generator fuels and the low-priced load fuels with an available quantity lower bound at nil are taken out, i.e., their bids are removed from the merit order, as these quantities are uneconomic. If, however, the available quantity lower bound of a high-priced (uneconomic) generator fuel is not zero, i.e., the fuel is physically unable to shut down, then it is labelled an online fuel (a scheduled fuel that must be kept online). It remains dispatched in its lower-bound quantity and is netted from the demand at this time. There might be one or more online generator fuel simultaneously. That leaves the remaining mid-priced fuels as marginal to set the price at the adjusted inelastic demand, the demand for the marginal fuels to fill. The third step is to express the market bid stack function that returns the price at the adjusted inelastic demand in closed form.
The three steps in combination realise a market merit order dynamic that retains the core mathematical apparatus and the overlapping and dynamic properties of the Carmona et al. (2013) model, but also introduces three new price effects, which are the load effect, the online fuel effect, and the network constraint effect. The overlapping property allows the different bid stack functions to overlap on price. For example, solar may bid at prices between AUD −10 and AUD 10, coal between AUD 0 and AUD 100, and the fact that these overlap between AUD 0 and AUD 10 is perfectly acceptable. The dynamic property allows the fuel bid stack functions to be time-dependent, which is desirable for modelling the variability in the bid curves due to strategic bidding. The load effect is then the price effect that arises out of the two-way fuels entering with both a generator bid stack and a load bid stack at the same time. The online fuel effect ensures that fuels with a minimum operating level that cannot shut down are represented accordingly in the model. Lastly, the network constraint effect uses the constrained-on/off variable as a demand offset to avoid using quantities subject to curtailment but to use must-run quantities.
The regional market merit order dynamic that determines the dispatch quantities and the marginal price in the model is also subject to the influence of export-import between the regions in multi-regional markets. In real life, the dispatch engine of the NEM determines the price as the cost of the incremental 1 MW change in supply in the focus region by the end of the next 5 min trade interval, including the costs of the marginal energy targets and the consequential marginal frequency balancing target re-arrangements as per AEMO (2010), which involves interconnector availability as follows. When there is free interconnector capacity for price regions that have undispatched bids at lower prices, then the engine allows for trade and the regional prices are set at a similar level. In the absence of interconnector flow capabilities, however, the price is set within each focus region such that the prices of the different islanded regions are remarkably different. The model accommodates these export-import assumptions by carefully estimating the trade quantities between different regions within the respective interconnector capacity bounds that then enter as adjustments to the inelastic demand level.
The model generally maps well to other electricity markets that meet the following criteria. First and foremost, in regional markets the dual variables of the physical constraints should not be components of the marginal price. Also, the auction scheme of the market must be similar enough to that of the assumed market structure, i.e., to liberalised regional markets where the participants engage in price-based bidding. Whether bidding is pricebased or cost-based in a market can impact the suitability of the model when capturing the price levels and the temporal changes in the fuel bid stack functions. The diurnal and seasonal shift variable of the proposed model is only concerned with strategic bidding, as is arguably appropriate in the price-based NEM; however, this may not be the recommended approach in cost-based markets, e.g., input fuel-price-based overlays might be needed for certain fuels. Moreover, sufficient historical non-price data must be available for the model to be accurately calibrated to ensure the physical feasibility of the projected equilibrium solutions over time.
Thus, the new approach returns the electricity price as the equilibrium solution of the assumed market structure as described. It is worth noting that the proposed hyperbolic model can also be helpful for the purposes of market analysis, as it does not detach from the production activity dictated by the auction scheme of the assumed market structure.

Model Formulation
The model works as a transformation map that takes inelastic demand D t as an input and produces price p t as an output at time t.

Fuel Bid Stack Functions
We denote with I = (1, . . . n) the scheduled generator fuel set of a price region, with L = (1, . . . m) the scheduled load fuel set of the same price region, and with U = (I, L) the complete scheduled fuel set of the region. Let fuel i ∈ I be a generator fuel and fuel l ∈ L be a load fuel. We give two distinct fuel bid stack functions: one for the n generator fuels and another one for the m load fuels. Both have fuel-, region-, and time-dependent parameters. Additionally, we also introduce the price taker fuel set F = (1, . . . f ) for the f fuels that make small, price-independent quantity commitments.
The time t ∈ (t 0 , T], which partitions the pricing period from time t 0 until time T into 5 min time intervals starting at t 1 . At time t, the maximum registered capacity of generation fuel i is represented byc i,t , and the maximum registered capacity of load fuel l byc l,t , both measured in MW. Then, the maximum scheduled generation capacityc t of the region (in MW) is computed as the sum of the maximum scheduled registered generation capacities in the region, i.e.,c t = ∑ n i=1c i,t . The full capacity range of generation fuel i is [0,c i,t ] and the full capacity range of load fuel l is [0,c l,t ]. When proportionate to the maximum generation capacityc t of the region, the scaled full capacity range of generation fuel i is given by [0,c i,t c t ] (in unit amounts), and the scaled full capacity range of load fuel l is given by [0,c l,t c t ] (in unit amounts). The bid stack functions are fitted to data on these scaled full capacity ranges.
If the lower and upper availability generation bounds are c i,t,lower and c i,t,upper (in MW), respectively, then the available capacity range of generation fuel i would be (c i,t,lower , c i,t,upper ]. Similarly, if the lower and upper availability load bounds are c l,t,lower and c l,t,upper (in MW), then the available capacity range of load fuel l would be [c l,t,lower , c l,t,upper ). When proportionate to the maximum generation capacity in the regionc t , then the scaled available capacity range of generation fuel i would be ( ) (in unit amounts). The bid stack functions are restricted to these scaled available capacity ranges after the available capacity truncation.
Further, we introduce the regulatory price thresholds P f loor for the market price floor, which is usually negative (at around −$A1000), and P cap for the market price cap (at around AUD 15,000 indexed to inflation) in AUD. When proportionate to the market price cap, P cap at time t, the scaled price range between the regulatory thresholds would be [ P f loor P cap , P cap P cap ] or equivalently [ P f loor P cap , 1] (in unit amounts). Let the generator fuel bid stack function be the map from the scaled available capacity range of generation fuel i (the quantity x fuel i is able to trade) in unit amounts to the price range of generation fuel i (the price y fuel i receives per MW after scaling) in unit upper c t ] → R : y. While price y on the real codomain is a monotonically increasing function of quantity x, price y is not necessarily within the scaled regulatory thresholds. The economic interpretation of the map identifies it as an inverse supply curve, or as an implied inverse supply curve, when fitted to data. Let the load fuel bid stack function be the map from the scaled available capacity range of load fuel l (the quantity x fuel l is able to trade) in unit amounts, to the price range of load fuel l (the price y fuel l pays per MW after scaling) in unit amounts as While price y on the real codomain is a monotonically decreasing function of quantity x, price y is not necessarily within the scaled regulatory thresholds. The economic interpretation of the map identifies it as an inverse demand curve, or as an implied inverse demand curve, when fitted to data. In this setting, we give two separate fuel bid stack functions, one for the generator fuels and another one for the load fuels.
First, we express the bid stack function for every generator fuel i ∈ I as a strictly increasing hyperbolic map from quantity x ∈ R in unit amounts to price y ∈ R in unit Then, for a left-continuous fuel bid stack map x → y : b G,i,t (x) focusing only on the available capacity in the fuel, we define b G,i,t (x) := bḠ ,i,t (x) on the scaled available capacity ] of fuel i in most cases, except when the lower availability generation bound c i,t,lower = 0 of the fuel is nil. In that circumstance, we define ]. Furthermore, we introduce the bid stack function for every load fuel l ∈ L as a strictly decreasing hyperbolic map from quantity x ∈ R in unit amounts to price y ∈ R in unit with α t 0 , β l,t 0 > 0 and at time t.
Then, for a right-continuous fuel bid stack map x → y : b L,l,t (x) focusing only on the available capacity in the fuel, we define b L,l,t (x) := bL ,l,t (x) on the scaled available capacity Carmona et al. (2013) use exponential fuel bid stack functions on the positive real codomain for generation fuels only, making no assumptions about fuel availability.
Finally, the fuel bid curve equations for generator (1) and load fuels (2) are inherently symmetric. Before the availability truncation, the regional alpha α t 0 captures the price elasticity (positive relationship) and the fuel beta β ·,t 0 the width (negative relationship) of the mid-range of the symmetric fuel curves. The regional alpha α t 0 parameter is the same for all generator fuels i and load fuels l in the price region 3 . The beta β ·,t 0 parameter, i.e., β i,t 0 for generator fuels and β l,t 0 for load fuels, is specified for every fuel independently. However, the symmetry of the fuel bid stack equations is limited by the scope of the scaled full capacity range of generator fuel i on which its bid stack curve will have been fitted to the data [0,c i,t c t ], and also by the available capacity truncation.

Inverse Fuel Bid Stack Functions
We also propose inverse fuel curves, first in the spirit of Carmona et al. (2013) in general form, and then using the hyperbolic formulae to specify them.
Let the inverse fuel bid curve for fuel i ∈ I be the strictly increasing, left-continuous hyperbolic map b −1 G,i,t (y) from price y in unit amounts to quantity x on the scaled available capacity range, as 4 y → R + : x ∈ ( c i,t,lower c t , , giving the lowest quantity x with bḠ ,i,t (x) at or above price y, if such exists, or giving the scaled available capacity upper bound as inf ∅ = +∞ (see Carmona et al. 2013).
We express the inverse of the fuel bid stack function (1) for generator fuel i as Analogously, let the inverse fuel bid stack function for fuel l ∈ L be the strictly decreasing, right-continuous hyperbolic map b −1 L,l,t (y) from price y in unit amounts to quantity x on the scaled available capacity range, as y → R + : L,l,t (y), giving the highest quantity x with bL ,l,t (x) at or above price y, if such exists, or else giving the scaled available capacity lower bound as sup ∅ = −∞.
We give the inverse of the fuel bid stack (2) for load fuel l as The fuel subsets help distinguish the type of quantity commitment made by each scheduled fuel within U. Two strands of quantity commitment are considered, constant and formulaic, for both generator and load fuels. Scheduled fuels are categorised as low-priced, mid-priced, or high-priced, and the type they are allotted determines the way they usually fill demand D t and set the price, i.e., they might enter as price-constant amounts or with price-dependent quantity formulae.
More specifically, every generator fuel can be C I completely dispatched (low-priced, constant), M I marginal (mid-priced, formulaic), O I online or Z I unused (high-priced, constant). In contrast, the load fuels can be C L completely dispatched (high-priced, constant), M L marginal (mid-priced, formulaic), or Z L unused (low-priced, constant), i.e., C I , M I , O I , Z I and C L , M L , Z L are the only legal subsets loosely following Carmona et al. (2013).
Then, every generator fuel i ∈ I is allocated to one of the following four disjoint subsets, ( Furthermore, let b (M I ,M L ) q * ,t (x) be the market bid stack function that aggregates the fuel bid stack functions in (M I , M L ) formulaically, assuming that only the fuels in (M I , M L ) contribute formulaically to the market bid stack and that the fuels in the remaining subsets (C I , Z I , O I , C L , Z L ) contribute to the demand quantity with price-constant quantity adjustments. From above, the (M I , M L ) set is the union of the marginal generator fuel M I set and the marginal load fuel M L set. Then, the function b (M I ,M L ) q * ,t (x) solves for the market price at the adjusted demand quantity x such that the value of the applied demand adjustment is linked to the subset specification U q * . 5 This adjusts demand D t by a term encapsulating the price-constant supply contribution of the fuels in (C I , Thus, the value of x is not equal to D t , unless the supply contribution of the excluded fuels equals zero.
Denoting the upper price in generation fuel i at time t withb G,i,t : , the merit order rule for generation gives that max(b G,k∈C I ,t ) < min(b G,a∈M I ,t ), i.e., the highest price in any completely dispatched generator fuel k ∈ C I is always lower than the lowest price in any marginal generator fuel a ∈ M I . Also, max(b G,a∈M I ,t ) < min(b G,o∈O I ,z∈Z I ,t ), i.e., the highest price in any marginal generator fuel a ∈ M I is always lower than the lowest price in any online or unused generator fuel o ∈ O I , z ∈ Z I . Then, for n generator fuels on four subsets, 6 the following fuel categorisation defines the elements of C I (low-priced), M I (mid-priced), and O I , Z I (high-priced): , the demand net of the quantity supplied by fuels ∀i ∈ C I , ∀o ∈ O I , ∀l ∈ C L , is greater than the highest price of any completely dispatched generator fuel ∀i ∈ C I ; , the demand net of the quantity supplied by fuels ∀k ∈ C I , ∀i ∈ O I , ∀l ∈ C L , is lower than the lowest price of any online and unused fuel ∀i ∈ O I , ∀z ∈ Z I , and if the lower capacity bound c i,t,lower of fuel i is greater than 0; , the demand net of the quantity supplied by fuels ∀k ∈ C I , ∀o ∈ O I , ∀l ∈ C L , is lower than the lowest price of any online or unused fuel ∀o ∈ O I , ∀z ∈ Z I , and if the lower capacity bound c i,t,lower of fuel i equals 0; To explain these conditions for one fuel i ∈ I at a time, first consider a setting where the market price is already known. Given the upperb G,i,t and the lower b G,i,t price of fuel i, it can be assigned to a subset immediately by arrangingb G,i,t , b G,i,t and the market price in ascending order. If the market price is greater thanb G,i,t , then i ∈ C I is completely dispatched. Or, if the market price is lower than b G,i,t , then i ∈ (O I , Z I ) is online or unused, depending on the lower capacity bound c i,t,lower . Otherwise, i ∈ M I is marginal. But, because b (M I ,M L ) q * ,t (x) solves for the market price using the pre-existing subset allocation on U q * , one cannot pinpoint the market price until ∀i ∈ I ⊆ U are assigned to the correct subset, i.e., the market price is typically not yet known. One can, however, show that i always behaves online or unused on the price range [ , and completely dispatched on the price range (b G,i,t , 1] from the given upperb G,i,t and the lower b G,i,t price of fuel i and the inverse bid stack formula in (3).
By partitioning the entire price range [ P f loor P cap , 1] at the upperb G,i,t and lower b G,i,t price of every fuel i ∈ I, one can obtain a string of smaller price segments 8 and each segment then has a well-defined subset configuration U q * associated with it, which is the same for all quantities within the segment, but may or may not be the same for two adjacent segments. The two price points defining each segment can be used to obtain the correct subset allocation U q * by replacing "the market price" with the two price points and arranginḡ b G,i,t , b G,i,t and the two prices in ascending order. If the two price points are both greater thanb G,i,t , then i ∈ C I is completely dispatched. Conversely, if the two prices are both Turning to the load fuels, let us denote the upper price of load fuel l withb L,l,t := b L,l,t ( c l,t,lower c t ) and the lower price with b L,l,t := b L,l,t ( c l,t,upper c t ) at time t. Using the merit order rules for load uptake, whereby min(b L,k∈C L ,t ) > max(b L,a∈M L ,t ), the lowest price for any completely dispatched load fuel k ∈ C L is always greater than the highest price for any marginal load fuel a ∈ M L , and min(b L,a∈M L ,t ) > max(b L,z∈Z L ,t ) the lowest price for any marginal load fuel a ∈ M L is always greater than the highest price for any unused load fuel z ∈ Z L . The following are the fuel category conditions for m generator fuels on three subsets, C L (high-priced), M L (mid-priced), and Z L (low-priced): , the demand net of the quantity supplied by fuels ∀k ∈ C I , ∀o ∈ O I , ∀l ∈ C L is lower than the lowest price for any completely dispatched load fuel ∀l ∈ C L ; , the demand net of the quantity supplied by fuels ∀k ∈ C I , ∀o ∈ O I , ∀l ∈ C L is greater than the lowest price of any unused load fuel ∀l ∈ C L . • l ∈ M L otherwise.
These conditions are perhaps more intuitive considering that a single fuel l ∈ L is always completely dispatched on the price range [ P f loor P cap , b L,l,t ), marginal on the price range [b L,l,t ,b L,l,t ], and unused on the price range (b L,l,t , 1], as in the inverse bid stack formula in (5). By partitioning the entire price range [ P f loor P cap , 1] at the upperb G,i,t ,b L,l,t and the lower prices b G,i,t , b L,l,t of every fuel i ∈ I and l ∈ L, one obtains a string of smaller price segments, such that each segment has a particular subset configuration U q * associated with it. The subset of fuel l can then be found using the above observation and the previously described subset process with this extended partitioning, as opposed to a more direct application of the subset rules.
In conclusion, the subsets of the fuels determine their role in filling the adjusted inelastic demand D t and consequently in price formation, i.e., in the market bid stack formula b (M I ,M L ) q * ,t (x) that solves for the market price. The completely dispatched fuels in C I , C L are generated or uptaken in the quantity of their upper capacity bound c i,t,upper or c l,t,upper , which are constant in the sense that they do not depend on the exact price level beyond what is already known about the possible range of the price level that assigned them to C I , C L in the first place. Similarly, the online fuels in O I are generated in the quantity at their lower capacity bound c i,t,lower , which is also constant in that sense. Moreover, the unused fuels in Z I , Z L are not generated or uptaken any quantity. In contrast, the marginal fuels in M I , M L are generated or uptaken in some quantity within their capacity bounds, but the quantity has not been determined by the subset as such. Thus, from the perspective of the market bid stack formula b (M I ,M L ) q * ,t (x), the type of quantity commitment the fuels must make due to being allocated to one particular subset and not to another polarises the subsets into constant dispatch and formulaic (marginal) dispatch subsets. The generation or uptake quantity of any fuel in the constant dispatch subsets C I , C L , O I , Z I , Z L is determined outside b (M I ,M L ) q * ,t (x) and enters b (M I ,M L ) q * ,t (x) as part of an additive term, i.e., as a demand adjustment, whereas the dispatch quantity of any fuel in the marginal dispatch subsets M I , M L is determined by the market bid stack formula b (M I ,M L ) q * ,t (x).

Market Bid Stack Formula
Let b (M I ,M L ) q * ,t (x) be the market bid stack function that aggregates every fuel bid curve on the complete regional fuel set under the appropriate subset allocation U q * in merit order to evaluate the market price at quantity x. To that effect, first it distinguishes the constant dispatch fuels (in C I , C L , O I , Z I , Z L ) from the formulaic-marginal or price-setter fuels (in M I , M L ).
The contribution of the former is captured in the constant term h that adds up the constant supply sum in the generator fuels ∀i ∈ (C I , O I , Z I ) with a negative sign and the constant demand sum in the load fuels ∀l ∈ (C L , Z L ) with a positive sign as To move these quantities to the inelastic demand side of the equilibrium, the demand quantity for the marginal fuels to fill can be expressed as D t + h.
In contrast, every marginal fuel in M I , M L is represented by the inverse bid stack function of the fuel. The strictly increasing left-continuous market bid stack function b (M I ,M L ) q * ,t (x) maps the adjusted demand quantity x = D t + h to the highest price p t , such that the corresponding quantity over all inverse fuel bid stack functions is still below the cleared quantity D t + h, provided that there is at least one marginal generator fuel |M I | ≥ 1 in the region. Then, the main structural components of the market bid stack, the constant term h and the aggregate of the inverse fuel curves, give the price solution of the function as in general form, extending the market merit order dynamic of Carmona et al. (2013) (see Proposition 1 in Carmona et al. 2013) to a new generator fuel subset O I and to load fuels. Then, the hyperbolic specification of (8) is expressed as Example 1. To demonstrate the proposed method, we consider a price region at time t with four generator and two load fuels, where the bid stack parameters α t 0 , β t,i , β t,l , γ t,i , γ t,l and the adjusted inelastic demand quantity D t are already known, but remain unspecified. After careful arrangement 9 , the subset configuration U q * is also already given. We know that |C I | = 1 of the generator fuels is completely dispatched, |O I | = 1 is online, and |M I | = 2 is marginal. Then, there is also |C L | = 1 completely dispatched and |M L | = 1 marginal load fuel. We can then express h as and denote the inverse fuel bid stack functions of the two marginal generator fuels with b −1 G,1,t (p t ) and b −1 G,2,t (p t ), and the inverse fuel bid stack function of the marginal load fuel with b −1 L,3,t (p t ). We evaluate price p t inside the supremum in (8) and for the hyperbolic equilibrium formulation from (9) The market bid stack function (9) solves for the market price under the normal market assumption. The value of demand D t implies the normal market assumption when it is between the lowest S 1 t ≤ D t ≤ S 2 t and the highest available generation quantity in the market. The values of S 1 t and S 2 t are specified shortly. The market price can then be written ,∞] = P cap P cap = 1, respectively. In general, we can express the market price as i.e., the price in any state of the system. To find the price in a normal market, let us partition the demand domain of the normal state [S 1 t , S 2 t ] into a string of quantity segments, such that one particular subset configuration U q * holds for any level of demand D t within each segment. Finding the boundary points of the segments involves a corresponding string of price segments as well, as the quantity domain and the price codomain are bijective, since the fuel bid stack functions in (1) and (2) are strictly monotonic.
The boundary points of the price segments with the property can be given by the upperb G,i,t ,b L,l,t and the lower b G,i,t , b L,l,t price points in all generation and load fuels in U. Let (y 1 , y 2 , . . . , y j . . . , y 2(n+m) ) denote these prices in increasing order.
Then let, for every price y j , quantity x j be the quantity that sums the generation sum from the left-continuous inverse fuel maps b −1 G,i,t (y j ) in (3) with a positive sign, the uptake sum from the right-continuous inverse fuel maps b −1 L,l,t (y j ) in (5) with a negative sign, and the constant quantities h in (7) with a negative sign giving the boundary points of the respective quantities (x 1 , x 2 , . . . , x j , . . . , x 2(n+m) ) also in increasing order. Then, S 1 t := x 1 and S 2 t := x 2(n+m) . Additionally, every segment of the partitioned quantity domain [S 1 t , x 2 ], (x 2 , x 3 ], (x 3 , x 4 ], . . ., (x 2(n+m)−1 , S 2 t ] has a well-defined fuel subset combination U q * associated with it that holds for any level of demand D t within the segment. The market bid stack function b (M I ,M L ) q * ,t (D t + h) in (9) gives the price using the subset combination q * , which can be represented by q 1 * for segment [S t , x 2 ], by q 2 * for segment (x 2 , x 3 ], by q 3 * for (x 3 , x 4 ], and so on. For the same fuel set U, the appropriate fuel subset configuration U q * changes over the different quantity segments. As a result, the market bid stack formula b (M I ,M L ) q * ,t (D t + h) also has a segment-wise formulation, owing to its dependence on the segment-wise different U q * .
Extending (10), we can then express price p as a segment-wise relation where loosely following Carmona et al. (2013). Lastly, we recover the market price P t in AUD from the price p t in (12). To obtain P t , the price p t in unit amounts is multiplied by the market price cap P cap and the result is projected to the regulatory price floor P f loor or cap P cap , if it is exceeding either of the two. The reason why the threshold restriction has been delayed until now is that tracing the fuel dispatch quantities over time, i.e., computing the generation and the uptake quantities from the inverse fuel curves based on p t , requires strictly monotonic fuel bid stack formulations, which an untimely threshold projection could potentially impair.
Example 2. We suggest an efficient algorithm for finding the appropriate fuel subset configurations on all segments of the partitioned demand domain and executing pricing using (12). To see how this computation works, we consider a price region with five generator and two load fuels, where the bid stack parameters α t 0 , β t,i , β t,l , γ t,i , γ t,l and the demand quantity D t are already known. The scaled available capacity ranges ( ) and the fixed net generation quantity c t, f ixed (if any) are also already specified at the start of the algorithm as shown in Table 1. The table shows the fuels of both the regional scheduled U fuel set and the regional price taker F fuel set by type, economic classification, parameters, and quantity (in MW), and bid price (in AUD) range. The region in this example has a maximum registered generation capacity ofc t = 155. The parameters α t 0 and γ·, t are rounded to two decimal places and the β ·,t 0 to integers for every fuel i, j ∈ U. The market in the example has a market price floor of P f loor = −4 and a price cap of P cap = 14, but bids may appear outside that range, e.g., in fuel G4 we see the upper price at AUD 15. Table 1 shows the four scheduled generator fuels (G1-G4), the one price taker generator fuel (G5), and the two scheduled load fuels (L1-L2) in this example. First by fuel type, which identifies the fuel source and places the six scheduled fuels in set U = (I, L) and the one price taker fuel in set F. It then gives the bid stack parameters of the fuels. In the third column, the table specifies the available capacity ranges of the fuels in MW, which is subsequently scaled by the maximum registered generation capacityc t = 155, which appears to coincide with the total available (scheduled) generation capacity ∑ i∈I c i,t,upper c t = 120 155 + 25 155 + 7 155 + 3 155 = 155 155 in the region. We also have the lowest available generation capacity in the region as S t = ∑ i∈I c i,t,lower c t = 30 155 + 0 + 0 + 0 = 30 155 10 . The fourth column shows the price ranges of the fuels, which have been calculated using the bid stack parameters, the quantity ranges, and the maximum registered generation capacity. Finally, it is also stated that the region has a regulatory market price floor of P f loor = −4 and a cap of P cap = 14. The table gives a tabulated view of the market showing the contribution of each scheduled fuel to the net market quantity (bottom line) at any price level. As the price increases, the generator fuels are contributing more and the load fuels are demanding less. For a more concise view, the price range (in AUD) has been discretised to integers and the quantity amounts (in MW) have been rounded to integers as well. The quantities shown in bold are obtained from the inverse fuel bid stack functions (4) and (6). The remaining (not bold) quantities are constants, as these are either below the available quantity lower bound c ·,t,lower or above the available quantity upper bound c ·,t,upper in the given fuel as per Table 1.
Then, Table 2 carries the main operations of the algorithm, which are the following: 1.
Obtain the lower and the upper available capacity bound quantities from the third column in Table 1, i.e., every c i,t,lower , c l,t,lower , c i,t,upper and c l,t,upper in MW. Scale (divide) these by the maximum registered generation capacityc t = 155. Then, use the fuel bid stack functions in (1) and (2) to find the corresponding prices, i.e., the upperb G,i,t ,b L,l,t and the lower b G,i,t , b L,l,t price points, as shown in column four in Table 1, e.g., AUD 0 and AUD 10 for G1, AUD 0 and AUD 14 for G2, etc. When scaled by P cap = AUD 14 and in increasing order, these prices correspond to (y 1 , y 2 , . . . , y j . . . , y 2(n+m) ) = ( −4 14 , −3 14 , −2 14 , 0, 2 14 , 10 14 , 14 14 , 15 14 ). For exposition purposes, Table 2 (unscaled view) also fills the price interval with additional prices for an evenly spaced price interval between −AUD 5 and AUD 15 (first row). Also notice that the prices are not yet projected to the regulatory price thresholds −AUD 4 and AUD 14.

2.
Fill the table with the constant quantities (not bold) at the prices outside the price ranges of the fuels, i.e., with c i,t,lower , c l,t,lower , c i,t,upper and c l,t,upper . See lines G1, G2, G3, G4 and L1, L2 in Table 2. Notice how the G1 line lists 30 MW at every price level up to AUD 0. This way, if the market price ends up below price AUD 0 (and G1 is online in O I ), it would still be accounted for and dispatched in 30 MW.

3.
Fill the table with the formulaic quantities (bold) at the prices inside the price ranges of the fuels using the inverse fuel bid stack functions (4) and (6). See rows G1, G2, G3, G4 and L1, L2 in Table 2. 4.
Sum the quantities in rows G1, G2, G3, G4 vertically at every price for the generation quantity total. Similarly, sum the quantities in the L1, L2 lines for the load uptake quantity total. Take away the load uptake total from the generation total to obtain the net market total at every price (last row), which is equivalent to the (x 1 , x 2 , . . . , x j , . . . , x 2(n+m) ) interval plus h (unscaled view in Table 2). 5.
Assume the constrained-on/off adjustment X t = 0 (in MW). Obtain the inelastic end-user demand proxied by net generation G t (in MW), the fixed net generation quantity of the price taker fuels c t, f ixed = 1.5 MW (see Table 1  . Thereby, the market has a demand deficit at G t = 31 and it is in a normal state at G t = 115. 7. If the market has a demand deficit, every scheduled fuel is S I or S L and the price p t (in unit amounts) is set by p(D t )1 [−∞,S t ) = b t , which then may be multiplied by P cap and projected to the regulatory thresholds to obtain the market price P t in AUD-this is the end of the algorithm. 8.
In a normal market, obtain the two quantity points (last row) nearest to D t and obtain the corresponding two price points too (first row). We have that D tct = 113.5 falls within 110 and 123 (last row), and price AUD 1 and AUD 2. Using the two prices, we can assign every fuel to a subset using simple rules. 9.
For generator fuels G1, G2, G3, G4, if the two prices AUD 1 and AUD 2 are both greater than b G,i,t P cap , then fuel i ∈ C I is completely dispatched. Or, if the two prices are both lower than b G,i,t P cap , then fuel i ∈ (O I , Z I ) is online or unused. Otherwise, fuel i ∈ M I is marginal. 10. For load fuels L1, L2, if the two prices AUD 1 and AUD 2 are both lower thanb L,l,t P cap , then fuel l ∈ C L is completely dispatched. Or, if the two prices are both greater than b L,l,t P cap , then fuel l ∈ (Z L ) is unused. Otherwise, fuel l ∈ M L is marginal. 11. Obtain the price p t (in unit amounts) from the market bid stack function b (M I ,M L ) q * ,t (D t + h) in (9) using the subset configuration on U q * from above. Back out the current dispatch quantity in each fuel. Then, p t may be multiplied by P cap and projected to the regulatory thresholds to obtain the market price P t in AUD-this is the end of the algorithm.
Finally, Table 3 displays the subset solutions of the algorithm for the two different demand levels, G t = 31 and G t = 115, discussed in the example. For G t = 31, the price is equal to p t = max(b G,i∈O I ,t , P f loor P cap ) = b t in unit amounts, whereas for G t = 115, the price can be found computing b (M I ,M L ) q * ,t (D t + h) using (9).
The table shows the appropriate subset configuration U q * in demand deficit scenario with end-user demand at G t = 31 MW (first column) and in a normal market with G t = 115 MW (second column). At G t = 31 MW, all generator and load fuels are in S I and S L , respectively, and their dispatch quantities are all shown to be constants. The total dispatch quantity also overshoots to 31.5 MW. At G t = 115 MW, the table shows which fuels are marginal (coal G1, hydro G2, and hydro L2) and which fuels are contributing to the constant term for the demand adjustment (solar G3), and the total dispatch quantity is exactly 115 MW. The price taker fuel (biomass G5) enjoys complete dispatch in both cases.

Input Processes
The market price Formula (12) requires several input processes including the formulaic bid stack function parameter that captures strategic bidding over time, the fuel-specific processes of available capacity truncation, the fixed capacity input, the constrained-on/off quantity process that encompasses network feasibility, and finally also the pre-adjustment demand term, which we decompose into regional consumption and export-import.

Fuel Gamma
The formulaic fuel gamma R : γ ·,t := γ ·,(t day ,t time ) , i.e., γ i,t for generator fuels and γ l,t for load fuels, expresses what proportion of the maximum fuel capacity is being offered at negative prices for a given fuel at time t. More precisely, γ i,t is the inflection point of the fuel bid curve (1) for generator fuel i and (1 − γ l,t ) is the inflection point of the formulaic load bid stack (2) for load fuel l. The fact that these are time-dependent assumes that bidding activity changes over time, i.e., the bid stack functions shift horizontally as gamma changes over time. Further, γ ·,t := γ ·,(t day ,t time ) is a sinusoidal function that captures both yearly seasonality for the day of year t day through parameters s 1 , s 2 , s 3 , s 4 and diurnal variation for the time of dayt time using d 1 , d 2 , d 3 , d 4 , d 5 , d 6 .
For a generator fuel i, we express γ i,t := γ i,(t day ,t time ) as For a load fuel l, we give γ l,t := γ l,(t day ,t time ) as γ l,(t day ,t time ) = 1 − s 1 − s 2 sin t day + s 3 Note that the gamma γ ·,t parameters of the fuel bid curves can take the formulaic form γ ·,t = γ ·,(t day ,t time ) directly from (14) and (15) at time t.
An alternative to this would be estimating the initial gamma γ ·,t 0 parameters together with the initial alpha and beta (α t 0 , β ·,t 0 ) parameters of the fuel bid curves using the leastsquares method. Then, over time, by updating the gamma parameter by the cyclical change ∆γ ·,(t day ,t time ) = γ ·,(t day ,t time ) − γ ·,(t−1 day ,t−1 time ) in the formulaic form, while retaining its estimated level from t 0 , we would have γ ·,t := γ ·,t−1 + ∆γ ·,(t day ,t time ) .

Available Capacity
Available capacity truncation involves restricting bḠ ,i,t (x) in (1) for generator fuel i to quantity x on to the scaled available capacity range x ∈ ( upper c t ] in unit amounts. Also, we let bL ,l,t (x) in (2) for load fuel l take a quantity x on the scaled available capacity range x ∈ [ c l,t,lower c t , c l,t,upper c t ) in unit amounts for all fuels. From a non-stop power system point of view, the available capacity range is the range around the initial dispatch quantity at time t n that bounds the dispatch quantity at time t n+1 .
A non-zero lower capacity bound c ·,t,lower c t is necessary whenever a fuel, i.e., the individual plants in a fuel collectively, is unable to shut down immediately. Regardless of the economic value of their activity, the units in this position are usually given appropriate non-zero targets in the central dispatch optimisation (AEMO 2010). In the model, we have an analogous treatment for the fuels with inflexible ramping profiles and minimum loading requirements, e.g., black and brown coal, in anticipation of this problem, using non-zero lower capacity bounds and the online fuel category O I .
In addition, different upper bounds arise as the availability up to the maximum registered capacity c ·,t,upper =c ·,t rarely holds in most fuels. First, given the ramp rate specifications and the length of the scheduling intervals, the units in the fuel might be too slow to ramp up to a higher, economically feasible capacity region, approaching the maximum registered fuel capacityc ·,t at time t n by the start of next interval at t n+1 . Second, the units of particular fuels are often unwilling or unable to be produced at their full capacity due to external factors, such as existing ancillary commitments, planned outages, or, more commonly, weather effects. Third, there are two-way fuels that trade both sides of the market, i.e., act as generators or loads interchangeably over time. As any load unit, e.g., pumped hydro or battery, would need to charge up in order to "produce" electricity, load units are usually registered in both categories and bid on in both categories as well to participate accordingly (AEMC 2020). In this sense, we refer to them as two-way fuels. Twoway fuels are actively balancing a storage level, which usually determines their remaining capacity for load uptake and generator dispatch at the same time.
Moreover, the model can capture the permanent changes in the maximum registered fuel capacityc ·,t of the regional fuel mix for some time ahead, e.g., at the anticipated commissioning or decommissioning of units. The available capacity truncation is then a subsequent layer of capacity reduction.
Let c i,t n be the dispatch quantity in generator fuel i and c l,t n be the dispatch quantity in load fuel l, at time t n , in unit amounts. After we have the market price p t n at time t n from (12), we can obtain the current dispatch quantity c ·,t n of a fuel by passing p t n in the inverse fuel bid stack function of the fuel p t n → c i,t n : b −1 G,i,t n (p t n ) in (4) for a generator fuel i and p t n → c l,t n : b −1 L,l,t n (p t n ) in (6) for a load fuel l. We then give the available capacity bounds c i,t n+1 ,lower < c i,t n ≤ c i,t n+1 ,upper and c l,t n+1 ,lower ≤ c l,t n < c l,t n+1 ,upper at time t n+1 around the dispatch level c ·,t n at the end of the previous time t n interval in a fuel-specific manner.

Base Case
Let r up i , r down i denote the ramp-up and ramp-down rates in MW/5 min for every generator fuel i and r up l , r down l the ramp-up and ramp-down rates in MW/5 min for every load fuel l. Furthermore, let m denote the regional ramp rate multiplier. This multiplier makes an allowance for the distortions arising out of the fact that the unit ramp rates are aggregated at fuel level to obtain the fuel-level ramp rates instead of applying unit-level ramping directly.
Across all fuels, particularly fossil fuels, e.g., coal, gas, etc., as a base case solution we can specify the available capacity bounds in MW using these fuel-specific ramp-up and ramp-down rates as follows. Let the lower availability bound c ·,t n+1 ,lower of fuel i or l at time t n+1 be the higher value of the dispatch quantity in the previous period minus the ramp-down rate c ·,t n − mr down · and 0 as c ·,t n+1 ,lower = max c ·,t n − mr down · , 0 .
Then let the upper availability bound c ·,t n+1 ,upper of fuel i or l at time t n+1 be the lower value of the dispatch quantity in the previous period plus the ramp-up rate c ·,t n + mr up · and full as-bid fuel capacityc ·,t c ·,t n+1 ,upper = min c ·,t n + mr up · ,c ·,t .
Assuming that the ramp rate specifications are time-and dispatch-level-invariant, we write these as averages and estimate them from the historical ramp rate data for the different fuels, ensuring that the MW/minutes raw ramp rate data are interpreted correctly 11 .

Intermittent Fuels
Across renewable fuels, such as solar and wind, as an intermittent case solution, we can give the available capacity upper bounds in MW using fuel-specific available capacity forecasts. This assumes either the direct or the indirect availability of some renewable generation forecast measures via prediction models or predictive indicators. We opt for two very simple forecast processes for the upper availability bounds of solar and wind generation.
Let the lower availability bound c i,t n+1 ,lower of intermittent fuel i at time t n+1 be zero c ·,t,lower = 0. This is a reasonable approximation as the ramp-down rates are generally quite high and not restrictive in renewable generation.
Let the upper availability bound c i,t,upper of solar energy i at time t be estimated by a deterministic sinusoidal intraday generation function specified as wheret time = (t time modñ) is the time of day forñ observations per day. In this formula, the sum of two shifted sine functions is evaluated for generation between 0 and an upper bound g. Finally, let the upper availability bound c wind,t,upper of wind generation at time t be estimated by a scaled Brownian motion discretised as ∆c wind,t,upper ∼ N (0, σ 2 ∆t) (20) such that c wind,t,upper = min(max(c wind,t−1 + ∆c wind,t,upper , ψc wind,t ),ψc wind,t ), where we denote with ∆t = 1 the time increment and with ψ andψ the allowed thresholds of wind output.

Two-Way Fuels
Two-way fuels, such as hydro plants and batteries, actively balance a storage level k over time. Generator dispatch is kc i,t at time t and the remaining capacity for load uptake is (1 − k) times the maximum capacity in the fuelc i,t .
An interesting outcome of the proposed hyperbolic market bid stack method is that the implied storage level k can be inferred from the modelled dispatch solution at the end of each interval when leaving the storage level unrestricted 0 ≤ k ≤ 1 at the beginning of the interval.

Minimum Capacity Criterion
Fuels that are slow to start up often have operational capacity minima in the price settlement and scheduling process of the market operator, i.e., minimum load amounts. We represent this in the model for all affected generator fuel i via the lower-bound criterion c i,lo in unit amounts, such that the available capacity lower bound c i,t,lower of the fuel is always at or above this criterion c i,lo ≤ c i,t,lower . 12

Net Fixed Generation by Price Takers
Apart from the basic bid types used in compulsory bidding, fixed bids are optional for both generators and loads in the NEM (AEMC 2020). In a fixed bid, the bidder opts to trade a predetermined amount at the regional market price as price taker. At time t n , we denote the fixed bid quantity in generator fuel i ∈ F with c i,t n , f ixed and the fixed bid quantity in load fuel l ∈ F c l,t n , f ixed , both measured in MW.
We also introduce c t n ,non−scheduled for the net non-scheduled generation quantity in the region (in MW) at time t n to capture the quantity flows of the small-scale units excluded from bidding (AEMC 2020).
Then, we express the fixed net generation quantity c t n , f ixed as at time t n . The price taker quantities enter the pricing mechanism in two ways. First, the fixed net generation quantity c t n , f ixed (in MW) needs to be subtracted from the end-user demand as an adjustment when we calculate the demand for the scheduled fuels to fill.
Second, if a generator fuel i or load fuel l has both a bid stack function and a non-zero fixed bid quantity at time t n , i.e., i ∈ I ∩ F or l ∈ L ∩ F, respectively, then the time t n dispatch quantity of that fuel would have to be revised accordingly. In case of a generator fuel i that is both a scheduled and a price taker at the same time i ∈ I ∩ F, the fixed bid quantity c i,t n , f ixed = 0 would have to be added to the dispatch quantity c i,t n at the end of the t n time interval for c i,t n ← c i,t n + c i,t n , f ixed . Similarly, in such a load fuel l ∈ L ∩ F, the fixed bid quantity c l,t n , f ixed = would have to be added to the dispatch quantity c l,t n for c l,t n ← c l,t n + c l,t n , f ixed . In principle, this can impact the available capacity bounds of the particular fuel at time t n+1 .

Demand
The demand term D t incorporates trade as follows. Let G t represent the input process for net regional generation,c t the maximum scheduled generation, c t, f ixed the fixed net generation of the price taker fuels, and X t the input process for the net constrained-on/off quantity in the price region at time t. The quantity D t can then be computed as D t := in unit amounts, where G t can be expressed as a deterministic function with yearly seasonality for the day of year t day through parameters s 1 , s 2 , s 3 , s 4 and diurnal variation for the time of dayt time using d 1 , d 2 , d 3 , d 4 , d 5 , d 6 and c t, f ixed is from (21) and X t is introduced in Section 2.2.5.

Constrained-On/Off Quantity
In practice, price settlement is performed by a linear programming (LP) engine subject to thousands of security constraints. Often, the binding constraints force the dispatch of some bid quantities and prevent the dispatch of some others. These are referred to as constrained-on and constrained-off quantities, respectively.
Let X I,on,t denote the constrained-on (must-run) generator quantity sum in the region. This is the quantity extent to which the generators are dispatched in the bids offered at prices above the realised market price, i.e., the generators in the region collectively receive higher targets by X I,on,t than what is expected on a price basis. When parsing the supply data in merit order, we want to take into account the effect of using these expensive bids, which can be achieved by reducing end-user demand by X I,on,t . Note that this term refers to all must-run generator quantities in the system, which is broader than the ramp-rate-implied must-run quantity ∑ c o∈O I ,t,lower c t over all fuels in set O I . More specifically, X I,on,t = ∑ c o∈O I ,t,lower c t + X − I,on,t . Let X I,o f f ,t denote the constrained-off (curtailed) generator quantity sum in the region. This is the quantity extent to which the generators are not fully dispatched in the bids offered at prices below the realised market price, i.e., the generators in the region collectively receive lower targets from X I,o f f ,t that what is expected on a price basis. When parsing the supply data in merit order, we want to skip over these unused inexpensive bids, which can be achieved by incrementing end-user demand with X I,o f f ,t .
Let X L,on,t denote the constrained-on (must-run) load quantity sum in the region. This is the quantity extent to which the loads are dispatched in the bids offered at prices below the realised market price, i.e., the loads in the region collectively receive higher targets from X L,on,t than what is expected on a price basis. When parsing the supply data in merit order, we want to take into account the effect of exceedingly high targets for the price, which can be achieved by incrementing end-user demand with X L,on,t . Let X L,o f f ,t denote the constrained-off (curtailed) load quantity sum in the region. This is the quantity extent to which the loads are not fully dispatched in the bids offered at prices above the realised market price, i.e., the loads in the region collectively receive lower targets from X L,o f f ,t than what is expected on a price basis. When parsing the supply data in merit order, we want to skip over these missed expensive load bids, which can be achieved by reducing end-user demand with X L,o f f ,t .
It follows that the constrained-on/off quantity is the sum of the above introduced variables which is expressed stochastically as and is subtracted from demand before adjustments.

Model Implementation
The implementation of the proposed approach is now described. The results are from three 31-day periods between t 0 4:00 For both model variations A and B, the implementation begins by obtaining the fuels on the regional fuel set U in full capacityc ·,t 13 , and initialising the ramp rates r up · , r down · and the fixed bid quantities c ·,t n , f ixed . The hyperbolic fuel bid stack formulae are then fitted to the stacked fuel bid data to acquire the fuel bid curve parameters α ·,t 0 , β ·,t 0 , γ ·,t 0 at time t 0 .
The time-dependent input processes are initialised for t ∈ (t 0 , T]. First, strategic bidding is captured by altering the value of the intercept variable of every fuel bid curve γ ·,t , i.e., by shifting the bid curves over time. Moreover, available capacity truncation is executed to restrict the fuel bid stack functions to their available capacity quantity domains defined between a lower c ·,t,lower and an upper capacity threshold c ·,t,upper for each trading interval. The upper capacity bounds of the renewable fuels follow formulaic relations and ramp rates are applied around the initial dispatch quantity in other fuels to obtain both the lower and the upper bounds. Furthermore, the physical feasibility of the fuels overall under the binding network constraints is also time-dependent. This enters the model via the constrained-on/off variable X t , which adjusts demand over time. Then, demand given as generation G t is also updated using the applicable time-dependent formulae.
The fuel set allocation and price calculation are performed as in Section 2, noting that because the wind availability c wind,t,upper and the constrained-on/off variable X t are stochastic, one must also iterate the model a number of times for every time point. The current implementation takes 25 iterations before averaging those for the model result.

Data Source
A source summary of the data used to estimate the input process (14)-(22) parameters is shown in Table 4.

Fuel Bid Curves
The fuel bid stack functions are then fitted to the bid data as of t −144 or t 0 (or t −432 or t −288 as for the May sample, where the last day of the previous month falls on a weekend) as shown in the last column of Tables 5-7. 16 First, the parameters (α t 0 , β i,t 0 , γ i,t 0 ) and (−α t 0 , β l,t 0 , γ l,t 0 ) are estimated using a squared error cost function with a number of tweaks. 17 The fitted function is projected to the regulatory maximum and minimum price levels when it would otherwise exceed those. Also, underestimation is penalised five times as much as overestimation. Furthermore, only an arbitrarily chosen price interval of the bid data is fitted, usually the mid-range prices, as also shown in the last column of Tables 5-7. 18 Finally, to have the same α t 0 in all fuels in a region, a helper function is used to calculate what value of α t 0 minimises the fitting error in all fuels at time t 0 when fitting the bid data. Then, (β i,t 0 , γ i,t 0 ) and (β l,t 0 , γ l,t 0 ) are estimated, keeping |α t 0 | fixed. Table 8 (left side) shows the parameter results. Table 8. Fuel bid curve parameters-January, May, and October 2022.

January
May   The table shows the fuel bid stack function parameters ( α t 0 , β ·,t 0 , γ ·,t 0 ) given a regional |α t 0 | in a NEM-wide breakdown.

Strategic Bidding
It is assumed that some fuels are bid on following a particular dynamic bidding strategy rather than bidding the same strategy (bid curve) all the time, i.e., some bid curves are not time-constant. This strategy involves a reallocation of all quantities onto more (less) expensive prices along the bid curve that is achieved by shifting the fuel bid stack to the left (right) along the quantity axis. The shift is achieved by changing the value of the fuel bid curve intercept γ ·,t .
In this implementation, we take the γ i,t −144 value from the parameter estimation via least-squares fitting and apply an initial update of +(γ ·,(t 0day ,t 0time ) − γ ·,(t −144day ,t −144time ) ) to reflect the time differential and obtain γ i,t 0 . After that, the value of the intercept changes according to Formula (16). 19 By fitting the Formulae (14) and (15) for (16), some proportion of the full bid capacity of the particular fuelc ·,t is returned (on [0, 1]) for γ ·,t . This value is then multiplied byc ·,t and divided by 44, 000 MW, the approximate full bid capacity sum of every generation fuel in the NEM, to recover γ ·,t on the correct scale. The parameters of the fit are shown in Tables 9-11.
0.01 0.10 0.13 3.76 2.37 0.37 −6.00 0.27  The table shows the inputs of the intraday gamma variation Formulae (14)- (16) for all fuels in the NEM.  The table shows the inputs of the intraday gamma variation Formulae (14)- (16) for all fuels in the NEM.    The table shows the inputs of the intraday gamma variation Formulae (14)- (16) for all fuels in the NEM.

Ramp Rates
Restrictive ramp rates apply to slow-start and quick-start fuels to determine their lower and upper capacity bounds around the starting dispatch level in the trade interval, e.g., a ramp rate of 0.05 in the case of black coal in NSW signifies an MW amount equal to 5% of the full bid capacity of the fuelc ·,t . These are shown in Tables 5-7, where we see that the ramp rates of the slow-start fuels are typically much lower and therefore more restrictive than those of the quick-start fuels.

Renewable Fuels
By contrast, only the upper availability bounds are calculated for renewable fuels as their lower bounds are kept at nil. Table 12 shows the parameter estimation for the upper threshold of solar generation c solar,t,upper in (19). 20 The function parameters are not very dissimilar for the fuels across time periods, except for the value of g which is somewhat lower in May for NSW and QLD. Next, Table 13 shows the parameter estimation for the upper threshold of wind generation c wind,t,upper in (20). While the σ parameters are relatively close regardless of the fitting period, theψ and the ψ thresholds are maintained at the exact same level in all of them.

Demand Process
The modelled price paths P t are considered under a generation-based process for . This requires the Ornstein-Uhlenbeck process for the feasibility adjustment X t and the deterministic formulae with intraweek and intraday variation for generation G t as inputs.

Feasibility Adjustment
The constrained-on/off quantity X t in (24) constitutes the feasibility adjustment in the model. It is computed as the sum of the unused low-price (constrained-off) and the used high-price (constrained-on) bid quantities. The path of this process can be drawn from a distribution with mean zero and variance σ 2 2κ (1 − e −2κt ), where the values of σ and κ are estimated from the data. Table 14 shows these values for the three sample periods. The table shows the inputs of the constrained-on/off quantity X t in (24) over the three periods for the five NEM regions: New South Wales (NSW), Queensland (QLD), Victoria (VIC), South Australia (SA), and Tasmania (TAS).
As in Table 14, the κ values are stable for all regions, but there is some slight variation in the σ values.

Deterministic Component
The formulae for generation G t is given by the sinusoidal function (22) that captures both weekly and diurnal variation. This is fitted to the data to recover the function parameters as in Table 15. The quantity data are divided by 7000 MW in all five regions before fitting for a more tractable scale. There is quite a bit of variation in the fitted generation function parameters between the different data windows.

Model Results
The model result analysis starts with the hyperbolic map before turning to assess the full model.

An Assessment of the Hyperbolic Map
The hyperbolic map is dynamic in that it captures the changes in the strategic bidding activity, the fuel availability, and the fuel feasibility every 5 min for t ∈ (t 0 , T]. These features unequivocally improve the model's performance although their execution is susceptible to slight inaccuracies. First, strategic bidding is modelled with diurnal variation only. This presumes that the units of the fuels allocate their MW quantities mostly on the same price domain during the day, 21 but that they are shifting their quantities onto the next more (less) expensive price points every 5 min as the day progresses. More precisely, the bid curves slide to the right (left) due to strategic bidding in a pattern that repeats every day the same way. Yet this is a rather restrictive way of bidding and the actual bidding profiles are somewhat more changeable in the NEM in comparison. Therefore, the model is prone to errors when the fuels are shifting their quantities more or less aggressively than anticipated. This is indicated by the imperfect R 2 scores for the fit of the dynamic intercept γ i,t in Tables 9-11. Second, regarding the fuel availability features, the fact that their focus is inherently fuelspecific also poses some problems. Amassing the available quantities in the different units within a fuel for the fuel-level availability sometimes misrepresents what unit bids correspond to the available fuel quantities, e.g., when the ramp-rate-based availability truncation deems extremely priced bids unavailable before deeming those priced closer to the current price level so. The lowest-price quantities are then erroneously filled first in merit order even if those were not in fact available as, e.g., the high ramp rates correspond to higher priced quantities falsely tagged unavailable in the model, or due to locational differences in generation in the case of renewables, which are physical factors independent of the merit order principle. If one such misrepresented fuel receives higher targets at falsely deemed available lower prices than it would have received in real life, then another fuel is receiving lower targets than it would have in the actual, real-life run. What can then happen is a sharp increase in price if the other low-target fuel subsequently cannot ramp up to, i.e., its fuel curve is cut off too low to be able to ramp up to, a higher target in the next round, and a remaining quantity has to be filled by the next, considerably more expensive fuel in merit order. This erroneous mid-price spike effect could be mitigated by using ramp rate multipliers.
Third, related to the previous argument, negative spikes also arise when a slow-start fuel receives relatively low targets and it operates at its lower capacity bound as a must-run fuel. In this case, the remaining flexible demand sets the price, but because this demand is lower than it would have been in the absence of the lower bound, the price is also lower, hence the negative spikes. This effect is, too, mitigated by the ramp rate multiplier m > 1.
Furthermore, there is an overlap between the constrained-on and the must-run quantities. The first are forced on due to physical constraints disallowing their disuse, while the latter must stay online due to the supply-side availability truncation. However, the constrained-on/off data ultimately also encapsulate the must-run quantity data. Separating out the unavailable sum can be performed by running the map a few times at different levels of demand and computing the average ∑ c o∈O I ,t,lower c t , but this has been omitted from the current implementation. The possible consequences of such double counting include a suppressed price level and an increased proportion of fuels in subset O I , since the constrained-on/off variable is overestimated.

An Assessment of the Full Model
The main difference between the transformation map and the full-blown model is that the map is agnostic to the way demand is defined. Indeed, a keystone assumption of the proposed approach is that modelling regional net generation might be a more appropriate input for the price map than modelling regional consumption. That is because net generation (net of storage load) assimilates trade between the regions, after which the post-trade price level can be determined from the market bid stack function at that quantity level, which is congruent with the trade assumption. In practice, too, the marginal quantity being priced is understood to be the post-trade quantity.
Therefore, the generation-based formulation takes the the post-trade quantity as the demand to be fed into the transformation map to obtain the modelled price. Fitting the generation data for the process G t gives back the historical quantity of export-import over time. This estimation is error-prone to the extent that the historical generation quantities, on which G t is based, might deviate from the current ones, and also to the extent of the general imprecision of the fit.

Evaluation Metric
The distributional fit by the model is evaluated using the Wasserstein metric, which represents the similarity between the actual and the modelled price distribution in that it measures the "work" required to transform one into the other. This "distance to model" is then benchmarked against the distributional variation in the actual price data measured as the Wasserstein distances between the three different samples pairwise. Comparing the distributional inaccuracy of the model to the magnitude of the ex ante uncertainty in the actual price data, if the distance to model is approximately the same or less than the distances between the empirical distributions, then representing the electricity price risk using the model is reasonably accurate, i.e., the distributional fit produced by the model is adequate. The rationale for this is that the model distribution is then no further (in the Wasserstein sense) from the empirical distribution than the empirical distributions themselves vary over time. Table 16 shows these results. The table shows the Wasserstein distances between the actual price series (first column) and between the modelled price averages of 25 iterations and the actual price series. Cases where the distance to model is approximately the same or less than the distances between the empirical distributions are highlighted in bold.

Results
In each of the five modelled NEM price regions, the price path from using the generation-based demand measure can, to some degree, be characterised to display the required empirical properties, including price negativity and price spikes. Figure 1 shows the full view of the average price path result (between the regulatory price thresholds), while Figure 2 displays the distributional accuracy of the average results over the mid-range prices only. In addition, we refer to the overall distributional distance for the modelling using the numerical values in Table 16.
The New South Wales (NSW) region has a relatively good mid-range fit and correct diurnal patterns most of the time. However, the modelled price series (red) over-delivers on mid-size price spikes in Jan in that these spikes are too frequent, also driving a higher Wasserstein metric in May. In contrast, the modelled prices for October do not exhibit any spikes, contrary to the fact that the sample does have a couple of large spikes. In terms of price negativity, the average results omit negative prices, which is problematic in October, but the individual iterations allow for them.
The modelled prices (red) in Queensland (QLD) are, to a lesser extent, also reasonably close to the actual price path (black) distributionally. The Wasserstein distance is below the benchmark for January and May. During these months, the main issue is an over-emphasis on near-nil prices, which can be traced back to inadequate bid curve shifts. Despite this, however, the intraday pattern is largely correct. Regarding the large spikes present in the actual price sample, the model does not emulate them in Jan, but it does in May and October, although with a slight overemphasis in October, which drives the high distance to model in that period. Price negativity is rare and the model replicates this aspect of the price sufficiently.
With the best Wasserstein metrics amongst the regions, the modelled price paths (red) in Victoria (VIC) reflect the actual price distribution (black) reasonably well, although there are issues around supressed price volatility in the modelled sample for January and May.
The fit is overall not good in South Australia (SA), with ballooned Wasserstein metrics in May and October, due to excessive volatility in the modelled paths (red). That is with the exception of January, when the modelled price path is more limited due to the [AUD 0,AUD 500] fit of the bid curves of multiple quick fuels. However, in this instance the actual spikes (black) are not captured at all.
The modelled price paths (red) for Tasmania (TAS) struggle maintaining the correct price levels (black) in January and October, as seen in the mid-range distributions. But because price spikes are infrequent and the model does not produce them at all, the Wasserstein distance to model remains moderate. Furthermore, the diurnal patterns are mostly correct.

Conclusions
In nodal markets, equilibrium prices include the shadow prices of the binding physical network constraints, but equilibrium prices in zonal markets, such as the Australian NEM, do not. Therefore, in zonal markets, demand can be adjusted for the constrained-on/off quantities to account for the as-bid quantities that are either necessary for dispatch schedule feasibility (constrained-on) or unfeasible for security-constrained dispatch (constrained-off) to capture the price effects of the binding security constraints. After these region-wide demand adjustments, and after another minor adjustment for the fixed bids, regional markets, including the NEM, lend themselves readily to bid-stack-type price modelling.
The current work proposes a semi-structural bid-stack-type approach. The novel parametric price model has primarily been developed to match features of the multiregional Australian NEM, as the existing fuel-specific bid stack models from the literature seldom reflect the market design and the empirical price properties of this market. The proposed model allows for five interconnected regions where bidding is price-based, renewable technology penetration is high, and battery storage is an increasingly integral part of the daily operation. Moreover, due to its modular structure, the model can easily be adapted to any interconnected zonal market designs with similar features.
The inclusion of the renewable fuels is achieved by a departure from modelling the intertemporal changes in the generator and load fuel bid stack (inverse supply) functions in connection to the input fuel, e.g., gas, coal, etc., prices. We recommend shifting the fuel supply curves by some fuel-specific quantities that follow seasonal and diurnal patterns to capture the strategic bidding behaviour in the different fuels regardless of the input fuel prices.
We then suggest a trade specification built on the assumption that the as-bid price at the marginal regional dispatch amount sets the price. This treats the demand before adjustments as the net local generation in the region (net of storage loading), which is the sum of end-user consumption and trade, i.e., export-import flows. The specification estimates the sum with a deterministic function with intraweek and diurnal changes. The size and direction of the trade flow between any two regions can be inferred from this sum as well. Randomness comes from the stochastic constrained-on/off demand adjustment in this case.
Once truncated to the available capacity, the generator and load fuel bid stacks are coalesced into the market bid stack map, which then transforms the demand after adjustments into a stochastic price process that allows for negativity and extreme values, i.e., price spikes, to realistically capture the spot price path in the NEM and other markets. One remaining limitation is that in reality, the fuel bid curves change every 5 min. The intraday and seasonal changes (intercept shifts) in the fuel bid curves are capturing some, but not all of this variation: the shifts are too regular and restrictive compared to what actual bidding looks like. This shape-constant setup is the main limitation of the proposed model in its current form.
The potential applications of this type of modelling include market modelling for scenario analysis, e.g., for commissioning and capacity planning, the introduction of new network constraints, changing the rules of bidding, etc., and the computation of the expected value of the electricity price for cash flow analysis. Forthcoming work would apply the model in one of these directions. Data Availability Statement: Publicly available datasets were analysed in this study. The data sources are listed in Table 4, with URLs given in the list of References, below. NEOPoint data was accessed under an academic license, see http://products.iesys.com/Prophet/AcademicToU (last accessed on 1 August 2023).

Conflicts of Interest:
The authors declare no conflict of interest.
Notes 1 When using parametric bid curve formulae, the variable quantities are usually estimated from the appropriate non-price data, as the equilibrium formulation has a way of converting the non-price data into the expected value of the price. This is valuable for modelling the electricity price in scenarios that are in some way unprecedented, e.g., in anticipating the highest rates of green generation on record, or shutting down a historically relevant coal plant. Furthermore, the model can then be tested on historical price data, without having to split the price data between calibration and testing, as explained in Eydeland and Wolyniec (2003). The alpha and beta (α t 0 , β ·,t 0 ) parameters are estimated by least-squares from data at time t 0 . Note, however, that one should evaluate whether the quality of the fit would suffer significantly by this restriction on alpha, and if so, it may be worth opting for different values for alpha per fuel per region and a numerical solution in place of a closed-form solution. 4 Or on R + : x ∈ [ c i,t,lower c t , c i,t,upper c t ] when the lower availability generation bound c i,t,lower = 0 of the fuel is nil. 5 Note that the allocation of the fuels into fuel subsets U q * is anterior to the market bid stack function. 6 For the two-fuel case on three subsets see Table 1 in Carmona et al. (2013). 7 Using the market bid stack formula as specified in the upcoming Section 2.1.4. 8 The present discussion ignores load fuels l ∈ L, but the subset and price algorithm in the example in Section 2.1.5 does not. Where then more generally, the string of smaller price segments (the extended partitioning) is obtained by dissecting the price range [ P f loor P cap , 1] at the upperb G,i,t ,b L,l,t and the lower prices b G,i,t , b L,l,t of every fuel ∀i, ∀l on U = (I, L).

9
Using the subset and price algorithm as in the example in Section 2.1.5. 10 The fact that S t does not include the load fuels (therefore always non-negative S t ≥ 0) is acceptable, because the electric system is always a net generator, but not without drawbacks, as it sometimes leads to underestimating the must-run price, see demand between 23 and 30 in Table 2. 11