Bilateral Schedule Data
The <BilateralSchedule> data section is used for providing bilateral transaction types and is applicable to both Inbound requests and Outbound responses
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 |
ISO Optional Field if ProductType = Energy Data Type: XML duration ‘PT1H’ is 1 hour ‘PT15M’ is 15 minutes ‘PT5M’ is 5 minutes |
TransactionType | Type of transaction/ resource (XSD Required) | ISO Required Field Data Type: Enumeration ‘Buy’ (MP is buyer) ‘Sell’ (MP is seller) |
ISO Required Field Data Type: Enumeration ‘Buy’ (MP is buyer) ‘Sell’ (MP is seller) |
SourceLocation | Name of the source (origin) location (XSD Optional) | ISO Required Field if TransactionType = Buy and ScheduleType = PhysicalTrade or FinancialTrade Data Type: String Valid Gen Node if PhysicalTrade Valid Trade Hub or LAP if FinancialTrade When ScheduleType = ASTrade or UpliftCostTrade, no location is needed |
ISO Required Field if TransactionType = Buy Data Type: String If Product Type = (Energy) set = any valid settlement point name (i.e. ‘HBSOUTH’, ‘LZNORTH’) If Product Type = (Capacity, RegUp, RegDn, RRS-PFR, RRS-FFR, RRS-UFR, NonSpin, ECRSS, ECRSM) set = ‘ERCOT’ |
SinkLocation | Name of the sink (destination) location (XSD Optional) | ISO Required Field if TransactionType = Sell and ScheduleType = PhysicalTrade or FinancialTrade Data Type: String Valid Gen Node if PhysicalTrade Valid Trade Hub or LAP if FinancialTrade When ScheduleType = ASTrade or UpliftCostTrade, no location is needed | ISO Required Field if TransactionType = Buy Data Type: String If Product Type = (Energy) set = any valid settlement point name (i.e. ‘HBSOUTH’, ‘LZNORTH’) If Product Type = (Capacity, RegUp, RegDn, RRS-PFR, RRS-FFR, RRS-UFR, NonSpin, ECRSS, ECRSM) set = ‘ERCOT’ |
CounterParty | Participant short name of the counterparty to the buy or sell trade (XSD Optional) | ISO Required Field Data Type: String |
ISO Required Field if TransactionType = Buy or Sell Data Type: String Use only valid ERCOT QSE ID (i.e. QAPX) |
TradeName | Unique identifier to communicate with the ISO (XSD Optional) | ISO Required Field if ScheduleType = PhysicalTrade Data Type: String Trade Name | Not Applicable |
DependOnTradeName | Points to the unique Trade Name of the dependent trade (XSD Optional) | ISO Required Field if Schedule Type = PhysicalTrade and the trade is not the first in a chain Data Type: String Trade Name of dependent trade | Not Applicable |
ScheduleType | Type of schedule; default is ‘FinancialTrade’ (XSD Optional) | ISO Required Field Data Type: Enumeration ‘FinancialTrade’ (default) ‘PhysicalTrade’ ‘UpliftCostTrade’ | Data Type: Enumeration ‘FinancialTrade’ (default) ‘WholesaleLoad’ – for RRSNC trade ‘CntrlLoad’ – for RRSLD trade ‘SelfProvision’ – For Self-Arranged AS |
ProductType | Points to the unique Trade Name of the dependent trade (XSD Optional) | ISO Required Field Date Type: Enumeration ‘Energy’ ‘RegUp’ ‘RegDn’ ‘Spin’ ‘NSpin’ | ISO Required Field Data Type: Enumeration ‘Energy’ ‘Capacity’ ‘RegUp’ ‘RegDn’ ‘RRS-PFR’ ‘RRS-FFR’ ‘RRS-UFR’ ‘NSpin’ ‘NSPNM’ ‘ECRSS’ ‘ECRSM' |
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 |
Bilateral Schedule Detail 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 Data Type: Integer between 1 and 100 when FirstIntervalBegin and LastIntervalEnd range = one day |
MW | Hourly output in megawatt hours. (XSD Optional) | ISO Required Field Data Type: Non Negative Decimal (2) |
ISO Required Field Data Type: Non Negative Decimal (0) |
When FirstIntervalBegin and LastInterval End range = one month and MW values vary by hour, FromInterval is repeated 720 times (24 hours * 30 days), assuming 30 days in the month and no time transition. If MW values are the same for the entire month, then FromInterval need only occur one time.
Additional Bilateral Schedule Details
MRTU Examples
UseCase | CounterParty | TransactionType | SourceLocation | SinkLocation | ScheduleType | ProductType | DependOnTradeName |
---|---|---|---|---|---|---|---|
Buy Energy from NCPA – APN Trade | NCPA | Buy | THNP15GEN-APND THSP15GEN-APND TH_ZP26_GEN-APND DLAP_SCE-APND DLAP-PGAE-APND DLAP-SDGE-APND | Same as Source Location APX assumes SinkLocation equals SourceLocation. | [FinancialTrade] | [Energy] | Not Applicable. |
Sell Energy to BPEC – APN Trade | BPEC | Sell | Same as Sink Location APX assumes SinkLocation equals SourceLocation. | THNP15GEN-APND TH_SP15_GEN-APND TH_ZP26_GEN-APND DLAP_SCE-APND DLAP-PGAE-APND DLAP-SDGE-APND | [FinancialTrade] | [Energy] | Not Applicable |
Buy Energy from NCPA – PHY Trade | NCPA | Buy | Gen Node | Same as Source Location APX assumes SinkLocation equals SourceLocation | [PhysicalTrade] | [Energy] | TradeABC123 |
Sell Energy to BPEC – PHY Trade | BPEC | Sell | Same as Sink Location APX assumes SinkLocation equals SourceLocation. | Gen Node | [PhysicalTrade] | [Energy] | TradeABC123 |
TX (ERCOT) Examples
UseCase | CounterParty | TransactionType | SourceLocation | SinkLocation | ScheduleType | ProductType | DependOnTradeName |
---|---|---|---|---|---|---|---|
Buy Energy from EAGLE | EAGLE | Buy | Settlement Point | [Same as SourceLocation] | [FinancialTrade] | [Energy] | Not Applicable |
Sell Capacity to EAGLE | EAGLE | Sell | [Same as SinkLocation] | ERCOT | [FinancialTrade] | Capacity | Not Applicable |
Buy NonSpin from NECC | NECC | Buy | ERCOT | [Same as SourceLocation] | [FinancialTrade] | NSpin | Not Applicable |
Sell Responsive Primary (Generator Based) to BP | BP | Sell | [Same as SinkLocation] | ERCOT | [FinancialTrade] | RRS-PFR | Not Applicable |
Buy Responsive Primary(Load Based) from ANP | ANP | Buy | ERCOT | [Same as SourceLocation] | [WholesaleLoad] | RRS-PFR | Not Applicable |
Buy SCED dispatchable ECRS (Load Based) from ANP | ANP | Buy | ERCOT | [Same as SourceLocation] | [WholesaleLoad] | ECRSS | Not Applicable |
Additional Bids/Offers Details
Definition of Bilateral Schedule Business key
The business key for a bilateral schedule is defined as the unique combination of:
- Region
- MarketParticipant
- MarketStage
- Interval
- TransactionType
- SourceLocation - note that this should be the same as Sink Location for most Regions
- Sink Location - note that this should be the same as Sink Location for most Regions
- CounterParty
- TradeName (optional)
- ProductType
- ScheduleType
Handling of Duplicates records for same Bilateral Schedule Business Key in same submission
If an APX Scheduling API file is submitted with duplicate bilateral schedules, all bilateral schedules that match that business key will be rejected and won’t be saved into the APX MarketSuiteTM.
Replacing Bilateral Schedules
To replace a previously submitted bilateral schedule, simply submit an APX Scheduling API file that contains the same MarketParticipantData and BilateralSchedule business keys. The data in the new file will expire previously submitted data for this same business key.
Omitting / Cancelling Bilateral Schedules
Bilateral Schedule data can be omitted / cancelled using one of two methods:
- Provide a Null “MW” attribute – this cancels specific intervals for a specific bilateral schedule if it already exists in the APX MarketSuiteTM or skips those intervals if this represents the initial submission of this bilateral 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-04-29T07:00:00Z" LastIntervalEnd="2021-04-30T07:00:00Z">
<BilateralSchedule TransactionType="Sell" SourceLocation="TH_NP15_GEN-APND" SinkLocation="TH_NP15_GEN-APND" CounterParty="SCID2" ProductType="Energy" ScheduleType="FinancialTrade">
<BilateralScheduleDetail FromInterval="1" MW="50"></BilateralScheduleDetail>
<BilateralScheduleDetail FromInterval="2"></BilateralScheduleDetail>
<BilateralScheduleDetail FromInterval="3" MW="42.7"></BilateralScheduleDetail>
...
</BilateralSchedule>
</MarketParticipantData>
- Omit the BilateralScheduleDetail element – this cancels the specific bilateral schedule for all intervals from FirstIntervalBegin to LastIntervalEnd
Example:
<MarketParticipantData Region="MRTU" MarketParticipant="SCID1" MarketStage="DA" FirstIntervalBegin="2021-04-29T07:00:00Z" LastIntervalEnd="2021-04-30T07:00:00Z">
<BilateralSchedule TransactionType="Sell" SourceLocation="TH_NP15_GEN-APND" SinkLocation="TH_NP15_GEN-APND" CounterParty="SCID2" ProductType="Energy" ScheduleType="FinancialTrade">
</BilateralSchedule>
</MarketParticipantData>
NOTE: If cancelled data was already submitted to the ISO, cancel requests will be sent. All data is versioned in the APX MarketSuiteTM database.