...
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. | 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 disabled if required. If it is disabled then this constant can be thought of as TraderPriceMiddle, much like TPBTPmin and TPBTPmax |
FRRP | User selected price forecast source | The forecast energy price |
TraderPriceMinimum and TraderPriceMaximum (TPBTPmin and TPBTPmax) | 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 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. |
...
The allocation rules are designed to ensure that the unit will not be generating if a FRRP less than the TPBTPmin is likely to occur. Similarly they are designed so that the unit will be generating at full capacity if the unit is operating between TPBTPmin and TPBTPmax but the FRRP is likely to increase above TPBTPmax. 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(TPBTPmax , SRMC+) then PT = 10
if FRRP > min(TPBTPmax , SRMC+) and FRRP <= max(TPBTPmax , SRMC+) then PT = 1
if FRRP > min(TPBTPmin , SRMC+) and FRRP <= min(TPBTPmax , SRMC+) then PT = -1
if FRRP <= min(TPBTPmin , SRMC+) then PT = -10
...
Info |
---|
All equations below are shortened and imply PB. I.e. max(<TPB<TPmin , >SRMC+ ) means “allocate MC to the first PB where max(PB<TPBPB<TPmin , PB>SRMC+ )” Different rules for different constraint_status relative to constraint_status = 0 are in bold. |
...
PT = -10 | PT = -1 | PT = 1 | |
---|---|---|---|
PP = 1 | N/A | N/A | min(>TPB>TPmin , <SRMC+ ) |
PP = -1 | N/A | min(<TPB<TPmax , <SRMC+ ) | min(>TPB>TPmin , <SRMC+ ) |
PP = -10 | max(<TPB<TPmax , >SRMC+ ) | min(<TPB<TPmax , >SRMC+ ) | min(<TPB<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(<TPB<TPmax , <SRMC+ ) | min(>TPB>TPmin , <SRMC+ ) |
PP = -10 | max(<TPB<TPmax , >SRMC+ ) | min(<TPB<TPmax , >SRMC+ ) | min(<TPB<TPmax , <SRMC+ ) |
Constraint_status = -1 (constrained on)
PT = -10 | PT = -1 | PT = 1 | |
---|---|---|---|
PP = 1 | N/A | N/A | min(>TPB>TPmin , <SRMC+ ) |
PP = -1 | N/A | max(<TPB<TPmax , <SRMC+ ) | min(>TPB>TPmin , <SRMC+ ) |
PP = -10 | PB10 | PB10 | max(<TPB<TPmax , <SRMC+ ) |
Formulas - simplified
It will be true the vast majority of the time that TPBTPmin < SRMC+ < TPBTPmax . The above formulas have been simplified below given this condition is true.
...
The allocation rules are designed to ensure that the unit will not be generating if a FRRP less than the TPBTPmin is expected to occur. Similarly the allocation rules are designed to ensure that the unit will be generating at full capacity if the unit is operating between TPBTPmin and TPBTPmax but the FRRP is likely to increase above TPBTPmax . For every dispatch interval, one of four price_types are defined as follows:
if TPBTPmax < FRRP then price_type = 10
if SRMC+ < FRRP <= TPBTPmax then price_type = 1
if TPBTPmin < FRRP <= SRMC+ then price_type = -1
if FRRP <= TPBTPmin then price-type = -10
Price_phase
...
Info |
---|
All equations below are shortened and imply first priceband that meets the conditions. For example <TPB<TPmin means “allocate MC to the first PB <TPB<TPmin “ Different rules for different constraint_status are in bold. |
...
PT = -10 | PT = -1 | PT = 1 | |
---|---|---|---|
PP = 1 | N/A | N/A | > TPBTPmin |
PP = -1 | N/A | <SRMC+ | >TPB >TPmin |
PP = -10 | <TPB<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+ | >TPB>TPmin |
PP = -10 | <TPB<TPmax | >SRMC+ | <SRMC+ |
Constraint_status = -1 (constrained on)
PT = -10 | PT = -1 | PT = 1 | |
---|---|---|---|
PP = 1 | N/A | N/A | >TPB>TPmin |
PP = -1 | N/A | <TPB<TPmax | >TPB>TPmin |
PP = -10 | PB10 | PB10 | <TPB<TPmax |
Choosing values for Traderprice max and min
...
The physical trader has an important role in selecting appropriate values for TPBTPmin , SRMC, TPBTPmax and the pricebands as bid.
Review the supply curve around your SRMC (say -$40, an example is shown below).
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, TPBTPmin). In the example I’ve chosen -$52.
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, TPBTPmax). In the example I’ve chosen -$35.
Then choose PB2, PB3, PB4 and PB5 as shown below.
...