Bids/Offers Data
The Bids/Offers data section is used for providing Bid and Offer transaction types and is applicable to both Inbound requests and Outbound responses
BidOffers Attributes
Item | Description | MRTU(CAISO) | TX(ERCOT) |
---|---|---|---|
IntervalLength | Interval size; default is one hour (XSD Optional) Note: The Interval Length must match the system operator’s required granularity. | ISO Optional Field Data Type: XML duration ‘PT1H’ is 1 hour ‘PT5M’ = 5 minutes (applicable for ProductType =‘DynLmtMin’, ‘DynLmtMax’) |
ISO Required Field if ProductType = Energy Data Type: XML duration ‘PT1H’ = 1 hour ‘PT5M’ = 5 minutes |
TransactionType | Type of transaction/ resource (XSD Required) | ISO Required Field Data Type: Enumeration ‘Gen’ ‘ParticipatingLoad’ ‘Load’ ‘Export’ ‘Import’ ‘VirtualBid’ ‘VirtualOffer’ Virtual Bid/Offer will not be accepted by CAISO until they implement convergence bidding |
ISO Required Field Data Type: Enumeration ‘Gen’ ‘LoadResource’ ‘ParticipatingLoad’ - For controllable loads ‘VirtualOffer’ ‘VirtualBid’ ‘SourceSink’ ‘Self-Arranged’ – For Self-Arranged AS |
Location | Name of the scheduled resource (XSD Required) | ISO Required Field Data Type: String |
ISO Required Field Data Type: String |
SinkLocation | Name of the Sink location in a two location transaction (XSD Optional) | Not Applicable | ISO Required Field Data Type: String Used for the SinkLocation of Bids/Offers requiring two locations (i.e. PTP Obligation Bids) |
WheelId | Wheel identifier (XSD Optional) | ISO Required Field for wheels Data Type: String Wheel Id must be associated to both the import and export side |
Not Applicable |
ContractId | Contract identifier (XSD Optional) | ISO Required Field if using ETC or TOR Data Type: String If multiple contracts are used, separate using a comma | Not Applicable |
SupportingResource | Generator location supporting an export (XSD Optional) | ISO Required Field for exports with Price Taker status Data Type: String Sink of Gen PNode |
Not Applicable |
NERCTag | NERC tag for imports and exports (XSD Optional) | ISO Optional Field for imports and exports Data Type: String Id of NERC tag |
Not Applicable |
ExternalId | User assigned identifier that uniquely maps submitted rows to the client’s source system (XSD Optional) | ISO Optional Field Data Type: String |
ISO Optional Field Data Type: String |
BidName | User assigned identifier submitted to the ISO to differentiate between bids at the same location, or bids between the same two locations (PTP) (XSD Optional) | Not Applicable | Required by ERCOT for Energy-Only Offers, Energy Bids, and PTP Obligation Bids. Not allowed for any other bids/offers. If a BidName is submitted for a bid/offer type that does not support it, that bid/offer will fail APX Validation. |
SelfSchedule Type Attributes
- MRTU: Used for Self Schedules of energy and RUC or self provision of ancillary services
- TX (ERCOT): Used for resource energy (Output Schedules) and AS self arranged quantities
Item | Description | MRTU(CAISO) | TX(ERCOT) |
---|---|---|---|
Product Type | Type of product; (XSD Required) | ISO Required Field Data Type: Enumeration ‘Energy’ ‘NonFirmEnergy’ ‘RegUp’ ‘RegDn’ ‘Spin’ ‘NSpin’ ‘RUC’ ‘UntCntg’ ‘DynLmtMin’ ‘DynLmtMax’ |
ISO Required Field Data Type: Enumeration Valid if TxType = ‘Gen’: ‘Energy’ ‘RegUp’ ‘RegDn’ ‘RRS-PFR’ ‘RRS-FFR’<br‘RRS-UFR’ ‘NSpin’ ‘ECRS’ (For SCED dispatched resources) ‘ECRSM’ (For SCED manually resources) ‘OffECRS’ (For SCED offline resources) Valid if TxType = ‘LoadResource’: ‘RRS-PFR’ ‘RRS-FFR’ ‘RRS-UFR’ ‘NSpin’ aka NSRS ‘ECRS’ (For SCED dispatched resources) ‘ECRSM’ (For SCED manually resources) |
ScheduleType | Type of product; (XSD Required) | N/A | ISO Required Field Data Type: Enumeration: ‘SelfProvision’ |
Schedule Attributes
Item | Description | MRTU(CAISO) | TX(ERCOT) |
---|---|---|---|
FromInterval | From interval i until the next specified interval or until LastIntervalEnd. For example, submitting a single value for FromInterval 1 will assign that value to the whole interval range (XSD Required) | ISO Required Field Date Type: Integer between 1 and 25 when FirstIntervalBegin and LastIntervalEnd range = one day |
ISO Required Field Date Type: Integer between 1 and 300 when FirstIntervalBegin and LastIntervalEnd range = one day |
MW | The amount to be self scheduled or self provided (XSD Optional) | ISO Required Field Data Type: Non Negative Decimal (2) |
MW Data Type: Positive 4 significant digits, Decimal (0) |
MarketSchedule Attributes
Item | Description | MRTU(CAISO) | TX(ERCOT) |
---|---|---|---|
Product Type | Type of product; (XSD Required) | ISO Required Field Date Type: Enumeration ‘Energy’ ‘NonFirmEnergy’ ‘RegUp’ ‘RegDn’ ‘Spin’ ‘NSpin’ ‘RUC’ ‘UntCntg’ |
ISO Required Field Data Type: Enumeration ‘Energy’ ‘RegDn’ aka DRS ‘RegUp’ aka URS ‘RRS-PFR’ ‘RRS-FFR’ ‘RRS-UFR’ ‘NSpin’ ‘OffNSpin’ ‘ECRS’ ‘ECRSM’ ‘OffECRS’ |
LinkedOfferID | A string used to link multiple offers of different products into a single linked offer (XSD Optional) | Not applicable | Only applicable for online AS products (‘RegUp’, ‘NSpin’ and ‘Spin’). Increasing integers ranging from 1 to 5 are valid. |
Curve Attributes
- MRTU: Used for price sensitive bids and offers for energy
- ERCOT: Used for resource energy offers (generator, load resource), virtual offers (Energy Only Offer, Energy Bid)
Item | Description | MRTU(CAISO) | TX(ERCOT) |
---|---|---|---|
FromInterval | From interval is until the next specified interval or until LastIntervalEnd. For example, submitting a single value for FromInterval 1 will assign that value to the whole interval range (XSD Required) | ISO Required Field Date Type: Integer between 1 and 25 when FirstIntervalBegin and LastIntervalEnd range = one day |
ISO Required Field Date Type: Integer between 1 and 25 when FirstIntervalBegin and LastIntervalEnd range = one day |
LinkedHours | Defines that a block of hours must receive the same award. (XSD Optional) If intervals are enumerated individually, identical string must be provided for all intervals in each block | ISO Optional Field Hourly Component Data Type: Enumeration ‘True’ ‘False’ Only applicable where Transaction Type = ‘Import’ or ‘Export’; and Product Type = ‘Energy’ |
Hourly Component Data Type: String, 5 characters max. Format “X,Y” where X=first hour of block (ISO HE), and Y=number of hours in block (i.e “2,14” indicates a block from HE 2 to HE 15) Only applicable Where [ TxType = ‘Gen’ or ‘LoadResouce’ and ( Product Type = ‘RegUp’, ‘RegDn’, ‘RRS-PFR’, ‘RRS-FFR’, ‘RRS-UFR’, ‘NSpin’, ‘ECRS’ or Product Type = ‘OffNSpin’, ‘OffECRS’ ) ] ; or [TxType = ‘VirtualBid’, ‘VirtualOffer’ and Product Type = ‘Energy’ ] ; or [TxType = ‘SourceSink’ and Product Type = ‘Energy’ ] |
CurveType | Describes how the Region interprets a bid point or curve (XSD Optional) | ISO Optional Field Hourly Component Data Type: Enumeration ‘Block’ |
ISO Optional Field Hourly Component Data Type: Enumeration ‘Block’ aka Variable ‘Fixed’ ‘Slope’ aka Curve |
CooptimizedWithAS | A flag indicating that the ISO can co-optimize the energy and AS offers (XSD Optional) | Not applicable | ISO Optional Field Data Type: Boolean ‘True’ /‘False’ Applicable where (TxType = ‘Gen’ or ‘LoadResouce’) and ProductType = ‘Energy’ |
Reason | A string used to identify the reason for supply an updated bid | Not applicable | ISO Optional Field Data Type: Enumeration “Fuel”, “Outage”, “DSCM” or “OTHR” Applicable where (TxType = ‘Gen’) and ProductType = ‘Energy |
ReasonText | A text field used when reason is OTHR | Not applicable | ISO Optional Field Data Type: Freeform text field used when reason is OTHR max 128 characters Applicable where (TxType = ‘Gen’) and ProductType = ‘Energy’ and Reason = ‘OTHR’ |
CurvePoint Attributes
- MRTU: Used for price sensitive bids and offers for energy
- TX (Nodal): Used for resource energy offers (generator, load resource), virtual offers (Energy Only Offer, Energy Bid)
Item | Description | MRTU(CAISO) | TX(ERCOT) |
---|---|---|---|
MW | Amount of bid or offer (XSD Optional) | ISO Required Field Data Type: Positive decimal (4 significant digits, 2 decimal places, i.e. 9999.99) Can be repeated up to 11 times (10 segments w/ price of last 2 pairs the same). |
ISO Required Field Data Type: Positive integer (4 significant digits, i.e. 9999) If only one P/Q pair, then CurveType = ‘Block’, ‘Slope’ or ‘Fixed’ If more than one P/Q pair, then CurveType = ‘Slope’ Can be repeated up to 10 times (10 segments) |
Price | Price of bid or offer (XSD Optional) | ISO Required Field Data Type: Positive or negative decimal (2) Can be repeated up to 11 times (10 segments w/ price of last 2 pairs the same). |
ISO Required Field Data Type: Positive or negative decimal (2) If only one P/Q pair, then CurveType = ‘Block’, ‘Slope’ or ‘Variable’. If more than one P/Q pair, then CurveType = ‘Slope’ (max of 10 P/Q pairs) |
MRTU:
- The MWs provided for an Energy curve are interpreted as cumulative (not incremental). For Load, Export and VirtualBids, the ISO requires the curve to be decreasing (monotonically increasing quantities and decreasing prices with the last two prices being the same). For Gen, Import and VirtualOffers, the ISO requires the curve to be increasing (monotonically increasing quantities and prices with the last two prices matching).
Additional Bids/Offers Details
Definition of Bid/Offer Business key
The business key for a bilateral schedule is defined as the unique combination of:
- Region
- MarketParticipant
- MarketStage
- Interval
- TransactionType
- Location
- ContractID (optional)
- <SelfSchedule > or <MarketSchedule >
- ProductType
Handling of Duplicates records for same Bid/Offer Business Key in same submission
If an APX Scheduling API file is submitted with duplicate bids/offers for the same business key, all bids/offers that match that business key will be rejected and won’t be saved into the APX MarketSuiteTM.
Replacing Bids/Offers
To replace a previously submitted bid or offer, simply submit an APX Scheduling API file that contains the same
Cancelling / Omitting Intervals for Bids/Offers
Bids/Offers data can be omitted / cancelled using one of two methods
- Omit the “MW” attribute – this cancels specific intervals for a specific bid/offer if it already exists in the APX MarketSuiteTM or skips those intervals if this represents the initial submission of this bid or offer.
Schedule Example (Interval 2 is omitted, or cancelled if it was previously submitted to the APX MarketSuiteTM):
<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="DA" FirstIntervalBegin="2021-03-02T08:00:00Z" LastIntervalEnd="2021-03-03T08:00:00Z">
<BidsOffers TransactionType="Gen" Location="GEN_1">
<SelfSchedule ProductType="Spin">
<Schedule FromInterval="1" MW="2.6"></Schedule>
<Schedule FromInterval="2"></Schedule>
<Schedule FromInterval="3" MW="2.4"></Schedule>
...
</SelfSchedule>
</BidsOffers>
</MarketParticipantData>
Curve Example (Interval 2 is omitted, or cancelled if it was previously submitted to the APX MarketSuiteTM):
<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="RT" FirstIntervalBegin="2021-04-29T07:00:00Z" LastIntervalEnd="2021-04-30T07:00:00Z">
<BidsOffers TransactionType="Gen" Location="GEN_1">
<MarketSchedule ProductType="Energy">
<Curve FromInterval="1">
<CurvePoint MW="310.5" Price="499"></CurvePoint>
<CurvePoint MW="322.7" Price="499"></CurvePoint>
</Curve>
<Curve FromInterval="2">
<CurvePoint/>
</Curve>
<Curve FromInterval="3">
<CurvePoint MW="310.5" Price="499"></CurvePoint>
<CurvePoint MW="322.1" Price="499"></CurvePoint>
</Curve>
...
</MarketSchedule>
</BidsOffers>
</MarketParticipantData>
Omit the <Schedule> or <Curve> element – this cancels the specific bid/offer for all intervals from FirstIntervalBegin to LastIntervalEnd
Schedule Example
<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="DA" FirstIntervalBegin="2021-03-02T08:00:00Z" LastIntervalEnd="2021-03-03T08:00:00Z">
<BidsOffers TransactionType="Gen" Location="GEN_1">
<SelfSchedule ProductType="Spin">
</SelfSchedule>
</BidsOffers>
</MarketParticipantData>
Curve Example
<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="DA" FirstIntervalBegin="2021-03-02T08:00:00Z" LastIntervalEnd="2021-03-03T08:00:00Z">
<BidsOffers TransactionType="Gen" Location="GEN_1">
<MarketSchedule ProductType="Energy">
</MarketSchedule>
</BidsOffers>
</MarketParticipantData>