Versions Compared

Key

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

...

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 ParametersRaise 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 parametersThe

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 plantThese 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).

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 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.

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 FCAS liability is either switched off or is small.

Formulas - simplified

These formulas apply when either the Raise Contingency FCAS liability is ignored or negligible.

Price_type

The allocation rules are formulated 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 one of four “price_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 TPmin, SRMC and TPmax. PT is defined as follows:

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

Price_phase

The 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:

if PT = 10 then PP = 10

else PP = min(PTi to n) where PTi <> 10 for all i (where i is a dispatch interval)

end

Relative prices

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

Depending on the price_type and price_phase of a dispatch interval, 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 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

> TPmin

PP = -1

N/A

<SRMC+

>TPmin

PP = -10

<TPmax

>SRMC+

< SRMC+

...

Constraint_status = 1 (constrained off)

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

PB1

PP = -1

N/A

<SRMC+

>TPmin

PP = -10

<TPmax

>SRMC+

<SRMC+

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 aim of the volume allocation rules is for generation to be zero before prices become materially less than SRMC+ and for generation to be at a maximum before prices move materially greater than SRMC+ . To realise this aim volume should be allocated in anticipation of prices that would, or might, transition from prices that would result in positive earnings to prices that would result in negative earnings (and vice versa).

Trader judgement process

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. Note that 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.

...

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)

Constraint_status = 0

PT = -10

PT = -1

PT = 1

PP = 1

N/A

N/A

> TPmin

PP = -1

N/A

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_phases is assigned to every dispatch interval, where a price_phase is defined as follows:

if PT = 10 then PP = 10

else PP = min(PTi to n) where PTi <> 10 for all i (where i is a dispatch interval)

end

Relative prices

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

Then 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.

...

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 are in bold.

Constraint_status = Any (-1, 0, 1)

...

If PT = 10 then allocate MC to PB1

<SRMC

+

>TPmin

PP = -10

<TPmax

>SRMC

+

< SRMC+

...

)

...

PT = -10

...

PT = -1

...

PT = 1

...

PP = 1

...

N/A

...

N/A

...

PB1

...

PP = -1

...

N/A

...

<SRMC+

...

>TPmin

...

PP = -10

...

<TPmax

...

>SRMC+

...

<SRMC+

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 aim of the volume allocation rules is for generation to be zero before prices become materially less than SRMC+ and for generation to be at a maximum before prices move materially greater than SRMC+ . To realise this aim volume should be allocated in anticipation of prices that would, or might, transition from prices that would result in positive earnings to prices that would result in negative earnings (and vice versa).

Trader judgement process

The physical trader has an important role in selecting appropriate values for TPmin , SRMC, TPmax and the pricebands as bid.

  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.

...