Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Note
  1. All pdBidr price variables are priced at the RRP, ie. at the node. This includes SRMC and trader price parameters. Hence bid Pricebands must be divided by the MLF in any calculations or conditions so that all price values are from the same frame of reference. For example if volume is to be allocated to the first PriceBand < SRMC it implies the first Priceband/MLF < SRMC.

  2. pdBidr allocation logic includes a condition that ensures volume cannot be allocated to PB9 or PB10. This condition may be disabled.

  3. Constraint_status data source is currently set by the Bid Parameter “Constraint Status” which should be set to 0 (no constraints) or 1 (constrained off). Under no circumstances should it be set to -1 (constrained on). Our analysis to date suggests that a dynamic constraint_status provides negligible no measureable benefit but increases rebids, increases code complexity and makes retrospective analysis more difficult.

...

The allocation logic aims to maximise value in a similar way to how Traders intuitive and dynamically bid renewable plant. That is, Traders price volume depending on the expected price and the expected price trajectory for every dispatch interval.

Importantly Traders use their skill market knowledge to set key parameters inputs in pdBidr. These inputs are four priceband values and two trader parameters called Trader Price Max (TPmax) and Trader Price Min (TPmin). The Trader Parameters, Volume is then allocated to one of the four pricebands (or priceband1) as a function of these two Trader Parameters as well as the SRMC (or turn down valueprice) and forecast prices determine which pricebands volume will be allocated. along with determine

pdBidr allocates all volume to one of the following pricebands based on

...

. TPmax, TPmin and SRMC are Bid Parameters.

Inputs and definitions

Information

Source

Description

SRMC +

Solver (any upstream process would do however the solver already calculates this liability).

If FCAS liability is excluded then the source is the Trader Parameters

Raise Contingency Liability

= SRMC+

SRMC is a Bid Parameter. Raise Contigency Liability is calculated by the Solver.

This is intended to represent the static SRMC plus the Raise Contingency FCAS liability (which is usually very small).

Note that the addition of the FCAS liability

can be

is currently disabled

if required

.

If it is disabled then this constant can be thought of as TraderPriceMiddle, much like TPmin and TPmax

FRRP

User selected price forecast source

The forecast energy price

TraderPriceMinimum and TraderPriceMaximum (TPmin and TPmax)

Trader parameters

The upper and lower pricebands that are meant to span the flat area of the supply curve that represents the bulk of the SRMC of the regions renewable plant.

Constraint_status

MMS.dispatch_local_price

Constraint_status is equal to 1 if local_price_adjustment is positive and represents the unit is at risk of being constrained OFF, 0 means there are no binding constraints for that unit and -1 means that the local_price_adjustment is negative and represents the

These parameters define the PriceType and consequently PricePhase (see below) and also provide the lower and upper limit of the pricebands where volume may be allocated (other than priceband 1 which volume may also be allocated to).

Semidispatchcap

MMS.dispatchload

Semidispatchcap is TRUE means that the unit is at risk of being

constrained ON. As of the time of writing we consider it best to enter the constraint_status as a static trader parameter

backed off outside of bid structure.

max_capacity (MC)

MMS.dudetail

The volume to allocate in the chosen priceband.

Formulas

Note that these formulas The complete formulas are provided at the end of this page under the heading “Formulas - complete” and are written to be programmatically unambiguous. To simplify the concept this section is repeated and simplified under the heading below the following section excludes the dynamic FCAS liability and is headed Formulas - simplified”. Note that the simplified explanation applies where the

Formulas - simplified

These formulas apply when either the Raise Contingency FCAS liability is either switched off or is smallignored or negligible.

Price_type

...

The allocation rules are designed to ensure that the unit will not be generating if a FRRP less than the TPmin is likely to occur. Similarly they are designed so that the unit will be generating at full capacity if the unit is operating between TPmin and TPmax but the FRRP is likely to increase above TPmax. The allocation rules are also designed to accommodate price uncertaintyformulated to accommodate price uncertainty and are a function of both the expected price and the expected direction of price.

The forecast price for each dispatch interval is characterised as a one of four “price_type types (PT)” where the PT is assigned a label (which is entirely arbitrary) of either -10, -1, 1 or 10. PT is a function of the TraderPrices and SRMC+TPmin, SRMC and TPmax. PT is defined as follows.

if FRRP > max(TPmax , SRMC+) then PT = 10

if FRRP > min(TPmax , SRMC+) and FRRP <= max(TPmax , SRMC+) then PT = 1

if FRRP > min(TPmin , SRMC+) and FRRP <= min(TPmax , SRMC+) then PT = -1

if FRRP <= min(TPmin , SRMC+) then PT = -10:

PT

Condition

Explanation

10

TPmax < FRRP

Expected price is sufficiently above SRMC that I want to ensure unit operates at full capacity

1

SRMC < FRRP <= TPmax

Expected price is above SRMC but I’m willing to move volume out of PB1

-1

TPmin < FRRP <= SRMC

Expected price is below SRMC but I want to allocate volume near SRMC

-10

FRRP <= TPmin

Expected price is significantly below SRMC and I want to avoid being dispatched whilst prices are likely to stay very low

PT for the next three dispatch intervals

Info

The latest dispatch price (ActRRP) is also included in the definition of PT for the first three dispatch intervals. The actual RRP is included to allow for the scenario where the actual prices are low but forecast prices were are not low. Without this logic it is possible for actual prices to be very low (e.g. -$500) but volume will remain in PB1 because forecast prices are high (e.g. $0)). Hence the following definition applies for the next three dispatch intervals in a bid:

iff for dispatch interval at time t where

t <= current_datetime + 15 (minutes) then

if min(ActRRP, FRRPt) > max(TPmax , SRMC+) then PTt = 10

if min(ActRRP, FRRPt) > min(TPmax , SRMC+) and min(ActRRP, FRRPt) <= max(TPmax , SRMC+) then PTt= 1

if min(ActRRP, FRRPt) > min(TPmin , SRMC+) and min(ActRRP, FRRPt) <= min(TPmax , SRMC+) then PTt = -1

if min(ActRRP, FRRPt) <= min(TPmin , SRMC+) then PTt = -10

The reason to include ActRRP for the first three dispatch intervals is that we have found earnings outcomes can be consistently improved when the dispatch price is below SRMC but the forecastRRP is greater than TPmax. Effectively the price forecast is not reflecting actual price outcomes and hence without considering dispatch price the bid allocation can maintain volume allocation to priceband 1 which ensures a positive target even though prices are below SRMC.

Price_phase

...

A Price_phase (PP) is assigned to each dispatch interval and is a function of the current and future PT. The idea is to characterise the future price expectations beyond any given dispatch interval. The PP is defined as follows.

if PT = 10 then PP = 10

else PP = min(PTi=1 to n) where PTi <> 10 for all i

end

Allocation Rules

Info

All equations below are shortened and imply PB. I.e. max(<TPmin , >SRMC+ ) means “allocate MC to the first PB where max(PB<TPmin , PB>SRMC+ )”

Different rules for different constraint_status relative to constraint_status = 0 are in bold.

Constraint_status = Any (-1, 0, 1)

...

If PT = 10 then allocate MC to PB1

Constraint_status = 0

...

PT = -10

...

PT = -1

...

PT = 1

...

PP = 1

...

N/A

...

N/A

...

min(>TPmin , <SRMC+ )

...

PP = -1

...

N/A

...

min(<TPmax , <SRMC+ )

...

min(>TPmin , <SRMC+ )

...

PP = -10

...

max(<TPmax , >SRMC+ )

...

min(<TPmax , >SRMC+ )

...

min(<TPmax , <SRMC+ )

Constraint_status = 1 (constrained off)

...

PT = -10

...

PT = -1

...

PT = 1

...

PP = 1

...

N/A

...

N/A

...

PB1

...

PP = -1

...

N/A

...

min(<TPmax , <SRMC+ )

...

min(>TPmin , <SRMC+ )

...

PP = -10

...

max(<TPmax , >SRMC+ )

...

min(<TPmax , >SRMC+ )

...

min(<TPmax , <SRMC+ )

Constraint_status = -1 (constrained on)

...

PT = -10

...

PT = -1

...

PT = 1

...

PP = 1

...

N/A

...

N/A

...

min(>TPmin , <SRMC+ )

...

PP = -1

...

N/A

...

max(<TPmax , <SRMC+ )

...

min(>TPmin , <SRMC+ )

...

PP = -10

...

PB10

...

PB10

...

max(<TPmax , <SRMC+ )

Formulas - simplified

It will be true the vast majority of the time that TPmin < SRMC+ < TPmax . The above formulas have been simplified below given this condition is true.

Price_type

One of four price_types is assigned to every dispatch interval, where a price_type is defined as follows:

if TPmax < FRRP then price_type = 10

if SRMC+ < FRRP <= TPmax then price_type = 1

if TPmin < FRRP <= SRMC+ then price_type = -1

if FRRP <= TPmin then price-type = -10

Price_phase

One of four price__phase (PP) defines the trajectory of expected prices.

One of four price_phases is assigned to every dispatch interval, where a price_phase is defined as follows:

...

The bid allocation rules defines price_type and price_phase that are as a function of TPmin, SRMC and TPmax.

Then depending Depending on the price_type and price_phase of a dispatch interval then , volume is assigned to one of five Pricebands shown in the diagramme below. Note that the allocation rules are defined in the following section, the diagramme below simply shows the definition of PT as a function of TPmin, SRMC and TPmax (and by inference the definition of PP) and the relative position of the five possible pricebands that may be allocated volume.

...

*Note that in the diagramme above, PB2-5 could be any set of pricebands.

Allocation Rules - Simplified

Info

All equations below are shortened and imply first priceband that meets the conditions. For example <TPmin means “allocate MC to the first PB <TPmin

Different rules for different constraint_status SEMIDISPATCHCAP is TRUE or FALSE are in bold.

...

Semidispatchcap is TRUE or FALSE

If PT = 10 then allocate MC to PB1

...

Semidispatchcap is FALSE

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

> TPmin

PP = -1

N/A

<SRMC+

>TPmin

PP = -10

<TPmax

>SRMC+

< SRMC+

...

...

Semidispatchcap is TRUE

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

PB1

PP = -1

N/A

<SRMC+

>TPmin

PB1

PP = -10

<TPmax

>SRMC+

<SRMC+

PB1

N/A: Constraint_status = -1 (constrained on)

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

>TPmin

PP = -1

N/A

<TPmax

>TPmin

PP = -10

PB10

PB10

<TPmax

Choosing values for Traderprice max and min

...

The physical trader has an important role in selecting appropriate values for TPmin , SRMC, TPmax and the pricebands (as bid). The approach below is by way of illustration or suggestion only.

  1. Review the supply curve around your SRMC (say -$40, an example is shown below).

  2. Choose a price point that is 100MW (say) below your SRMC but where the price point is not too much less than SRMC (enter this price point under Settings/Algo Bid Parameters as trader priceband min, TPmin). In the example I’ve chosen -$52.

  3. Similarly choose a price point 100MW (say) above your SRMC but where the price point is not too much greater than SRMC (enter this price point as trader priceband max, TPmax). In the example I’ve chosen -$35.

  4. Then choose PB2, PB3, PB4 and PB5 as shown below.

...

  1. Note that

...

  1. you may wish to reserve PB2 and PB3 for very low prices in the event that the spot trader wishes to take control of the bidding process. Hence the relevant priceband values (i.e. the first PB > TPmin, first PB < SRMC, first PB > SRMC and first PB < TPmax) could equally be PB4, PB5, PB6 and PB7.

...

Formulas - complete version

Price_type (PT)

The allocation rules are designed to ensure that the unit will not be generating if a FRRP less than the TPmin is likely to occur. Similarly they are designed so that the unit will be generating at full capacity if the unit is operating between TPmin and TPmax but the FRRP is likely to increase above TPmax. The allocation rules are also designed to accommodate price uncertainty.

The forecast price for each dispatch interval is characterised as a “price_type (PT)” where the PT is assigned a label (which is entirely arbitrary) of either -10, -1, 1 or 10. PT is a function of the TraderPrices and SRMC+. PT is defined as follows.

if FRRP > max(TPmax , SRMC+) then PT = 10

if FRRP > min(TPmax , SRMC+) and FRRP <= max(TPmax , SRMC+) then PT = 1

if FRRP > min(TPmin , SRMC+) and FRRP <= min(TPmax , SRMC+) then PT = -1

if FRRP <= min(TPmin , SRMC+) then PT = -10

PT for the next three dispatch intervals

Info

The latest dispatch price (ActRRP) is also included in the definition of PT for the first three dispatch intervals. The actual RRP is included to allow for the scenario where the actual prices are low but forecast prices were not low. Without this logic it is possible for actual prices to be very low (e.g. -$500) but volume will remain in PB1 because forecast prices are high (e.g. $0)). Hence the following definition applies for the next three dispatch intervals in a bid:

iff for dispatch interval at time t where

t <= current_datetime + 15 (minutes) then

if min(ActRRP, FRRPt) > max(TPmax , SRMC+) then PTt = 10

if min(ActRRP, FRRPt) > min(TPmax , SRMC+) and min(ActRRP, FRRPt) <= max(TPmax , SRMC+) then PTt= 1

if min(ActRRP, FRRPt) > min(TPmin , SRMC+) and min(ActRRP, FRRPt) <= min(TPmax , SRMC+) then PTt = -1

if min(ActRRP, FRRPt) <= min(TPmin , SRMC+) then PTt = -10

The reason to include ActRRP for the first three dispatch intervals is that we have found earnings outcomes can be consistently improved when the dispatch price is below SRMC but the forecastRRP is greater than TPmax. Effectively the price forecast is not reflecting actual price outcomes and hence without considering dispatch price the bid allocation can maintain volume allocation to priceband 1 which ensures a positive target even though prices are below SRMC.

Price_phase (PP)

A Price_phase (PP) is assigned to each dispatch interval and is a function of the current and future PT. The idea is to characterise the future price expectations beyond any given dispatch interval. The PP is defined as follows.

if PT = 10 then PP = 10

else PP = min(PTi=1 to n) where PTi <> 10 for all i

end

Allocation Rules

Info

All equations below are shortened and imply PB. I.e. max(<TPmin , >SRMC+ ) means “allocate MC to the first PB where max(PB<TPmin , PB>SRMC+ )”

Different rules for SEMIDISPATCHCAP is TRUE are in bold.

Semidispatchcap is TRUE or FALSE

If PT = 10 then allocate MC to PB1

Semidispatchcap is FALSE

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

min(>TPmin , <SRMC+ )

PP = -1

N/A

min(<TPmax , <SRMC+ )

min(>TPmin , <SRMC+ )

PP = -10

max(<TPmax , >SRMC+ )

min(<TPmax , >SRMC+ )

min(<TPmax , <SRMC+ )

Semidispatchcap is TRUE

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

PB1

PP = -1

N/A

min(<TPmax , <SRMC+ )

min(>TPmin , <SRMC+ )

PP = -10

max(<TPmax , >SRMC+ )

min(<TPmax , >SRMC+ )

min(<TPmax , <SRMC+ )

Constraint_status = -1 (constrained on)

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

min(>TPmin , <SRMC+ )

PP = -1

N/A

max(<TPmax , <SRMC+ )

min(>TPmin , <SRMC+ )

PP = -10

PB10

PB10

max(<TPmax , <SRMC+ )